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