- more trivial adjustments.

This commit is contained in:
Christoph Oelckers 2020-05-24 00:38:10 +02:00
parent 00e7b2fa25
commit da26d1cec4
12 changed files with 81 additions and 53 deletions

View file

@ -46,8 +46,8 @@ VPXTexture::VPXTexture() {}
void VPXTexture::SetFrame(const void *data_, int width, int height)
{
Size.x = width;
Size.y = height;
Width = width;
Height = height;
data = data_;
DeleteHardwareTextures();
}
@ -62,11 +62,11 @@ FBitmap VPXTexture::GetBgraBitmap(const PalEntry* remap, int* trans)
{
FBitmap bmp;
bmp.Create(Size.x, Size.y);
bmp.Create(Width, Height);
auto spix = (uint8_t*)data;
auto dpix = bmp.GetPixels();
for (int i = 0; i < Size.x * Size.y; i++)
for (int i = 0; i < Width * Height; i++)
{
int p = i * 4;
float y = spix[p] * (1/255.f);

View file

@ -327,8 +327,8 @@ int32_t polymost_spriteHasTranslucency(tspritetype const * const tspr)
auto tex = TileFiles.tiles[tspr->picnum];
auto si = tex->FindReplacement(tspr->shade, 0);
if (si && hw_hightile) tex = si->faces[0];
if (tex->Get8BitPixels()) return false;
return tex && tex->GetTranslucency();
if (tex->GetTexelWidth() == 0 || tex->GetTexelHeight() == 0) return false;
return tex && tex->GetTranslucency();
}
int32_t polymost_spriteIsModelOrVoxel(tspritetype const * const tspr)

View file

@ -39,7 +39,7 @@
#include "image.h"
#include "palettecontainer.h"
#if 0
//==========================================================================
//
//
@ -75,4 +75,3 @@ int FBuildTexture::CopyPixels(FBitmap *bmp, int conversion)
}
#endif

View file

@ -49,13 +49,11 @@
** the pixel data, it is fairly inefficient to process.
*/
#include <stdint.h>
#include "files.h"
#include "filesystem.h"
#include "bitmap.h"
#include "imagehelpers.h"
#include "image.h"
#include "m_png.h"
#include "filesystem.h"
// Since we want this to compile under Linux too, we need to define this
// stuff ourselves instead of including a DirectX header.

View file

@ -148,6 +148,27 @@ public:
static void RegisterForPrecache(FImageSource *img, bool requiretruecolor);
};
//==========================================================================
//
// A texture defined in a Build TILESxxx.ART file
//
//==========================================================================
struct FRemapTable;
class FBuildTexture : public FImageSource
{
public:
FBuildTexture(const FString& pathprefix, int tilenum, const uint8_t* pixels, FRemapTable* translation, int width, int height, int left, int top);
TArray<uint8_t> CreatePalettedPixels(int conversion) override;
int CopyPixels(FBitmap* bmp, int conversion) override;
protected:
const uint8_t* RawPixels;
FRemapTable* Translation;
};
//==========================================================================
//
// a TGA texture

View file

