80 lines
2.8 KiB
C++
80 lines
2.8 KiB
C++
//---------------------------------------------------------------------------
|
|
// 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;
|
|
};
|
|
//---------------------------------------------------------------------------
|