//--------------------------------------------------------------------------- // BorderFill.h - implements the drawing API for bgtype = BorderFill //--------------------------------------------------------------------------- #pragma once //--------------------------------------------------------------------------- #include "DrawBase.h" //--------------------------------------------------------------------------- class CRenderObj; // forward class CSimpleFile; // forward //--------------------------------------------------------------------------- // Note: draw objects like CBorderFill cannot have virtual methods // since they reside in the shared memory map file. //--------------------------------------------------------------------------- class CBorderFill : public CDrawBase { public: //---- loader methods ---- HRESULT PackProperties(CRenderObj *pRender, BOOL fNoDraw, int iPartId, int iStateId); static BOOL KeyProperty(int iPropId); void DumpProperties(CSimpleFile *pFile, BYTE *pbThemeData, BOOL fFullInfo); //---- drawing/measuring methods ---- HRESULT DrawBackground(CRenderObj *pRender, HDC hdcOrig, const RECT *pRect, OPTIONAL const DTBGOPTS *pOptions); HRESULT GetBackgroundRegion(CRenderObj *pRender, OPTIONAL HDC hdc, const RECT *pRect, HRGN *pRegion); BOOL IsBackgroundPartiallyTransparent(); HRESULT HitTestBackground(CRenderObj *pRender, OPTIONAL HDC hdc, DWORD dwHTFlags, const RECT *pRect, HRGN hrgn, POINT ptTest, OUT WORD *pwHitCode); HRESULT GetBackgroundContentRect(CRenderObj *pRender, OPTIONAL HDC hdc, const RECT *pBoundingRect, RECT *pContentRect); HRESULT GetBackgroundExtent(CRenderObj *pRender, OPTIONAL HDC hdc, const RECT *pContentRect, RECT *pExtentRect); HRESULT GetPartSize(HDC hdc, THEMESIZE eSize, SIZE *psz); //---- helper methods ---- void GetContentMargins(CRenderObj *pRender, OPTIONAL HDC hdc, MARGINS *pMargins); HRESULT DrawComplexBackground(CRenderObj *pRender, HDC hdcOrig, const RECT *pRect, BOOL fGettingRegion, BOOL fBorder, BOOL fContent, OPTIONAL const RECT *pClipRect); public: //---- general ---- BOOL _fNoDraw; // this is used for bgtype=none //---- border ---- BORDERTYPE _eBorderType; COLORREF _crBorder; int _iBorderSize; int _iRoundCornerWidth; int _iRoundCornerHeight; //---- fill ---- FILLTYPE _eFillType; COLORREF _crFill; int _iDibOffset; //---- margins ---- MARGINS _ContentMargins; //---- gradients ---- int _iGradientPartCount; COLORREF _crGradientColors[5]; int _iGradientRatios[5]; //---- id ---- int _iSourcePartId; int _iSourceStateId; }; //---------------------------------------------------------------------------