home *** CD-ROM | disk | FTP | other *** search
- //----------------------------------------------------------------------------
- // ObjectWindows
- // (C) Copyright 1992, 1994 by Borland International, All Rights Reserved
- //
- // Definition of abstract GDI object class and derived classes
- //----------------------------------------------------------------------------
- #if !defined(OWL_GDIOBJEC_H)
- #define OWL_GDIOBJEC_H
-
- #if !defined(OWL_GDIBASE_H)
- # include <owl/gdibase.h>
- #endif
-
- class _OWLCLASS TDC;
- class _BIDSCLASS TFile;
- class _OWLCLASS TBrush;
- class _OWLCLASS TBitmap;
- class _OWLCLASS TDib;
- class _OWLCLASS TPalette;
- class _OWLCLASS TClipboard;
- class _OWLCLASS TMetaFilePict;
-
- //
- // GDI Orphan control - Object reference counting & orphan recovery
- // enabled by default unless NO_GDI_ORPHAN_CONTROL is defined.
- //
- #if !defined(NO_GDI_ORPHAN_CONTROL)
- # define OBJ_REF_ADD(handle,type) TGdiObject::RefAdd((handle), (type))
- # define OBJ_REF_REMOVE(handle) TGdiObject::RefRemove(handle)
- # define OBJ_REF_INC(handle) TGdiObject::RefInc(handle)
- # if defined(__TRACE)
- # define OBJ_REF_DEC(handle, wantDelete) TGdiObject::RefDec((handle),\
- (wantDelete))
- # else
- # define OBJ_REF_DEC(handle, wantDelete) TGdiObject::RefDec((handle))
- # endif
- # define OBJ_REF_COUNT(handle) TGdiObject::RefCount(handle)
- struct TObjInfo;
- #else
- # define OBJ_REF_ADD(handle,type) handle
- # define OBJ_REF_REMOVE(handle) handle
- # define OBJ_REF_INC(handle) handle
- # define OBJ_REF_DEC(handle,wantDelete) handle
- # define OBJ_REF_COUNT(handle) -1
- #endif
-
- //
- // class TGdiObject
- // ----- ----------
- //
- // Abstract class for Windows GDI objects. Provides base, destruction &
- // orphan control for true GDI objects
- //
- class _OWLCLASS TGdiObject : private TGdiBase {
- public:
- // virtual destructor--all GDI objects inherit this.
- /*virtual*/ ~TGdiObject();
-
- operator HGDIOBJ() const {return HGDIOBJ(Handle);}
- int GetObject(int count, void far* object) const;
- bool operator ==(const TGdiObject& other) const {return Handle == other.Handle;}
-
- #if !defined(NO_GDI_ORPHAN_CONTROL)
- enum TType {
- None, Pen, Brush, Font, Palette, Bitmap, TextBrush
- };
- static TObjInfo* RefFind(HANDLE object);
- static void RefAdd(HANDLE handle, TType type);
- static void RefRemove(HANDLE handle);
- static void RefInc(HANDLE handle);
- #if defined(__TRACE)
- static void RefDec(HANDLE handle, bool wantDelete);
- #else
- static void RefDec(HANDLE handle);
- #endif
- static int RefCount(HANDLE handle);
- #endif
-
- protected:
- TGdiBase::CheckValid; // make this function available to derivatives
- TGdiBase::Handle; // and these members too
- TGdiBase::ShouldDelete;
-
- // constructors for use by derived classes only
- TGdiObject();
- TGdiObject(HANDLE handle, TAutoDelete autoDelete = NoAutoDelete);
-
- private:
- TGdiObject(const TGdiObject&); // Protect against copying of GDI objects
- TGdiObject& operator =(const TGdiObject&);
- };
-
- //
- // class TPen
- // ----- ----
- //
- // GDI Pen class. Can construct a pen from explicit info, or indirectly
- //
- class _OWLCLASS TPen : public TGdiObject {
- public:
- // Constructors
- TPen(HPEN handle, TAutoDelete autoDelete = NoAutoDelete);
-
- TPen(TColor color, int width=1, int style=PS_SOLID);
- TPen(const LOGPEN far* logPen);
- TPen(const TPen&);
- #if defined(BI_PLAT_WIN32)
- TPen(uint32 penStyle, uint32 width, const TBrush& brush, uint32 styleCount,
- uint32* style);
- TPen(uint32 penStyle, uint32 width, const LOGBRUSH& logBrush,
- uint32 styleCount, uint32* style);
- #endif
-
- operator HPEN() const {return HPEN(HGDIOBJ(*this));}
-
- // Get GDI Pen Object information
- bool GetObject(LOGPEN far& logPen) const;
-
- private:
- TPen& operator =(const TPen&);
- };
-
- //
- // class TBrush
- // ----- ------
- //
- // GDI Brush class. Can construct a brush from explicit info, creating a
- // solid, styled, or patterned brush. Can also create a brush indirectly.
- //
- class _OWLCLASS TBrush : public TGdiObject {
- public:
- // Constructors
- TBrush(HBRUSH handle, TAutoDelete autoDelete = NoAutoDelete);
-
- TBrush(TColor color);
- TBrush(TColor color, int style);
- TBrush(const TBitmap& pattern);
- TBrush(const TDib& pattern);
- TBrush(const LOGBRUSH far* logBrush);
- TBrush(const TBrush& src);
-
- operator HBRUSH() const {return HBRUSH(HGDIOBJ(*this));}
-
- // Get GDI Brush Object information
- bool GetObject(LOGBRUSH far& logBrush) const;
- #if defined(BI_PLAT_WIN16)
- bool UnrealizeObject(); // Use TDC::SetBrushOrg() for Win32
- #endif
-
- private:
- TBrush& operator =(const TBrush&);
- };
-
- //
- // class THatch8x8Brush
- // ----- --------------
- //
- // Mini 8x8 monochrome configurable hatch brush class, with predefined patterns
- //
- class _OWLCLASS THatch8x8Brush : public TBrush {
- public:
- THatch8x8Brush(const uint8 hatch[], TColor fgColor=TColor::White,
- TColor bgColor=TColor::Black);
- void Reconstruct(const uint8 hatch[], TColor fgColor, TColor bgColor);
-
- const static uint8 Hatch22F1[8]; // 2-on, 2-off, offset 1 per row forward
- const static uint8 Hatch13F1[8]; // 1-on, 3-off, offset 1 per row forward
- const static uint8 Hatch11F1[8]; // 1-on, 1-off, offset 1 per row
- const static uint8 Hatch22B1[8]; // 2-on, 2-off, offset 1 per row backward
- const static uint8 Hatch13B1[8]; // 1-on, 3-off, offset 1 per row backward
-
- private:
- static HBRUSH Create(const uint8 hatch[], TColor fgColor, TColor bgColor);
- };
-
- //
- // class TFont
- // ----- -----
- //
- // GDI Font class. Can construct a font from explicit info, or indirectly.
- //
- class _OWLCLASS TFont : public TGdiObject {
- public:
- // Constructors
- TFont(HFONT handle, TAutoDelete autoDelete = NoAutoDelete);
-
- // Convenient font ctor
- TFont(const char far* facename=0,
- int height=0, int width=0, int escapement=0, int orientation=0,
- int weight=FW_NORMAL,
- uint8 pitchAndFamily=DEFAULT_PITCH|FF_DONTCARE,
- uint8 italic=false, uint8 underline=false, uint8 strikeout=false,
- uint8 charSet=1, // DEFAULT_CHARSET or UNICODE_CHARSET
- uint8 outputPrecision=OUT_DEFAULT_PRECIS,
- uint8 clipPrecision=CLIP_DEFAULT_PRECIS,
- uint8 quality=DEFAULT_QUALITY);
-
- // CreateFont() matching font ctor
- TFont(int height, int width, int escapement=0, int orientation=0,
- int weight=FW_NORMAL,
- uint8 italic=false, uint8 underline=false, uint8 strikeout=false,
- uint8 charSet=1, // DEFAULT_CHARSET or UNICODE_CHARSET
- uint8 outputPrecision=OUT_DEFAULT_PRECIS,
- uint8 clipPrecision=CLIP_DEFAULT_PRECIS,
- uint8 quality=DEFAULT_QUALITY,
- uint8 pitchAndFamily=DEFAULT_PITCH|FF_DONTCARE,
- const char far* facename=0);
- TFont(const LOGFONT far* logFont);
- TFont(const TFont&);
-
- operator HFONT() const {return HFONT(HGDIOBJ(*this));}
-
- // Get GDI Font Object information
- bool GetObject(LOGFONT far& logFont) const;
-
- private:
- TFont& operator =(const TFont&);
- };
-
- //
- // class TPalette
- // ----- --------
- //
- // GDI Palette class. Can construct a palette from explicit info, or
- // indirectly from various color table types that are used by DIBs.
- //
- class _OWLCLASS TPalette : public TGdiObject {
- public:
- // Constructors
- TPalette(HPALETTE handle, TAutoDelete autoDelete = NoAutoDelete);
-
- TPalette(const TClipboard&);
- TPalette(const TPalette& palette); // Copy whole palette
-
- TPalette(const LOGPALETTE far* logPalette);
- TPalette(const PALETTEENTRY far* entries, int count);
- TPalette(const BITMAPINFO far* info, uint flags=0); //Win 3.0 DIB hdr
- TPalette(const BITMAPCOREINFO far* core, uint flags=0);//PM 1.0 DIB header
- TPalette(const TDib& dib, uint flags=0); // DIB object
-
- operator HPALETTE() const {return HPALETTE(HGDIOBJ(*this));}
-
- // Palette functions
- bool ResizePalette(uint numEntries);
- void AnimatePalette(uint start, uint count, const PALETTEENTRY far* entries);
- uint SetPaletteEntries(uint16 start, uint16 count, const PALETTEENTRY far* entries);
- uint SetPaletteEntry(uint16 index, const PALETTEENTRY far& entry);
- uint GetPaletteEntries(uint16 start, uint16 count, PALETTEENTRY far* entries) const;
- uint GetPaletteEntry(uint16 index, PALETTEENTRY far& entry) const;
- uint GetNearestPaletteIndex(TColor color) const;
- bool GetObject(uint16 far& numEntries) const;
- uint16 GetNumEntries() const;
-
- // Put this palette onto the clipboard
- void ToClipboard(TClipboard& Clipboard);
- bool UnrealizeObject() {return ::UnrealizeObject(Handle);}
-
- protected:
- void Create(const BITMAPINFO far* info, uint flags);
- void Create(const BITMAPCOREINFO far* core, uint flags);
-
- private:
- TPalette& operator =(const TPalette&);
- };
-
- inline TClipboard& operator <<(TClipboard& clipboard, TPalette& palette)
- {palette.ToClipboard(clipboard); return clipboard;}
-
- //
- // class TBitmap
- // ----- -------
- //
- // GDI Bitmap class. Can construct a bitmap from many sources. This bitmap
- // is the lowest level object that is actually selected into a DC.
- //
- class _OWLCLASS TBitmap : public TGdiObject {
- public:
- // Constructors
- TBitmap(HBITMAP handle, TAutoDelete autoDelete = NoAutoDelete);
- TBitmap(const TClipboard& clipboard);
- TBitmap(const TBitmap& bitmap);
-
- TBitmap(int width, int height, uint8 planes=1, uint8 bitCount=1, const void far* bits=0);
- TBitmap(const BITMAP far* bitmap);
- TBitmap(const TDC& Dc, int width, int height, bool discardable = false);
- TBitmap(const TDC& Dc, const TDib& dib, uint32 usage=CBM_INIT);
-
- TBitmap(const TMetaFilePict& metaFile, TPalette& palette, const TSize& size);
- TBitmap(const TDib& dib, const TPalette* palette = 0);
-
- TBitmap(HINSTANCE, TResId);
-
- operator HBITMAP() const {return HBITMAP(HGDIOBJ(*this));}
-
- // Get/set GDI Object information
- bool GetObject(BITMAP far& bitmap) const;
- int Width() const;
- int Height() const;
- uint8 Planes() const;
- uint8 BitsPixel() const;
- uint32 GetBitmapBits(uint32 count, void far* bits) const;
- uint32 SetBitmapBits(uint32 count, const void far* bits);
- bool GetBitmapDimension(TSize& size) const;
- bool SetBitmapDimension(const TSize& size, TSize far* oldSize=0);
-
- // Put this bitmap onto the clipboard
- void ToClipboard(TClipboard& clipboard);
-
- protected:
- TBitmap();
-
- // Create a bitmap & fill in it's Handle
- void Create(const TDib& dib, const TPalette& palette);
- void Create(const TBitmap& src);
-
- private:
- TBitmap& operator =(const TBitmap&);
- };
-
- inline TClipboard& operator <<(TClipboard& clipboard, TBitmap& bitmap)
- {bitmap.ToClipboard(clipboard); return clipboard;}
-
- //
- // class TRegion
- // ----- -------
- //
- // GDI Region class. Can construct a region from various shapes
- //
- class _OWLCLASS TRegion : private TGdiBase {
- public:
- // Constructors
- TRegion();
- TRegion(HRGN handle, TAutoDelete autoDelete = NoAutoDelete);
- TRegion(const TRegion& region);
- TRegion(const TRect& rect);
- enum TEllipse {Ellipse};
- TRegion(const TRect& e, TEllipse);
- TRegion(const TRect& rect, const TSize& corner);
- TRegion(const TPoint* points, int count, int fillMode);
- TRegion(const TPoint* points, const int* polyCounts, int count,
- int fillMode);
- ~TRegion();
-
- // Other initialization
- void SetRectRgn(const TRect& rect);
-
- // Type Conversion Operators
- operator HRGN() const {return HRGN(Handle);}
-
- // Test and information functions/operators
- bool operator ==(const TRegion& other) const;
- bool operator !=(const TRegion& other) const;
- bool Contains(const TPoint& point) const;
- bool Touches(const TRect& rect) const;
- int GetRgnBox(TRect& box) const;
- TRect GetRgnBox() const;
-
- // Assignment operators
- TRegion& operator =(const TRegion& source);
- TRegion& operator +=(const TSize& delta);
- TRegion& operator -=(const TSize& delta);
- TRegion& operator -=(const TRegion& source);
- TRegion& operator &=(const TRegion& source);
- TRegion& operator &=(const TRect& source);
- TRegion& operator |=(const TRegion& source);
- TRegion& operator |=(const TRect& source);
- TRegion& operator ^=(const TRegion& source);
- TRegion& operator ^=(const TRect& source);
- };
-
- //
- // class TIcon
- // ----- -----
- //
- // Pseudo-GDI object Icon class. Can construct an icon from a resource or
- // explicit info. Overloads the destructor since it is not a real GDI object.
- //
- class _OWLCLASS TIcon : private TGdiBase {
- public:
- // Constructors
- TIcon(HICON handle, TAutoDelete autoDelete = NoAutoDelete);
- TIcon(HINSTANCE, const TIcon& icon);
- TIcon(HINSTANCE, TResId);
- TIcon(HINSTANCE, const char far* filename, int index);
- TIcon(HINSTANCE, const TSize& size, int planes, int bitsPixel,
- const void far* andBits, const void far* xorBits);
- #if defined(BI_PLAT_WIN32)
- TIcon(const void* resBits, uint32 resSize);
- TIcon(const ICONINFO* iconInfo);
- #endif
- ~TIcon();
-
- operator HICON() const {return HICON(Handle);}
- bool operator ==(const TIcon& other) const {return Handle == other.Handle;}
-
- #if defined(BI_PLAT_WIN32)
- bool GetIconInfo(ICONINFO* iconInfo) const;
- #endif
-
- private:
- TIcon(const TIcon&); // Protect against copying of icons
- TIcon& operator =(const TIcon&);
- };
-
- //
- // class TCursor
- // ----- -------
- //
- // Pseudo-GDI object Cursor class. Can construct an cursor from a resource or
- // explicit info. Overloads the destructor since it is not a real GDI object.
- //
- class _OWLCLASS TCursor : public TGdiBase {
- public:
- // Constructors
- TCursor(HCURSOR handle, TAutoDelete autoDelete = NoAutoDelete);
- TCursor(HINSTANCE, const TCursor& cursor);
- TCursor(HINSTANCE, TResId);
- TCursor(HINSTANCE, const TPoint& hotSpot,
- const TSize& size, void far* andBits, void far* xorBits);
- #if defined(BI_PLAT_WIN32)
- TCursor(const void* resBits, uint32 resSize);
- TCursor(const ICONINFO* iconInfo);
- #endif
- ~TCursor();
-
- operator HCURSOR() const {return HCURSOR(Handle);}
- bool operator ==(const TCursor& other) const {return Handle == other.Handle;}
-
- #if defined(BI_PLAT_WIN32)
- bool GetIconInfo(ICONINFO* iconInfo) const;
- #endif
-
- private:
- TCursor(const TCursor&); // Protect against copying of cursors
- TCursor& operator =(const TCursor&);
- };
-
- //
- // class TDib
- // ----- ----
- //
- // Pseudo-GDI object Device Independent Bitmap (DIB) class. DIBs really have
- // no Window's handle, they are just a structure containing format and palette
- // information and a collection of bits (pixels). This class provides a very
- // convenient way to work with DIBs like any other GDI object.
- // The memory for the DIB is in one GlobalAlloc'd chunk so it can be passed to
- // the Clipboard, OLE, etc.
- // Overloads the destructor since it is not a real GDI object.
- //
- // This is what is really inside a .BMP file, what is in bitmap resources, and
- // what is put on the clipboard as a DIB.
- //
- class _OWLCLASS TDib : private TGdiBase {
- public:
- // Constructors and destructor
- TDib(HGLOBAL handle, TAutoDelete autoDelete = NoAutoDelete);
- TDib(const TClipboard& clipboard);
- TDib(const TDib& dib);
-
- TDib(int width, int height, int nColors, uint16 mode=DIB_RGB_COLORS);
- TDib(HINSTANCE, TResId);
- TDib(const char* name);
- #if !defined(BI_DATA_NEAR)
- TDib(istream& is, bool readFileHeader = false);
- #endif
- TDib(const TBitmap& bitmap, const TPalette* pal = 0);
- ~TDib();
-
- // Comparison operator
- bool operator ==(const TDib& other) const {return Handle == other.Handle;}
-
- // Access to the internal structures of the dib
- const BITMAPINFO far* GetInfo() const {return Info;}
- BITMAPINFO far* GetInfo() {return Info;}
- const BITMAPINFOHEADER far*GetInfoHeader() const {return &Info->bmiHeader;}
- BITMAPINFOHEADER far* GetInfoHeader() {return &Info->bmiHeader;}
- const TRgbQuad far* GetColors() const {return (const TRgbQuad far*)Info->bmiColors;}
- TRgbQuad far* GetColors() {return (TRgbQuad far*)Info->bmiColors;}
- const uint16 far* GetIndices() const {return (uint16*)Info->bmiColors;}
- uint16 far* GetIndices() {return (uint16*)Info->bmiColors;}
- const void HUGE* GetBits() const {return Bits;}
- void HUGE* GetBits() {return Bits;}
-
- // Type convert this dib by returning pointers to internal structures
- operator HANDLE() const {return Handle;}
- operator const BITMAPINFO far*() const {return GetInfo();}
- operator BITMAPINFO far*() {return GetInfo();}
- operator const BITMAPINFOHEADER far*() const {return GetInfoHeader();}
- operator BITMAPINFOHEADER far*() {return GetInfoHeader();}
- operator const TRgbQuad far*() const {return GetColors();}
- operator TRgbQuad far*() {return GetColors();}
-
- // Put this Dib onto the clipboard
- void ToClipboard(TClipboard& clipboard);
-
- // Get info about this Dib
- bool IsOK() const {return Info != 0;}
- bool IsPM() const {return IsCore;}
- int Width() const {return W;}
- int Height() const {return H;}
- TSize Size() const {return TSize(W,H);}
- long NumColors() const {return NumClrs;}
- uint16 StartScan() const {return 0;}
- uint16 NumScans() const {return uint16(H);}
- uint16 Usage() const {return Mode;}
-
- // Write this dib to a file by name, to file object or to an ostream
- bool WriteFile(const char* filename);
- bool Write(TFile& file, bool writeFileHeader = false);
- #if !defined(BI_DATA_NEAR)
- bool Write(ostream& os, bool writeFileHeader = false);
- #endif
-
- // Work with the dib in PAL or RGB mode
- bool ChangeModeToPal(const TPalette& pal);
- bool ChangeModeToRGB(const TPalette& pal);
- TColor GetColor(int entry) const;
- void SetColor(int entry, TColor color);
- int FindColor(TColor color);
- int MapColor(TColor fromColor, TColor toColor, bool doAll = false);
- uint16 GetIndex(int entry) const;
- void SetIndex(int entry, uint16 index);
- int FindIndex(uint16 index);
- int MapIndex(uint16 fromIndex, uint16 toIndex, bool doAll = false);
-
- enum {
- MapFace = 0x01, // Or these together to control colors to map
- MapText = 0x02, // to current SysColor values
- MapShadow = 0x04,
- MapHighlight = 0x08,
- MapFrame = 0x10
- };
- void MapUIColors(uint mapColors, TColor* bkColor = 0);
-
- protected:
- TGdiBase::CheckValid; // make this function available to derivatives
- TGdiBase::Handle; // and these members too
- TGdiBase::ShouldDelete;
-
- BITMAPINFO far* Info; // Locked global alloc'd block
- void HUGE* Bits; // Pointer into above block at bits
- long NumClrs;
- int W;
- int H;
- uint16 Mode;
- bool IsCore : 1;
- bool IsResHandle : 1;
-
- // Protected ctor- derived classes need to fillin handle & get info
- TDib();
-
- void InfoFromHandle();
- bool ReadFile(const char* name);
- bool Read(TFile& file, bool readFileHeader = false);
- #if !defined(BI_DATA_NEAR)
- bool Read(istream& is, bool readFileHeader = false);
- #endif
-
- bool LoadResource(HINSTANCE, TResId);
-
- bool LoadFile(const char* name) {return ReadFile(name);} // old name
-
- private:
- TDib& operator =(const TDib&);
- };
-
- inline TClipboard& operator <<(TClipboard& clipboard, TDib& dib)
- {dib.ToClipboard(clipboard); return clipboard;}
-
-
- //----------------------------------------------------------------------------
- // Inlines for abstract GDI object class and derived classes.
- //----------------------------------------------------------------------------
- #if !defined(OWL_DC_H)
- # include <owl/dc.h>
- #endif
- #if !defined(OWL_CLIPBOAR_H)
- # include <owl/clipboar.h>
- #endif
-
- inline int TGdiObject::GetObject(int count, void far* object) const {
- #if defined(BI_PLAT_WIN32)
- # if defined(UNICODE)
- return ::GetObjectW(Handle, count, object);
- # else
- return ::GetObjectA(Handle, count, object);
- # endif
- #else
- return ::GetObject(Handle, count, object);
- #endif
- }
-
- inline bool TPen::GetObject(LOGPEN far& logPen) const {
- return TGdiObject::GetObject(sizeof(logPen), &logPen) != 0;
- }
-
- inline bool TBrush::GetObject(LOGBRUSH far& logBrush) const {
- return TGdiObject::GetObject(sizeof(logBrush), &logBrush) != 0;
- }
-
- #if defined(BI_PLAT_WIN16)
- inline bool TBrush:: UnrealizeObject() {
- return ::UnrealizeObject(Handle);
- }
- #endif
-
- inline bool TFont::GetObject(LOGFONT far& logFont) const {
- return TGdiObject::GetObject(sizeof(logFont), &logFont) != 0;
- }
-
-
- inline bool TPalette::ResizePalette(uint numEntries) {
- return ::ResizePalette((HPALETTE)Handle, numEntries);
- }
-
- inline void TPalette::AnimatePalette(uint start, uint count, const PALETTEENTRY far* entries) {
- ::AnimatePalette((HPALETTE)Handle, start, count, entries);
- }
-
- inline uint TPalette::SetPaletteEntries(uint16 start, uint16 count, const PALETTEENTRY far* entries) {
- return ::SetPaletteEntries((HPALETTE)Handle, start, count, entries);
- }
-
- inline uint TPalette::SetPaletteEntry(uint16 index, const PALETTEENTRY far& entry) {
- return ::SetPaletteEntries((HPALETTE)Handle, index, 1, &entry);
- }
-
- inline uint TPalette::GetPaletteEntries(uint16 start, uint16 count, PALETTEENTRY far* entries) const {
- return ::GetPaletteEntries((HPALETTE)Handle, start, count, entries);
- }
-
- inline uint TPalette::GetPaletteEntry(uint16 index, PALETTEENTRY far& entry) const {
- return ::GetPaletteEntries((HPALETTE)Handle, index, 1, &entry);
- }
-
- inline uint TPalette::GetNearestPaletteIndex(TColor Color) const {
- return ::GetNearestPaletteIndex((HPALETTE)Handle, Color);
- }
-
- inline bool TPalette::GetObject(uint16 far& numEntries) const {
- return TGdiObject::GetObject(sizeof(numEntries), &numEntries);
- }
-
- inline uint16 TPalette::GetNumEntries() const {
- uint16 numEntries;
- if (TGdiObject::GetObject(sizeof(numEntries), &numEntries))
- return numEntries;
- return 0;
- }
-
- inline uint32 TBitmap::GetBitmapBits(uint32 count, void far* bits) const {
- return ::GetBitmapBits((HBITMAP)Handle, count, bits);
- }
-
- inline uint32 TBitmap::SetBitmapBits(uint32 count, const void far* bits) {
- return ::SetBitmapBits((HBITMAP)Handle, count, bits);
- }
-
- inline bool TBitmap::GetBitmapDimension(TSize& size) const {
- return ::GetBitmapDimensionEx((HBITMAP)Handle, &size);
- }
-
- inline bool TBitmap::SetBitmapDimension(const TSize& size, TSize far* oldSize) {
- return ::SetBitmapDimensionEx((HBITMAP)Handle, size.cx, size.cy, oldSize);
- }
-
- inline bool TBitmap::GetObject(BITMAP far& Bitmap) const {
- return TGdiObject::GetObject(sizeof(Bitmap), &Bitmap) != 0;
- }
-
-
- inline void TRegion::SetRectRgn(const TRect& rect) {
- ::SetRectRgn((HRGN)Handle, rect.left, rect.top, rect.right, rect.bottom);
- }
-
- inline bool TRegion::operator ==(const TRegion& other) const {
- return ::EqualRgn((HRGN)Handle, other);
- }
-
- inline bool TRegion::operator !=(const TRegion& other) const {
- return !::EqualRgn((HRGN)Handle, other);
- }
-
- inline bool TRegion::Contains(const TPoint& point) const {
- return ::PtInRegion((HRGN)Handle, point.x, point.y);
- }
-
- inline bool TRegion::Touches(const TRect& rect) const {
- return ::RectInRegion((HRGN)Handle, (TRect*)&rect); // API <const> typecast
- }
-
- inline int TRegion::GetRgnBox(TRect& box) const {
- return ::GetRgnBox((HRGN)Handle, &box);
- }
-
- inline TRect TRegion::GetRgnBox() const {
- TRect box;
- ::GetRgnBox((HRGN)Handle, &box);
- return box;
- }
-
- inline TRegion& TRegion::operator =(const TRegion& source) {
- ::CombineRgn((HRGN)Handle, source, 0, RGN_COPY);
- return *this;
- }
-
- inline TRegion& TRegion::operator +=(const TSize& delta) {
- ::OffsetRgn((HRGN)Handle, delta.cx, delta.cy);
- return *this;
- }
-
- inline TRegion& TRegion::operator -=(const TSize& delta) {
- ::OffsetRgn((HRGN)Handle, -delta.cx, -delta.cy);
- return *this;
- }
-
- inline TRegion& TRegion::operator -=(const TRegion& source) {
- ::CombineRgn((HRGN)Handle, (HRGN)Handle, source, RGN_DIFF);
- return *this;
- }
-
- inline TRegion& TRegion::operator &=(const TRegion& source) {
- ::CombineRgn((HRGN)Handle, (HRGN)Handle, source, RGN_AND);
- return *this;
- }
-
- inline TRegion& TRegion::operator |=(const TRegion& source) {
- ::CombineRgn((HRGN)Handle, (HRGN)Handle, source, RGN_OR);
- return *this;
- }
-
- inline TRegion& TRegion::operator ^=(const TRegion& source) {
- ::CombineRgn((HRGN)Handle, (HRGN)Handle, source, RGN_XOR);
- return *this;
- }
-
- #if defined(BI_PLAT_WIN32)
- inline bool TIcon::GetIconInfo(ICONINFO far* IconInfo) const {
- return ::GetIconInfo((HICON)Handle, IconInfo);
- }
-
- inline bool TCursor::GetIconInfo(ICONINFO far* IconInfo) const {
- return ::GetIconInfo((HICON)(HCURSOR)Handle, IconInfo);
- }
- #endif
-
-
- #endif // OWL_GDIOBJEC_H
-