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