@ -335,17 +335,17 @@ void F2DDrawer::AddFlatFill(int left, int top, int right, int bottom, FTexture *
// scaling is not used here.
if (!local_origin)
{
fU1 = float(left) / src->GetWidth();
fV1 = float(top) / src->GetHeight();
fU2 = float(right) / src->GetWidth();
fV2 = float(bottom) / src->GetHeight();
fU1 = float(left) / src->GetDisplayWidth();
fV1 = float(top) / src->GetDisplayHeight();
fU2 = float(right) / src->GetDisplayWidth();
fV2 = float(bottom) / src->GetDisplayHeight();
}
else
{
fU1 = 0;
fV1 = 0;
fU2 = float(right - left) / src->GetWidth();
fV2 = float(bottom - top) / src->GetHeight();
fU2 = float(right - left) / src->GetDisplayWidth();
fV2 = float(bottom - top) / src->GetDisplayHeight();
}
dg.mVertIndex = (int)mVertices.Reserve(4);
auto ptr = &mVertices[dg.mVertIndex];
@ -667,7 +667,7 @@ void F2DDrawer::rotatesprite(int32_t sx, int32_t sy, int32_t z, int16_t a, int16
float alpha = GetAlphaFromBlend(method, dablend) * (1.f - drawpoly_alpha); // Hmmm...
p.a = (uint8_t)(alpha * 255);
vec2_16_t const siz = dg.mTexture->GetSize();
vec2_t const siz = { dg.mTexture->GetDisplayWidth(), dg.mTexture->GetDisplayHeight() };
vec2_16_t ofs = { 0, 0 };
if (!(dastat & RS_TOPLEFT))

View file

@ -116,8 +116,8 @@ bool SetTextureParms(DrawParms *parms, FTexture *img, double xx, double yy)
{
parms->x = xx;
parms->y = yy;
parms->texwidth = img->GetWidth();
parms->texheight = img->GetHeight();
parms->texwidth = img->GetDisplayWidth();
parms->texheight = img->GetDisplayHeight();
if (parms->top == INT_MAX || parms->fortext)
{
parms->top = img->GetTopOffset();
@ -128,11 +128,11 @@ bool SetTextureParms(DrawParms *parms, FTexture *img, double xx, double yy)
}
if (parms->destwidth == INT_MAX || parms->fortext)
{
parms->destwidth = img->GetWidth();
parms->destwidth = img->GetDisplayWidth();
}
if (parms->destheight == INT_MAX || parms->fortext)
{
parms->destheight = img->GetHeight();
parms->destheight = img->GetDisplayHeight();
}
switch (parms->cleanmode)
@ -390,8 +390,8 @@ bool ParseDrawTextureTags(FTexture *img, double x, double y, uint32_t tag, Va_Li
assert(fortext == false);
if (img == NULL) return false;
parms->cleanmode = DTA_Fullscreen;
parms->virtWidth = img->GetWidth();
parms->virtHeight = img->GetHeight();
parms->virtWidth = img->GetDisplayWidth();
parms->virtHeight = img->GetDisplayHeight();
}
break;
@ -432,19 +432,19 @@ bool ParseDrawTextureTags(FTexture *img, double x, double y, uint32_t tag, Va_Li
break;
case DTA_SrcX:
parms->srcx = ListGetDouble(tags) / img->GetWidth();
parms->srcx = ListGetDouble(tags) / img->GetDisplayWidth();
break;
case DTA_SrcY:
parms->srcy = ListGetDouble(tags) / img->GetHeight();
parms->srcy = ListGetDouble(tags) / img->GetDisplayHeight();
break;
case DTA_SrcWidth:
parms->srcwidth = ListGetDouble(tags) / img->GetWidth();
parms->srcwidth = ListGetDouble(tags) / img->GetDisplayWidth();
break;
case DTA_SrcHeight:
parms->srcheight = ListGetDouble(tags) / img->GetHeight();
parms->srcheight = ListGetDouble(tags) / img->GetDisplayHeight();
break;
case DTA_TopOffset:
@ -476,8 +476,8 @@ bool ParseDrawTextureTags(FTexture *img, double x, double y, uint32_t tag, Va_Li
if (fortext) return false;
if (ListGetInt(tags))
{
parms->left = img->GetWidth() * 0.5;
parms->top = img->GetHeight() * 0.5;
parms->left = img->GetDisplayWidth() * 0.5;
parms->top = img->GetDisplayHeight() * 0.5;
}
break;
@ -486,8 +486,8 @@ bool ParseDrawTextureTags(FTexture *img, double x, double y, uint32_t tag, Va_Li
if (fortext) return false;
if (ListGetInt(tags))
{
parms->left = img->GetWidth() * 0.5;
parms->top = img->GetHeight();
parms->left = img->GetDisplayWidth() * 0.5;
parms->top = img->GetDisplayHeight();
}
break;

View file

@ -416,13 +416,13 @@ void FListMenuItemStaticPatch::Drawer(DListMenu* menu, const DVector2& origin, b
FTexture *tex = mTexture;
if (mYpos >= 0)
{
if (mCentered) x -= tex->GetWidth()/2;
if (mCentered) x -= tex->GetDisplayWidth()/2;
DrawTexture (twod, tex, x, mYpos, DTA_Clean, true, TAG_DONE);
}
else
{
int x = (mXpos - 160) * CleanXfac + (screen->GetWidth()>>1);
if (mCentered) x -= (tex->GetWidth()*CleanXfac)/2;
if (mCentered) x -= (tex->GetDisplayWidth()*CleanXfac)/2;
DrawTexture (twod, tex, x, -mYpos*CleanYfac, DTA_CleanNoMove, true, TAG_DONE);
}
}
@ -645,7 +645,7 @@ void FListMenuItemPatch::Drawer(DListMenu* menu, const DVector2& origin, bool se
int FListMenuItemPatch::GetWidth()
{
return mTexture
? mTexture->GetWidth()
? mTexture->GetDisplayWidth()
: 0;
}

View file

@ -268,10 +268,10 @@ bool DMenu::MouseEventBack(int type, int x, int y)
FTexture* tex = TileFiles.GetTexture("engine/graphics/m_back.png");
if (tex != NULL)
{
if (m_show_backbutton&1) x -= screen->GetWidth() - tex->GetWidth() * CleanXfac;
if (m_show_backbutton&2) y -= screen->GetHeight() - tex->GetHeight() * CleanYfac;
mBackbuttonSelected = ( x >= 0 && x < tex->GetWidth() * CleanXfac &&
y >= 0 && y < tex->GetHeight() * CleanYfac);
if (m_show_backbutton&1) x -= screen->GetWidth() - tex->GetDisplayWidth() * CleanXfac;
if (m_show_backbutton&2) y -= screen->GetHeight() - tex->GetDisplayHeight() * CleanYfac;
mBackbuttonSelected = ( x >= 0 && x < tex->GetDisplayWidth() * CleanXfac &&
y >= 0 && y < tex->GetDisplayHeight() * CleanYfac);
if (mBackbuttonSelected && type == MOUSE_Release)
{
if (m_use_mouse == 2) mBackbuttonSelected = false;
@ -322,17 +322,19 @@ void DMenu::Drawer ()
if (this == DMenu::CurrentMenu && BackbuttonAlpha > 0 && m_show_backbutton >= 0 && m_use_mouse)
{
FTexture* tex = TileFiles.GetTexture("engine/graphics/m_back.png");
int w = tex->GetWidth() * CleanXfac;
int h = tex->GetHeight() * CleanYfac;
int x = (!(m_show_backbutton&1))? 0:screen->GetWidth() - w;
int y = (!(m_show_backbutton&2))? 0:screen->GetHeight() - h;
if (mBackbuttonSelected && (mMouseCapture || m_use_mouse == 1))
{
DrawTexture(twod, tex, x, y, DTA_CleanNoMove, true, DTA_ColorOverlay, MAKEARGB(40, 255,255,255), TAG_DONE);
}
else
{
DrawTexture(twod, tex, x, y, DTA_CleanNoMove, true, DTA_Alpha, BackbuttonAlpha, TAG_DONE);
int w = tex->GetDisplayWidth() * CleanXfac;
int h = tex->GetDisplayHeight() * CleanYfac;
int x = (!(m_show_backbutton & 1)) ? 0 : screen->GetWidth() - w;
int y = (!(m_show_backbutton & 2)) ? 0 : screen->GetHeight() - h;
if (mBackbuttonSelected && (mMouseCapture || m_use_mouse == 1))
{
DrawTexture(twod, tex, x, y, DTA_CleanNoMove, true, DTA_ColorOverlay, MAKEARGB(40, 255, 255, 255), TAG_DONE);
}
else
{
DrawTexture(twod, tex, x, y, DTA_CleanNoMove, true, DTA_Alpha, BackbuttonAlpha, TAG_DONE);
}
}
}
}

View file

@ -416,7 +416,7 @@ unsigned FSavegameManager::ExtractSaveData(int index)
{
SavePic = PNGTexture_CreateFromFile(png, node->Filename);
delete png;
if (SavePic && SavePic->GetWidth() == 1 && SavePic->GetHeight() == 1)
if (SavePic && SavePic->GetDisplayWidth() == 1 && SavePic->GetDisplayHeight() == 1)
{
delete SavePic;
SavePic = nullptr;

View file

@ -178,10 +178,10 @@ void FGLRenderer::BindToFrameBuffer(FTexture *mat)
{
// must create the hardware texture first
BaseLayer = new FHardwareTexture();
BaseLayer->CreateTexture(mat->GetWidth()*4, mat->GetHeight()*4, FHardwareTexture::TrueColor, false);
BaseLayer->CreateTexture(mat->GetTexelWidth()*4, mat->GetTexelHeight()*4, ::FHardwareTexture::TrueColor, false);
mat->SetHardwareTexture(0, BaseLayer);
}
BaseLayer->BindToFrameBuffer(mat->GetWidth()*4, mat->GetHeight()*4);
BaseLayer->BindToFrameBuffer(mat->GetTexelWidth()*4, mat->GetTexelHeight()*4);
}
//===========================================================================

View file

@ -226,6 +226,10 @@ public:
int GetWidth() const { return Size.x; }
int GetHeight() const { return Size.y; }
int GetTexelWidth() const { return Size.x; }
int GetTexelHeight() const { return Size.y; }
int GetDisplayWidth() const { return Size.x; }
int GetDisplayHeight() const { return Size.y; }
const vec2_16_t &GetSize() const { return Size; }
const uint8_t& GetPicSize() const { return PicSize; }
int GetLeftOffset() const { return PicAnim.xofs; }
@ -294,7 +298,11 @@ protected:
FString Name;
vec2_16_t Size = { 0,0 }; // Keep this in the native format so that we can use it without copying it around.
union
{
vec2_16_t Size = { 0,0 }; // Keep this in the native format so that we can use it without copying it around.
struct { uint16_t Width, Height; };
};
rottile_t RotTile = { -1,-1 };
uint8_t bMasked = true; // Texture (might) have holes
int8_t bTranslucent = -1; // Does this texture have an active alpha channel?