| /**************************************************************************\ | |
| * | |
| * Copyright (c) 2000, Microsoft Corp. All Rights Reserved. | |
| * | |
| * Module Name: | |
| * | |
| * GdiplusLineCaps.h | |
| * | |
| * Abstract: | |
| * | |
| * APIs for Custom Line Caps | |
| * | |
| \**************************************************************************/ | |
| #ifndef _GDIPLUSLINECAPS_H | |
| #define _GDIPLUSLINECAPS_H | |
| inline | |
| CustomLineCap::CustomLineCap( | |
| IN const GraphicsPath* fillPath, | |
| IN const GraphicsPath* strokePath, | |
| IN LineCap baseCap, | |
| IN REAL baseInset | |
| ) | |
| { | |
| nativeCap = NULL; | |
| GpPath* nativeFillPath = NULL; | |
| GpPath* nativeStrokePath = NULL; | |
| if(fillPath) | |
| nativeFillPath = fillPath->nativePath; | |
| if(strokePath) | |
| nativeStrokePath = strokePath->nativePath; | |
| lastResult = DllExports::GdipCreateCustomLineCap( | |
| nativeFillPath, nativeStrokePath, | |
| baseCap, baseInset, &nativeCap); | |
| } | |
| inline | |
| CustomLineCap::CustomLineCap() | |
| { | |
| // This is used for default constructor for subclasses. | |
| // So don't create a nativeCap. | |
| nativeCap = NULL; | |
| lastResult = Ok; | |
| } | |
| inline | |
| CustomLineCap::~CustomLineCap() | |
| { | |
| DllExports::GdipDeleteCustomLineCap(nativeCap); | |
| } | |
| inline Status | |
| CustomLineCap::SetStrokeCaps( | |
| IN LineCap startCap, | |
| IN LineCap endCap) | |
| { | |
| return SetStatus(DllExports::GdipSetCustomLineCapStrokeCaps(nativeCap, | |
| startCap, endCap)); | |
| } | |
| inline Status | |
| CustomLineCap::GetStrokeCaps( | |
| OUT LineCap* startCap, | |
| OUT LineCap* endCap) const | |
| { | |
| return SetStatus(DllExports::GdipGetCustomLineCapStrokeCaps(nativeCap, | |
| startCap, endCap)); | |
| } | |
| inline Status | |
| CustomLineCap::SetStrokeJoin( | |
| IN LineJoin lineJoin) | |
| { | |
| return SetStatus(DllExports::GdipSetCustomLineCapStrokeJoin(nativeCap, lineJoin)); | |
| } | |
| inline LineJoin | |
| CustomLineCap::GetStrokeJoin() const | |
| { | |
| LineJoin lineJoin; | |
| SetStatus(DllExports::GdipGetCustomLineCapStrokeJoin(nativeCap, &lineJoin)); | |
| return lineJoin; | |
| } | |
| inline Status | |
| CustomLineCap::SetBaseCap(IN LineCap baseCap) | |
| { | |
| return SetStatus(DllExports::GdipSetCustomLineCapBaseCap(nativeCap, baseCap)); | |
| } | |
| inline LineCap | |
| CustomLineCap::GetBaseCap() const | |
| { | |
| LineCap baseCap; | |
| SetStatus(DllExports::GdipGetCustomLineCapBaseCap(nativeCap, &baseCap)); | |
| return baseCap; | |
| } | |
| inline Status | |
| CustomLineCap::SetBaseInset(IN REAL inset) | |
| { | |
| return SetStatus(DllExports::GdipSetCustomLineCapBaseInset(nativeCap, inset)); | |
| } | |
| inline REAL | |
| CustomLineCap::GetBaseInset() const | |
| { | |
| REAL inset; | |
| SetStatus(DllExports::GdipGetCustomLineCapBaseInset(nativeCap, &inset)); | |
| return inset; | |
| } | |
| inline Status | |
| CustomLineCap::SetWidthScale(IN REAL widthScale) | |
| { | |
| return SetStatus(DllExports::GdipSetCustomLineCapWidthScale(nativeCap, widthScale)); | |
| } | |
| inline REAL | |
| CustomLineCap::GetWidthScale() const | |
| { | |
| REAL widthScale; | |
| SetStatus(DllExports::GdipGetCustomLineCapWidthScale(nativeCap, &widthScale)); | |
| return widthScale; | |
| } | |
| inline CustomLineCap* | |
| CustomLineCap::Clone() const | |
| { | |
| GpCustomLineCap *newNativeLineCap = NULL; | |
| SetStatus(DllExports::GdipCloneCustomLineCap(nativeCap, &newNativeLineCap)); | |
| if (lastResult == Ok) | |
| { | |
| CustomLineCap *newLineCap = new CustomLineCap(newNativeLineCap, lastResult); | |
| if (newLineCap == NULL) | |
| { | |
| SetStatus(DllExports::GdipDeleteCustomLineCap(newNativeLineCap)); | |
| } | |
| return newLineCap; | |
| } | |
| return NULL; | |
| } | |
| class AdjustableArrowCap : public CustomLineCap | |
| { | |
| public: | |
| AdjustableArrowCap( | |
| IN REAL height, | |
| IN REAL width, | |
| IN BOOL isFilled = TRUE | |
| ) | |
| { | |
| GpAdjustableArrowCap* cap = NULL; | |
| lastResult = DllExports::GdipCreateAdjustableArrowCap( | |
| height, width, isFilled, &cap); | |
| SetNativeCap(cap); | |
| } | |
| Status SetHeight(IN REAL height) | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| return SetStatus(DllExports::GdipSetAdjustableArrowCapHeight( | |
| cap, height)); | |
| } | |
| REAL GetHeight() const | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| REAL height; | |
| SetStatus(DllExports::GdipGetAdjustableArrowCapHeight( | |
| cap, &height)); | |
| return height; | |
| } | |
| Status SetWidth(IN REAL width) | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| return SetStatus(DllExports::GdipSetAdjustableArrowCapWidth( | |
| cap, width)); | |
| } | |
| REAL GetWidth() const | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| REAL width; | |
| SetStatus(DllExports::GdipGetAdjustableArrowCapWidth( | |
| cap, &width)); | |
| return width; | |
| } | |
| Status SetMiddleInset(IN REAL middleInset) | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| return SetStatus(DllExports::GdipSetAdjustableArrowCapMiddleInset( | |
| cap, middleInset)); | |
| } | |
| REAL GetMiddleInset() const | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| REAL middleInset; | |
| SetStatus(DllExports::GdipGetAdjustableArrowCapMiddleInset( | |
| cap, &middleInset)); | |
| return middleInset; | |
| } | |
| Status SetFillState(IN BOOL isFilled) | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| return SetStatus(DllExports::GdipSetAdjustableArrowCapFillState( | |
| cap, isFilled)); | |
| } | |
| BOOL IsFilled() const | |
| { | |
| GpAdjustableArrowCap* cap = (GpAdjustableArrowCap*) nativeCap; | |
| BOOL isFilled; | |
| SetStatus(DllExports::GdipGetAdjustableArrowCapFillState( | |
| cap, &isFilled)); | |
| return isFilled; | |
| } | |
| #ifdef DCR_USE_NEW_250932 | |
| private: | |
| AdjustableArrowCap(const AdjustableArrowCap &); | |
| AdjustableArrowCap& operator=(const AdjustableArrowCap &); | |
| #endif | |
| }; | |
| #endif |