13ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar/**************************************************************************\ 23ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* 33ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. 43ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* 53ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* Module Name: 63ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* 73ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* GdiplusGraphics.h 83ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* 93ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* Abstract: 103ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* 113ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar* Declarations for Graphics class 1253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar* 131b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar\**************************************************************************/ 141b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar 151b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar#ifndef _GDIPLUSGRAPHICS_H 164ad4b3ebbe5769143389dccfcfadb666a4ba5940Daniel Dunbar#define _GDIPLUSGRAPHICS_H 17dd98e2cad165ca73c769e4f105a4e47c2216387aDaniel Dunbar 18f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar/** 1927e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar * Represent a graphics context 200648262df75d97b464c2be0ed867da3615659785Daniel Dunbar */ 211b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbarclass Graphics : public GdiplusBase 22f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar{ 23f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbarpublic: 2453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar friend class Region; 250648262df75d97b464c2be0ed867da3615659785Daniel Dunbar friend class GraphicsPath; 26ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor friend class Image; 27ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor friend class Bitmap; 281368954db9ce2989ed8f03f5c65e8ee775a5229aDaniel Dunbar friend class Metafile; 294d7b14734f2285695dcec347f8718b512093390aTed Kremenek friend class Font; 308f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar friend class FontFamily; 310648262df75d97b464c2be0ed867da3615659785Daniel Dunbar friend class FontCollection; 3253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar friend class CachedBitmap; 33632f50edc08c76ebc643a0d4871bae33a55d7b4eDaniel Dunbar 34ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar // Get a graphics context from an existing Win32 HDC or HWND 35f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar static Graphics* FromHDC(IN HDC hdc) 36f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 37ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar return new Graphics(hdc); 38ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar } 391b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar 4092b369928b8e9ad156fb6eec2bf9f21d657bd69bChris Lattner static Graphics* FromHDC(IN HDC hdc, 411b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar IN HANDLE hdevice) 424a1240825acceab51facaa0dd9e8c344dca70155Daniel Dunbar { 438bde505fad92a44a853f5697a4fd8d2b52f20119Daniel Dunbar return new Graphics(hdc, hdevice); 444a1240825acceab51facaa0dd9e8c344dca70155Daniel Dunbar } 45e3fdca2ee0346a41d9cc5ee417a75e66274216f5Jeffrey Yasskin 46e3fdca2ee0346a41d9cc5ee417a75e66274216f5Jeffrey Yasskin static Graphics* FromHWND(IN HWND hwnd, 47e3fdca2ee0346a41d9cc5ee417a75e66274216f5Jeffrey Yasskin IN BOOL icm = FALSE) 485d93ed3c7a2dae0a8f422747e269963b3ef11d95Daniel Dunbar { 495d93ed3c7a2dae0a8f422747e269963b3ef11d95Daniel Dunbar return new Graphics(hwnd, icm); 50a79a2b5bf23d1422eed9be3793186ebbba7532ecDaniel Dunbar } 51dd98e2cad165ca73c769e4f105a4e47c2216387aDaniel Dunbar 52f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar static Graphics* FromImage(IN Image *image) 5343302d4144b5291961aa160d2fe191c09a9d8ad1Daniel Dunbar { 54dd98e2cad165ca73c769e4f105a4e47c2216387aDaniel Dunbar return new Graphics(image); 554c00fcdf98d3d7c4cb47b64f8b770f8f4bff1357Daniel Dunbar } 564c00fcdf98d3d7c4cb47b64f8b770f8f4bff1357Daniel Dunbar 574c00fcdf98d3d7c4cb47b64f8b770f8f4bff1357Daniel Dunbar Graphics(IN HDC hdc) 584c00fcdf98d3d7c4cb47b64f8b770f8f4bff1357Daniel Dunbar { 59f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar GpGraphics *graphics = NULL; 60f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar 61f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar lastResult = DllExports::GdipCreateFromHDC(hdc, &graphics); 62f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar 63f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar SetNativeGraphics(graphics); 64f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar } 65f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar 66f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar Graphics(IN HDC hdc, 67f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar IN HANDLE hdevice) 68f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar { 69f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar GpGraphics *graphics = NULL; 705d93ed3c7a2dae0a8f422747e269963b3ef11d95Daniel Dunbar 715d93ed3c7a2dae0a8f422747e269963b3ef11d95Daniel Dunbar lastResult = DllExports::GdipCreateFromHDC2(hdc, hdevice, &graphics); 72f44c58563286bb448a72ed9c9af5f21718633230Daniel Dunbar 73225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar SetNativeGraphics(graphics); 74225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar } 75225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar 76225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar Graphics(IN HWND hwnd, 77225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar IN BOOL icm = FALSE) 78225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar { 79225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar GpGraphics *graphics = NULL; 80225c41706dc0f3682236e351820d339e14390e00Daniel Dunbar 813ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar if (icm) 823ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar { 833ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar lastResult = DllExports::GdipCreateFromHWNDICM(hwnd, &graphics); 841b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar } 857e4534d9c14febcdea30c057bb2a36e245776865Daniel Dunbar else 863ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar { 873ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar lastResult = DllExports::GdipCreateFromHWND(hwnd, &graphics); 88a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 89f3cad36e59a41b5767fe662b5ac8911ee174b801Daniel Dunbar 908f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar SetNativeGraphics(graphics); 91847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar } 92847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar 93847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar Graphics(IN Image* image) 94847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar { 95847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar GpGraphics *graphics = NULL; 96847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar 97847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar if (image != NULL) 98847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar { 99847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar lastResult = DllExports::GdipGetImageGraphicsContext( 100847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar image->nativeImage, &graphics); 101847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar } 102847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar SetNativeGraphics(graphics); 103847abaa62883b6c20005bdd3346ebbd44e46dbacDaniel Dunbar } 104b0c4df5c4df69a003f26b378eb95961bc7c486e5Daniel Dunbar 105b0c4df5c4df69a003f26b378eb95961bc7c486e5Daniel Dunbar ~Graphics() 106b0c4df5c4df69a003f26b378eb95961bc7c486e5Daniel Dunbar { 107b0c4df5c4df69a003f26b378eb95961bc7c486e5Daniel Dunbar DllExports::GdipDeleteGraphics(nativeGraphics); 1080648262df75d97b464c2be0ed867da3615659785Daniel Dunbar } 1090648262df75d97b464c2be0ed867da3615659785Daniel Dunbar 1100648262df75d97b464c2be0ed867da3615659785Daniel Dunbar VOID Flush(IN FlushIntention intention = FlushIntentionFlush) 1110648262df75d97b464c2be0ed867da3615659785Daniel Dunbar { 1120648262df75d97b464c2be0ed867da3615659785Daniel Dunbar DllExports::GdipFlush(nativeGraphics, intention); 1133ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar } 1148f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar 1158f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar //------------------------------------------------------------------------ 116a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar // Interop methods 117a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar //------------------------------------------------------------------------ 118a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 119cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar // Locks the graphics until ReleaseDC is called 120cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar HDC GetHDC() 121cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar { 122a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar HDC hdc = NULL; 12353ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar 1240648262df75d97b464c2be0ed867da3615659785Daniel Dunbar SetStatus(DllExports::GdipGetDC(nativeGraphics, &hdc)); 125365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar 126dd98e2cad165ca73c769e4f105a4e47c2216387aDaniel Dunbar return hdc; 127365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar } 1288477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar 1298477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar VOID ReleaseHDC(IN HDC hdc) 1307ca7987669fcd14d91b4227a9ddcf7fdd8b1f8c2Rafael Espindola { 1317ca7987669fcd14d91b4227a9ddcf7fdd8b1f8c2Rafael Espindola SetStatus(DllExports::GdipReleaseDC(nativeGraphics, hdc)); 1327ca7987669fcd14d91b4227a9ddcf7fdd8b1f8c2Rafael Espindola } 1338477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar 134365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar //------------------------------------------------------------------------ 135a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar // Rendering modes 136a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar //------------------------------------------------------------------------ 137a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 138a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status SetRenderingOrigin(IN INT x, IN INT y) 1398477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar { 1408477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar return SetStatus( 1418477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar DllExports::GdipSetRenderingOrigin( 142f5431e3563a64758584906cb9e0d10719a0756ecDaniel Dunbar nativeGraphics, x, y 1438477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar ) 1448477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar ); 1458477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar } 1468477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar 147f5431e3563a64758584906cb9e0d10719a0756ecDaniel Dunbar Status GetRenderingOrigin(OUT INT *x, OUT INT *y) const 148f5431e3563a64758584906cb9e0d10719a0756ecDaniel Dunbar { 1498477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar return SetStatus( 1508477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar DllExports::GdipGetRenderingOrigin( 1518477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar nativeGraphics, x, y 1528477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar ) 1538477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar ); 1548477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar } 1558477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar 1568477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar Status SetCompositingMode(IN CompositingMode compositingMode) 1578477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar { 1588477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar return SetStatus(DllExports::GdipSetCompositingMode(nativeGraphics, 1598477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar compositingMode)); 1608477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar } 1618477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar 1628477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar CompositingMode GetCompositingMode() const 1638477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar { 164e9c7b9ef2f2054401d099dc7666a4143ef14089dDaniel Dunbar CompositingMode mode; 165e9c7b9ef2f2054401d099dc7666a4143ef14089dDaniel Dunbar 166365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar SetStatus(DllExports::GdipGetCompositingMode(nativeGraphics, 1678477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar &mode)); 168a6046bec7fc835186dde134fb81aa1b7d45cd9f0Daniel Dunbar 1698477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar return mode; 1708477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar } 171365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar 172365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar Status SetCompositingQuality(IN CompositingQuality compositingQuality) 1738477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar { 1748477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar return SetStatus(DllExports::GdipSetCompositingQuality( 1758477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar nativeGraphics, 1768477ee93c9d81d1b5fe321706ff95bcd219c744bDaniel Dunbar compositingQuality)); 17748ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth } 17848ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth 179365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar CompositingQuality GetCompositingQuality() const 180e504952bc89f79fc9ff54d5641ab30bb07ec435eDaniel Dunbar { 181cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar CompositingQuality quality; 18221549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar 183d7502d0a662b5c299125aba04245aefce67cbc22Daniel Dunbar SetStatus(DllExports::GdipGetCompositingQuality( 18421549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar nativeGraphics, 185365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar &quality)); 186365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar 18721549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar return quality; 18821549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar } 189365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar 19053ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar Status SetTextRenderingHint(IN TextRenderingHint newMode) 19121549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar { 19221549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar#ifndef DCR_USE_NEW_186764 193cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar /* temporarly set the high bit to warn that we are using the new definition for the flag */ 194a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar newMode = (TextRenderingHint) (newMode | 0x0f000); 195a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar#endif // DCR_USE_NEW_186764 196a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipSetTextRenderingHint(nativeGraphics, 197a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar newMode)); 19853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar } 19921549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar 20053ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar TextRenderingHint GetTextRenderingHint() const 20121549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar { 20253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar TextRenderingHint hint; 20353ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar 20410ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar SetStatus(DllExports::GdipGetTextRenderingHint(nativeGraphics, 20521549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar &hint)); 20653ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar 207ab835430b4f758dd49903251c7c7f21b95933c89Daniel Dunbar return hint; 20821549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar } 2098d2554a2c3201aa664cbf2108cf9d57aa0aa4b0aDaniel Dunbar 2108d2554a2c3201aa664cbf2108cf9d57aa0aa4b0aDaniel Dunbar#ifdef DCR_USE_NEW_188922 211365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar Status SetTextContrast(IN UINT contrast) 212365c02f65be026f90e67a8e00e7b827cee60e228Daniel Dunbar { 213c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar return SetStatus(DllExports::GdipSetTextContrast(nativeGraphics, 214c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar contrast)); 215c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar } 216c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar 217c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar UINT GetTextContrast() const 218c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar { 219c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar UINT contrast; 220c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar 221c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar SetStatus(DllExports::GdipGetTextContrast(nativeGraphics, 222c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar &contrast)); 223c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar 224c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar return contrast; 225c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar } 226a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar#else 227c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar Status SetTextGammaValue(IN UINT gammaValue) 228c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar { 229c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar return SetStatus(DllExports::GdipSetTextGammaValue(nativeGraphics, 2309fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar gammaValue)); 2319fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar } 2329fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar 2339fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar UINT GetTextGammaValue() const 2349fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar { 2359fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar UINT gammaValue; 236c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar 237c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar SetStatus(DllExports::GdipGetTextGammaValue(nativeGraphics, 238c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar &gammaValue)); 2399fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar 2409fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar return gammaValue; 2419fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar } 2429fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar 2439fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar#endif // DCR_USE_NEW_188922 2449fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar 2459fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar 2469fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar InterpolationMode GetInterpolationMode() const 2479fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar { 2489fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar InterpolationMode mode = InterpolationModeInvalid; 2499fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar 2509fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar SetStatus(DllExports::GdipGetInterpolationMode(nativeGraphics, 2519fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar &mode)); 2529fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar 2539fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar return mode; 2549fcbc050a704cc5bb46e1c493940aca7c79aebf9Daniel Dunbar } 255c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar 256c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar Status SetInterpolationMode(IN InterpolationMode interpolationMode) 257c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar { 258c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar return SetStatus(DllExports::GdipSetInterpolationMode(nativeGraphics, 259c88a88f6f7672b6bb831dce9da4acfa0c846975fDaniel Dunbar interpolationMode)); 260d65bddcbe1385a4de212ecbbdc8919c54b3efeb0Daniel Dunbar } 2610648262df75d97b464c2be0ed867da3615659785Daniel Dunbar 262a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar SmoothingMode GetSmoothingMode() const 2630648262df75d97b464c2be0ed867da3615659785Daniel Dunbar { 2640648262df75d97b464c2be0ed867da3615659785Daniel Dunbar SmoothingMode smoothingMode = SmoothingModeInvalid; 2650648262df75d97b464c2be0ed867da3615659785Daniel Dunbar 2660648262df75d97b464c2be0ed867da3615659785Daniel Dunbar SetStatus(DllExports::GdipGetSmoothingMode(nativeGraphics, 2670648262df75d97b464c2be0ed867da3615659785Daniel Dunbar &smoothingMode)); 2680648262df75d97b464c2be0ed867da3615659785Daniel Dunbar 2690648262df75d97b464c2be0ed867da3615659785Daniel Dunbar return smoothingMode; 2700648262df75d97b464c2be0ed867da3615659785Daniel Dunbar } 27153ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar 2720648262df75d97b464c2be0ed867da3615659785Daniel Dunbar Status SetSmoothingMode(IN SmoothingMode smoothingMode) 2730648262df75d97b464c2be0ed867da3615659785Daniel Dunbar { 2740648262df75d97b464c2be0ed867da3615659785Daniel Dunbar return SetStatus(DllExports::GdipSetSmoothingMode(nativeGraphics, 2753ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar smoothingMode)); 276dd98e2cad165ca73c769e4f105a4e47c2216387aDaniel Dunbar } 277c35d71f1e0a0c72fd43a73ddecd408bf43d501deDaniel Dunbar 27843302d4144b5291961aa160d2fe191c09a9d8ad1Daniel Dunbar PixelOffsetMode GetPixelOffsetMode() const 27943302d4144b5291961aa160d2fe191c09a9d8ad1Daniel Dunbar { 28091e28afe3503893c69afd71877f11e3bf03fa4ceDaniel Dunbar PixelOffsetMode pixelOffsetMode = PixelOffsetModeInvalid; 28191e28afe3503893c69afd71877f11e3bf03fa4ceDaniel Dunbar 282793007242ba209b68ce14ec7547ac70ee981303aDaniel Dunbar SetStatus(DllExports::GdipGetPixelOffsetMode(nativeGraphics, 283a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar &pixelOffsetMode)); 284a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 285a18f1b88a7ef3d2c944bb1d3b6586a2860ce2baaTed Kremenek return pixelOffsetMode; 28670c8db1003af49d3627aeef41fcdd7c6c6a7df79Daniel Dunbar } 287793007242ba209b68ce14ec7547ac70ee981303aDaniel Dunbar 2883ee96baa3fff269e145855a6f7526c36e59a7f4bDaniel Dunbar Status SetPixelOffsetMode(IN PixelOffsetMode pixelOffsetMode) 2893ee96baa3fff269e145855a6f7526c36e59a7f4bDaniel Dunbar { 2903ee96baa3fff269e145855a6f7526c36e59a7f4bDaniel Dunbar return SetStatus(DllExports::GdipSetPixelOffsetMode(nativeGraphics, 2913ee96baa3fff269e145855a6f7526c36e59a7f4bDaniel Dunbar pixelOffsetMode)); 292793007242ba209b68ce14ec7547ac70ee981303aDaniel Dunbar } 293cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar 294cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar //------------------------------------------------------------------------ 295c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner // Manipulate the current world transform 296c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner //------------------------------------------------------------------------ 297c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner 298c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner Status SetTransform(IN const Matrix* matrix) 299c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner { 300c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner return SetStatus(DllExports::GdipSetWorldTransform(nativeGraphics, 301c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner matrix->nativeMatrix)); 302c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner } 30321549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar Status ResetTransform() 304e82ec0bead14ae262cddbe958b77767a3f6aebcdDaniel Dunbar { 305a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipResetWorldTransform(nativeGraphics)); 30691e28afe3503893c69afd71877f11e3bf03fa4ceDaniel Dunbar } 307e06dc219a869d73b6c9a398a2dee0aa2d4e2dcf0Daniel Dunbar 308ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor Status MultiplyTransform(IN const Matrix* matrix, 309e06dc219a869d73b6c9a398a2dee0aa2d4e2dcf0Daniel Dunbar IN MatrixOrder order = MatrixOrderPrepend) 310e06dc219a869d73b6c9a398a2dee0aa2d4e2dcf0Daniel Dunbar { 311c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner return SetStatus(DllExports::GdipMultiplyWorldTransform(nativeGraphics, 312c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner matrix->nativeMatrix, 313c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner order)); 314c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner } 315c3d26cc4eea5187ce13ed180b479ff8ef41015a7Chris Lattner 316e06dc219a869d73b6c9a398a2dee0aa2d4e2dcf0Daniel Dunbar Status TranslateTransform(IN REAL dx, 317a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN REAL dy, 318c35d71f1e0a0c72fd43a73ddecd408bf43d501deDaniel Dunbar IN MatrixOrder order = MatrixOrderPrepend) 319c35d71f1e0a0c72fd43a73ddecd408bf43d501deDaniel Dunbar { 32091e28afe3503893c69afd71877f11e3bf03fa4ceDaniel Dunbar return SetStatus(DllExports::GdipTranslateWorldTransform(nativeGraphics, 32191e28afe3503893c69afd71877f11e3bf03fa4ceDaniel Dunbar dx, dy, order)); 32291e28afe3503893c69afd71877f11e3bf03fa4ceDaniel Dunbar } 3236cc73de6ebb3eb00af7dd5149f6778318f1fb76fDaniel Dunbar 324a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status ScaleTransform(IN REAL sx, 325793007242ba209b68ce14ec7547ac70ee981303aDaniel Dunbar IN REAL sy, 3266cc73de6ebb3eb00af7dd5149f6778318f1fb76fDaniel Dunbar IN MatrixOrder order = MatrixOrderPrepend) 3276cc73de6ebb3eb00af7dd5149f6778318f1fb76fDaniel Dunbar { 3286cc73de6ebb3eb00af7dd5149f6778318f1fb76fDaniel Dunbar return SetStatus(DllExports::GdipScaleWorldTransform(nativeGraphics, 329a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar sx, sy, order)); 33021549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar } 331793007242ba209b68ce14ec7547ac70ee981303aDaniel Dunbar 332cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar Status RotateTransform(IN REAL angle, 333cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar IN MatrixOrder order = MatrixOrderPrepend) 334cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar { 33521549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar return SetStatus(DllExports::GdipRotateWorldTransform(nativeGraphics, 336ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar angle, order)); 337ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar } 338ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar 339ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar /** 340ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar * Return the current world transform 341ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar */ 342ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar 343ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar Status GetTransform(OUT Matrix* matrix) const 344ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar { 345ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar return SetStatus(DllExports::GdipGetWorldTransform(nativeGraphics, 346a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar matrix->nativeMatrix)); 347ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar } 348ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar 349ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar /** 350ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar * Manipulate the current page transform 351ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar */ 352ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar 35391e28afe3503893c69afd71877f11e3bf03fa4ceDaniel Dunbar Status SetPageUnit(IN Unit unit) 354ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar { 355ca3459e95f552cfae6c9c5fb4ed161e3a662c25eDaniel Dunbar return SetStatus(DllExports::GdipSetPageUnit(nativeGraphics, 356a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar unit)); 357a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 35821549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar 3595ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar Status SetPageScale(IN REAL scale) 360cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar { 361cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar return SetStatus(DllExports::GdipSetPageScale(nativeGraphics, 362cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar scale)); 36321549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar } 3645ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar 365cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar /** 366cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar * Retrieve the current page transform information 367cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar * notes @ these are atomic 36821549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar */ 3695ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar Unit GetPageUnit() const 370cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar { 371cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar Unit unit; 372cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar 37312cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar SetStatus(DllExports::GdipGetPageUnit(nativeGraphics, &unit)); 37412cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 37512cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar return unit; 37612cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar } 37712cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 37812cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar REAL GetPageScale() const 37912cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar { 380a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar REAL scale; 38112cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 38212cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar SetStatus(DllExports::GdipGetPageScale(nativeGraphics, &scale)); 38312cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 38412cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar return scale; 38512cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar } 38612cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 38712cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar REAL GetDpiX() const 38812cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar { 38912cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar REAL dpi; 39012cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 39112cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar SetStatus(DllExports::GdipGetDpiX(nativeGraphics, &dpi)); 39212cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 39312cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar return dpi; 39412cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar } 39512cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 39612cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar REAL GetDpiY() const 39712cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar { 39812cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar REAL dpi; 39912cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 40012cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar SetStatus(DllExports::GdipGetDpiY(nativeGraphics, &dpi)); 40112cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 402a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return dpi; 40312cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar } 40412cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar 40512cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar /** 40612cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar * Transform points in the current graphics context 40712cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar */ 40812cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar // float version 40912cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar Status TransformPoints(IN CoordinateSpace destSpace, 41012cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar IN CoordinateSpace srcSpace, 41112cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar IN OUT PointF* pts, 41212cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar IN INT count) const 41312cfe036d809173a25af0104844d4bb66a92252bDaniel Dunbar { 414cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar return SetStatus(DllExports::GdipTransformPoints(nativeGraphics, 415cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar destSpace, 416cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar srcSpace, 417a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pts, 418ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar count)); 419ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar } 420ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar 421a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar // integer version 422ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar Status TransformPoints(IN CoordinateSpace destSpace, 423ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar IN CoordinateSpace srcSpace, 424a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN OUT Point* pts, 425ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar IN INT count) const 426a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 42710ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar 428ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar return SetStatus(DllExports::GdipTransformPointsI(nativeGraphics, 429a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar destSpace, 43010ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar srcSpace, 43110ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar pts, 432ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar count)); 433ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar } 434ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar 43510ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar //------------------------------------------------------------------------ 436ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar // GetNearestColor (for <= 8bpp surfaces) 437ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar // Note: alpha is ignored 438ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar //------------------------------------------------------------------------ 439ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar Status GetNearestColor(IN OUT Color* color) const 440ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar { 441ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar if (color == NULL) 442ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar { 443ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar return SetStatus(InvalidParameter); 444ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar } 445a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 446ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar ARGB argb = color->GetValue(); 447ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar 448ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar Status status = SetStatus(DllExports::GdipGetNearestColor(nativeGraphics, &argb)); 449ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar 450ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar color->SetValue(argb); 45110ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar 452ba1021388e6839b76c8968b931189361c7286674Daniel Dunbar return status; 453a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 45410ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar 45510ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar /** 45653ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar * Vector drawing methods 45753ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar * 458a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar * @notes Do we need a set of methods that take 45921549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar * integer coordinate parameters? 460a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar */ 461a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 462a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar // float version 4631368954db9ce2989ed8f03f5c65e8ee775a5229aDaniel Dunbar Status DrawLine(IN const Pen* pen, 4641368954db9ce2989ed8f03f5c65e8ee775a5229aDaniel Dunbar IN REAL x1, 465a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN REAL y1, 4662fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN REAL x2, 4672fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN REAL y2) 4682fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar { 469b827a0541b5fd095fcdb7ad0c3df93ca158c619aDaniel Dunbar return SetStatus(DllExports::GdipDrawLine(nativeGraphics, 47036df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar pen->nativePen, x1, y1, x2, 47136df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar y2)); 47236df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar } 47336df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar 47436df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar Status DrawLine(IN const Pen* pen, 47536df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar IN const PointF& pt1, 47636df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar IN const PointF& pt2) 47736df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar { 47836df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar return DrawLine(pen, pt1.X, pt1.Y, pt2.X, pt2.Y); 47936df2904354ac150500ec16238a1ec3cce4ba83eDaniel Dunbar } 4807587719c40ebf02bf11e5e66c30bd20e98edebc2Daniel Dunbar 4813f30ddf680df44e0c5c43b8db0a22166dcd7066bDaniel Dunbar Status DrawLines(IN const Pen* pen, 4823f30ddf680df44e0c5c43b8db0a22166dcd7066bDaniel Dunbar IN const PointF* points, 4832fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN INT count) 4842fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar { 4852fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar return SetStatus(DllExports::GdipDrawLines(nativeGraphics, 486a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pen->nativePen, 487a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar points, count)); 48810ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar } 48910ffa9a4887d9376e3eb3598e40523d1b58773c9Daniel Dunbar 4902fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar // int version 491a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status DrawLine(IN const Pen* pen, 492a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT x1, 493a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT y1, 4942fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN INT x2, 4952fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN INT y2) 4962fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar { 4972fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar return SetStatus(DllExports::GdipDrawLineI(nativeGraphics, 498a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pen->nativePen, 49938dd3d54186cf44ea9d37f463c3f2800ab526b82Daniel Dunbar x1, 5002fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar y1, 5012fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar x2, 5022fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar y2)); 5032fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar } 5042fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar 505be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar Status DrawLine(IN const Pen* pen, 506be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar IN const Point& pt1, 5072fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN const Point& pt2) 5082fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar { 5092fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar return DrawLine(pen, 510a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pt1.X, 511a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pt1.Y, 512a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pt2.X, 513a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pt2.Y); 5142fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar } 5152fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar 5163dbd6c51bcd8a730c3fe58e29d7e0d999a94fa91Daniel Dunbar Status DrawLines(IN const Pen* pen, 5172fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN const Point* points, 5182fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN INT count) 5192fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar { 5202fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar return SetStatus(DllExports::GdipDrawLinesI(nativeGraphics, 52132c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar pen->nativePen, 5221368954db9ce2989ed8f03f5c65e8ee775a5229aDaniel Dunbar points, 52332c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar count)); 52432c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar } 52532c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar 5262fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar // float version 527a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status DrawArc(IN const Pen* pen, 528a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN REAL x, 5292fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN REAL y, 5302fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN REAL width, 5312fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN REAL height, 5322fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN REAL startAngle, 533be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar IN REAL sweepAngle) 534be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar { 535be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar return SetStatus(DllExports::GdipDrawArc(nativeGraphics, 536be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar pen->nativePen, 537be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar x, 538be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar y, 539be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar width, 540be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar height, 541be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar startAngle, 542be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar sweepAngle)); 543be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar } 544be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar 545be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar Status DrawArc(IN const Pen* pen, 5462fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar IN const RectF& rect, 54753ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN REAL startAngle, 54853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN REAL sweepAngle) 54921549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar { 5508f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar return DrawArc(pen, rect.X, rect.Y, rect.Width, rect.Height, 551af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar startAngle, sweepAngle); 552af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar } 553a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 554a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar // int version 555a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status DrawArc(IN const Pen* pen, 55683dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar IN INT x, 55783dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar IN INT y, 55883dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar IN INT width, 55953ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN INT height, 560a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN REAL startAngle, 56153ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN REAL sweepAngle) 56253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar { 56353ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar return SetStatus(DllExports::GdipDrawArcI(nativeGraphics, 56453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pen->nativePen, 56553ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar x, 56653ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar y, 56753ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar width, 56853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar height, 56983dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar startAngle, 57083dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar sweepAngle)); 57183dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar } 57283dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar 57383dd21f6b4e6e109b893c0d42bc81e4883c342f7Daniel Dunbar 57453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar Status DrawArc(IN const Pen* pen, 57553ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN const Rect& rect, 576a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN REAL startAngle, 577a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN REAL sweepAngle) 57853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar { 579a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return DrawArc(pen, 580a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar rect.X, 581e4bdae78c69d2a09ee96619cc5ccf81441674412Daniel Dunbar rect.Y, 582b897f5d3ebfb62c2745e2e2af7faa9920c882438Daniel Dunbar rect.Width, 58353ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar rect.Height, 58453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar startAngle, 585a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar sweepAngle); 586a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 587a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 58853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar // float version 589e33bea4ef34598e7a4a6a3a117392268998552d4Daniel Dunbar Status DrawBezier(IN const Pen* pen, 590e33bea4ef34598e7a4a6a3a117392268998552d4Daniel Dunbar IN REAL x1, 59153ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN REAL y1, 59253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN REAL x2, 59351679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar IN REAL y2, 59451679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar IN REAL x3, 59551679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar IN REAL y3, 59651679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar IN REAL x4, 59751679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar IN REAL y4) 59851679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar { 59951679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar return SetStatus(DllExports::GdipDrawBezier(nativeGraphics, 60051679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar pen->nativePen, x1, y1, 60151679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar x2, y2, x3, y3, x4, y4)); 60251679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar } 60351679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar 60453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar Status DrawBezier(IN const Pen* pen, 60553ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN const PointF& pt1, 606683ca381bf2b8dffab535c89d25250518bbec3a0Daniel Dunbar IN const PointF& pt2, 607683ca381bf2b8dffab535c89d25250518bbec3a0Daniel Dunbar IN const PointF& pt3, 608683ca381bf2b8dffab535c89d25250518bbec3a0Daniel Dunbar IN const PointF& pt4) 609a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 610683ca381bf2b8dffab535c89d25250518bbec3a0Daniel Dunbar return DrawBezier(pen, 61153ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt1.X, 61253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt1.Y, 61353ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt2.X, 61453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt2.Y, 61553ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt3.X, 61653ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt3.Y, 61753ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt4.X, 61853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar pt4.Y); 61953ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar } 62053ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar 62153ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar Status DrawBeziers(IN const Pen* pen, 62253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN const PointF* points, 6233bd54cc56276c386f4d50940a9fbfcad7a69cb75Daniel Dunbar IN INT count) 6243bd54cc56276c386f4d50940a9fbfcad7a69cb75Daniel Dunbar { 6253bd54cc56276c386f4d50940a9fbfcad7a69cb75Daniel Dunbar return SetStatus(DllExports::GdipDrawBeziers(nativeGraphics, 626b897f5d3ebfb62c2745e2e2af7faa9920c882438Daniel Dunbar pen->nativePen, 62753ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar points, 62853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar count)); 62953ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar } 63053ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar 631a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar // int version 632a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status DrawBezier(IN const Pen* pen, 63353ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN INT x1, 63453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN INT y1, 635b827a0541b5fd095fcdb7ad0c3df93ca158c619aDaniel Dunbar IN INT x2, 636a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT y2, 63753ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN INT x3, 63853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN INT y3, 63953ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN INT x4, 640a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT y4) 641a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 64253ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar return SetStatus(DllExports::GdipDrawBezierI(nativeGraphics, 643b897f5d3ebfb62c2745e2e2af7faa9920c882438Daniel Dunbar pen->nativePen, 64453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar x1, 64553ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar y1, 64653ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar x2, 64753ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar y2, 64853ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar x3, 6498b1604ece7bf6dc2ba811cd7d8767557e55e2ec2Daniel Dunbar y3, 650af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar x4, 651af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar y4)); 652af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar } 653af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar 654a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status DrawBezier(IN const Pen* pen, 655a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const Point& pt1, 656a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const Point& pt2, 657ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN const Point& pt3, 658ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN const Point& pt4) 659af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar { 660af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar return DrawBezier(pen, 661ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pt1.X, 662ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pt1.Y, 663ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pt2.X, 664ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pt2.Y, 665a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pt3.X, 6665915fbf310e171c4cd3c2af05e9de360c0fa988aDaniel Dunbar pt3.Y, 6678022fd46d45005de63306a7513aece20a1be16edDaniel Dunbar pt4.X, 66864952508c2b0c8bffb45c8b410f0af3d2457f59bDaniel Dunbar pt4.Y); 66963be57a832b2dab70592d1d9b37a5cd9a627356eDaniel Dunbar } 67063be57a832b2dab70592d1d9b37a5cd9a627356eDaniel Dunbar 6715915fbf310e171c4cd3c2af05e9de360c0fa988aDaniel Dunbar Status DrawBeziers(IN const Pen* pen, 672ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN const Point* points, 673ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN INT count) 674af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar { 675af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar return SetStatus(DllExports::GdipDrawBeziersI(nativeGraphics, 676ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pen->nativePen, 677ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar points, 678a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar count)); 679af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar } 680af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar 681ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar // float version 682af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar Status DrawRectangle(IN const Pen* pen, 683a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const RectF& rect) 684a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 685d7b88c2cb8986217f164203747d35c8f596e38c2Daniel Dunbar return DrawRectangle(pen, rect.X, rect.Y, rect.Width, rect.Height); 68638dd3d54186cf44ea9d37f463c3f2800ab526b82Daniel Dunbar } 687af61c71137d1f7239d6b9d7425ce083db7ba31dfDaniel Dunbar 688ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar Status DrawRectangle(IN const Pen* pen, 689ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL x, 69053ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN REAL y, 691ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL width, 692ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL height) 693ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar { 694ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar return SetStatus(DllExports::GdipDrawRectangle(nativeGraphics, 695ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pen->nativePen, x, y, 696ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar width, height)); 697a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 698a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 699ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar Status DrawRectangles(IN const Pen* pen, 700ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN const RectF* rects, 70105494a78c3746a360e81fc1d1797ce52df415b54Daniel Dunbar IN INT count) 70205494a78c3746a360e81fc1d1797ce52df415b54Daniel Dunbar { 703634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar return SetStatus(DllExports::GdipDrawRectangles(nativeGraphics, 704634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar pen->nativePen, 705634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar rects, count)); 706634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar } 707634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar 708634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar // integer version 709634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar Status DrawRectangle(IN const Pen* pen, 710634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar IN const Rect& rect) 711634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar { 712634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar return DrawRectangle(pen, 713634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar rect.X, 714634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar rect.Y, 715634b24563be901f8adc37c07ffba3eeac1f1d4ccDaniel Dunbar rect.Width, 716ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar rect.Height); 717ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar } 718a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 719ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar Status DrawRectangle(IN const Pen* pen, 7204d7b14734f2285695dcec347f8718b512093390aTed Kremenek IN INT x, 721ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN INT y, 722ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN INT width, 723ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN INT height) 724ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar { 725ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar return SetStatus(DllExports::GdipDrawRectangleI(nativeGraphics, 726ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pen->nativePen, 727ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar x, 728ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar y, 729ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar width, 730ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar height)); 7314d7b14734f2285695dcec347f8718b512093390aTed Kremenek } 732ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar 733ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar Status DrawRectangles(IN const Pen* pen, 734ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN const Rect* rects, 735a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT count) 736a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 737a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipDrawRectanglesI(nativeGraphics, 738337a6271b98c4c183f7eaad1563a75260b4f2871Daniel Dunbar pen->nativePen, 739337a6271b98c4c183f7eaad1563a75260b4f2871Daniel Dunbar rects, 740337a6271b98c4c183f7eaad1563a75260b4f2871Daniel Dunbar count)); 741ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar } 7424d7b14734f2285695dcec347f8718b512093390aTed Kremenek 743ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar // float version 744ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar Status DrawEllipse(IN const Pen* pen, 745ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN const RectF& rect) 746ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar { 747ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar return DrawEllipse(pen, rect.X, rect.Y, rect.Width, rect.Height); 748ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar } 7494d7b14734f2285695dcec347f8718b512093390aTed Kremenek 75053ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar Status DrawEllipse(IN const Pen* pen, 751ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL x, 752ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL y, 753ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL width, 754ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL height) 755f3601388f234f70778e3023018dfe57b64cf4043Daniel Dunbar { 756f3601388f234f70778e3023018dfe57b64cf4043Daniel Dunbar return SetStatus(DllExports::GdipDrawEllipse(nativeGraphics, 757f3601388f234f70778e3023018dfe57b64cf4043Daniel Dunbar pen->nativePen, 758f3601388f234f70778e3023018dfe57b64cf4043Daniel Dunbar x, 759f3601388f234f70778e3023018dfe57b64cf4043Daniel Dunbar y, 760ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar width, 761ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar height)); 762ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar } 763ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar 7648f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar // integer version 765ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar Status DrawEllipse(IN const Pen* pen, 766ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN const Rect& rect) 767ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar { 768ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar return DrawEllipse(pen, 769cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar rect.X, 770cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar rect.Y, 771cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar rect.Width, 772cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar rect.Height); 773cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar } 774cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar 775cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar Status DrawEllipse(IN const Pen* pen, 776cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar IN INT x, 777cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar IN INT y, 778ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN INT width, 779ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN INT height) 780ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar { 781a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipDrawEllipseI(nativeGraphics, 782ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar pen->nativePen, 78373ba9a6337c7879021976949a2dad9476a4f0abbDaniel Dunbar x, 78473ba9a6337c7879021976949a2dad9476a4f0abbDaniel Dunbar y, 78573ba9a6337c7879021976949a2dad9476a4f0abbDaniel Dunbar width, 78673ba9a6337c7879021976949a2dad9476a4f0abbDaniel Dunbar height)); 787ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar } 788ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar 78964952508c2b0c8bffb45c8b410f0af3d2457f59bDaniel Dunbar // floating point version 79064952508c2b0c8bffb45c8b410f0af3d2457f59bDaniel Dunbar Status DrawPie(IN const Pen* pen, 79163be57a832b2dab70592d1d9b37a5cd9a627356eDaniel Dunbar IN const RectF& rect, 792ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL startAngle, 7935915fbf310e171c4cd3c2af05e9de360c0fa988aDaniel Dunbar IN REAL sweepAngle) 7945915fbf310e171c4cd3c2af05e9de360c0fa988aDaniel Dunbar { 795337a6271b98c4c183f7eaad1563a75260b4f2871Daniel Dunbar return DrawPie(pen, 79673ba9a6337c7879021976949a2dad9476a4f0abbDaniel Dunbar rect.X, 797a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar rect.Y, 7986c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5Daniel Dunbar rect.Width, 799ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar rect.Height, 800ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar startAngle, 801ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar sweepAngle); 802ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar } 803ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar 804ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar Status DrawPie(IN const Pen* pen, 805ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL x, 806ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL y, 807ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL width, 808ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL height, 809ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3Daniel Dunbar IN REAL startAngle, 81053ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar IN REAL sweepAngle) 81153ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar { 81221549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar return SetStatus(DllExports::GdipDrawPie(nativeGraphics, 8138f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar pen->nativePen, 814f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar x, 815f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar y, 81660ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar width, 817a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar height, 81860ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar startAngle, 81960ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar sweepAngle)); 820a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 821f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 82254d76db0aa7107597cac0b80d8e138a37e6d1de9Benjamin Kramer // integer point version 823f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status DrawPie(IN const Pen* pen, 824f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN const Rect& rect, 825f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN REAL startAngle, 826f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN REAL sweepAngle) 827a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 828a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return DrawPie(pen, 829f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar rect.X, 830f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar rect.Y, 831a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar rect.Width, 83221549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar rect.Height, 833f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar startAngle, 834f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar sweepAngle); 835a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 836f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 837f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status DrawPie(IN const Pen* pen, 838f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT x, 839f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT y, 840f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT width, 841f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT height, 842a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN REAL startAngle, 84321549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar IN REAL sweepAngle) 844f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 845f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar return SetStatus(DllExports::GdipDrawPieI(nativeGraphics, 846a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pen->nativePen, 847a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar x, 848a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar y, 849f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar width, 850a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar height, 851a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar startAngle, 852f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar sweepAngle)); 853d7b88c2cb8986217f164203747d35c8f596e38c2Daniel Dunbar } 854f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 855f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar // float version 856f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status DrawPolygon(IN const Pen* pen, 857f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN const PointF* points, 858f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT count) 859f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 860f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar return SetStatus(DllExports::GdipDrawPolygon(nativeGraphics, 861a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pen->nativePen, 8624954018954bbc97363eef02d0c83bea19ce9b329Daniel Dunbar points, 863f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar count)); 864f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar } 865f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 866f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar // integer version 867f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status DrawPolygon(IN const Pen* pen, 868586dc233bb88f2920c9f3638f69cef0ccd55dcedDaniel Dunbar IN const Point* points, 869a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT count) 870a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 871a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipDrawPolygonI(nativeGraphics, 8721e23f5f963dd6a3cee43ace77578161798e41e2dDaniel Dunbar pen->nativePen, 873af2e4baa2a75471e820030701225a1ca02c7308fDaniel Dunbar points, 874af2e4baa2a75471e820030701225a1ca02c7308fDaniel Dunbar count)); 875a2094e76fc545b9e17c851c3d2c46b719c5f17ebDaniel Dunbar } 876a2094e76fc545b9e17c851c3d2c46b719c5f17ebDaniel Dunbar 877a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar // float version 878586dc233bb88f2920c9f3638f69cef0ccd55dcedDaniel Dunbar Status DrawPath(IN const Pen* pen, 879586dc233bb88f2920c9f3638f69cef0ccd55dcedDaniel Dunbar IN const GraphicsPath* path) 880586dc233bb88f2920c9f3638f69cef0ccd55dcedDaniel Dunbar { 881a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipDrawPath(nativeGraphics, 882586dc233bb88f2920c9f3638f69cef0ccd55dcedDaniel Dunbar pen ? pen->nativePen : NULL, 883a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar path ? path->nativePath : NULL)); 8844f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar } 8851e23f5f963dd6a3cee43ace77578161798e41e2dDaniel Dunbar 8861e23f5f963dd6a3cee43ace77578161798e41e2dDaniel Dunbar // float version 8871e23f5f963dd6a3cee43ace77578161798e41e2dDaniel Dunbar Status DrawCurve(IN const Pen* pen, 888a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const PointF* points, 889a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT count) 8904f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar { 8914f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar return SetStatus(DllExports::GdipDrawCurve(nativeGraphics, 8924f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar pen->nativePen, points, 8934f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar count)); 894cdd9686b890ebdc10039ae256ef4c9dfb5ebacb7Daniel Dunbar } 895cdd9686b890ebdc10039ae256ef4c9dfb5ebacb7Daniel Dunbar 896cdd9686b890ebdc10039ae256ef4c9dfb5ebacb7Daniel Dunbar Status DrawCurve(IN const Pen* pen, 8974f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar IN const PointF* points, 8984f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar IN INT count, 8994f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar IN REAL tension) 9004f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar { 9014f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar return SetStatus(DllExports::GdipDrawCurve2(nativeGraphics, 9024f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar pen->nativePen, points, 9034f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar count, tension)); 9044f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar } 9054f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar 906a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status DrawCurve(IN const Pen* pen, 90738dd3d54186cf44ea9d37f463c3f2800ab526b82Daniel Dunbar IN const PointF* points, 9084f53b298846d720fbb906373f3f28d92f2121f35Daniel Dunbar IN INT count, 909586dc233bb88f2920c9f3638f69cef0ccd55dcedDaniel Dunbar IN INT offset, 91057b704d8d8f49bcaf856a3e37941d5ac6456eb50Daniel Dunbar IN INT numberOfSegments, 91157b704d8d8f49bcaf856a3e37941d5ac6456eb50Daniel Dunbar IN REAL tension = 0.5f) 9128767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar { 9138767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar return SetStatus(DllExports::GdipDrawCurve3(nativeGraphics, 9148767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar pen->nativePen, points, 9158767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar count, offset, 9168767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar numberOfSegments, tension)); 9178767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar } 9188767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar 9198767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar // integer version 920eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar Status DrawCurve(IN const Pen* pen, 921eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar IN const Point* points, 922eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar IN INT count) 923eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar { 924eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar return SetStatus(DllExports::GdipDrawCurveI(nativeGraphics, 925eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar pen->nativePen, 926eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar points, 927eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar count)); 9288767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar } 929eb840bd0e473ee11622e084a0d6ff276ee7aa5c6Daniel Dunbar 9308767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar Status DrawCurve(IN const Pen* pen, 9318767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN const Point* points, 9328767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN INT count, 9338767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN REAL tension) 9348767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar { 9358767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar return SetStatus(DllExports::GdipDrawCurve2I(nativeGraphics, 9368767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar pen->nativePen, 9378767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar points, 9388767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar count, 9398767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar tension)); 9408767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar } 9418767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar 9428767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar Status DrawCurve(IN const Pen* pen, 9438767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN const Point* points, 9448767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN INT count, 9458767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN INT offset, 9468767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN INT numberOfSegments, 9478767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar IN REAL tension = 0.5f) 9488767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar { 9498767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar return SetStatus(DllExports::GdipDrawCurve3I(nativeGraphics, 9508767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar pen->nativePen, 9518767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar points, 9528767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar count, 9538767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar offset, 9548767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar numberOfSegments, 9558767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar tension)); 9568767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar } 957f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 958f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar // float version 959f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status DrawClosedCurve(IN const Pen* pen, 9604954018954bbc97363eef02d0c83bea19ce9b329Daniel Dunbar IN const PointF* points, 961f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT count) 962f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 963f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar return SetStatus(DllExports::GdipDrawClosedCurve(nativeGraphics, 964f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar pen->nativePen, 965a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar points, count)); 96660ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar } 96760ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar 968a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status DrawClosedCurve(IN const Pen *pen, 96960ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar IN const PointF* points, 97060ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar IN INT count, 97160ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar IN REAL tension) 972f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 973a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipDrawClosedCurve2(nativeGraphics, 974a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar pen->nativePen, 975115a79277edababaf1b26e3654044ae983197679Daniel Dunbar points, count, 976115a79277edababaf1b26e3654044ae983197679Daniel Dunbar tension)); 977532c1ec307b8689e95896a11ce5ae4661fa9e5d3Daniel Dunbar } 978115a79277edababaf1b26e3654044ae983197679Daniel Dunbar 979115a79277edababaf1b26e3654044ae983197679Daniel Dunbar // integer version 980115a79277edababaf1b26e3654044ae983197679Daniel Dunbar Status DrawClosedCurve(IN const Pen* pen, 981115a79277edababaf1b26e3654044ae983197679Daniel Dunbar IN const Point* points, 982f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT count) 983f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 984f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar return SetStatus(DllExports::GdipDrawClosedCurveI(nativeGraphics, 985f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar pen->nativePen, 986d7502d0a662b5c299125aba04245aefce67cbc22Daniel Dunbar points, 987d7502d0a662b5c299125aba04245aefce67cbc22Daniel Dunbar count)); 988cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar } 989d7502d0a662b5c299125aba04245aefce67cbc22Daniel Dunbar 990d7502d0a662b5c299125aba04245aefce67cbc22Daniel Dunbar Status DrawClosedCurve(IN const Pen *pen, 991d7502d0a662b5c299125aba04245aefce67cbc22Daniel Dunbar IN const Point* points, 9924954018954bbc97363eef02d0c83bea19ce9b329Daniel Dunbar IN INT count, 9934954018954bbc97363eef02d0c83bea19ce9b329Daniel Dunbar IN REAL tension) 994f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 995f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar return SetStatus(DllExports::GdipDrawClosedCurve2I(nativeGraphics, 996f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar pen->nativePen, 997f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar points, 9988767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar count, 9998767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar tension)); 10008767cbc475ed96397b6f08617814eeb9cab121bdDaniel Dunbar } 1001f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 1002f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status Clear(IN const Color &color) 1003f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 100447ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar return SetStatus(DllExports::GdipGraphicsClear( 1005f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar nativeGraphics, 1006f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar color.GetValue())); 1007be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar } 1008be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar 1009be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar // float version 1010be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar Status FillRectangle(IN const Brush* brush, 1011be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar IN const RectF& rect) 1012be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar { 1013be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar return FillRectangle(brush, rect.X, rect.Y, rect.Width, rect.Height); 1014be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar } 1015f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 10164954018954bbc97363eef02d0c83bea19ce9b329Daniel Dunbar Status FillRectangle(IN const Brush* brush, 1017be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar IN REAL x, 1018f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN REAL y, 1019f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN REAL width, 1020f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN REAL height) 1021f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 1022f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar return SetStatus(DllExports::GdipFillRectangle(nativeGraphics, 1023f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar brush->nativeBrush, x, y, 1024a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar width, height)); 1025a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 1026f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 1027f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status FillRectangles(IN const Brush* brush, 1028f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN const RectF* rects, 1029f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar IN INT count) 1030f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 103160ccc7677a5416df3a8f8bde79ab35f85cb66e14Daniel Dunbar return SetStatus(DllExports::GdipFillRectangles(nativeGraphics, 1032f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar brush->nativeBrush, 1033f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar rects, count)); 1034f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar } 1035f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar 1036f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar // integer version 1037f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar Status FillRectangle(IN const Brush* brush, 1038441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN const Rect& rect) 1039f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar { 1040f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar return FillRectangle(brush, 1041f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar rect.X, 1042f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar rect.Y, 1043f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar rect.Width, 1044f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar rect.Height); 1045441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar } 1046be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar 1047be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar Status FillRectangle(IN const Brush* brush, 1048be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar IN INT x, 1049be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar IN INT y, 1050be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar IN INT width, 1051a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN INT height) 1052a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar { 1053441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar return SetStatus(DllExports::GdipFillRectangleI(nativeGraphics, 10545c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar brush->nativeBrush, 1055441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar x, 1056441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar y, 10575c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar width, 10585c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar height)); 10595c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar } 1060a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 1061a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status FillRectangles(IN const Brush* brush, 1062b7b61b26868a09dc1471895d0d39ed6c28245207Daniel Dunbar IN const Rect* rects, 1063b7b61b26868a09dc1471895d0d39ed6c28245207Daniel Dunbar IN INT count) 1064871adcf4e41285e3f4c3b62eaa1b2e05b60b92daDaniel Dunbar { 1065441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar return SetStatus(DllExports::GdipFillRectanglesI(nativeGraphics, 10665c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar brush->nativeBrush, 1067441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar rects, 10685c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar count)); 10695c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar } 1070441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar 1071441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar // float version 10725c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar Status FillPolygon(IN const Brush* brush, 1073cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar IN const PointF* points, 1074cd8e4c44dd068956e9181381be3ee2d49a0fac52Daniel Dunbar IN INT count) 10755c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar { 10765c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar return FillPolygon(brush, points, count, FillModeAlternate); 10775c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar } 10785c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar 10795c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar Status FillPolygon(IN const Brush* brush, 10805c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar IN const PointF* points, 10815c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar IN INT count, 1082a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN FillMode fillMode) 10834954018954bbc97363eef02d0c83bea19ce9b329Daniel Dunbar { 10845c3c1d7b494660ba5e8983ee4584622750725ac2Daniel Dunbar return SetStatus(DllExports::GdipFillPolygon(nativeGraphics, 1085f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar brush->nativeBrush, 1086f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar points, count, fillMode)); 1087a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 1088441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar 1089441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar // integer version 1090441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar Status FillPolygon(IN const Brush* brush, 10918f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar IN const Point* points, 1092441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN INT count) 1093be1cc3eec682ca73361edb4109a7969452d3dbebDaniel Dunbar { 1094441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar return FillPolygon(brush, points, count, FillModeAlternate); 1095441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar } 1096441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar 1097441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar Status FillPolygon(IN const Brush* brush, 1098441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN const Point* points, 1099441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN INT count, 1100a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN FillMode fillMode) 1101214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar { 1102214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar return SetStatus(DllExports::GdipFillPolygonI(nativeGraphics, 1103441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar brush->nativeBrush, 1104441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar points, count, 1105441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar fillMode)); 11065796bf4913832bd1165c3ff5e04838d150de1c4cDaniel Dunbar } 1107441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar 1108441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar // float version 1109441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar Status FillEllipse(IN const Brush* brush, 1110441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN const RectF& rect) 1111441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar { 1112441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar return FillEllipse(brush, rect.X, rect.Y, rect.Width, rect.Height); 1113441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar } 1114441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar 1115441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar Status FillEllipse(IN const Brush* brush, 1116441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN REAL x, 1117441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN REAL y, 1118441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN REAL width, 1119441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN REAL height) 1120441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar { 1121441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar return SetStatus(DllExports::GdipFillEllipse(nativeGraphics, 1122441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar brush->nativeBrush, x, y, 1123441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar width, height)); 1124441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar } 1125a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 1126441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar // integer version 1127441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar Status FillEllipse(IN const Brush* brush, 112856c5594515571eab0e02368ed05416b9dac20837Daniel Dunbar IN const Rect& rect) 112956c5594515571eab0e02368ed05416b9dac20837Daniel Dunbar { 113056c5594515571eab0e02368ed05416b9dac20837Daniel Dunbar return FillEllipse(brush, rect.X, rect.Y, rect.Width, rect.Height); 113156c5594515571eab0e02368ed05416b9dac20837Daniel Dunbar } 1132441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar 1133441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar Status FillEllipse(IN const Brush* brush, 1134441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN INT x, 1135441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN INT y, 1136441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN INT width, 1137441d060838a5797691777dfcc992ff836b73dcd1Daniel Dunbar IN INT height) 11385ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar { 113948ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth return SetStatus(DllExports::GdipFillEllipseI(nativeGraphics, 114048ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth brush->nativeBrush, 114148ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth x, 114248ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth y, 114348ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth width, 114448ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth height)); 114548ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth } 114648ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth 114748ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth // float version 11480edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar Status FillPie(IN const Brush* brush, 1149a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const RectF& rect, 11500edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar IN REAL startAngle, 11510edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar IN REAL sweepAngle) 11520edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar { 11530edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar return FillPie(brush, rect.X, rect.Y, rect.Width, rect.Height, 11545ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar startAngle, sweepAngle); 11550edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar } 11560edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar 11575ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar Status FillPie(IN const Brush* brush, 1158cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar IN REAL x, 1159cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar IN REAL y, 11605ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar IN REAL width, 11615ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar IN REAL height, 116248ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth IN REAL startAngle, 116348ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth IN REAL sweepAngle) 116448ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth { 116548ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth return SetStatus(DllExports::GdipFillPie(nativeGraphics, 116648ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth brush->nativeBrush, x, y, 116748ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth width, height, startAngle, 116848ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth sweepAngle)); 116948ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth } 117048ad6094679ca2bf4f3593068e02e7a208c1a73cChandler Carruth 11710edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar // integer version 1172a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status FillPie(IN const Brush* brush, 11730edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar IN const Rect& rect, 11740edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar IN REAL startAngle, 11750edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar IN REAL sweepAngle) 1176950bedd8a9f00caabd2f1fc6812d70e08103f847Mike Stump { 11775ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar return FillPie(brush, rect.X, rect.Y, rect.Width, rect.Height, 11780edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar startAngle, sweepAngle); 11790edefebc10fbc627d55d53936fc66178d1c08da1Daniel Dunbar } 1180c50b00dbd843cd929b5f220d4a8699852249f64cDaniel Dunbar 1181c50b00dbd843cd929b5f220d4a8699852249f64cDaniel Dunbar Status FillPie(IN const Brush* brush, 1182632f50edc08c76ebc643a0d4871bae33a55d7b4eDaniel Dunbar IN INT x, 11835ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar IN INT y, 1184632f50edc08c76ebc643a0d4871bae33a55d7b4eDaniel Dunbar IN INT width, 11855ed34f4c58b6ad4e21038d713c1fae31a6146ff5Daniel Dunbar IN INT height, 1186cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar IN REAL startAngle, 1187cb881672c2c46142ec1bdfa401c9818ae805db0fDaniel Dunbar IN REAL sweepAngle) 1188214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar { 1189a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar return SetStatus(DllExports::GdipFillPieI(nativeGraphics, 1190a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar brush->nativeBrush, 1191214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar x, 1192b03417fdc42ae19d2deb2ee1e5d2c3e9896a2a04Daniel Dunbar y, 1193b03417fdc42ae19d2deb2ee1e5d2c3e9896a2a04Daniel Dunbar width, 1194b03417fdc42ae19d2deb2ee1e5d2c3e9896a2a04Daniel Dunbar height, 1195b03417fdc42ae19d2deb2ee1e5d2c3e9896a2a04Daniel Dunbar startAngle, 11963ca7ee9a40532167f67bde17fff5e678f183f3f2Daniel Dunbar sweepAngle)); 11973ca7ee9a40532167f67bde17fff5e678f183f3f2Daniel Dunbar } 1198b03417fdc42ae19d2deb2ee1e5d2c3e9896a2a04Daniel Dunbar 1199b03417fdc42ae19d2deb2ee1e5d2c3e9896a2a04Daniel Dunbar Status FillPath(IN const Brush* brush, 1200f60c63af0ed33ab890600ee6146e7685901f46dfDaniel Dunbar IN const GraphicsPath* path) 1201214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar { 1202214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar return SetStatus(DllExports::GdipFillPath(nativeGraphics, 1203214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar brush->nativeBrush, 1204214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar path->nativePath)); 1205214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar } 1206a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 120784603bc4ed98caca9b82c1a68e63939927d8cd6dDaniel Dunbar // float version 120884603bc4ed98caca9b82c1a68e63939927d8cd6dDaniel Dunbar Status FillClosedCurve(IN const Brush* brush, 1209214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar IN const PointF* points, 1210d57a7ef9252964bc6c8471451d7bd395b0520cb8Chris Lattner IN INT count) 1211214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar { 1212214399ebd73545dde02b4a45872e7ca9e1d9e742Daniel Dunbar return SetStatus(DllExports::GdipFillClosedCurve(nativeGraphics, 1213cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar brush->nativeBrush, 12148f25c79e59d88df41c5a3cabba1c58035d384a6eDaniel Dunbar points, count)); 1215cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar 1216dd98e2cad165ca73c769e4f105a4e47c2216387aDaniel Dunbar } 12173a47c4e0a3e8d13ee4fb06cc3a98f9cfa9982400Chris Lattner 12183a47c4e0a3e8d13ee4fb06cc3a98f9cfa9982400Chris Lattner Status FillClosedCurve(IN const Brush* brush, 12193a47c4e0a3e8d13ee4fb06cc3a98f9cfa9982400Chris Lattner IN const PointF* points, 12203a47c4e0a3e8d13ee4fb06cc3a98f9cfa9982400Chris Lattner IN INT count, 1221cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar IN FillMode fillMode, 1222e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan IN REAL tension = 0.5f) 1223e7925a075f110ab21afeae084670a155dea568e3Edward O'Callaghan { 1224cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar return SetStatus(DllExports::GdipFillClosedCurve2(nativeGraphics, 1225cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar brush->nativeBrush, 1226cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar points, count, 1227cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar tension, fillMode)); 1228f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar } 1229f7b8eec37c8c8012fa525c71fb29a58c9f29beefDaniel Dunbar 1230cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar // integer version 1231cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar Status FillClosedCurve(IN const Brush* brush, 12326b3454a219cee5ef36c4668961f93a5c32deab61Eli Friedman IN const Point* points, 12336b3454a219cee5ef36c4668961f93a5c32deab61Eli Friedman IN INT count) 1234cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar { 1235cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar return SetStatus(DllExports::GdipFillClosedCurveI(nativeGraphics, 1236cb8ab23f7c800b041aeb6fc38c341d1aa0da86bfDaniel Dunbar brush->nativeBrush, 1237dd98e2cad165ca73c769e4f105a4e47c2216387aDaniel Dunbar points, 1238af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar count)); 1239af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar } 1240a6046bec7fc835186dde134fb81aa1b7d45cd9f0Daniel Dunbar 1241a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar Status FillClosedCurve(IN const Brush* brush, 1242a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const Point* points, 12435915fbf310e171c4cd3c2af05e9de360c0fa988aDaniel Dunbar IN INT count, 1244af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar IN FillMode fillMode, 1245af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar IN REAL tension = 0.5f) 1246af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar { 12470f99d2e57d8e3cf2508e7f9f868d41eccdc229c9Daniel Dunbar return SetStatus(DllExports::GdipFillClosedCurve2I(nativeGraphics, 1248af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar brush->nativeBrush, 12496256d3654533547a7996170647c21a859cb441e1Daniel Dunbar points, count, 12506256d3654533547a7996170647c21a859cb441e1Daniel Dunbar tension, fillMode)); 1251af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar } 12526256d3654533547a7996170647c21a859cb441e1Daniel Dunbar 1253af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar // float version 1254af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar Status FillRegion(IN const Brush* brush, 1255af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar IN const Region* region) 12560f99d2e57d8e3cf2508e7f9f868d41eccdc229c9Daniel Dunbar { 12576256d3654533547a7996170647c21a859cb441e1Daniel Dunbar return SetStatus(DllExports::GdipFillRegion(nativeGraphics, 12586256d3654533547a7996170647c21a859cb441e1Daniel Dunbar brush->nativeBrush, 1259af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar region->nativeRegion)); 12606256d3654533547a7996170647c21a859cb441e1Daniel Dunbar } 1261af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar 126264952508c2b0c8bffb45c8b410f0af3d2457f59bDaniel Dunbar // DrawString and MeasureString 126364952508c2b0c8bffb45c8b410f0af3d2457f59bDaniel Dunbar Status 12646c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5Daniel Dunbar DrawString( 12656c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5Daniel Dunbar IN const WCHAR *string, 1266fec26bd1f4681db8c253fb86529e52bcad28a3ffDaniel Dunbar IN INT length, 1267fec26bd1f4681db8c253fb86529e52bcad28a3ffDaniel Dunbar IN const Font *font, 1268a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const RectF &layoutRect, 1269a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar IN const StringFormat *stringFormat, 1270a6046bec7fc835186dde134fb81aa1b7d45cd9f0Daniel Dunbar IN const Brush *brush 1271a6046bec7fc835186dde134fb81aa1b7d45cd9f0Daniel Dunbar ) 1272af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar { 12736256d3654533547a7996170647c21a859cb441e1Daniel Dunbar return SetStatus(DllExports::GdipDrawString( 1274af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar nativeGraphics, 1275af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar string, 1276af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51Daniel Dunbar length, 1277d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar font ? font->nativeFont : NULL, 1278a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar &layoutRect, 1279a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar stringFormat ? stringFormat->nativeFormat : NULL, 1280d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar brush ? brush->nativeBrush : NULL 1281a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar )); 1282a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar } 1283a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar 1284d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar Status 1285d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar DrawString( 1286d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const WCHAR *string, 1287d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar INT length, 1288d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const Font *font, 1289a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar const PointF &origin, 1290d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const Brush *brush 1291d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar ) 1292d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar { 1293d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar RectF rect(origin.X, origin.Y, 0.0f, 0.0f); 1294d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar 1295d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar return SetStatus(DllExports::GdipDrawString( 1296d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar nativeGraphics, 1297d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar string, 1298a82318332c9e9b61d3d17371e675ca2859877ee5Daniel Dunbar length, 1299d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar font ? font->nativeFont : NULL, 1300d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar &rect, 1301d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar NULL, 1302d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar brush ? brush->nativeBrush : NULL 1303d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar )); 1304d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar } 1305d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar 1306d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar Status 1307d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar DrawString( 1308d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const WCHAR *string, 1309d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar INT length, 1310d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const Font *font, 1311d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const PointF &origin, 1312d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const StringFormat *stringFormat, 1313d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar const Brush *brush 1314d73fe9b70c5f6738d004744562287a62831f39bfDaniel Dunbar ) 1315 { 1316 RectF rect(origin.X, origin.Y, 0.0f, 0.0f); 1317 1318 return SetStatus(DllExports::GdipDrawString( 1319 nativeGraphics, 1320 string, 1321 length, 1322 font ? font->nativeFont : NULL, 1323 &rect, 1324 stringFormat ? stringFormat->nativeFormat : NULL, 1325 brush ? brush->nativeBrush : NULL 1326 )); 1327 } 1328 1329 Status 1330 MeasureString( 1331 IN const WCHAR *string, 1332 IN INT length, 1333 IN const Font *font, 1334 IN const RectF &layoutRect, 1335 IN const StringFormat *stringFormat, 1336 OUT RectF *boundingBox, 1337 OUT INT *codepointsFitted = 0, 1338 OUT INT *linesFilled = 0 1339 ) const 1340 { 1341 return SetStatus(DllExports::GdipMeasureString( 1342 nativeGraphics, 1343 string, 1344 length, 1345 font ? font->nativeFont : NULL, 1346 &layoutRect, 1347 stringFormat ? stringFormat->nativeFormat : NULL, 1348 boundingBox, 1349 codepointsFitted, 1350 linesFilled 1351 )); 1352 } 1353 1354 Status 1355 MeasureString( 1356 IN const WCHAR *string, 1357 IN INT length, 1358 IN const Font *font, 1359 IN const SizeF &layoutRectSize, 1360 IN const StringFormat *stringFormat, 1361 OUT SizeF *size, 1362 OUT INT *codepointsFitted = 0, 1363 OUT INT *linesFilled = 0 1364 ) const 1365 { 1366 RectF layoutRect(0, 0, layoutRectSize.Width, layoutRectSize.Height); 1367 RectF boundingBox; 1368 Status status; 1369 1370 if (size == NULL) 1371 { 1372 return SetStatus(InvalidParameter); 1373 } 1374 1375 status = SetStatus(DllExports::GdipMeasureString( 1376 nativeGraphics, 1377 string, 1378 length, 1379 font ? font->nativeFont : NULL, 1380 &layoutRect, 1381 stringFormat ? stringFormat->nativeFormat : NULL, 1382 size ? &boundingBox : NULL, 1383 codepointsFitted, 1384 linesFilled 1385 )); 1386 1387 if (size && status == Ok) 1388 { 1389 size->Width = boundingBox.Width; 1390 size->Height = boundingBox.Height; 1391 } 1392 1393 return status; 1394 } 1395 1396 Status 1397 MeasureString( 1398 IN const WCHAR *string, 1399 IN INT length, 1400 IN const Font *font, 1401 IN const PointF &origin, 1402 IN const StringFormat *stringFormat, 1403 OUT RectF *boundingBox 1404 ) const 1405 { 1406 RectF rect(origin.X, origin.Y, 0.0f, 0.0f); 1407 1408 return SetStatus(DllExports::GdipMeasureString( 1409 nativeGraphics, 1410 string, 1411 length, 1412 font ? font->nativeFont : NULL, 1413 &rect, 1414 stringFormat ? stringFormat->nativeFormat : NULL, 1415 boundingBox, 1416 NULL, 1417 NULL 1418 )); 1419 } 1420 1421 1422 Status 1423 MeasureString( 1424 IN const WCHAR *string, 1425 IN INT length, 1426 IN const Font *font, 1427 IN const RectF &layoutRect, 1428 OUT RectF *boundingBox 1429 ) const 1430 { 1431 return SetStatus(DllExports::GdipMeasureString( 1432 nativeGraphics, 1433 string, 1434 length, 1435 font ? font->nativeFont : NULL, 1436 &layoutRect, 1437 NULL, 1438 boundingBox, 1439 NULL, 1440 NULL 1441 )); 1442 } 1443 1444 Status 1445 MeasureString( 1446 IN const WCHAR *string, 1447 IN INT length, 1448 IN const Font *font, 1449 IN const PointF &origin, 1450 OUT RectF *boundingBox 1451 ) const 1452 { 1453 RectF rect(origin.X, origin.Y, 0.0f, 0.0f); 1454 1455 return SetStatus(DllExports::GdipMeasureString( 1456 nativeGraphics, 1457 string, 1458 length, 1459 font ? font->nativeFont : NULL, 1460 &rect, 1461 NULL, 1462 boundingBox, 1463 NULL, 1464 NULL 1465 )); 1466 } 1467 1468 1469#ifdef DCR_USE_NEW_174340 1470 Status 1471 MeasureCharacterRanges( 1472 IN const WCHAR *string, 1473 IN INT length, 1474 IN const Font *font, 1475 IN const RectF &layoutRect, 1476 IN const StringFormat *stringFormat, 1477 IN INT regionCount, 1478 OUT Region *regions 1479 ) const 1480 { 1481 if (!regions || regionCount <= 0) 1482 { 1483 return InvalidParameter; 1484 } 1485 1486 GpRegion **nativeRegions = new GpRegion* [regionCount]; 1487 1488 if (!nativeRegions) 1489 { 1490 return OutOfMemory; 1491 } 1492 1493 for (INT i = 0; i < regionCount; i++) 1494 { 1495 nativeRegions[i] = regions[i].nativeRegion; 1496 } 1497 1498 Status status = SetStatus(DllExports::GdipMeasureCharacterRanges( 1499 nativeGraphics, 1500 string, 1501 length, 1502 font ? font->nativeFont : NULL, 1503 layoutRect, 1504 stringFormat ? stringFormat->nativeFormat : NULL, 1505 regionCount, 1506 nativeRegions 1507 )); 1508 1509 delete [] nativeRegions; 1510 1511 return status; 1512 } 1513#endif 1514 1515 1516#ifndef DCR_USE_NEW_174340 1517 Status 1518 MeasureStringRegion( 1519 IN const WCHAR *string, 1520 IN INT length, 1521 IN const Font *font, 1522 IN const RectF &layoutRect, 1523 IN const StringFormat *stringFormat, 1524 IN INT firstCharacterIndex, 1525 IN INT characterCount, 1526 OUT Region *region 1527 ) const 1528 { 1529 if (region == NULL) 1530 { 1531 return SetStatus(InvalidParameter); 1532 } 1533 1534 return (SetStatus(DllExports::GdipMeasureStringRegion( 1535 nativeGraphics, 1536 string, 1537 length, 1538 font ? font->nativeFont : NULL, 1539 layoutRect, 1540 stringFormat ? stringFormat->nativeFormat : NULL, 1541 firstCharacterIndex, 1542 characterCount, 1543 region->nativeRegion))); 1544 } 1545#endif 1546 1547 Status DrawDriverString( 1548 IN const UINT16 *text, 1549 IN INT length, 1550 IN const Font *font, 1551 IN const Brush *brush, 1552 IN const PointF *positions, 1553 IN INT flags, 1554 IN const Matrix *matrix 1555 ) 1556 { 1557 return SetStatus(DllExports::GdipDrawDriverString( 1558 nativeGraphics, 1559 text, 1560 length, 1561 font ? font->nativeFont : NULL, 1562 brush ? brush->nativeBrush : NULL, 1563 positions, 1564 flags, 1565 matrix ? matrix->nativeMatrix : NULL 1566 )); 1567 } 1568 1569 Status MeasureDriverString( 1570 IN const UINT16 *text, 1571 IN INT length, 1572 IN const Font *font, 1573 IN const PointF *positions, 1574 IN INT flags, 1575 IN const Matrix *matrix, 1576 OUT RectF *boundingBox 1577 ) const 1578 { 1579 return SetStatus(DllExports::GdipMeasureDriverString( 1580 nativeGraphics, 1581 text, 1582 length, 1583 font ? font->nativeFont : NULL, 1584 positions, 1585 flags, 1586 matrix ? matrix->nativeMatrix : NULL, 1587 boundingBox 1588 )); 1589 } 1590 1591#ifndef DCR_USE_NEW_168772 1592 Status DriverStringPointToCodepoint( 1593 IN const UINT16 *text, 1594 IN INT length, 1595 IN const Font *font, 1596 IN const PointF *positions, 1597 IN INT flags, 1598 IN const Matrix *matrix, 1599 IN const PointF &hit, 1600 OUT INT *index, 1601 OUT BOOL *rightEdge, 1602 OUT REAL *distance 1603 ) 1604 { 1605 return SetStatus(DllExports::GdipDriverStringPointToCodepoint( 1606 nativeGraphics, 1607 text, 1608 length, 1609 font ? font->nativeFont : NULL, 1610 positions, 1611 flags, 1612 matrix ? matrix->nativeMatrix : NULL, 1613 &hit, 1614 index, 1615 rightEdge, 1616 distance 1617 )); 1618 } 1619#endif 1620 1621 // Draw a cached bitmap on this graphics destination offset by 1622 // x, y. Note this will fail with WrongState if the CachedBitmap 1623 // native format differs from this Graphics. 1624 1625 Status DrawCachedBitmap(IN CachedBitmap *cb, 1626 IN INT x, 1627 IN INT y) 1628 { 1629 return SetStatus(DllExports::GdipDrawCachedBitmap( 1630 nativeGraphics, 1631 cb->nativeCachedBitmap, 1632 x, y 1633 )); 1634 } 1635 1636 /** 1637 * Draw images (both bitmap and vector) 1638 */ 1639 // float version 1640 Status DrawImage(IN Image* image, 1641 IN const PointF& point) 1642 { 1643 return DrawImage(image, point.X, point.Y); 1644 } 1645 1646 Status DrawImage(IN Image* image, 1647 IN REAL x, 1648 IN REAL y) 1649 { 1650 return SetStatus(DllExports::GdipDrawImage(nativeGraphics, 1651 image ? image->nativeImage 1652 : NULL, 1653 x, 1654 y)); 1655 } 1656 1657 Status DrawImage(IN Image* image, 1658 IN const RectF& rect) 1659 { 1660 return DrawImage(image, rect.X, rect.Y, rect.Width, rect.Height); 1661 } 1662 1663 Status DrawImage(IN Image* image, 1664 IN REAL x, 1665 IN REAL y, 1666 IN REAL width, 1667 IN REAL height) 1668 { 1669 return SetStatus(DllExports::GdipDrawImageRect(nativeGraphics, 1670 image ? image->nativeImage 1671 : NULL, 1672 x, 1673 y, 1674 width, 1675 height)); 1676 } 1677 1678 // integer version 1679 Status DrawImage(IN Image* image, 1680 IN const Point& point) 1681 { 1682 return DrawImage(image, point.X, point.Y); 1683 } 1684 1685 Status DrawImage(IN Image* image, 1686 IN INT x, 1687 IN INT y) 1688 { 1689 return SetStatus(DllExports::GdipDrawImageI(nativeGraphics, 1690 image ? image->nativeImage 1691 : NULL, 1692 x, 1693 y)); 1694 } 1695 1696 Status DrawImage(IN Image* image, 1697 IN const Rect& rect) 1698 { 1699 return DrawImage(image, 1700 rect.X, 1701 rect.Y, 1702 rect.Width, 1703 rect.Height); 1704 } 1705 1706 Status DrawImage(IN Image* image, 1707 IN INT x, 1708 IN INT y, 1709 IN INT width, 1710 IN INT height) { 1711 return SetStatus(DllExports::GdipDrawImageRectI(nativeGraphics, 1712 image ? image->nativeImage 1713 : NULL, 1714 x, 1715 y, 1716 width, 1717 height)); 1718 } 1719 1720 /** 1721 * Affine or perspective blt 1722 * destPoints.length = 3: rect => parallelogram 1723 * destPoints[0] <=> top-left corner of the source rectangle 1724 * destPoints[1] <=> top-right corner 1725 * destPoints[2] <=> bottom-left corner 1726 * destPoints.length = 4: rect => quad 1727 * destPoints[3] <=> bottom-right corner 1728 * 1729 * @notes Perspective blt only works for bitmap images. 1730 */ 1731 Status DrawImage(IN Image* image, 1732 IN const PointF* destPoints, 1733 IN INT count) 1734 { 1735 if (count != 3 && count != 4) 1736 return SetStatus(InvalidParameter); 1737 1738 return SetStatus(DllExports::GdipDrawImagePoints(nativeGraphics, 1739 image ? image->nativeImage 1740 : NULL, 1741 destPoints, count)); 1742 } 1743 1744 Status DrawImage(IN Image* image, 1745 IN const Point* destPoints, 1746 IN INT count) 1747 { 1748 if (count != 3 && count != 4) 1749 return SetStatus(InvalidParameter); 1750 1751 return SetStatus(DllExports::GdipDrawImagePointsI(nativeGraphics, 1752 image ? image->nativeImage 1753 : NULL, 1754 destPoints, 1755 count)); 1756 } 1757 1758 /** 1759 * We need another set of methods similar to the ones above 1760 * that take an additional Rect parameter to specify the 1761 * portion of the source image to be drawn. 1762 */ 1763 // float version 1764 Status DrawImage(IN Image* image, 1765 IN REAL x, 1766 IN REAL y, 1767 IN REAL srcx, 1768 IN REAL srcy, 1769 IN REAL srcwidth, 1770 IN REAL srcheight, 1771 IN Unit srcUnit) 1772 { 1773 return SetStatus(DllExports::GdipDrawImagePointRect(nativeGraphics, 1774 image ? image->nativeImage 1775 : NULL, 1776 x, y, 1777 srcx, srcy, 1778 srcwidth, srcheight, srcUnit)); 1779 } 1780 1781 Status DrawImage(IN Image* image, 1782 IN const RectF& destRect, 1783 IN REAL srcx, 1784 IN REAL srcy, 1785 IN REAL srcwidth, 1786 IN REAL srcheight, 1787 IN Unit srcUnit, 1788 IN const ImageAttributes* imageAttributes = NULL, 1789 IN DrawImageAbort callback = NULL, 1790 IN VOID* callbackData = NULL) 1791 { 1792 return SetStatus(DllExports::GdipDrawImageRectRect(nativeGraphics, 1793 image ? image->nativeImage 1794 : NULL, 1795 destRect.X, 1796 destRect.Y, 1797 destRect.Width, 1798 destRect.Height, 1799 srcx, srcy, 1800 srcwidth, srcheight, 1801 srcUnit, 1802 imageAttributes 1803 ? imageAttributes->nativeImageAttr 1804 : NULL, 1805 callback, 1806 callbackData)); 1807 } 1808 1809 Status DrawImage(IN Image* image, 1810 IN const PointF* destPoints, 1811 IN INT count, 1812 IN REAL srcx, 1813 IN REAL srcy, 1814 IN REAL srcwidth, 1815 IN REAL srcheight, 1816 IN Unit srcUnit, 1817 IN const ImageAttributes* imageAttributes = NULL, 1818 IN DrawImageAbort callback = NULL, 1819 IN VOID* callbackData = NULL) 1820 { 1821 return SetStatus(DllExports::GdipDrawImagePointsRect(nativeGraphics, 1822 image ? image->nativeImage 1823 : NULL, 1824 destPoints, count, 1825 srcx, srcy, 1826 srcwidth, 1827 srcheight, 1828 srcUnit, 1829 imageAttributes 1830 ? imageAttributes->nativeImageAttr 1831 : NULL, 1832 callback, 1833 callbackData)); 1834 } 1835 1836 // integer version 1837 Status DrawImage(IN Image* image, 1838 IN INT x, 1839 IN INT y, 1840 IN INT srcx, 1841 IN INT srcy, 1842 IN INT srcwidth, 1843 IN INT srcheight, 1844 IN Unit srcUnit) 1845 { 1846 return SetStatus(DllExports::GdipDrawImagePointRectI(nativeGraphics, 1847 image ? image->nativeImage 1848 : NULL, 1849 x, 1850 y, 1851 srcx, 1852 srcy, 1853 srcwidth, 1854 srcheight, 1855 srcUnit)); 1856 } 1857 1858 Status DrawImage(IN Image* image, 1859 IN const Rect& destRect, 1860 IN INT srcx, 1861 IN INT srcy, 1862 IN INT srcwidth, 1863 IN INT srcheight, 1864 IN Unit srcUnit, 1865 IN const ImageAttributes* imageAttributes = NULL, 1866 IN DrawImageAbort callback = NULL, 1867 IN VOID* callbackData = NULL) 1868 { 1869 return SetStatus(DllExports::GdipDrawImageRectRectI(nativeGraphics, 1870 image ? image->nativeImage 1871 : NULL, 1872 destRect.X, 1873 destRect.Y, 1874 destRect.Width, 1875 destRect.Height, 1876 srcx, 1877 srcy, 1878 srcwidth, 1879 srcheight, 1880 srcUnit, 1881 imageAttributes 1882 ? imageAttributes->nativeImageAttr 1883 : NULL, 1884 callback, 1885 callbackData)); 1886 } 1887 1888 Status DrawImage(IN Image* image, 1889 IN const Point* destPoints, 1890 IN INT count, 1891 IN INT srcx, 1892 IN INT srcy, 1893 IN INT srcwidth, 1894 IN INT srcheight, 1895 IN Unit srcUnit, 1896 IN const ImageAttributes* imageAttributes = NULL, 1897 IN DrawImageAbort callback = NULL, 1898 IN VOID* callbackData = NULL) 1899 { 1900 return SetStatus(DllExports::GdipDrawImagePointsRectI(nativeGraphics, 1901 image ? image->nativeImage 1902 : NULL, 1903 destPoints, 1904 count, 1905 srcx, 1906 srcy, 1907 srcwidth, 1908 srcheight, 1909 srcUnit, 1910 imageAttributes 1911 ? imageAttributes->nativeImageAttr 1912 : NULL, 1913 callback, 1914 callbackData)); 1915 } 1916 1917 // The following methods are for playing an EMF+ to a graphics 1918 // via the enumeration interface. Each record of the EMF+ is 1919 // sent to the callback (along with the callbackData). Then 1920 // the callback can invoke the Metafile::PlayRecord method 1921 // to play the particular record. 1922 1923 Status 1924 EnumerateMetafile( 1925 IN const Metafile * metafile, 1926 IN const PointF & destPoint, 1927 IN EnumerateMetafileProc callback, 1928 IN VOID * callbackData = NULL, 1929 IN const ImageAttributes * imageAttributes = NULL 1930 ) 1931 { 1932 return SetStatus(DllExports::GdipEnumerateMetafileDestPoint( 1933 nativeGraphics, 1934 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 1935 destPoint, 1936 callback, 1937 callbackData, 1938 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 1939 } 1940 1941 Status 1942 EnumerateMetafile( 1943 IN const Metafile * metafile, 1944 IN const Point & destPoint, 1945 IN EnumerateMetafileProc callback, 1946 IN VOID * callbackData = NULL, 1947 IN const ImageAttributes * imageAttributes = NULL 1948 ) 1949 { 1950 return SetStatus(DllExports::GdipEnumerateMetafileDestPointI( 1951 nativeGraphics, 1952 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 1953 destPoint, 1954 callback, 1955 callbackData, 1956 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 1957 } 1958 1959 Status 1960 EnumerateMetafile( 1961 IN const Metafile * metafile, 1962 IN const RectF & destRect, 1963 IN EnumerateMetafileProc callback, 1964 IN VOID * callbackData = NULL, 1965 IN const ImageAttributes * imageAttributes = NULL 1966 ) 1967 { 1968 return SetStatus(DllExports::GdipEnumerateMetafileDestRect( 1969 nativeGraphics, 1970 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 1971 destRect, 1972 callback, 1973 callbackData, 1974 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 1975 } 1976 1977 Status 1978 EnumerateMetafile( 1979 IN const Metafile * metafile, 1980 IN const Rect & destRect, 1981 IN EnumerateMetafileProc callback, 1982 IN VOID * callbackData = NULL, 1983 IN const ImageAttributes * imageAttributes = NULL 1984 ) 1985 { 1986 return SetStatus(DllExports::GdipEnumerateMetafileDestRectI( 1987 nativeGraphics, 1988 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 1989 destRect, 1990 callback, 1991 callbackData, 1992 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 1993 } 1994 1995 Status 1996 EnumerateMetafile( 1997 IN const Metafile * metafile, 1998 IN const PointF * destPoints, 1999 IN INT count, 2000 IN EnumerateMetafileProc callback, 2001 IN VOID * callbackData = NULL, 2002 IN const ImageAttributes * imageAttributes = NULL 2003 ) 2004 { 2005 return SetStatus(DllExports::GdipEnumerateMetafileDestPoints( 2006 nativeGraphics, 2007 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2008 destPoints, 2009 count, 2010 callback, 2011 callbackData, 2012 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2013 } 2014 2015 Status 2016 EnumerateMetafile( 2017 IN const Metafile * metafile, 2018 IN const Point * destPoints, 2019 IN INT count, 2020 IN EnumerateMetafileProc callback, 2021 IN VOID * callbackData = NULL, 2022 IN const ImageAttributes * imageAttributes = NULL 2023 ) 2024 { 2025 return SetStatus(DllExports::GdipEnumerateMetafileDestPointsI( 2026 nativeGraphics, 2027 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2028 destPoints, 2029 count, 2030 callback, 2031 callbackData, 2032 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2033 } 2034 2035 Status 2036 EnumerateMetafile( 2037 IN const Metafile * metafile, 2038 IN const PointF & destPoint, 2039 IN const RectF & srcRect, 2040 IN Unit srcUnit, 2041 IN EnumerateMetafileProc callback, 2042 IN VOID * callbackData = NULL, 2043 IN const ImageAttributes * imageAttributes = NULL 2044 ) 2045 { 2046 return SetStatus(DllExports::GdipEnumerateMetafileSrcRectDestPoint( 2047 nativeGraphics, 2048 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2049 destPoint, 2050 srcRect, 2051 srcUnit, 2052 callback, 2053 callbackData, 2054 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2055 } 2056 2057 Status 2058 EnumerateMetafile( 2059 IN const Metafile * metafile, 2060 IN const Point & destPoint, 2061 IN const Rect & srcRect, 2062 IN Unit srcUnit, 2063 IN EnumerateMetafileProc callback, 2064 IN VOID * callbackData = NULL, 2065 IN const ImageAttributes * imageAttributes = NULL 2066 ) 2067 { 2068 return SetStatus(DllExports::GdipEnumerateMetafileSrcRectDestPointI( 2069 nativeGraphics, 2070 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2071 destPoint, 2072 srcRect, 2073 srcUnit, 2074 callback, 2075 callbackData, 2076 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2077 } 2078 2079 Status 2080 EnumerateMetafile( 2081 IN const Metafile * metafile, 2082 IN const RectF & destRect, 2083 IN const RectF & srcRect, 2084 IN Unit srcUnit, 2085 IN EnumerateMetafileProc callback, 2086 IN VOID * callbackData = NULL, 2087 IN const ImageAttributes * imageAttributes = NULL 2088 ) 2089 { 2090 return SetStatus(DllExports::GdipEnumerateMetafileSrcRectDestRect( 2091 nativeGraphics, 2092 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2093 destRect, 2094 srcRect, 2095 srcUnit, 2096 callback, 2097 callbackData, 2098 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2099 } 2100 2101 Status 2102 EnumerateMetafile( 2103 IN const Metafile * metafile, 2104 IN const Rect & destRect, 2105 IN const Rect & srcRect, 2106 IN Unit srcUnit, 2107 IN EnumerateMetafileProc callback, 2108 IN VOID * callbackData = NULL, 2109 IN const ImageAttributes * imageAttributes = NULL 2110 ) 2111 { 2112 return SetStatus(DllExports::GdipEnumerateMetafileSrcRectDestRectI( 2113 nativeGraphics, 2114 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2115 destRect, 2116 srcRect, 2117 srcUnit, 2118 callback, 2119 callbackData, 2120 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2121 } 2122 2123 Status 2124 EnumerateMetafile( 2125 IN const Metafile * metafile, 2126 IN const PointF * destPoints, 2127 IN INT count, 2128 IN const RectF & srcRect, 2129 IN Unit srcUnit, 2130 IN EnumerateMetafileProc callback, 2131 IN VOID * callbackData = NULL, 2132 IN const ImageAttributes * imageAttributes = NULL 2133 ) 2134 { 2135 return SetStatus(DllExports::GdipEnumerateMetafileSrcRectDestPoints( 2136 nativeGraphics, 2137 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2138 destPoints, 2139 count, 2140 srcRect, 2141 srcUnit, 2142 callback, 2143 callbackData, 2144 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2145 } 2146 2147 Status 2148 EnumerateMetafile( 2149 IN const Metafile * metafile, 2150 IN const Point * destPoints, 2151 IN INT count, 2152 IN const Rect & srcRect, 2153 IN Unit srcUnit, 2154 IN EnumerateMetafileProc callback, 2155 IN VOID * callbackData = NULL, 2156 IN const ImageAttributes * imageAttributes = NULL 2157 ) 2158 { 2159 return SetStatus(DllExports::GdipEnumerateMetafileSrcRectDestPointsI( 2160 nativeGraphics, 2161 (const GpMetafile *)(metafile ? metafile->nativeImage:NULL), 2162 destPoints, 2163 count, 2164 srcRect, 2165 srcUnit, 2166 callback, 2167 callbackData, 2168 imageAttributes ? imageAttributes->nativeImageAttr : NULL)); 2169 } 2170 2171 /** 2172 * Clipping region operations 2173 * 2174 * @notes Simply incredible redundancy here. 2175 */ 2176 Status SetClip(IN const Graphics* g, 2177 IN CombineMode combineMode = CombineModeReplace) 2178 { 2179 return SetStatus(DllExports::GdipSetClipGraphics(nativeGraphics, 2180 g->nativeGraphics, 2181 combineMode)); 2182 } 2183 2184 Status SetClip(IN const RectF& rect, 2185 IN CombineMode combineMode = CombineModeReplace) 2186 { 2187 return SetStatus(DllExports::GdipSetClipRect(nativeGraphics, 2188 rect.X, rect.Y, 2189 rect.Width, rect.Height, 2190 combineMode)); 2191 } 2192 2193 Status SetClip(IN const Rect& rect, 2194 IN CombineMode combineMode = CombineModeReplace) 2195 { 2196 return SetStatus(DllExports::GdipSetClipRectI(nativeGraphics, 2197 rect.X, rect.Y, 2198 rect.Width, rect.Height, 2199 combineMode)); 2200 } 2201 2202 Status SetClip(IN const GraphicsPath* path, 2203 IN CombineMode combineMode = CombineModeReplace) 2204 { 2205 return SetStatus(DllExports::GdipSetClipPath(nativeGraphics, 2206 path->nativePath, 2207 combineMode)); 2208 } 2209 2210 Status SetClip(IN const Region* region, 2211 IN CombineMode combineMode = CombineModeReplace) 2212 { 2213 return SetStatus(DllExports::GdipSetClipRegion(nativeGraphics, 2214 region->nativeRegion, 2215 combineMode)); 2216 } 2217 2218 // This is different than the other SetClip methods because it assumes 2219 // that the HRGN is already in device units, so it doesn't transform 2220 // the coordinates in the HRGN. 2221 Status SetClip(IN HRGN hRgn, 2222 IN CombineMode combineMode = CombineModeReplace) 2223 { 2224 return SetStatus(DllExports::GdipSetClipHrgn(nativeGraphics, hRgn, 2225 combineMode)); 2226 } 2227 2228 Status IntersectClip(IN const RectF& rect) 2229 { 2230 return SetStatus(DllExports::GdipSetClipRect(nativeGraphics, 2231 rect.X, rect.Y, 2232 rect.Width, rect.Height, 2233 CombineModeIntersect)); 2234 } 2235 2236 Status IntersectClip(IN const Rect& rect) 2237 { 2238 return SetStatus(DllExports::GdipSetClipRectI(nativeGraphics, 2239 rect.X, rect.Y, 2240 rect.Width, rect.Height, 2241 CombineModeIntersect)); 2242 } 2243 2244 Status IntersectClip(IN const Region* region) 2245 { 2246 return SetStatus(DllExports::GdipSetClipRegion(nativeGraphics, 2247 region->nativeRegion, 2248 CombineModeIntersect)); 2249 } 2250 2251 Status ExcludeClip(IN const RectF& rect) 2252 { 2253 return SetStatus(DllExports::GdipSetClipRect(nativeGraphics, 2254 rect.X, rect.Y, 2255 rect.Width, rect.Height, 2256 CombineModeExclude)); 2257 } 2258 2259 Status ExcludeClip(IN const Rect& rect) 2260 { 2261 return SetStatus(DllExports::GdipSetClipRectI(nativeGraphics, 2262 rect.X, rect.Y, 2263 rect.Width, rect.Height, 2264 CombineModeExclude)); 2265 } 2266 2267 Status ExcludeClip(IN const Region* region) 2268 { 2269 return SetStatus(DllExports::GdipSetClipRegion(nativeGraphics, 2270 region->nativeRegion, 2271 CombineModeExclude)); 2272 } 2273 2274 Status ResetClip() 2275 { 2276 return SetStatus(DllExports::GdipResetClip(nativeGraphics)); 2277 } 2278 2279 Status TranslateClip(IN REAL dx, 2280 IN REAL dy) 2281 { 2282 return SetStatus(DllExports::GdipTranslateClip(nativeGraphics, dx, dy)); 2283 } 2284 2285 Status TranslateClip(IN INT dx, 2286 IN INT dy) 2287 { 2288 return SetStatus(DllExports::GdipTranslateClipI(nativeGraphics, 2289 dx, dy)); 2290 } 2291 2292 /** 2293 * GetClip region from graphics context 2294 */ 2295 Status GetClip(OUT Region* region) const 2296 { 2297 return SetStatus(DllExports::GdipGetClip(nativeGraphics, 2298 region->nativeRegion)); 2299 } 2300 2301 /** 2302 * Hit testing operations 2303 */ 2304 Status GetClipBounds(OUT RectF* rect) const 2305 { 2306 return SetStatus(DllExports::GdipGetClipBounds(nativeGraphics, rect)); 2307 } 2308 2309 Status GetClipBounds(OUT Rect* rect) const 2310 { 2311 return SetStatus(DllExports::GdipGetClipBoundsI(nativeGraphics, rect)); 2312 } 2313 2314 BOOL IsClipEmpty() const 2315 { 2316 BOOL booln = FALSE; 2317 2318 SetStatus(DllExports::GdipIsClipEmpty(nativeGraphics, &booln)); 2319 2320 return booln; 2321 } 2322 2323 Status GetVisibleClipBounds(OUT RectF *rect) const 2324 { 2325 2326 return SetStatus(DllExports::GdipGetVisibleClipBounds(nativeGraphics, 2327 rect)); 2328 } 2329 2330 Status GetVisibleClipBounds(OUT Rect *rect) const 2331 { 2332 return SetStatus(DllExports::GdipGetVisibleClipBoundsI(nativeGraphics, 2333 rect)); 2334 } 2335 2336 BOOL IsVisibleClipEmpty() const 2337 { 2338 BOOL booln = FALSE; 2339 2340 SetStatus(DllExports::GdipIsVisibleClipEmpty(nativeGraphics, &booln)); 2341 2342 return booln; 2343 } 2344 2345 BOOL IsVisible(IN INT x, 2346 IN INT y) const 2347 { 2348 return IsVisible(Point(x,y)); 2349 } 2350 2351 BOOL IsVisible(IN const Point& point) const 2352 { 2353 BOOL booln = FALSE; 2354 2355 SetStatus(DllExports::GdipIsVisiblePointI(nativeGraphics, 2356 point.X, 2357 point.Y, 2358 &booln)); 2359 2360 return booln; 2361 } 2362 2363 BOOL IsVisible(IN INT x, 2364 IN INT y, 2365 IN INT width, 2366 IN INT height) const 2367 { 2368 return IsVisible(Rect(x, y, width, height)); 2369 } 2370 2371 BOOL IsVisible(IN const Rect& rect) const 2372 { 2373 2374 BOOL booln = TRUE; 2375 2376 SetStatus(DllExports::GdipIsVisibleRectI(nativeGraphics, 2377 rect.X, 2378 rect.Y, 2379 rect.Width, 2380 rect.Height, 2381 &booln)); 2382 return booln; 2383 } 2384 2385 BOOL IsVisible(IN REAL x, 2386 IN REAL y) const 2387 { 2388 return IsVisible(PointF(x, y)); 2389 } 2390 2391 BOOL IsVisible(IN const PointF& point) const 2392 { 2393 BOOL booln = FALSE; 2394 2395 SetStatus(DllExports::GdipIsVisiblePoint(nativeGraphics, 2396 point.X, 2397 point.Y, 2398 &booln)); 2399 2400 return booln; 2401 } 2402 2403 BOOL IsVisible(IN REAL x, 2404 IN REAL y, 2405 IN REAL width, 2406 IN REAL height) const 2407 { 2408 return IsVisible(RectF(x, y, width, height)); 2409 } 2410 2411 BOOL IsVisible(IN const RectF& rect) const 2412 { 2413 BOOL booln = TRUE; 2414 2415 SetStatus(DllExports::GdipIsVisibleRect(nativeGraphics, 2416 rect.X, 2417 rect.Y, 2418 rect.Width, 2419 rect.Height, 2420 &booln)); 2421 return booln; 2422 } 2423 2424 /** 2425 * Save/restore graphics state 2426 */ 2427 GraphicsState Save() const 2428 { 2429 GraphicsState gstate; 2430 2431 SetStatus(DllExports::GdipSaveGraphics(nativeGraphics, &gstate)); 2432 2433 return gstate; 2434 } 2435 2436 Status Restore(IN GraphicsState gstate) 2437 { 2438 return SetStatus(DllExports::GdipRestoreGraphics(nativeGraphics, 2439 gstate)); 2440 } 2441 2442 /** 2443 * Begin and end container drawing 2444 */ 2445 GraphicsContainer BeginContainer(IN const RectF &dstrect, 2446 IN const RectF &srcrect, 2447 IN Unit unit) 2448 { 2449 GraphicsContainer state; 2450 2451 SetStatus(DllExports::GdipBeginContainer(nativeGraphics, &dstrect, 2452 &srcrect, unit, &state)); 2453 2454 return state; 2455 } 2456 2457 /** 2458 * Begin and end container drawing 2459 */ 2460 GraphicsContainer BeginContainer(IN const Rect &dstrect, 2461 IN const Rect &srcrect, 2462 IN Unit unit) 2463 { 2464 GraphicsContainer state; 2465 2466 SetStatus(DllExports::GdipBeginContainerI(nativeGraphics, &dstrect, 2467 &srcrect, unit, &state)); 2468 2469 return state; 2470 } 2471 2472 GraphicsContainer BeginContainer() 2473 { 2474 GraphicsContainer state; 2475 2476 SetStatus(DllExports::GdipBeginContainer2(nativeGraphics, &state)); 2477 2478 return state; 2479 } 2480 2481 Status EndContainer(IN GraphicsContainer state) 2482 { 2483 return SetStatus(DllExports::GdipEndContainer(nativeGraphics, state)); 2484 } 2485 2486 // only valid when recording metafiles 2487 Status AddMetafileComment(IN const BYTE * data, 2488 IN UINT sizeData) 2489 { 2490 return SetStatus(DllExports::GdipComment(nativeGraphics, sizeData, data)); 2491 } 2492 2493 /** 2494 * Get/SetLayout 2495 * Support for Middle East localization (right-to-left mirroring) 2496 */ 2497 GraphicsLayout GetLayout() const 2498 { 2499 GraphicsLayout layout; 2500 2501 SetStatus(DllExports::GdipGetGraphicsLayout(nativeGraphics, &layout)); 2502 2503 return layout; 2504 } 2505 2506 Status SetLayout(IN const GraphicsLayout layout) 2507 { 2508 return SetStatus( 2509 DllExports::GdipSetGraphicsLayout(nativeGraphics, layout) 2510 ); 2511 } 2512 2513 static HPALETTE GetHalftonePalette() 2514 { 2515 return DllExports::GdipCreateHalftonePalette(); 2516 } 2517 2518 Status GetLastStatus() const 2519 { 2520 Status lastStatus = lastResult; 2521 lastResult = Ok; 2522 2523 return lastStatus; 2524 } 2525 2526protected: 2527 2528#ifdef DCR_USE_NEW_250932 2529 2530private: 2531 Graphics(const Graphics &); 2532 Graphics& operator=(const Graphics &); 2533protected: 2534 2535#else 2536 2537 Graphics(const Graphics& graphics) 2538 { 2539 graphics; 2540 SetStatus(NotImplemented); 2541 } 2542 2543 Graphics& operator=(const Graphics& graphics) 2544 { 2545 graphics; 2546 SetStatus(NotImplemented); 2547 return *this; 2548 } 2549 2550#endif 2551 2552 Graphics(GpGraphics* graphics) 2553 { 2554 lastResult = Ok; 2555 SetNativeGraphics(graphics); 2556 } 2557 2558 VOID SetNativeGraphics(GpGraphics *graphics) 2559 { 2560 this->nativeGraphics = graphics; 2561 } 2562 2563 Status SetStatus(Status status) const 2564 { 2565 if (status != Ok) 2566 return (lastResult = status); 2567 else 2568 return status; 2569 } 2570 2571 // Methods necessary to subclass Graphics for extension test. 2572 2573 GpGraphics* GetNativeGraphics() const 2574 { 2575 return this->nativeGraphics; 2576 } 2577 2578 GpPen* GetNativePen(const Pen* pen) 2579 { 2580 return pen->nativePen; 2581 } 2582 2583protected: 2584 GpGraphics* nativeGraphics; 2585 mutable Status lastResult; 2586 2587}; 2588 2589//---------------------------------------------------------------------------- 2590// Extra implementation of GraphicsPath methods that use Graphics 2591//---------------------------------------------------------------------------- 2592 2593/** 2594 * Get the bounds of the path object with the given transform. 2595 * This is not always the tightest bounds. 2596 */ 2597 2598inline Status 2599GraphicsPath::GetBounds( 2600 OUT RectF* bounds, 2601 IN const Matrix* matrix, 2602 IN const Pen* pen) const 2603{ 2604 GpMatrix* nativeMatrix = NULL; 2605 GpPen* nativePen = NULL; 2606 2607 if (matrix) 2608 nativeMatrix = matrix->nativeMatrix; 2609 2610 if (pen) 2611 nativePen = pen->nativePen; 2612 2613 return SetStatus(DllExports::GdipGetPathWorldBounds(nativePath, bounds, 2614 nativeMatrix, nativePen)); 2615} 2616 2617// integer version 2618inline Status 2619GraphicsPath::GetBounds( 2620 OUT Rect* bounds, 2621 IN const Matrix* matrix, 2622 IN const Pen* pen 2623) const 2624{ 2625 GpMatrix* nativeMatrix = NULL; 2626 GpPen* nativePen = NULL; 2627 2628 if (matrix) 2629 nativeMatrix = matrix->nativeMatrix; 2630 2631 if (pen) 2632 nativePen = pen->nativePen; 2633 2634 return SetStatus(DllExports::GdipGetPathWorldBoundsI(nativePath, bounds, 2635 nativeMatrix, nativePen)); 2636} 2637 2638//---------------------------------------------------------------------------- 2639// Hit testing operations 2640//---------------------------------------------------------------------------- 2641 2642inline BOOL 2643GraphicsPath::IsVisible( 2644 IN REAL x, 2645 IN REAL y, 2646 IN const Graphics* g) const 2647{ 2648 BOOL booln = FALSE; 2649 2650 GpGraphics* nativeGraphics = NULL; 2651 2652 if (g) 2653 nativeGraphics = g->nativeGraphics; 2654 2655 SetStatus(DllExports::GdipIsVisiblePathPoint(nativePath, 2656 x, y, nativeGraphics, 2657 &booln)); 2658 return booln; 2659} 2660 2661inline BOOL 2662GraphicsPath::IsVisible( 2663 IN INT x, 2664 IN INT y, 2665 IN const Graphics* g) const 2666{ 2667 BOOL booln = FALSE; 2668 2669 GpGraphics* nativeGraphics = NULL; 2670 2671 if (g) 2672 nativeGraphics = g->nativeGraphics; 2673 2674 SetStatus(DllExports::GdipIsVisiblePathPointI(nativePath, 2675 x, y, nativeGraphics, 2676 &booln)); 2677 return booln; 2678} 2679 2680inline BOOL 2681GraphicsPath::IsOutlineVisible( 2682 IN REAL x, 2683 IN REAL y, 2684 IN const Pen* pen, 2685 IN const Graphics* g) const 2686{ 2687 BOOL booln = FALSE; 2688 2689 GpGraphics* nativeGraphics = NULL; 2690 GpPen* nativePen = NULL; 2691 2692 if(g) 2693 nativeGraphics = g->nativeGraphics; 2694 if(pen) 2695 nativePen = pen->nativePen; 2696 2697 SetStatus(DllExports::GdipIsOutlineVisiblePathPoint(nativePath, 2698 x, y, nativePen, nativeGraphics, 2699 &booln)); 2700 return booln; 2701} 2702 2703inline BOOL 2704GraphicsPath::IsOutlineVisible( 2705 IN INT x, 2706 IN INT y, 2707 IN const Pen* pen, 2708 IN const Graphics* g) const 2709{ 2710 BOOL booln = FALSE; 2711 2712 GpGraphics* nativeGraphics = NULL; 2713 GpPen* nativePen = NULL; 2714 2715 if(g) 2716 nativeGraphics = g->nativeGraphics; 2717 if(pen) 2718 nativePen = pen->nativePen; 2719 2720 SetStatus(DllExports::GdipIsOutlineVisiblePathPointI(nativePath, 2721 x, y, nativePen, nativeGraphics, 2722 &booln)); 2723 return booln; 2724} 2725 2726#endif 2727