6 #ifndef _INC_cSurfaceBase_H
7 #define _INC_cSurfaceBase_H
14 #include "../WinAPI/WinTypes.h"
59 virtual
void SetEmpty();
61 bool isValidCheck() const noexcept
75 InitSurfaceInfo(rInfo);
115 return get_DataBytes();
133 return (BYTE*)GetLinePtrRaw(y);
147 return GetLinePtrRaw(y);
154 nPitchBytes = -nPitchBytes;
156 return(((BYTE*)pLinePtr) + nPitchBytes);
173 return ((BYTE*)pvLine) + x * sizePixel;
177 return GetPixPtr(GetLinePtr(y), x, sizePixel);
189 return ((BYTE*)GetLinePtr(y)) + ((x * wBpp) / 8);
205 return ((
const BYTE*)pvLine)[x / 8] & (1 << (7 - (x & 0x7)));
210 BYTE* pb = ((BYTE*)pvLine) + (x / 8);
211 BYTE xb = (1 << (7 - (x & 0x7)));
221 ASSERT(IsValidPixPtr(pvLine));
223 return GetPixColor1P(pvLine, x);
229 ASSERT(IsValidPixPtr(pvLine));
231 SetPixColor1P(pvLine, x, b);
238 const BYTE* pPix = GetPixPtr(pvLine, x, 1);
244 BYTE* pPix = GetPixPtr(pvLine, x, 1);
268 return GetPixColor16G(GetLinePtr(y), x);
273 SetPixColor16G(GetLinePtr(y), x, wVal);
280 const BYTE* pPix = GetPixPtr(pvLine, x, 3);
281 return RGB(pPix[0], pPix[1], pPix[2]);
287 const BYTE* pPix = GetPixPtr(pvLine, x, 3);
288 return RGB(pPix[2], pPix[1], pPix[0]);
294 BYTE* pPix = GetPixPtr(pvLine, x, 3);
303 BYTE* pPix = GetPixPtr(pvLine, x, 3);
326 return GetPixColorRef(GetLinePtr(y), x);
331 SetPixColorRef(GetLinePtr(y), x, c);
336 void SwapTopBottom();
346 return SetPixelData(rSurfSrc);
349 void SetCopyFrom(
const cSurfaceBase& TexSrc,
PIXELS_t itxs = 0,
PIXELS_t itys = 0,
bool bTextureXReverse =
false,
bool bTextureYReverse =
false,
bool bColorReverse =
false);
350 void CopyTo(
cSurfaceBase& TexDst,
PIXELS_t itxs = 0,
PIXELS_t itys = 0,
bool bTextureXReverse =
false,
bool bTextureYReverse =
false)
const;
353 static HBITMAP
GRAYCALL CreateBitmapFromPixels(
const tagBITMAPINFO* pBMI,
const void FAR* pBits);
354 HBITMAP CreateBitmapFromSurface()
const;
357 HRGN CreateMaskRegion(
COLOR16_t wTransparentColor);
388 m_ptFrameOffset.x = 0;
389 m_ptFrameOffset.y = 0;
397 m_ptFrameOffset.x = 0;
398 m_ptFrameOffset.y = 0;
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define IS_INDEX_GOOD(i, q)
cast the (likely) int to unsigned to check for negatives.
Definition: Index.h:35
#define IS_TYPE_OF(t, p)
Definition: PtrCast.h:23
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
DWORD D3DCOLOR
Stuff normally defined in windows.h or DirectX headers.
Definition: cColorRef.h:24
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define DEBUG_CHECK(exp)
Definition: cDebugAssert.h:90
UINT32 COLORREF
ABGR (high to low bits)
Definition: cVariantData.h:21
static COLOR_ELEM_t GetG(COLORREF color) noexcept
Definition: cColorRef.h:93
static COLOR_ELEM_t GetB(COLORREF color) noexcept
Definition: cColorRef.h:98
static COLOR_ELEM_t GetR(COLORREF color) noexcept
Definition: cColorRef.h:88
Definition: cSurfaceBase.h:26
void SetPixColor1(void *pvLine, PIXELS_t x, bool b)
Definition: cSurfaceBase.h:225
COLOR16_t GetPixColor16(const void *pvLine, PIXELS_t x) const noexcept
Definition: cSurfaceBase.h:249
virtual HRESULT SetCopySurface(const cSurfaceBase &rSurfSrc)
Definition: cSurfaceBase.h:343
const cSurfaceInfo & get_Info() const noexcept
Definition: cSurfaceBase.h:69
void SetPixColor24d(void *pvLine, PIXELS_t x, D3DCOLOR dwColor) noexcept
Definition: cSurfaceBase.h:299
UNITTEST_FRIEND(cSurfaceBase)
BYTE GetPixColor8(const void *pvLine, PIXELS_t x) const noexcept
Definition: cSurfaceBase.h:235
bool IsValidPixPtr(const void *p) const noexcept
Definition: cSurfaceBase.h:159
void * GetLinePtrRaw(PIXELS_t y) const noexcept
Definition: cSurfaceBase.h:125
BYTE * GetPixPtr(const void *pvLine, PIXELS_t x, size_t sizePixel) const noexcept
Definition: cSurfaceBase.h:167
void SetErase()
Definition: cSurfaceBase.h:338
BYTE * get_PixelBytes() const noexcept
Definition: cSurfaceBase.h:113
COLORREF GetPixColor24g(const void *pvLine, PIXELS_t x) const noexcept
Definition: cSurfaceBase.h:276
void SetPixColor32(void *pvLine, PIXELS_t x, COLORREF dwColor) noexcept
Definition: cSurfaceBase.h:315
COLOR16_t GetPixColor16G(PIXELS_t x, PIXELS_t y) const
Definition: cSurfaceBase.h:266
PIXELS_t get_Height() const noexcept
Definition: cSurfaceBase.h:88
void SetPixColor8(void *pvLine, PIXELS_t x, BYTE bColor) noexcept
Definition: cSurfaceBase.h:241
void put_Info(const cSurfaceInfo &rInfo)
Definition: cSurfaceBase.h:73
void * GetNextLine(const void *pLinePtr) const noexcept
Definition: cSurfaceBase.h:149
COLORREF GetPixColor32(const void *pvLine, PIXELS_t x) const noexcept
Definition: cSurfaceBase.h:309
SURF_FORM_TYPE get_PixelFormat() const noexcept
Definition: cSurfaceBase.h:97
void SetPixColorRef(PIXELS_t x, PIXELS_t y, COLORREF c)
Definition: cSurfaceBase.h:329
COLOR16_t * GetPixPtr16(PIXELS_t x, PIXELS_t y) const noexcept
Definition: cSurfaceBase.h:179
cSurfaceInfo m_Info
the image size, pitch and pixel format for m_pPixelData below.
Definition: cSurfaceBase.h:37
BYTE * GetPixPtr(PIXELS_t x, PIXELS_t y, size_t sizePixel) const noexcept
Definition: cSurfaceBase.h:175
COLORREF GetPixColorRef(PIXELS_t x, PIXELS_t y) const
Definition: cSurfaceBase.h:324
static void SetPixColor1P(void *pvLine, PIXELS_t x, bool b) noexcept
Definition: cSurfaceBase.h:207
void SetPixColor24g(void *pvLine, PIXELS_t x, COLORREF dwColor) noexcept
Definition: cSurfaceBase.h:290
BYTE * GetLinePtrByte(PIXELS_t y) const noexcept
Definition: cSurfaceBase.h:130
void * GetLinePtr(PIXELS_t y) const noexcept
Definition: cSurfaceBase.h:135
void put_PixelData(void *pPixelData) noexcept
Definition: cSurfaceBase.h:118
BYTE * GetPixPtr(PIXELS_t x, PIXELS_t y) const noexcept
Definition: cSurfaceBase.h:184
D3DCOLOR GetPixColor24d(const void *pvLine, PIXELS_t x) const noexcept
Definition: cSurfaceBase.h:283
void SetPixColor16G(PIXELS_t x, PIXELS_t y, COLOR16_t wVal)
Definition: cSurfaceBase.h:271
PIXELS_t get_Width() const noexcept
Definition: cSurfaceBase.h:83
size_t get_PitchBytes() const noexcept
Definition: cSurfaceBase.h:78
static bool GetPixColor1P(const void *pvLine, PIXELS_t x) noexcept
Definition: cSurfaceBase.h:202
bool isTopDown() const noexcept
Definition: cSurfaceBase.h:93
void SetPixColor16(void *pvLine, PIXELS_t x, COLOR16_t wColor) noexcept
Definition: cSurfaceBase.h:256
void Unlock()
Definition: cSurfaceBase.h:197
bool Lock()
Definition: cSurfaceBase.h:192
void * get_PixelData() const noexcept
Definition: cSurfaceBase.h:107
bool GetPixColor1(const void *pvLine, PIXELS_t x) const
Definition: cSurfaceBase.h:217
bool isValidPixelData() const noexcept
basic attributes.
Definition: cSurfaceBase.h:103
Definition: cSurfaceDC.h:121
Definition: cSurfaceDC.h:50
Definition: cSurfaceBase.h:366
cWinSize m_SizeOrig
Original MAX reference image size. NOT the current frame size.
Definition: cSurfaceBase.h:374
int m_nFrameCur
the enum of the current locked component/frame. < m_nFrameQty
Definition: cSurfaceBase.h:377
int m_nFrameQty
max components/frames in the file (DDS,GIF,JP2,PNG) (NOTE doesn't know how many frames until reach en...
Definition: cSurfaceBase.h:375
POINT m_ptFrameOffset
Current Frame offset in m_SizeOrig.
Definition: cSurfaceBase.h:379
virtual HRESULT SetFrameCurrent(int iFrameNum)=0
size_t m_nFrameOffset
offset in bytes from the start to m_nFrameCur frame data.
Definition: cSurfaceBase.h:378
void InitFrameCur() noexcept
Definition: cSurfaceBase.h:392
cSurfaceFrames() noexcept
Definition: cSurfaceBase.h:382
Definition: cSurfaceInfo.h:109
bool isTopDown() const noexcept
Definition: cSurfaceInfo.h:166
size_t get_BytesPerPixel() const noexcept
Definition: cSurfaceInfo.h:202
PIXELS_t get_HeightRaw() const noexcept
Definition: cSurfaceInfo.h:161
PIXELS_t get_Width() const noexcept
Definition: cSurfaceInfo.h:151
size_t get_PitchBytes() const noexcept
Definition: cSurfaceInfo.h:177
BIT_SIZE_t get_BitsPerPixel() const noexcept
Definition: cSurfaceInfo.h:198
PIXELS_t get_Height() const noexcept
Definition: cSurfaceInfo.h:156
SURF_FORM_TYPE get_PixelFormat() const noexcept
Definition: cSurfaceInfo.h:188
size_t get_SurfaceSize() const noexcept
Definition: cSurfaceInfo.h:193
Definition: WinTypes.h:128
Definition: cStream.h:126
WORD COLOR16_t
A 16 bit greyscale color.
Definition: cColorRef.h:39
UNITTEST2_PREDEF(cQuadtree)
SURF_FORM_TYPE
Definition: cSurfaceInfo.h:24
int PIXELS_t
Count of pixels in a dimension of some image/surface.
Definition: cSurfaceInfo.h:20
unsigned short BIT_SIZE_t
number of bits in some intrinsic type. <= 256 ?
Definition: cBits.h:17
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
static ptrdiff_t Diff(const void *pEnd, const void *pStart) noexcept
Definition: cMem.h:34