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* GdiplusHeaders.h 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract: 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* GDI+ Native C++ public header file 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUSHEADERS_H 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUSHEADERS_H 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Abstract base class for regions 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Include the class declarations here and have inline class implementation 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// in separate file to avoid circular references. 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass Region : public GdiplusBase 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Graphics; 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(); 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(IN const RectF& rect); 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(IN const Rect& rect); 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(IN const GraphicsPath* path); 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(IN const BYTE* regionData, IN INT size); 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(IN HRGN hRgn); 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Region* FromHRGN(IN HRGN hRgn); 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~Region(); 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region* Clone() const; 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status MakeInfinite(); 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status MakeEmpty(); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Get the size of the buffer needed for the GetData method 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetDataSize() const; 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // buffer - where to put the data 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // bufferSize - how big the buffer is (should be at least as big as GetDataSize()) 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // sizeFilled - if not NULL, this is an OUT param that says how many bytes 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // of data were written to the buffer. 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetData(OUT BYTE* buffer, 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT bufferSize, 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT UINT* sizeFilled = NULL) const; 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Intersect(IN const Rect& rect); 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Intersect(IN const RectF& rect); 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Intersect(IN const GraphicsPath* path); 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Intersect(IN const Region* region); 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Union(IN const Rect& rect); 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Union(IN const RectF& rect); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Union(IN const GraphicsPath* path); 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Union(IN const Region* region); 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Xor(IN const Rect& rect); 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Xor(IN const RectF& rect); 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Xor(IN const GraphicsPath* path); 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Xor(IN const Region* region); 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Exclude(IN const Rect& rect); 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Exclude(IN const RectF& rect); 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Exclude(IN const GraphicsPath* path); 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Exclude(IN const Region* region); 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Complement(IN const Rect& rect); 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Complement(IN const RectF& rect); 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Complement(IN const GraphicsPath* path); 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Complement(IN const Region* region); 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Translate(IN REAL dx, 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL dy); 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Translate(IN INT dx, 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT dy); 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Transform(IN const Matrix* matrix); 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetBounds(OUT Rect* rect, 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g) const; 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetBounds(OUT RectF* rect, 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g) const; 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov HRGN GetHRGN (IN const Graphics * g) const; 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsEmpty(IN const Graphics *g) const; 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsInfinite(IN const Graphics *g) const; 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN INT x, 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT y, 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g = NULL) const 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return IsVisible(Point(x, y), g); 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN const Point& point, 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g = NULL) const; 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN REAL x, 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL y, 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g = NULL) const 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return IsVisible(PointF(x, y), g); 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN const PointF& point, 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g = NULL) const; 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN INT x, 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT y, 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT width, 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT height, 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g) const 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return IsVisible(Rect(x, y, width, height), g); 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN const Rect& rect, 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g = NULL) const; 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN REAL x, 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL y, 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL width, 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL height, 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g = NULL) const 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return IsVisible(RectF(x, y, width, height), g); 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsVisible(IN const RectF& rect, 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g = NULL) const; 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL Equals(IN const Region* region, 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Graphics* g) const; 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetRegionScansCount(IN const Matrix* matrix) const; 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetRegionScans(IN const Matrix* matrix, 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT RectF* rects, 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT INT* count) const; 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetRegionScans(IN const Matrix* matrix, 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT Rect* rects, 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT INT* count) const; 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const; 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(const Region ®ion); 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region& operator=(const Region ®ion); 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(const Region ®ion) 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov region; // reference parameter 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region& operator=(const Region ®ion) 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov region; // reference parameter 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return *this; 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (status != Ok) 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (lastResult = status); 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Region(GpRegion* nativeRegion); 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov VOID SetNativeRegion(GpRegion* nativeRegion); 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpRegion* nativeRegion; 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Abstract base class for FontFamily 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass FontFamily : public GdiplusBase 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Font; 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Graphics; 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class GraphicsPath; 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class FontCollection; 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontFamily(); 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontFamily( 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR *name, 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const FontCollection *fontCollection = NULL 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~FontFamily(); 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static const FontFamily *GenericSansSerif(); 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static const FontFamily *GenericSerif(); 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static const FontFamily *GenericMonospace(); 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetFamilyName( 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT WCHAR name[LF_FACESIZE], 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LANGID language = 0 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) const; 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copy operator 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontFamily * Clone() const; 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsAvailable() const 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (nativeFamily != NULL); 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsStyleAvailable(IN INT style) const; 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT16 GetEmHeight (IN INT style) const; 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT16 GetCellAscent (IN INT style) const; 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT16 GetCellDescent (IN INT style) const; 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT16 GetLineSpacing (IN INT style) const; 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /////////////////////////////////////////////////////////// 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const; 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontFamily(const FontFamily &); 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontFamily& operator=(const FontFamily &); 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const; 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // private constructor for copy 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontFamily(GpFontFamily * nativeFamily, Status status); 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/////////////////////////////////////// 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Data members 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpFontFamily *nativeFamily; 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic FontFamily *GenericSansSerifFontFamily = NULL; 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic FontFamily *GenericSerifFontFamily = NULL; 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic FontFamily *GenericMonospaceFontFamily = NULL; 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic BYTE GenericSansSerifFontFamilyBuffer[sizeof(FontFamily)] = {0}; 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic BYTE GenericSerifFontFamilyBuffer [sizeof(FontFamily)] = {0}; 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic BYTE GenericMonospaceFontFamilyBuffer[sizeof(FontFamily)] = {0}; 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Abstract base class for fonts 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass Font : public GdiplusBase 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Graphics; 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font(IN HDC hdc); 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font(IN HDC hdc, 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const LOGFONTA* logfont); 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font(IN HDC hdc, 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const LOGFONTW* logfont); 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_127084 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font(IN HDC hdc, 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const HFONT hfont); 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font( 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const FontFamily * family, 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL emSize, 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT style = FontStyleRegular, 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN Unit unit = UnitPoint 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font( 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR * familyName, 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL emSize, 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT style = FontStyleRegular, 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN Unit unit = UnitPoint, 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const FontCollection * fontCollection = NULL 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLogFontA(IN const Graphics* g, 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT LOGFONTA * logfontA) const; 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLogFontW(IN const Graphics* g, 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT LOGFONTW * logfontW) const; 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font* Clone() const; 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~Font(); 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BOOL IsAvailable() const; 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT GetStyle() const; 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetSize() const; 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Unit GetUnit() const; 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const; 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetHeight(IN const Graphics *graphics = NULL) const; 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_125467 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetHeight(IN REAL dpi) const; 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetFamily(OUT FontFamily *family) const; 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font(const Font &); 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font& operator=(const Font &); 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Font(GpFont* font, Status status); 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov VOID SetNativeFont(GpFont *Font); 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const; 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * handle to native line texture object 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpFont* nativeFont; 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Abstract base classes for font collections 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass FontCollection : public GdiplusBase 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class FontFamily; 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontCollection(); 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~FontCollection(); 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT GetFamilyCount() const; // number of enumerable families in the collection 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetFamilies( // enumerate the fonts in a collection 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT numSought, 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT FontFamily * gpfamilies, 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT INT * numFound 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) const; 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const; 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontCollection(const FontCollection &); 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontCollection& operator=(const FontCollection &); 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const ; 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpFontCollection *nativeFontCollection; 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass InstalledFontCollection : public FontCollection 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov InstalledFontCollection(); 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~InstalledFontCollection(); 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov InstalledFontCollection(const InstalledFontCollection &); 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov InstalledFontCollection& operator=(const InstalledFontCollection &); 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_235072 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status InstallFontFile(IN const WCHAR* filename); 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status UninstallFontFile(IN const WCHAR* filename); 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const ; 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass PrivateFontCollection : public FontCollection 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PrivateFontCollection(); 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~PrivateFontCollection(); 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status AddFontFile(IN const WCHAR* filename); 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status AddMemoryFont(IN const VOID* memory, 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT length); 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PrivateFontCollection(const PrivateFontCollection &); 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PrivateFontCollection& operator=(const PrivateFontCollection &); 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Abstract base class for bitmap image and metafile 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//-------------------------------------------------------------------------- 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// !!! Note: 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Include the class declarations here and have the inline class 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// implementation in a separate file. This is done to resolve a 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// circular dependency since one of the Bitmap methods needs to 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// access the private member nativeGraphics of the Graphics object. 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass Image : public GdiplusBase 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Brush; 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class TextureBrush; 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Graphics; 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_140782 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image( 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR* filename 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image( 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN IStream* stream 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Image* FromFile( 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR* filename 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Image* FromStream( 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN IStream* stream 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image( 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR* filename, 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image( 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN IStream* stream, 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Image* FromFile( 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR* filename, 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Image* FromStream( 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN IStream* stream, 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~Image(); 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual Image* Clone(); 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Save(IN const WCHAR* filename, 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const CLSID* clsidEncoder, 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const EncoderParameters *encoderParams = NULL); 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status Save(IN IStream* stream, 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const CLSID* clsidEncoder, 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const EncoderParameters *encoderParams = NULL); 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SaveAdd(IN const EncoderParameters* encoderParams); 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SaveAdd(IN Image* newImage, 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const EncoderParameters* encoderParams); 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ImageType GetType() const; 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetPhysicalDimension(OUT SizeF* size); 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetBounds(OUT RectF* srcRect, 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT Unit* srcUnit); 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetWidth(); 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetHeight(); 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetHorizontalResolution(); 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetVerticalResolution(); 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetFlags(); 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetRawFormat(OUT GUID *format); 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PixelFormat GetPixelFormat(); 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov INT GetPaletteSize(); 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetPalette(OUT ColorPalette* palette, 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT size); 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetPalette(IN const ColorPalette* palette); 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image* GetThumbnailImage(IN UINT thumbWidth, 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT thumbHeight, 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN GetThumbnailImageAbort callback = NULL, 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN VOID* callbackData = NULL); 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetFrameDimensionsCount(); 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetFrameDimensionsList(OUT GUID* dimensionIDs, 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT count); 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetFrameCount(IN const GUID* dimensionID); 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SelectActiveFrame(IN const GUID* dimensionID, 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT frameIndex); 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status RotateFlip(IN RotateFlipType rotateFlipType); 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetPropertyCount(); 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetPropertyIdList(IN UINT numOfProperty, 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT PROPID* list); 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetPropertyItemSize(IN PROPID propId); 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetPropertyItem(IN PROPID propId, 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT propSize, 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT PropertyItem* buffer); 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetPropertySize(OUT UINT* totalBufferSize, 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT UINT* numProperties); 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetAllPropertyItems(IN UINT totalBufferSize, 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT numProperties, 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT PropertyItem* allItems); 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status RemovePropertyItem(IN PROPID propId); 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetPropertyItem(IN const PropertyItem* item); 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov UINT GetEncoderParameterListSize(IN const CLSID* clsidEncoder); 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetEncoderParameterList(IN const CLSID* clsidEncoder, 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT size, 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT EncoderParameters* buffer); 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Support for Middle East localization (right-to-left mirroring) 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ImageLayout GetLayout() const; 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetLayout(IN const ImageLayout layout); 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const; 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image() {} 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image(GpImage *nativeImage, Status status); 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov VOID SetNativeImage(GpImage* nativeImage); 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (status != Ok) 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (lastResult = status); 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpImage* nativeImage; 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status loadStatus; 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Disable copy constructor and assignment operator 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image(IN const Image& C); 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image& operator=(IN const Image& C); 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass Bitmap : public Image 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Image; 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CachedBitmap; 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap( 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR *filename, 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap( 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN IStream *stream, 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Bitmap* FromFile( 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR *filename, 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Bitmap* FromStream( 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN IStream *stream, 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BOOL useEmbeddedColorManagement = FALSE 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN INT width, 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT height, 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT stride, PixelFormat format, 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN BYTE* scan0); 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN INT width, 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT height, 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN PixelFormat format = PixelFormat32bppARGB); 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN INT width, 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT height, 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN Graphics* target); 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap* Clone(IN const Rect& rect, 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN PixelFormat format); 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap* Clone(IN INT x, 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT y, 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT width, 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT height, 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN PixelFormat format); 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap* Clone(IN const RectF& rect, 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN PixelFormat format); 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap* Clone(IN REAL x, 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL y, 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL width, 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL height, 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN PixelFormat format); 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status LockBits(IN const Rect& rect, 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN UINT flags, 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN PixelFormat format, 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT BitmapData* lockedBitmapData); 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status UnlockBits(IN BitmapData* lockedBitmapData); 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetPixel(IN INT x, 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT y, 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT Color *color); 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetPixel(IN INT x, 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN INT y, 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const Color &color); 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetResolution(IN REAL xdpi, 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL ydpi); 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // GDI interop: 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN IDirectDrawSurface7* surface); 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN const BITMAPINFO* gdiBitmapInfo, 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN VOID* gdiBitmapData); 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN HBITMAP hbm, 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN HPALETTE hpal); 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN HICON hicon); 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(IN HINSTANCE hInstance, 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR * bitmapName); 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Bitmap* FromDirectDrawSurface7(IN IDirectDrawSurface7* surface); 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Bitmap* FromBITMAPINFO(IN const BITMAPINFO* gdiBitmapInfo, 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN VOID* gdiBitmapData); 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Bitmap* FromHBITMAP(IN HBITMAP hbm, 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN HPALETTE hpal); 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Bitmap* FromHICON(IN HICON hicon); 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static Bitmap* FromResource(IN HINSTANCE hInstance, 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const WCHAR * bitmapName); 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetHBITMAP(IN const Color& colorBackground, 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT HBITMAP *hbmReturn); 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetHICON(HICON *hicon); 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(const Bitmap &); 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap& operator=(const Bitmap &); 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Bitmap(GpBitmap *nativeBitmap); 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CustomLineCap : public GdiplusBase 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class Pen; 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap( 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const GraphicsPath* fillPath, 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN const GraphicsPath* strokePath, 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LineCap baseCap = LineCapFlat, 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN REAL baseInset = 0 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ); 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CustomLineCap(); 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap* Clone() const; 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStrokeCap(IN LineCap strokeCap) 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // This changes both start and and caps. 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetStrokeCaps(strokeCap, strokeCap); 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStrokeCaps(IN LineCap startCap, 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN LineCap endCap); 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetStrokeCaps(OUT LineCap* startCap, 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OUT LineCap* endCap) const; 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStrokeJoin(IN LineJoin lineJoin); 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineJoin GetStrokeJoin() const; 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBaseCap(IN LineCap baseCap); 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LineCap GetBaseCap() const; 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetBaseInset(IN REAL inset); 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetBaseInset() const; 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetWidthScale(IN REAL widthScale); 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov REAL GetWidthScale() const; 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap(); 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap(const CustomLineCap &); 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap& operator=(const CustomLineCap &); 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap(const CustomLineCap& customLineCap) 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov customLineCap; 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap& operator=(const CustomLineCap& customLineCap) 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov customLineCap; 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetStatus(NotImplemented); 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return *this; 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CustomLineCap(GpCustomLineCap* nativeCap, Status status) 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lastResult = status; 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetNativeCap(nativeCap); 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov VOID SetNativeCap(GpCustomLineCap* nativeCap) 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->nativeCap = nativeCap; 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status SetStatus(Status status) const 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (status != Ok) 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (lastResult = status); 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return status; 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpCustomLineCap* nativeCap; 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CachedBitmap : public GdiplusBase 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend Graphics; 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CachedBitmap(IN Bitmap *bitmap, 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IN Graphics *graphics); 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CachedBitmap(); 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Status GetLastStatus() const; 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_250932 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CachedBitmap(const CachedBitmap &); 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CachedBitmap& operator=(const CachedBitmap &); 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GpCachedBitmap *nativeCachedBitmap; 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mutable Status lastResult; 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif // !_GDIPLUSHEADERS.HPP 794