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* GdiplusBrush.h 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract: 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Brush API related declarations 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUSBRUSH_H 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUSBRUSH_H 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Abstract base class for various brush types 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass GraphicsPath; 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass Brush : public GdiplusBase 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Pen; 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Graphics; 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~Brush() 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DllExports::GdipDeleteBrush(nativeBrush); 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual Brush* Clone() const 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpBrush *brush = NULL; 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipCloneBrush(nativeBrush, &brush)); 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush *newBrush = new Brush(brush, lastResult); 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (newBrush == NULL) 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DllExports::GdipDeleteBrush(brush); 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return newBrush; 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BrushType GetType() const 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BrushType type = static_cast<BrushType>(-1); 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetBrushType(nativeBrush, &type)); 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return type; 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status lastStatus = lastResult; 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = Ok; 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return lastStatus; 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush() 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush(const Brush& brush); 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush& operator=(const Brush& brush); 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush(const Brush& brush) 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush; 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush& operator=(const Brush& brush) 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov brush; 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return *this; 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Brush(GpBrush* nativeBrush, Status status) 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = status; 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(nativeBrush); 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov VOID SetNativeBrush(GpBrush* nativeBrush) 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->nativeBrush = nativeBrush; 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (status != Ok) 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (lastResult = status); 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpBrush* nativeBrush; 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Represent solid fill brush object 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass SolidBrush : public Brush 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Pen; 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SolidBrush(IN const Color& color) 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpSolidFill *brush = NULL; 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateSolidFill(color.GetValue(), &brush); 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetColor(OUT Color* color) const 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB argb; 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (color == NULL) 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetSolidFillColor((GpSolidFill*)nativeBrush, 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &argb)); 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *color = Color(argb); 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return lastResult; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetColor(IN const Color& color) 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetSolidFillColor((GpSolidFill*)nativeBrush, 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color.GetValue())); 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SolidBrush(const SolidBrush &); 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SolidBrush& operator=(const SolidBrush &); 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SolidBrush() 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass TextureBrush : public Brush 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Pen; 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush(IN Image* image, 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN WrapMode wrapMode = WrapModeTile) 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpTexture *texture = NULL; 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateTexture( 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov image->nativeImage, 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrapMode, &texture); 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(texture); 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // When creating a texture brush from a metafile image, the dstRect 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // is used to specify the size that the metafile image should be 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // rendered at in the device units of the destination graphics. 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // It is NOT used to crop the metafile image, so only the width 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // and height values matter for metafiles. 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush(IN Image* image, 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN WrapMode wrapMode, 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const RectF &dstRect) 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpTexture *texture = NULL; 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateTexture2( 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov image->nativeImage, 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrapMode, 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.X, 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Y, 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Width, 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Height, 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &texture); 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(texture); 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // When creating a texture brush from a metafile image, the dstRect 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // is used to specify the size that the metafile image should be 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // rendered at in the device units of the destination graphics. 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // It is NOT used to crop the metafile image, so only the width 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // and height values matter for metafiles. 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush(IN Image *image, 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const RectF &dstRect, 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const ImageAttributes *imageAttributes = NULL) 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpTexture *texture = NULL; 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateTextureIA( 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov image->nativeImage, 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (imageAttributes)?imageAttributes->nativeImageAttr:NULL, 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.X, 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Y, 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Width, 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Height, 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &texture 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(texture); 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #ifdef DCR_USE_NEW_145138 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush(IN Image *image, 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Rect &dstRect, 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const ImageAttributes *imageAttributes = NULL) 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpTexture *texture = NULL; 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateTextureIAI( 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov image->nativeImage, 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (imageAttributes)?imageAttributes->nativeImageAttr:NULL, 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.X, 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Y, 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Width, 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Height, 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &texture 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(texture); 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #endif 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // When creating a texture brush from a metafile image, the dstRect 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // is used to specify the size that the metafile image should be 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // rendered at in the device units of the destination graphics. 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // It is NOT used to crop the metafile image, so only the width 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // and height values matter for metafiles. 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush( 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN Image* image, 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN WrapMode wrapMode, 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #ifdef DCR_USE_NEW_145138 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const IN Rect &dstRect 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #else 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN Rect &dstRect 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #endif 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpTexture *texture = NULL; 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateTexture2I( 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov image->nativeImage, 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrapMode, 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.X, 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Y, 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Width, 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstRect.Height, 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &texture); 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(texture); 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // When creating a texture brush from a metafile image, the dstRect 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // is used to specify the size that the metafile image should be 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // rendered at in the device units of the destination graphics. 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // It is NOT used to crop the metafile image, so only the width 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // and height values matter for metafiles. 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush(IN Image* image, 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN WrapMode wrapMode, 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dstX, 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dstY, 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dstWidth, 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dstHeight) 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpTexture *texture = NULL; 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateTexture2( 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov image->nativeImage, 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrapMode, 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstX, 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstY, 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstWidth, 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstHeight, 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &texture); 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(texture); 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // When creating a texture brush from a metafile image, the dstRect 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // is used to specify the size that the metafile image should be 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // rendered at in the device units of the destination graphics. 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // It is NOT used to crop the metafile image, so only the width 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // and height values matter for metafiles. 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush(IN Image* image, 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN WrapMode wrapMode, 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT dstX, 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT dstY, 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT dstWidth, 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT dstHeight) 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpTexture *texture = NULL; 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateTexture2I( 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov image->nativeImage, 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrapMode, 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstX, 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstY, 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstWidth, 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dstHeight, 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &texture); 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(texture); 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /** 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set/get brush transform 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetTransform(IN const Matrix* matrix) 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetTextureTransform((GpTexture*)nativeBrush, 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix)); 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetTransform(OUT Matrix* matrix) const 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetTextureTransform((GpTexture*)nativeBrush, 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix)); 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ResetTransform() 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipResetTextureTransform((GpTexture*)nativeBrush)); 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status MultiplyTransform(IN const Matrix* matrix, 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipMultiplyTextureTransform((GpTexture*)nativeBrush, 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix, 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov order)); 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status TranslateTransform(IN REAL dx, 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dy, 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipTranslateTextureTransform((GpTexture*)nativeBrush, 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dx, dy, order)); 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ScaleTransform(IN REAL sx, 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL sy, 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipScaleTextureTransform((GpTexture*)nativeBrush, 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sx, sy, order)); 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status RotateTransform(IN REAL angle, 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipRotateTextureTransform((GpTexture*)nativeBrush, 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov angle, order)); 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /** 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set/get brush wrapping mode 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetWrapMode(IN WrapMode wrapMode) 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetTextureWrapMode((GpTexture*)nativeBrush, 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrapMode)); 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapMode GetWrapMode() const 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapMode wrapMode; 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetTextureWrapMode((GpTexture*)nativeBrush, 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &wrapMode)); 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return wrapMode; 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Get texture brush attributes 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image *GetImage() const 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpImage *image; 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetTextureImage((GpTexture *)nativeBrush, 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &image)); 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image *retimage = new Image(image, lastResult); 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (retimage == NULL) 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DllExports::GdipDisposeImage(image); 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return retimage; 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush(const TextureBrush &); 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush& operator=(const TextureBrush &); 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TextureBrush() 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Represent line gradient brush object 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass LinearGradientBrush : public Brush 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Pen; 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush(IN const PointF& point1, 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const PointF& point2, 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color1, 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color2) 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpLineGradient *brush = NULL; 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateLineBrush(&point1, 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &point2, 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color1.GetValue(), 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color2.GetValue(), 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapModeTile, 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &brush); 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush(IN const Point& point1, 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Point& point2, 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color1, 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color2) 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpLineGradient *brush = NULL; 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateLineBrushI(&point1, 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &point2, 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color1.GetValue(), 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color2.GetValue(), 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapModeTile, 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &brush); 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush(IN const RectF& rect, 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color1, 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color2, 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LinearGradientMode mode) 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpLineGradient *brush = NULL; 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateLineBrushFromRect(&rect, 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color1.GetValue(), 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color2.GetValue(), 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mode, 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapModeTile, 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &brush); 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush(IN const Rect& rect, 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color1, 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color2, 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LinearGradientMode mode) 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpLineGradient *brush = NULL; 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateLineBrushFromRectI(&rect, 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color1.GetValue(), 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color2.GetValue(), 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mode, 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapModeTile, 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &brush); 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush(IN const RectF& rect, 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color1, 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color2, 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL angle, 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL isAngleScalable = FALSE) 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpLineGradient *brush = NULL; 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateLineBrushFromRectWithAngle(&rect, 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color1.GetValue(), 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color2.GetValue(), 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov angle, 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov isAngleScalable, 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapModeTile, 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &brush); 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush(IN const Rect& rect, 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color1, 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color2, 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL angle, 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL isAngleScalable = FALSE) 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpLineGradient *brush = NULL; 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateLineBrushFromRectWithAngleI(&rect, 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color1.GetValue(), 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color2.GetValue(), 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov angle, 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov isAngleScalable, 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapModeTile, 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &brush); 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Get/set point attributes 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetLinearPoints(IN const PointF& point1, 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const PointF& point2) 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLinePoints((GpLineGradient*)nativeBrush, 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &point1, &point2)); 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLinearPoints(OUT PointF* points) const 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetLinePoints((GpLineGradient*) nativeBrush, 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov points)); 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetLinearPoints(IN const Point& point1, 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Point& point2) 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLinePointsI((GpLineGradient*)nativeBrush, 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &point1, &point2)); 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLinearPoints(OUT Point* points) const 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetLinePointsI((GpLineGradient*) nativeBrush, 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov points)); 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Get/set color attributes 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetLinearColors(IN const Color& color1, 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& color2) 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLineColors((GpLineGradient*)nativeBrush, 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color1.GetValue(), 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color2.GetValue())); 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLinearColors(OUT Color* colors) const 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB argb[2]; 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (colors == NULL) 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetLineColors((GpLineGradient*) nativeBrush, argb)); 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (lastResult == Ok) 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // use bitwise copy operator for Color copy 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov colors[0] = Color(argb[0]); 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov colors[1] = Color(argb[1]); 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return lastResult; 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetRectangle(OUT RectF* rect) const 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetLineRect((GpLineGradient*)nativeBrush, rect)); 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // integer version 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetRectangle(OUT Rect* rect) const 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetLineRectI((GpLineGradient*)nativeBrush, rect)); 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Gamma correction in interporlation. 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetGammaCorrection(IN BOOL useGammaCorrection) 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLineGammaCorrection((GpLineGradient*)nativeBrush, 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov useGammaCorrection)); 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL GetGammaCorrection() const 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL useGammaCorrection; 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetLineGammaCorrection((GpLineGradient*)nativeBrush, 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &useGammaCorrection)); 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return useGammaCorrection; 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT GetBlendCount() const 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT count = 0; 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetLineBlendCount((GpLineGradient*) 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeBrush, 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &count)); 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return count; 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBlend(IN const REAL* blendFactors, 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const REAL* blendPositions, 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT count) 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLineBlend((GpLineGradient*) 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeBrush, 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov blendFactors, 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov blendPositions, 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetBlend(OUT REAL* blendFactors, 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT REAL* blendPositions, 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT count) const 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetLineBlend((GpLineGradient*)nativeBrush, 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov blendFactors, 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov blendPositions, 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT GetInterpolationColorCount() const 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT count = 0; 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetLinePresetBlendCount((GpLineGradient*) 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeBrush, 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &count)); 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return count; 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetInterpolationColors(IN const Color* presetColors, 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const REAL* blendPositions, 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT count) 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((count <= 0) || !presetColors) 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB *argbs = (ARGB*) new BYTE[count*sizeof(ARGB)]; 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (argbs) 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (INT i = 0; i < count; i++) 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov argbs[i] = presetColors[i].GetValue(); 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status status = SetStatus(DllExports::GdipSetLinePresetBlend( 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (GpLineGradient*) nativeBrush, 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov argbs, 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov blendPositions, 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete [] argbs; 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(OutOfMemory); 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetInterpolationColors(OUT Color* presetColors, 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT REAL* blendPositions, 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT count) const 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((count <= 0) || !presetColors) 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB* argbs = (ARGB*) new BYTE[count*sizeof(ARGB)]; 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!argbs) 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(OutOfMemory); 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status status = SetStatus(DllExports::GdipGetLinePresetBlend((GpLineGradient*)nativeBrush, 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov argbs, 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov blendPositions, 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov count)); 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (status == Ok) 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (INT i = 0; i < count; i++) 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov presetColors[i] = Color(argbs[i]); 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete [] argbs; 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBlendBellShape(IN REAL focus, 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL scale = 1.0) 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLineSigmaBlend((GpLineGradient*)nativeBrush, focus, scale)); 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #ifdef DCR_USE_NEW_145135 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBlendTriangularShape( 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL focus, 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL scale = 1.0 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #else 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBlendTrianglarShape(IN REAL focus, 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL scale = 1.0) 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov #endif 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLineLinearBlend((GpLineGradient*)nativeBrush, focus, scale)); 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /** 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set/get brush transform 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetTransform(IN const Matrix* matrix) 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLineTransform((GpLineGradient*)nativeBrush, 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix)); 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetTransform(OUT Matrix *matrix) const 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipGetLineTransform((GpLineGradient*)nativeBrush, 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix)); 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ResetTransform() 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipResetLineTransform((GpLineGradient*)nativeBrush)); 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status MultiplyTransform(IN const Matrix* matrix, 796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipMultiplyLineTransform((GpLineGradient*)nativeBrush, 799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov matrix->nativeMatrix, 800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov order)); 801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status TranslateTransform(IN REAL dx, 804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dy, 805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipTranslateLineTransform((GpLineGradient*)nativeBrush, 808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dx, dy, order)); 809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status ScaleTransform(IN REAL sx, 812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL sy, 813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipScaleLineTransform((GpLineGradient*)nativeBrush, 816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sx, sy, order)); 817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status RotateTransform(IN REAL angle, 820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN MatrixOrder order = MatrixOrderPrepend) 821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipRotateLineTransform((GpLineGradient*)nativeBrush, 823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov angle, order)); 824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /** 827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set/get brush wrapping mode 828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetWrapMode(IN WrapMode wrapMode) 830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(DllExports::GdipSetLineWrapMode((GpLineGradient*)nativeBrush, 832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrapMode)); 833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapMode GetWrapMode() const 836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WrapMode wrapMode; 838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetLineWrapMode((GpLineGradient*) 840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nativeBrush, 841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &wrapMode)); 842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return wrapMode; 844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush(const LinearGradientBrush &); 850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush& operator=(const LinearGradientBrush &); 851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LinearGradientBrush() 857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// PathGradientBrush object is defined 863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// in gdipluspath.h. 864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Represent hatch brush object 868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass HatchBrush : public Brush 871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Pen; 874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Constructors 876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov HatchBrush(IN HatchStyle hatchStyle, 878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& foreColor, 879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color& backColor = Color()) 880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpHatch *brush = NULL; 882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = DllExports::GdipCreateHatchBrush(hatchStyle, 884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov foreColor.GetValue(), 885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov backColor.GetValue(), 886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &brush); 887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeBrush(brush); 888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov HatchStyle GetHatchStyle() const 891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov HatchStyle hatchStyle; 893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(DllExports::GdipGetHatchStyle((GpHatch*)nativeBrush, 895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &hatchStyle)); 896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return hatchStyle; 898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetForegroundColor(OUT Color* color) const 901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB argb; 903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (color == NULL) 905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status status = SetStatus(DllExports::GdipGetHatchForegroundColor( 910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (GpHatch*)nativeBrush, 911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &argb)); 912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color->SetValue(argb); 914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetBackgroundColor(OUT Color *color) const 919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ARGB argb; 921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (color == NULL) 923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStatus(InvalidParameter); 925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status status = SetStatus(DllExports::GdipGetHatchBackgroundColor( 928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (GpHatch*)nativeBrush, 929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &argb)); 930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color->SetValue(argb); 932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov HatchBrush(const HatchBrush &); 940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov HatchBrush& operator=(const HatchBrush &); 941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov HatchBrush() 947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 952