123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- #ifndef __WASABI_API_CANVAS_H
- #define __WASABI_API_CANVAS_H
- #include <bfc/dispatch.h>
- #include <bfc/platform/platform.h>
- #include <api/service/svcs/svc_font.h> // for STDFONT_* stuff. should make a std_font thingy later
- #include <bfc/std.h> // for WASABI_DEFAULT_FONTNAMEW
- namespace Wasabi
- {
- // benski> move this to std_font later
- struct FontInfo
- {
- FontInfo()
- {
- // defaults
- face = WASABI_DEFAULT_FONTNAMEW;
- pointSize = 12;
- bold = 0;
- opaque = false;
- underline = false;
- italic = false;
- alignFlags = STDFONT_LEFT;
- antialias = 1;
- bgColor = RGBA(255, 255, 255, 255);
- color = RGBA(0, 0, 0, 0);
- }
- const wchar_t *face;
- unsigned int pointSize;
- int bold; // bold level
- bool opaque;
- bool underline;
- bool italic;
- int alignFlags;
- int antialias; // anti-alias level
- ARGB32 color;
- ARGB32 bgColor;
- };
- }
- class ifc_window;
- // abstract base class: safe to use in API
- class NOVTABLE ifc_canvas : public Dispatchable
- {
- protected:
- ifc_canvas()
- {} // protect constructor
- ~ifc_canvas()
- {}
- public:
- DISPATCH_CODES
- {
- GETHDC = 100,
- GETROOTWND = 200,
- GETBITS = 300,
- GETOFFSETS = 400,
- ISFIXEDCOORDS = 500,
- GETDIM = 600,
- GETTEXTFONT = 700,
- GETTEXTSIZE = 710,
- GETTEXTBOLD = 720,
- GETTEXTOPAQUE = 730,
- GETTEXTALIGN = 740,
- GETTEXTCOLOR = 750,
- GETTEXTBKCOLOR = 760,
- GETTEXTAA = 770,
- GETTEXTUNDERLINE = 780,
- GETTEXTITALIC = 790,
- GETCLIPBOX = 800,
- };
- public:
- HDC getHDC();
- ifc_window *getRootWnd();
- void *getBits();
- void getOffsets(int *x, int *y);
- bool isFixedCoords(); //FG> allows onPaint to handle double buffers as well as normal DCs
- bool getDim(int *w, int *h = NULL, int *p = NULL); // w & h in pixels, pitch in bytes. 0 on success.
- int getClipBox(RECT *r); // returns 0 if no clipping region
- const wchar_t *getTextFont();
- int getTextSize();
- int getTextBold();
- int getTextAntialias();
- int getTextOpaque();
- int getTextUnderline();
- int getTextItalic();
- int getTextAlign();
- ARGB32 getTextColor();
- ARGB32 getTextBkColor();
- };
- inline HDC ifc_canvas::getHDC()
- {
- return _call(ifc_canvas::GETHDC, (HDC)0);
- }
- inline ifc_window *ifc_canvas::getRootWnd()
- {
- return _call(ifc_canvas::GETROOTWND, (ifc_window*)0);
- }
- inline void *ifc_canvas::getBits()
- {
- return _call(ifc_canvas::GETBITS, (void *)0);
- }
- inline void ifc_canvas::getOffsets(int *x, int *y)
- {
- _voidcall(ifc_canvas::GETOFFSETS, x, y);
- }
- inline bool ifc_canvas::isFixedCoords()
- { //FG> allows onPaint to handle double buffers as well as normal DCs
- return _call(ifc_canvas::ISFIXEDCOORDS, false);
- }
- inline bool ifc_canvas::getDim(int *w, int *h, int *p)
- { // w & h in pixels, pitch in bytes. 0 on success.
- return _call(ifc_canvas::GETDIM, false, w, h, p);
- }
- inline int ifc_canvas::getClipBox(RECT *r)
- { // returns 0 if no clipping region
- return _call(ifc_canvas::GETCLIPBOX, 0, r);
- }
- inline const wchar_t *ifc_canvas::getTextFont()
- {
- return _call(ifc_canvas::GETTEXTFONT, L"");
- }
- inline int ifc_canvas::getTextSize()
- {
- return _call(ifc_canvas::GETTEXTSIZE, -1);
- }
- inline int ifc_canvas::getTextBold()
- {
- return _call(ifc_canvas::GETTEXTBOLD, 0);
- }
- inline int ifc_canvas::getTextAntialias()
- {
- return _call(ifc_canvas::GETTEXTAA, 0);
- }
- inline int ifc_canvas::getTextOpaque()
- {
- return _call(ifc_canvas::GETTEXTOPAQUE, 0);
- }
- inline int ifc_canvas::getTextUnderline()
- {
- return _call(ifc_canvas::GETTEXTUNDERLINE, 0);
- }
- inline int ifc_canvas::getTextItalic()
- {
- return _call(ifc_canvas::GETTEXTITALIC, 0);
- }
- inline int ifc_canvas::getTextAlign()
- {
- return _call(ifc_canvas::GETTEXTALIGN, -1);
- }
- inline ARGB32 ifc_canvas::getTextColor()
- {
- return _call(ifc_canvas::GETTEXTCOLOR, RGB(0, 0, 0));
- }
- inline ARGB32 ifc_canvas::getTextBkColor()
- {
- return _call(ifc_canvas::GETTEXTBKCOLOR, RGB(255, 255, 255));
- }
- #endif
|