|  | /* | 
|  | * 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 */ |