1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**************************************************************************\ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Module Name: 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* GdiplusPen.h 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract: 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Pen API related declarations 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUSPEN_H 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUSPEN_H 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// class for various pen types 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass Pen : public GdiplusBase 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class GraphicsPath; 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Graphics; 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // abstract Clone() can't be implemented here because it can't 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // new an object with pure virtual functions 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Constructors 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen(IN const Color& color, 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL width = 1.0f) 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Unit unit = UnitWorld; 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativePen = NULL; 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreatePen1(color.GetValue(), 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov width, unit, &nativePen); 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen(IN const Brush* brush, 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL width = 1.0f) 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Unit unit = UnitWorld; 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativePen = NULL; 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreatePen2(brush->nativeBrush, 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov width, unit, &nativePen); 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~Pen() 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DllExports::GdipDeletePen(nativePen); 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen* Clone() const 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpPen *clonePen = NULL; 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipClonePen(nativePen, &clonePen); 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return new Pen(clonePen, lastResult); 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetWidth(IN REAL width) 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenWidth(nativePen, width)); 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetWidth() const 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL width; 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenWidth(nativePen, &width)); 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return width; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Set/get line caps: start, end, and dash 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Line cap and join APIs by using LineCap and LineJoin enums. 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #ifdef DCR_USE_NEW_197819 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetLineCap(IN LineCap startCap, 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LineCap endCap, 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN DashCap dashCap) 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenLineCap197819(nativePen, 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov startCap, endCap, dashCap)); 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #else 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetLineCap(IN LineCap startCap, 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LineCap endCap, 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LineCap dashCap) 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenLineCap(nativePen, 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov startCap, endCap, dashCap)); 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #endif // DCR_USE_NEW_197819 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStartCap(IN LineCap startCap) 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenStartCap(nativePen, startCap)); 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetEndCap(IN LineCap endCap) 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenEndCap(nativePen, endCap)); 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #ifdef DCR_USE_NEW_197819 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetDashCap(IN DashCap dashCap) 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenDashCap197819(nativePen, 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dashCap)); 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #else 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetDashCap(IN LineCap dashCap) 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenDashCap(nativePen, dashCap)); 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #endif // DCR_USE_NEW_197819 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineCap GetStartCap() const 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineCap startCap; 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenStartCap(nativePen, &startCap)); 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return startCap; 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineCap GetEndCap() const 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineCap endCap; 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenEndCap(nativePen, &endCap)); 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return endCap; 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #ifdef DCR_USE_NEW_197819 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DashCap GetDashCap() const 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DashCap dashCap; 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenDashCap197819(nativePen, 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &dashCap)); 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return dashCap; 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #else 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineCap GetDashCap() const 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineCap dashCap; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenDashCap(nativePen, &dashCap)); 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return dashCap; 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #endif // DCR_USE_NEW_197819 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Set/get line join 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetLineJoin(IN LineJoin lineJoin) 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenLineJoin(nativePen, lineJoin)); 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineJoin GetLineJoin() const 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineJoin lineJoin; 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenLineJoin(nativePen, &lineJoin)); 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return lineJoin; 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetCustomStartCap(IN const CustomLineCap* customCap) 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpCustomLineCap* nativeCap = NULL; 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(customCap) 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeCap = customCap->nativeCap; 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenCustomStartCap(nativePen, nativeCap)); 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetCustomStartCap(OUT CustomLineCap* customCap) const 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!customCap) 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetPenCustomStartCap(nativePen, &(customCap->nativeCap))); 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetCustomEndCap(IN const CustomLineCap* customCap) 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpCustomLineCap* nativeCap = NULL; 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(customCap) 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeCap = customCap->nativeCap; 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenCustomEndCap(nativePen, nativeCap)); 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetCustomEndCap(OUT CustomLineCap* customCap) const 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!customCap) 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetPenCustomEndCap(nativePen, &(customCap->nativeCap))); 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetMiterLimit(IN REAL miterLimit) 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenMiterLimit(nativePen, miterLimit)); 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetMiterLimit() const 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL miterLimit; 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenMiterLimit(nativePen, &miterLimit)); 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return miterLimit; 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Set/get pen mode 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetAlignment(IN PenAlignment penAlignment) 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenMode(nativePen, penAlignment)); 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PenAlignment GetAlignment() const 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PenAlignment penAlignment; 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenMode(nativePen, &penAlignment)); 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return penAlignment; 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Set/get pen transform 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetTransform(IN const Matrix* matrix) 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenTransform(nativePen, 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix)); 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetTransform(OUT Matrix* matrix) const 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetPenTransform(nativePen, matrix->nativeMatrix)); 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ResetTransform() 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipResetPenTransform(nativePen)); 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status MultiplyTransform(IN const Matrix* matrix, 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipMultiplyPenTransform(nativePen, 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix, 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov order)); 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status TranslateTransform(IN REAL dx, 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dy, 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipTranslatePenTransform(nativePen, 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dx, dy, order)); 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ScaleTransform(IN REAL sx, 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL sy, 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipScalePenTransform(nativePen, 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sx, sy, order)); 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status RotateTransform(IN REAL angle, 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipRotatePenTransform(nativePen, 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov angle, order)); 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PenType GetPenType() const 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PenType type; 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenFillType(nativePen, &type)); 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return type; 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetColor(IN const Color& color) 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenColor(nativePen, 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color.GetValue())); 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBrush(IN const Brush* brush) 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenBrushFill(nativePen, 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush->nativeBrush)); 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetColor(OUT Color* color) const 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (color == NULL) 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PenType type = GetPenType(); 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (type != PenTypeSolidColor) 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return WrongState; 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB argb; 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenColor(nativePen, 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &argb)); 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (lastResult == Ok) 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color->SetValue(argb); 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return lastResult; 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush* GetBrush() const 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PenType type = GetPenType(); 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush* brush = NULL; 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(type) 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PenTypeSolidColor: 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush = new SolidBrush(); 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PenTypeHatchFill: 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush = new HatchBrush(); 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PenTypeTextureFill: 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush = new TextureBrush(); 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PenTypePathGradient: 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush = new Brush(); 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PenTypeLinearGradient: 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush = new LinearGradientBrush(); 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(brush) 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpBrush* nativeBrush; 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenBrushFill(nativePen, &nativeBrush)); 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush->SetNativeBrush(nativeBrush); 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return brush; 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DashStyle GetDashStyle() const 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DashStyle dashStyle; 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenDashStyle(nativePen, &dashStyle)); 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return dashStyle; 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetDashStyle(IN DashStyle dashStyle) 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenDashStyle(nativePen, dashStyle)); 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetDashOffset() const 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL dashOffset; 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenDashOffset(nativePen, &dashOffset)); 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return dashOffset; 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetDashOffset(IN REAL dashOffset) 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenDashOffset(nativePen, dashOffset)); 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetDashPattern(IN const REAL* dashArray, IN INT count) 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenDashArray(nativePen, dashArray, 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT GetDashPatternCount() const 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT count = 0; 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenDashCount(nativePen, &count)); 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return count; 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetDashPattern(OUT REAL* dashArray, 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT count) const 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (dashArray == NULL || count <= 0) 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetPenDashArray(nativePen, 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dashArray, 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetCompoundArray(IN const REAL* compoundArray, 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT count) 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetPenCompoundArray(nativePen, compoundArray, 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT GetCompoundArrayCount() const 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT count = 0; 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetPenCompoundCount(nativePen, &count)); 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return count; 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetCompoundArray(OUT REAL* compoundArray, 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT count) const 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (compoundArray == NULL || count <= 0) 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetPenCompoundArray(nativePen, 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov compoundArray, 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status lastStatus = lastResult; 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = Ok; 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return lastStatus; 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen(const Pen &); 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen& operator=(const Pen &); 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen(const Pen& pen) 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pen; 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativePen(NULL); 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen& operator=(const Pen& pen) 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pen; 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return *this; 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Pen(GpPen* nativePen, Status status) 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = status; 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativePen(nativePen); 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov VOID SetNativePen(GpPen* nativePen) 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->nativePen = nativePen; 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (status != Ok) 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (lastResult = status); 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpPen* nativePen; 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 520