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