| /* | |
| * gdipluslinecaps.h | |
| * | |
| * GDI+ AdjustableArrowCap class | |
| * | |
| * This file is part of the w32api package. | |
| * | |
| * Contributors: | |
| * Created by Markus Koenig <markus@stber-koenig.de> | |
| * | |
| * THIS SOFTWARE IS NOT COPYRIGHTED | |
| * | |
| * This source code is offered for use in the public domain. You may | |
| * use, modify or distribute it freely. | |
| * | |
| * This code is distributed in the hope that it will be useful but | |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY | |
| * DISCLAIMED. This includes but is not limited to warranties of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
| * | |
| */ | |
| #ifndef __GDIPLUS_LINECAPS_H | |
| #define __GDIPLUS_LINECAPS_H | |
| #if __GNUC__ >=3 | |
| #pragma GCC system_header | |
| #endif | |
| #ifndef __cplusplus | |
| #error "A C++ compiler is required to include gdipluslinecaps.h." | |
| #endif | |
| class AdjustableArrowCap: public CustomLineCap | |
| { | |
| public: | |
| AdjustableArrowCap(REAL height, REAL width, BOOL isFilled): | |
| CustomLineCap(NULL, Ok) | |
| { | |
| GpAdjustableArrowCap *nativeAdjustableArrowCap = NULL; | |
| lastStatus = DllExports::GdipCreateAdjustableArrowCap( | |
| height, width, isFilled, | |
| &nativeAdjustableArrowCap); | |
| nativeCustomLineCap = nativeAdjustableArrowCap; | |
| } | |
| virtual ~AdjustableArrowCap() | |
| { | |
| } | |
| virtual AdjustableArrowCap* Clone() const | |
| { | |
| GpCustomLineCap *cloneCustomLineCap = NULL; | |
| Status status = updateStatus(DllExports::GdipCloneCustomLineCap( | |
| nativeCustomLineCap, &cloneCustomLineCap)); | |
| if (status == Ok) { | |
| AdjustableArrowCap *result = new AdjustableArrowCap( | |
| cloneCustomLineCap, lastStatus); | |
| if (!result) { | |
| DllExports::GdipDeleteCustomLineCap( | |
| cloneCustomLineCap); | |
| lastStatus = OutOfMemory; | |
| } | |
| return result; | |
| } else { | |
| return NULL; | |
| } | |
| } | |
| REAL GetHeight() const | |
| { | |
| REAL result = 0.0f; | |
| updateStatus(DllExports::GdipGetAdjustableArrowCapHeight( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| &result)); | |
| return result; | |
| } | |
| REAL GetMiddleInset() const | |
| { | |
| REAL result = 0.0f; | |
| updateStatus(DllExports::GdipGetAdjustableArrowCapMiddleInset( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| &result)); | |
| return result; | |
| } | |
| REAL GetWidth() const | |
| { | |
| REAL result = 0.0f; | |
| updateStatus(DllExports::GdipGetAdjustableArrowCapWidth( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| &result)); | |
| return result; | |
| } | |
| BOOL IsFilled() const | |
| { | |
| BOOL result = FALSE; | |
| updateStatus(DllExports::GdipGetAdjustableArrowCapFillState( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| &result)); | |
| return result; | |
| } | |
| Status SetFillState(BOOL isFilled) | |
| { | |
| return updateStatus(DllExports::GdipSetAdjustableArrowCapFillState( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| isFilled)); | |
| } | |
| Status SetHeight(REAL height) | |
| { | |
| return updateStatus(DllExports::GdipSetAdjustableArrowCapHeight( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| height)); | |
| } | |
| Status SetMiddleInset(REAL middleInset) | |
| { | |
| return updateStatus(DllExports::GdipSetAdjustableArrowCapMiddleInset( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| middleInset)); | |
| } | |
| Status SetWidth(REAL width) | |
| { | |
| return updateStatus(DllExports::GdipSetAdjustableArrowCapWidth( | |
| (GpAdjustableArrowCap*) nativeCustomLineCap, | |
| width)); | |
| } | |
| private: | |
| AdjustableArrowCap(GpCustomLineCap *customLineCap, Status status): | |
| CustomLineCap(customLineCap, status) {} | |
| AdjustableArrowCap(const AdjustableArrowCap&); | |
| AdjustableArrowCap& operator=(const AdjustableArrowCap&); | |
| }; | |
| #endif /* __GDIPLUS_LINECAPS_H */ |