Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

893 lines
44 KiB

  1. /******************************Module*Header*******************************\
  2. * Module Name: CPaths.cpp
  3. *
  4. * This file contains the code to support the functionality test harness
  5. * for GDI+. This includes menu options and calling the appropriate
  6. * functions for execution.
  7. *
  8. * Created: 05-May-2000 - Jeff Vezina [t-jfvez]
  9. *
  10. * Copyright (c) 2000 Microsoft Corporation
  11. *
  12. \**************************************************************************/
  13. #include "CPaths.h"
  14. #include <limits.h>
  15. CJoins::CJoins(BOOL bRegression)
  16. {
  17. strcpy(m_szName,"Lines : Joins");
  18. m_bRegression=bRegression;
  19. }
  20. CJoins::~CJoins()
  21. {
  22. }
  23. void CJoins::Draw(Graphics *g)
  24. {
  25. Pen pen(Color(128,0,0), 8.5f);
  26. pen.SetMiterLimit(4.0f);
  27. g->TranslateTransform(20,30);
  28. for (INT j = 0; j<4; j++)
  29. {
  30. pen.SetLineJoin((LineJoin)j);
  31. INT x=0, y=0;
  32. for (INT x=0, y=-5; x<40; x+=8, y+=15)
  33. {
  34. Point points[] = {Point(0,0), Point(36,0), Point(x,y)};
  35. GraphicsPath corner;
  36. corner.AddPolygon(points,3);
  37. g->DrawPath(&pen,&corner);
  38. g->TranslateTransform(0,(REAL)(y+15));
  39. }
  40. g->TranslateTransform(60,-200);
  41. }
  42. g->TranslateTransform(-260,-30);
  43. }
  44. CPaths::CPaths(BOOL bRegression)
  45. {
  46. strcpy(m_szName,"Paths");
  47. m_bRegression=bRegression;
  48. }
  49. CPaths::~CPaths()
  50. {
  51. }
  52. VOID TestEscherNewPath(Graphics* g);
  53. void CPaths::Draw(Graphics *g)
  54. {
  55. TestBezierPath(g);
  56. TestSinglePixelWidePath(g);
  57. TestTextAlongPath(g);
  58. TestFreeFormPath2(g);
  59. TestLeakPath(g);
  60. TestExcelCurvePath(g);
  61. TestPie(g);
  62. // TestDegenerateBezierPath(g);
  63. // TestEscherNewPath(g);
  64. }
  65. VOID CPaths::TestBezierPath(Graphics *g)
  66. {
  67. REAL width = 4; // Pen width
  68. Point points[4];
  69. points[0].X = (int)(100.0f/450.0f*TESTAREAWIDTH);
  70. points[0].Y = (int)(10.0f/450.0f*TESTAREAHEIGHT);
  71. points[1].X = (int)(-50.0f/450.0f*TESTAREAWIDTH);
  72. points[1].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  73. points[2].X = (int)(150.0f/450.0f*TESTAREAWIDTH);
  74. points[2].Y = (int)(200.0f/450.0f*TESTAREAHEIGHT);
  75. points[3].X = (int)(200.0f/450.0f*TESTAREAWIDTH);
  76. points[3].Y = (int)(70.0f/450.0f*TESTAREAHEIGHT);
  77. Color yellowColor(128, 255, 255, 0);
  78. SolidBrush yellowBrush(yellowColor);
  79. GraphicsPath* path = new GraphicsPath(FillModeAlternate);
  80. path->AddBeziers(points, 4);
  81. path->SetMarker();
  82. RectF rect;
  83. rect.X = (int)(150.0f/450.0f*TESTAREAWIDTH);
  84. rect.Y = (int)(150.0f/450.0f*TESTAREAHEIGHT);
  85. rect.Width = (int)(100.0f/450.0f*TESTAREAWIDTH);
  86. rect.Height = (int)(100.0f/450.0f*TESTAREAHEIGHT);
  87. path->AddRectangle(rect);
  88. Matrix matrix;
  89. matrix.Scale(1.5, 1.5);
  90. Color colors[2];
  91. colors[0].SetValue(Color::MakeARGB(128, 0, 255, 0));
  92. colors[1].SetValue(Color::MakeARGB(128, 0, 0, 255));
  93. SolidBrush brush1(colors[0]);
  94. GraphicsPath path1;
  95. GraphicsPathIterator iter(path);
  96. INT i = 0;
  97. while(iter.NextMarker(&path1) > 0)
  98. {
  99. // Change the brush color.
  100. brush1.SetColor(colors[(i & 0x01)]);
  101. // Fill each marker path.
  102. // g->FillPath(&brush1, &path1);
  103. i++;
  104. }
  105. // If you wanto to flatten the path before rendering,
  106. // Flatten() can be called.
  107. BOOL flattenFirst = FALSE;
  108. if(!flattenFirst)
  109. {
  110. // Don't flatten and keep the original path.
  111. // FillPath or DrawPath will flatten the path automatically
  112. // without modifying the original path.
  113. path->Transform(&matrix);
  114. }
  115. else
  116. {
  117. // Flatten this path. The resultant path is made of line
  118. // segments. The original path information is lost.
  119. path->Flatten(&matrix);
  120. }
  121. Color blackColor(128, 0, 0, 0);
  122. SolidBrush blackBrush(blackColor);
  123. // Set the pen width in inch.
  124. width = 6;
  125. Pen blackPen(&blackBrush, width);
  126. Matrix mat;
  127. mat.Scale(1.0f, 0.6f);
  128. // blackPen.SetTransform(&mat);
  129. blackPen.SetStartCap(LineCapTriangle);
  130. // blackPen.SetStartCap(LineCapRoundAnchor);
  131. // blackPen.SetEndCap(LineCapSquare);
  132. // blackPen.SetEndCap(LineCapArrowAnchor);
  133. blackPen.SetEndCap(LineCapTriangle);
  134. // blackPen.SetEndCap(LineCapDiamondAnchor);
  135. // blackPen.SetAlignment(PenAlignmentRight);
  136. blackPen.SetLineJoin(LineJoinRound);
  137. GraphicsPath fillPath, strokePath;
  138. rect.X = -2;
  139. rect.Y = -2;
  140. rect.Width = 4;
  141. rect.Height = 4;
  142. fillPath.AddRectangle(rect);
  143. CustomLineCap customCap(NULL, &fillPath);
  144. customCap.SetBaseInset(1.0f);
  145. blackPen.SetCustomEndCap(&customCap);
  146. AdjustableArrowCap arrowCap(4, 4, FALSE);
  147. arrowCap.SetMiddleInset(1);
  148. arrowCap.SetStrokeCaps(LineCapRound, LineCapRound);
  149. arrowCap.SetStrokeJoin(LineJoinRound);
  150. blackPen.SetCustomStartCap(&arrowCap);
  151. path->Reverse();
  152. Region * region = new Region(path);
  153. g->FillPath(&yellowBrush, path);
  154. g->DrawPath(&blackPen, path);
  155. delete path;
  156. delete region;
  157. Pen pen2(&blackBrush, 10);
  158. path = new GraphicsPath(FillModeWinding);
  159. points[0].X = (int)(100.0f/450.0f*TESTAREAWIDTH); points[0].Y = (int)(20.0f/450.0f*TESTAREAHEIGHT);
  160. points[1].X = (int)(0.0f/450.0f*TESTAREAWIDTH); points[1].Y = (int)(20.0f/450.0f*TESTAREAHEIGHT);
  161. points[2].X = (int)(250.0f/450.0f*TESTAREAWIDTH); points[2].Y = (int)(20.0f/450.0f*TESTAREAHEIGHT);
  162. points[3].X = (int)(150.0f/450.0f*TESTAREAWIDTH); points[3].Y = (int)(20.0f/450.0f*TESTAREAHEIGHT);
  163. path->AddBeziers(points, 4);
  164. // path->AddLines(points, 4);
  165. g->DrawPath(&pen2, path);
  166. delete path;
  167. path = new GraphicsPath();
  168. rect.X = (int)(100.0f/450.0f*TESTAREAWIDTH);
  169. rect.Y = (int)(40.0f/450.0f*TESTAREAHEIGHT);
  170. rect.Width = (int)(50.0f/450.0f*TESTAREAWIDTH);
  171. rect.Height = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  172. path->AddRectangle(rect);
  173. g->DrawPath(&pen2, path);
  174. delete path;
  175. Point pts[10];
  176. INT count = 4;
  177. pts[0].X = (int)(200.0f/450.0f*TESTAREAWIDTH);
  178. pts[0].Y = (int)(160.0f/450.0f*TESTAREAHEIGHT);
  179. pts[1].X = (int)(150.0f/450.0f*TESTAREAWIDTH);
  180. pts[1].Y = (int)(230.0f/450.0f*TESTAREAHEIGHT);
  181. pts[2].X = (int)(200.0f/450.0f*TESTAREAWIDTH);
  182. pts[2].Y = (int)(260.0f/450.0f*TESTAREAHEIGHT);
  183. pts[3].X = (int)(300.0f/450.0f*TESTAREAWIDTH);
  184. pts[3].Y = (int)(200.0f/450.0f*TESTAREAHEIGHT);
  185. // g->FillClosedCurve(&brush, pts, count);
  186. pts[0].X = (int)(100.0f/450.0f*TESTAREAWIDTH); pts[0].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  187. pts[1].X = (int)(50.0f/450.0f*TESTAREAWIDTH); pts[1].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  188. pts[2].X = (int)(200.0f/450.0f*TESTAREAWIDTH); pts[2].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  189. pts[3].X = (int)(150.0f/450.0f*TESTAREAWIDTH); pts[3].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  190. count = 4;
  191. // g->DrawClosedCurve(&pen2, pts, count);
  192. g->DrawCurve(&pen2, pts, count);
  193. pts[0].X = (int)(65.0f/450.0f*TESTAREAWIDTH);
  194. pts[0].Y = (int)(20.0f/450.0f*TESTAREAHEIGHT);
  195. pts[1].X = (int)(20.0f/450.0f*TESTAREAWIDTH);
  196. pts[1].Y = (int)(110.0f/450.0f*TESTAREAHEIGHT);
  197. pts[2].X = (int)(110.0f/450.0f*TESTAREAWIDTH);
  198. pts[2].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  199. pts[3].X = (int)(20.0f/450.0f*TESTAREAWIDTH);
  200. pts[3].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  201. path = new GraphicsPath();
  202. pen2.SetWidth(1);
  203. path->AddBeziers(pts, 4);
  204. g->DrawPath(&pen2, path);
  205. delete path;
  206. }
  207. VOID CPaths::TestSinglePixelWidePath(Graphics *g)
  208. {
  209. Point points[4];
  210. points[0].X = (int)(30.0f/450.0f*TESTAREAWIDTH);
  211. points[0].Y = (int)(30.0f/450.0f*TESTAREAHEIGHT);
  212. points[1].X = points[0].X + (int)(100.0f/450.0f*TESTAREAWIDTH);
  213. points[1].Y = points[0].Y + (int)(3.0f/450.0f*TESTAREAHEIGHT);
  214. points[2].X = points[1].X - (int)(3.0f/450.0f*TESTAREAWIDTH);
  215. points[2].Y = points[1].Y + (int)(100.0f/450.0f*TESTAREAHEIGHT);
  216. points[3].X = points[2].X - (int)(45.0f/450.0f*TESTAREAWIDTH);
  217. points[3].Y = points[2].Y - (int)(45.0f/450.0f*TESTAREAHEIGHT);
  218. Color blackColor(0, 0, 0);
  219. SolidBrush blackBrush(blackColor);
  220. Pen blackPen(&blackBrush, 1.0);
  221. GraphicsPath* path = new GraphicsPath(FillModeAlternate);
  222. path->AddLines(points, 4);
  223. // Set the pen width in inch.
  224. g->DrawPath(&blackPen, path);
  225. delete path;
  226. }
  227. VOID CPaths::TestTextAlongPath(Graphics *g)
  228. {
  229. Point points[4];
  230. points[3].X = (int)(100.0f/450.0f*TESTAREAWIDTH);
  231. points[3].Y = (int)(10.0f/450.0f*TESTAREAHEIGHT);
  232. points[2].X = (int)(-50.0f/450.0f*TESTAREAWIDTH);
  233. points[2].Y = (int)(50.0f/450.0f*TESTAREAHEIGHT);
  234. points[1].X = (int)(150.0f/450.0f*TESTAREAWIDTH);
  235. points[1].Y = (int)(200.0f/450.0f*TESTAREAHEIGHT);
  236. points[0].X = (int)(200.0f/450.0f*TESTAREAWIDTH);
  237. points[0].Y = (int)(70.0f/450.0f*TESTAREAHEIGHT);
  238. GraphicsPath* path = new GraphicsPath(FillModeAlternate);
  239. path->AddBeziers(points, 4);
  240. Matrix matrix;
  241. matrix.Scale(1.5, 1.5);
  242. path->Transform(&matrix);
  243. Color textColor(180, 200, 0, 200);
  244. SolidBrush textBrush(textColor);
  245. WCHAR szText[]=L"Windows 2000";
  246. REAL offset=60;
  247. // g->DrawString(text, 12, NULL, path, NULL, &textBrush, offset);
  248. delete path;
  249. }
  250. VOID CPaths::TestFreeFormPath1(Graphics* g)
  251. {
  252. INT count = 55;
  253. GpPointF pts[60];
  254. pts[ 0].X = 4.879999e+002f/600.0f*TESTAREAWIDTH; pts[ 0].Y = 3.059999e+002f/600.0f*TESTAREAHEIGHT;
  255. pts[ 1].X = 4.772343e+002f/600.0f*TESTAREAWIDTH; pts[ 1].Y = 3.024114e+002f/600.0f*TESTAREAHEIGHT;
  256. pts[ 2].X = 4.573341e+002f/600.0f*TESTAREAWIDTH; pts[ 2].Y = 3.019402e+002f/600.0f*TESTAREAHEIGHT;
  257. pts[ 3].X = 4.476240e+002f/600.0f*TESTAREAWIDTH; pts[ 3].Y = 3.019402e+002f/600.0f*TESTAREAHEIGHT;
  258. pts[ 4].X = 4.419999e+002f/600.0f*TESTAREAWIDTH; pts[ 4].Y = 3.019999e+002f/600.0f*TESTAREAHEIGHT;
  259. pts[ 5].X = 4.379999e+002f/600.0f*TESTAREAWIDTH; pts[ 5].Y = 3.013333e+002f/600.0f*TESTAREAHEIGHT;
  260. pts[ 6].X = 4.335999e+002f/600.0f*TESTAREAWIDTH; pts[ 6].Y = 3.018000e+002f/600.0f*TESTAREAHEIGHT;
  261. pts[ 7].X = 4.299999e+002f/600.0f*TESTAREAWIDTH; pts[ 7].Y = 2.999999e+002f/600.0f*TESTAREAHEIGHT;
  262. pts[ 8].X = 4.266666e+002f/600.0f*TESTAREAWIDTH; pts[ 8].Y = 2.983333e+002f/600.0f*TESTAREAHEIGHT;
  263. pts[ 9].X = 4.236666e+002f/600.0f*TESTAREAWIDTH; pts[ 9].Y = 2.955333e+002f/600.0f*TESTAREAHEIGHT;
  264. pts[10].X = 4.199999e+002f/600.0f*TESTAREAWIDTH; pts[10].Y = 2.949999e+002f/600.0f*TESTAREAHEIGHT;
  265. pts[11].X = 4.059999e+002f/600.0f*TESTAREAWIDTH; pts[11].Y = 2.929999e+002f/600.0f*TESTAREAHEIGHT;
  266. pts[12].X = 4.059999e+002f/600.0f*TESTAREAWIDTH; pts[12].Y = 2.929999e+002f/600.0f*TESTAREAHEIGHT;
  267. pts[13].X = 3.965333e+002f/600.0f*TESTAREAWIDTH; pts[13].Y = 2.873333e+002f/600.0f*TESTAREAHEIGHT;
  268. pts[14].X = 3.802666e+002f/600.0f*TESTAREAWIDTH; pts[14].Y = 2.774000e+002f/600.0f*TESTAREAHEIGHT;
  269. pts[15].X = 3.739999e+002f/600.0f*TESTAREAWIDTH; pts[15].Y = 2.680000e+002f/600.0f*TESTAREAHEIGHT;
  270. pts[16].X = 3.965333e+002f/600.0f*TESTAREAWIDTH; pts[16].Y = 2.873333e+002f/600.0f*TESTAREAHEIGHT;
  271. pts[17].X = 3.802666e+002f/600.0f*TESTAREAWIDTH; pts[17].Y = 2.774000e+002f/600.0f*TESTAREAHEIGHT;
  272. pts[18].X = 3.739999e+002f/600.0f*TESTAREAWIDTH; pts[18].Y = 2.680000e+002f/600.0f*TESTAREAHEIGHT;
  273. pts[19].X = 3.725333e+002f/600.0f*TESTAREAWIDTH; pts[19].Y = 2.658000e+002f/600.0f*TESTAREAHEIGHT;
  274. pts[20].X = 3.708666e+002f/600.0f*TESTAREAWIDTH; pts[20].Y = 2.635333e+002f/600.0f*TESTAREAHEIGHT;
  275. pts[21].X = 3.699999e+002f/600.0f*TESTAREAWIDTH; pts[21].Y = 2.610000e+002f/600.0f*TESTAREAHEIGHT;
  276. pts[22].X = 3.725333e+002f/600.0f*TESTAREAWIDTH; pts[22].Y = 2.658000e+002f/600.0f*TESTAREAHEIGHT;
  277. pts[23].X = 3.708666e+002f/600.0f*TESTAREAWIDTH; pts[23].Y = 2.635333e+002f/600.0f*TESTAREAHEIGHT;
  278. pts[24].X = 3.699999e+002f/600.0f*TESTAREAWIDTH; pts[24].Y = 2.610000e+002f/600.0f*TESTAREAHEIGHT;
  279. pts[25].X = 3.691333e+002f/600.0f*TESTAREAWIDTH; pts[25].Y = 2.584000e+002f/600.0f*TESTAREAHEIGHT;
  280. pts[26].X = 3.679999e+002f/600.0f*TESTAREAWIDTH; pts[26].Y = 2.530000e+002f/600.0f*TESTAREAHEIGHT;
  281. pts[27].X = 3.679999e+002f/600.0f*TESTAREAWIDTH; pts[27].Y = 2.530000e+002f/600.0f*TESTAREAHEIGHT;
  282. pts[28].X = 3.679999e+002f/600.0f*TESTAREAWIDTH; pts[28].Y = 2.530000e+002f/600.0f*TESTAREAHEIGHT;
  283. pts[29].X = 3.658666e+002f/600.0f*TESTAREAWIDTH; pts[29].Y = 2.318666e+002f/600.0f*TESTAREAHEIGHT;
  284. pts[30].X = 3.691333e+002f/600.0f*TESTAREAWIDTH; pts[30].Y = 2.203333e+002f/600.0f*TESTAREAHEIGHT;
  285. pts[31].X = 3.839999e+002f/600.0f*TESTAREAWIDTH; pts[31].Y = 2.070000e+002f/600.0f*TESTAREAHEIGHT;
  286. pts[32].X = 3.893333e+002f/600.0f*TESTAREAWIDTH; pts[32].Y = 2.022000e+002f/600.0f*TESTAREAHEIGHT;
  287. pts[33].X = 3.931999e+002f/600.0f*TESTAREAWIDTH; pts[33].Y = 1.964000e+002f/600.0f*TESTAREAHEIGHT;
  288. pts[34].X = 3.999999e+002f/600.0f*TESTAREAWIDTH; pts[34].Y = 1.930000e+002f/600.0f*TESTAREAHEIGHT;
  289. pts[35].X = 4.053327e+002f/600.0f*TESTAREAWIDTH; pts[35].Y = 1.903467e+002f/600.0f*TESTAREAHEIGHT;
  290. pts[36].X = 4.059866e+002f/600.0f*TESTAREAWIDTH; pts[36].Y = 1.899501e+002f/600.0f*TESTAREAHEIGHT;
  291. pts[37].X = 4.062323e+002f/600.0f*TESTAREAWIDTH; pts[37].Y = 1.899501e+002f/600.0f*TESTAREAHEIGHT;
  292. pts[38].X = 4.063370e+002f/600.0f*TESTAREAWIDTH; pts[38].Y = 1.899501e+002f/600.0f*TESTAREAHEIGHT;
  293. pts[39].X = 4.063676e+002f/600.0f*TESTAREAWIDTH; pts[39].Y = 1.900222e+002f/600.0f*TESTAREAHEIGHT;
  294. pts[40].X = 4.066551e+002f/600.0f*TESTAREAWIDTH; pts[40].Y = 1.900222e+002f/600.0f*TESTAREAHEIGHT;
  295. pts[41].X = 4.074044e+002f/600.0f*TESTAREAWIDTH; pts[41].Y = 1.900222e+002f/600.0f*TESTAREAHEIGHT;
  296. pts[42].X = 4.098989e+002f/600.0f*TESTAREAWIDTH; pts[42].Y = 1.895324e+002f/600.0f*TESTAREAHEIGHT;
  297. pts[43].X = 4.199999e+002f/600.0f*TESTAREAWIDTH; pts[43].Y = 1.860000e+002f/600.0f*TESTAREAHEIGHT;
  298. pts[44].X = 4.269999e+002f/600.0f*TESTAREAWIDTH; pts[44].Y = 1.835333e+002f/600.0f*TESTAREAHEIGHT;
  299. pts[45].X = 4.337999e+002f/600.0f*TESTAREAWIDTH; pts[45].Y = 1.789333e+002f/600.0f*TESTAREAHEIGHT;
  300. pts[46].X = 4.409999e+002f/600.0f*TESTAREAWIDTH; pts[46].Y = 1.770000e+002f/600.0f*TESTAREAHEIGHT;
  301. pts[47].X = 4.475333e+002f/600.0f*TESTAREAWIDTH; pts[47].Y = 1.752000e+002f/600.0f*TESTAREAHEIGHT;
  302. pts[48].X = 4.543333e+002f/600.0f*TESTAREAWIDTH; pts[48].Y = 1.751333e+002f/600.0f*TESTAREAHEIGHT;
  303. pts[49].X = 4.609999e+002f/600.0f*TESTAREAWIDTH; pts[49].Y = 1.740000e+002f/600.0f*TESTAREAHEIGHT;
  304. pts[50].X = 4.643333e+002f/600.0f*TESTAREAWIDTH; pts[50].Y = 1.734666e+002f/600.0f*TESTAREAHEIGHT;
  305. pts[51].X = 4.675999e+002f/600.0f*TESTAREAWIDTH; pts[51].Y = 1.720000e+002f/600.0f*TESTAREAHEIGHT;
  306. pts[52].X = 4.709999e+002f/600.0f*TESTAREAWIDTH; pts[52].Y = 1.720000e+002f/600.0f*TESTAREAHEIGHT;
  307. pts[53].X = 5.279999e+002f/600.0f*TESTAREAWIDTH; pts[53].Y = 1.720000e+002f/600.0f*TESTAREAHEIGHT;
  308. pts[54].X = 5.279999e+002f/600.0f*TESTAREAWIDTH; pts[54].Y = 1.720000e+002f/600.0f*TESTAREAHEIGHT;
  309. BYTE typs[] = {
  310. 00, 03, 03, 03, // 0 - 3
  311. 01, 03, 03, 03, // 4 - 7
  312. 03, 03, 03, 01, // 8 - 11
  313. 01, 03, 03, 03, // 12 - 15
  314. 03, 03, 03, 03, // 16 - 19
  315. 03, 03, 03, 03, // 20 - 23
  316. 03, 03, 03, 03, // 24 - 27
  317. 01, 03, 03, 03, // 28 - 31
  318. 03, 03, 03, 03, // 32 - 35
  319. 03, 03, 03, 03, // 36 - 39
  320. 03, 03, 03, 03, // 40 - 43
  321. 03, 03, 03, 03, // 44 - 47
  322. 03, 03, 03, 03, // 48 - 51
  323. 03, 01, 01 // 52 - 54
  324. };
  325. PointF pts2[4];
  326. pts2[0].X = 3.739999e+002f/600.0f*TESTAREAWIDTH; pts2[0].Y = 2.680000e+002f/600.0f*TESTAREAHEIGHT;
  327. pts2[1].X = 3.965333e+002f/600.0f*TESTAREAWIDTH; pts2[1].Y = 2.873333e+002f/600.0f*TESTAREAHEIGHT;
  328. pts2[2].X = 3.802666e+002f/600.0f*TESTAREAWIDTH; pts2[2].Y = 2.774000e+002f/600.0f*TESTAREAHEIGHT;
  329. pts2[3].X = 3.739999e+002f/600.0f*TESTAREAWIDTH; pts2[3].Y = 2.680000e+002f/600.0f*TESTAREAHEIGHT;
  330. pts2[4].X = 3.739999e+002f/600.0f*TESTAREAWIDTH; pts2[4].Y = 2.680000e+002f/600.0f*TESTAREAHEIGHT;
  331. BYTE typs2[] = {0, 3, 3, 3, 1};
  332. INT count1 = count;
  333. INT offset1 = 0;
  334. // offset1 = 15;
  335. // count1 = 19;
  336. count1 -= offset1;
  337. GpPointF* pts1 = &pts[0] + offset1;
  338. BYTE* typs1 = &typs[0] + offset1;
  339. GraphicsPath* path
  340. = new GraphicsPath(pts1, typs1, count1);
  341. // = new GraphicsPath(&pts2[0], &typs2[0], 4);
  342. Matrix mat;
  343. mat.Translate((int)(-300.0f/600.0f*TESTAREAWIDTH), (int)(-200.0f/600.0f*TESTAREAHEIGHT));
  344. path->Transform(&mat);
  345. Matrix mat1;
  346. // mat1.Scale(5, 5);
  347. // path->Transform(&mat1);
  348. REAL width = 20;
  349. Color color(128, 0, 0, 0);
  350. SolidBrush brush(color);
  351. Pen pen(&brush, width);
  352. pen.SetLineJoin(LineJoinRound);
  353. g->DrawPath(&pen, path);
  354. delete path;
  355. }
  356. VOID CPaths::TestFreeFormPath2(Graphics* g)
  357. {
  358. INT count = 118;
  359. GpPointF pts[118];
  360. pts[ 0].X = 1.680000e+002f/600.0f*TESTAREAWIDTH; pts[ 0].Y = 2.120000e+002f/600.0f*TESTAREAHEIGHT;
  361. pts[ 1].X = 1.686667e+002f/600.0f*TESTAREAWIDTH; pts[ 1].Y = 2.016666e+002f/600.0f*TESTAREAHEIGHT;
  362. pts[ 2].X = 1.688667e+002f/600.0f*TESTAREAWIDTH; pts[ 2].Y = 1.912666e+002f/600.0f*TESTAREAHEIGHT;
  363. pts[ 3].X = 1.700000e+002f/600.0f*TESTAREAWIDTH; pts[ 3].Y = 1.810000e+002f/600.0f*TESTAREAHEIGHT;
  364. pts[ 4].X = 1.686667e+002f/600.0f*TESTAREAWIDTH; pts[ 4].Y = 2.016666e+002f/600.0f*TESTAREAHEIGHT;
  365. pts[ 5].X = 1.688667e+002f/600.0f*TESTAREAWIDTH; pts[ 5].Y = 1.912666e+002f/600.0f*TESTAREAHEIGHT;
  366. pts[ 6].X = 1.700000e+002f/600.0f*TESTAREAWIDTH; pts[ 6].Y = 1.810000e+002f/600.0f*TESTAREAHEIGHT;
  367. pts[ 7].X = 1.703333e+002f/600.0f*TESTAREAWIDTH; pts[ 7].Y = 1.780666e+002f/600.0f*TESTAREAHEIGHT;
  368. pts[ 8].X = 1.754666e+002f/600.0f*TESTAREAWIDTH; pts[ 8].Y = 1.652000e+002f/600.0f*TESTAREAHEIGHT;
  369. pts[ 9].X = 1.760000e+002f/600.0f*TESTAREAWIDTH; pts[ 9].Y = 1.630000e+002f/600.0f*TESTAREAHEIGHT;
  370. pts[ 10].X = 1.703333e+002f/600.0f*TESTAREAWIDTH; pts[ 10].Y = 1.780666e+002f/600.0f*TESTAREAHEIGHT;
  371. pts[ 11].X = 1.754666e+002f/600.0f*TESTAREAWIDTH; pts[ 11].Y = 1.652000e+002f/600.0f*TESTAREAHEIGHT;
  372. pts[ 12].X = 1.760000e+002f/600.0f*TESTAREAWIDTH; pts[ 12].Y = 1.630000e+002f/600.0f*TESTAREAHEIGHT;
  373. pts[ 13].X = 1.763333e+002f/600.0f*TESTAREAWIDTH; pts[ 13].Y = 1.617333e+002f/600.0f*TESTAREAHEIGHT;
  374. pts[ 14].X = 1.772666e+002f/600.0f*TESTAREAWIDTH; pts[ 14].Y = 1.574666e+002f/600.0f*TESTAREAHEIGHT;
  375. pts[ 15].X = 1.780000e+002f/600.0f*TESTAREAWIDTH; pts[ 15].Y = 1.560000e+002f/600.0f*TESTAREAHEIGHT;
  376. pts[ 16].X = 1.763333e+002f/600.0f*TESTAREAWIDTH; pts[ 16].Y = 1.617333e+002f/600.0f*TESTAREAHEIGHT;
  377. pts[ 17].X = 1.772666e+002f/600.0f*TESTAREAWIDTH; pts[ 17].Y = 1.574666e+002f/600.0f*TESTAREAHEIGHT;
  378. pts[ 18].X = 1.780000e+002f/600.0f*TESTAREAWIDTH; pts[ 18].Y = 1.560000e+002f/600.0f*TESTAREAHEIGHT;
  379. pts[ 19].X = 1.826666e+002f/600.0f*TESTAREAWIDTH; pts[ 19].Y = 1.467333e+002f/600.0f*TESTAREAHEIGHT;
  380. pts[ 20].X = 1.880000e+002f/600.0f*TESTAREAWIDTH; pts[ 20].Y = 1.452666e+002f/600.0f*TESTAREAHEIGHT;
  381. pts[ 21].X = 1.950000e+002f/600.0f*TESTAREAWIDTH; pts[ 21].Y = 1.390000e+002f/600.0f*TESTAREAHEIGHT;
  382. pts[ 22].X = 1.993333e+002f/600.0f*TESTAREAWIDTH; pts[ 22].Y = 1.351333e+002f/600.0f*TESTAREAHEIGHT;
  383. pts[ 23].X = 2.037333e+002f/600.0f*TESTAREAWIDTH; pts[ 23].Y = 1.306667e+002f/600.0f*TESTAREAHEIGHT;
  384. pts[ 24].X = 2.090000e+002f/600.0f*TESTAREAWIDTH; pts[ 24].Y = 1.280000e+002f/600.0f*TESTAREAHEIGHT;
  385. pts[ 25].X = 1.993333e+002f/600.0f*TESTAREAWIDTH; pts[ 25].Y = 1.351333e+002f/600.0f*TESTAREAHEIGHT;
  386. pts[ 26].X = 2.037333e+002f/600.0f*TESTAREAWIDTH; pts[ 26].Y = 1.306667e+002f/600.0f*TESTAREAHEIGHT;
  387. pts[ 27].X = 2.090000e+002f/600.0f*TESTAREAWIDTH; pts[ 27].Y = 1.280000e+002f/600.0f*TESTAREAHEIGHT;
  388. pts[ 28].X = 2.206000e+002f/600.0f*TESTAREAWIDTH; pts[ 28].Y = 1.222000e+002f/600.0f*TESTAREAHEIGHT;
  389. pts[ 29].X = 2.332666e+002f/600.0f*TESTAREAWIDTH; pts[ 29].Y = 1.208667e+002f/600.0f*TESTAREAHEIGHT;
  390. pts[ 30].X = 2.460000e+002f/600.0f*TESTAREAWIDTH; pts[ 30].Y = 1.200000e+002f/600.0f*TESTAREAHEIGHT;
  391. pts[ 31].X = 2.206000e+002f/600.0f*TESTAREAWIDTH; pts[ 31].Y = 1.222000e+002f/600.0f*TESTAREAHEIGHT;
  392. pts[ 32].X = 2.332666e+002f/600.0f*TESTAREAWIDTH; pts[ 32].Y = 1.208667e+002f/600.0f*TESTAREAHEIGHT;
  393. pts[ 33].X = 2.460000e+002f/600.0f*TESTAREAWIDTH; pts[ 33].Y = 1.200000e+002f/600.0f*TESTAREAHEIGHT;
  394. pts[ 34].X = 2.531333e+002f/600.0f*TESTAREAWIDTH; pts[ 34].Y = 1.206000e+002f/600.0f*TESTAREAHEIGHT;
  395. pts[ 35].X = 2.632000e+002f/600.0f*TESTAREAWIDTH; pts[ 35].Y = 1.206000e+002f/600.0f*TESTAREAHEIGHT;
  396. pts[ 36].X = 2.700000e+002f/600.0f*TESTAREAWIDTH; pts[ 36].Y = 1.240000e+002f/600.0f*TESTAREAHEIGHT;
  397. pts[ 37].X = 2.734666e+002f/600.0f*TESTAREAWIDTH; pts[ 37].Y = 1.257333e+002f/600.0f*TESTAREAHEIGHT;
  398. pts[ 38].X = 2.763333e+002f/600.0f*TESTAREAWIDTH; pts[ 38].Y = 1.288000e+002f/600.0f*TESTAREAHEIGHT;
  399. pts[ 39].X = 2.799999e+002f/600.0f*TESTAREAWIDTH; pts[ 39].Y = 1.300000e+002f/600.0f*TESTAREAHEIGHT;
  400. pts[ 40].X = 2.858000e+002f/600.0f*TESTAREAWIDTH; pts[ 40].Y = 1.319333e+002f/600.0f*TESTAREAHEIGHT;
  401. pts[ 41].X = 2.889333e+002f/600.0f*TESTAREAWIDTH; pts[ 41].Y = 1.338667e+002f/600.0f*TESTAREAHEIGHT;
  402. pts[ 42].X = 2.939999e+002f/600.0f*TESTAREAWIDTH; pts[ 42].Y = 1.370000e+002f/600.0f*TESTAREAHEIGHT;
  403. pts[ 43].X = 2.858000e+002f/600.0f*TESTAREAWIDTH; pts[ 43].Y = 1.319333e+002f/600.0f*TESTAREAHEIGHT;
  404. pts[ 44].X = 2.889333e+002f/600.0f*TESTAREAWIDTH; pts[ 44].Y = 1.338667e+002f/600.0f*TESTAREAHEIGHT;
  405. pts[ 45].X = 2.939999e+002f/600.0f*TESTAREAWIDTH; pts[ 45].Y = 1.370000e+002f/600.0f*TESTAREAHEIGHT;
  406. pts[ 46].X = 3.058666e+002f/600.0f*TESTAREAWIDTH; pts[ 46].Y = 1.443333e+002f/600.0f*TESTAREAHEIGHT;
  407. pts[ 47].X = 3.215333e+002f/600.0f*TESTAREAWIDTH; pts[ 47].Y = 1.503333e+002f/600.0f*TESTAREAHEIGHT;
  408. pts[ 48].X = 3.299999e+002f/600.0f*TESTAREAWIDTH; pts[ 48].Y = 1.620000e+002f/600.0f*TESTAREAHEIGHT;
  409. pts[ 49].X = 3.332666e+002f/600.0f*TESTAREAWIDTH; pts[ 49].Y = 1.664666e+002f/600.0f*TESTAREAHEIGHT;
  410. pts[ 50].X = 3.385999e+002f/600.0f*TESTAREAWIDTH; pts[ 50].Y = 1.723333e+002f/600.0f*TESTAREAHEIGHT;
  411. pts[ 51].X = 3.399999e+002f/600.0f*TESTAREAWIDTH; pts[ 51].Y = 1.780000e+002f/600.0f*TESTAREAHEIGHT;
  412. pts[ 52].X = 3.411333e+002f/600.0f*TESTAREAWIDTH; pts[ 52].Y = 1.826666e+002f/600.0f*TESTAREAHEIGHT;
  413. pts[ 53].X = 3.418666e+002f/600.0f*TESTAREAWIDTH; pts[ 53].Y = 1.873333e+002f/600.0f*TESTAREAHEIGHT;
  414. pts[ 54].X = 3.429999e+002f/600.0f*TESTAREAWIDTH; pts[ 54].Y = 1.920000e+002f/600.0f*TESTAREAHEIGHT;
  415. pts[ 55].X = 3.428666e+002f/600.0f*TESTAREAWIDTH; pts[ 55].Y = 1.949333e+002f/600.0f*TESTAREAHEIGHT;
  416. pts[ 56].X = 3.430666e+002f/600.0f*TESTAREAWIDTH; pts[ 56].Y = 2.178666e+002f/600.0f*TESTAREAHEIGHT;
  417. pts[ 57].X = 3.399999e+002f/600.0f*TESTAREAWIDTH; pts[ 57].Y = 2.250000e+002f/600.0f*TESTAREAHEIGHT;
  418. pts[ 58].X = 3.428666e+002f/600.0f*TESTAREAWIDTH; pts[ 58].Y = 1.949333e+002f/600.0f*TESTAREAHEIGHT;
  419. pts[ 59].X = 3.430666e+002f/600.0f*TESTAREAWIDTH; pts[ 59].Y = 2.178666e+002f/600.0f*TESTAREAHEIGHT;
  420. pts[ 60].X = 3.399999e+002f/600.0f*TESTAREAWIDTH; pts[ 60].Y = 2.250000e+002f/600.0f*TESTAREAHEIGHT;
  421. pts[ 61].X = 3.363333e+002f/600.0f*TESTAREAWIDTH; pts[ 61].Y = 2.334666e+002f/600.0f*TESTAREAHEIGHT;
  422. pts[ 62].X = 3.344666e+002f/600.0f*TESTAREAWIDTH; pts[ 62].Y = 2.390000e+002f/600.0f*TESTAREAHEIGHT;
  423. pts[ 63].X = 3.279999e+002f/600.0f*TESTAREAWIDTH; pts[ 63].Y = 2.460000e+002f/600.0f*TESTAREAHEIGHT;
  424. pts[ 64].X = 3.363333e+002f/600.0f*TESTAREAWIDTH; pts[ 64].Y = 2.334666e+002f/600.0f*TESTAREAHEIGHT;
  425. pts[ 65].X = 3.344666e+002f/600.0f*TESTAREAWIDTH; pts[ 65].Y = 2.390000e+002f/600.0f*TESTAREAHEIGHT;
  426. pts[ 66].X = 3.279999e+002f/600.0f*TESTAREAWIDTH; pts[ 66].Y = 2.460000e+002f/600.0f*TESTAREAHEIGHT;
  427. pts[ 67].X = 3.257333e+002f/600.0f*TESTAREAWIDTH; pts[ 67].Y = 2.484000e+002f/600.0f*TESTAREAHEIGHT;
  428. pts[ 68].X = 3.233333e+002f/600.0f*TESTAREAWIDTH; pts[ 68].Y = 2.506666e+002f/600.0f*TESTAREAHEIGHT;
  429. pts[ 69].X = 3.209999e+002f/600.0f*TESTAREAWIDTH; pts[ 69].Y = 2.530000e+002f/600.0f*TESTAREAHEIGHT;
  430. pts[ 70].X = 3.257333e+002f/600.0f*TESTAREAWIDTH; pts[ 70].Y = 2.484000e+002f/600.0f*TESTAREAHEIGHT;
  431. pts[ 71].X = 3.233333e+002f/600.0f*TESTAREAWIDTH; pts[ 71].Y = 2.506666e+002f/600.0f*TESTAREAHEIGHT;
  432. pts[ 72].X = 3.209999e+002f/600.0f*TESTAREAWIDTH; pts[ 72].Y = 2.530000e+002f/600.0f*TESTAREAHEIGHT;
  433. pts[ 73].X = 3.193333e+002f/600.0f*TESTAREAWIDTH; pts[ 73].Y = 2.546666e+002f/600.0f*TESTAREAHEIGHT;
  434. pts[ 74].X = 3.170666e+002f/600.0f*TESTAREAWIDTH; pts[ 74].Y = 2.558666e+002f/600.0f*TESTAREAHEIGHT;
  435. pts[ 75].X = 3.159999e+002f/600.0f*TESTAREAWIDTH; pts[ 75].Y = 2.579999e+002f/600.0f*TESTAREAHEIGHT;
  436. pts[ 76].X = 3.115999e+002f/600.0f*TESTAREAWIDTH; pts[ 76].Y = 2.668000e+002f/600.0f*TESTAREAHEIGHT;
  437. pts[ 77].X = 3.043999e+002f/600.0f*TESTAREAWIDTH; pts[ 77].Y = 2.708000e+002f/600.0f*TESTAREAHEIGHT;
  438. pts[ 78].X = 2.969999e+002f/600.0f*TESTAREAWIDTH; pts[ 78].Y = 2.769999e+002f/600.0f*TESTAREAHEIGHT;
  439. pts[ 79].X = 2.905999e+002f/600.0f*TESTAREAWIDTH; pts[ 79].Y = 2.823333e+002f/600.0f*TESTAREAHEIGHT;
  440. pts[ 80].X = 2.981333e+002f/600.0f*TESTAREAWIDTH; pts[ 80].Y = 2.784666e+002f/600.0f*TESTAREAHEIGHT;
  441. pts[ 81].X = 2.869999e+002f/600.0f*TESTAREAWIDTH; pts[ 81].Y = 2.839999e+002f/600.0f*TESTAREAHEIGHT;
  442. pts[ 82].X = 2.905999e+002f/600.0f*TESTAREAWIDTH; pts[ 82].Y = 2.823333e+002f/600.0f*TESTAREAHEIGHT;
  443. pts[ 83].X = 2.981333e+002f/600.0f*TESTAREAWIDTH; pts[ 83].Y = 2.784666e+002f/600.0f*TESTAREAHEIGHT;
  444. pts[ 84].X = 2.869999e+002f/600.0f*TESTAREAWIDTH; pts[ 84].Y = 2.839999e+002f/600.0f*TESTAREAHEIGHT;
  445. pts[ 85].X = 2.815333e+002f/600.0f*TESTAREAWIDTH; pts[ 85].Y = 2.867333e+002f/600.0f*TESTAREAHEIGHT;
  446. pts[ 86].X = 2.755333e+002f/600.0f*TESTAREAWIDTH; pts[ 86].Y = 2.874666e+002f/600.0f*TESTAREAHEIGHT;
  447. pts[ 87].X = 2.700000e+002f/600.0f*TESTAREAWIDTH; pts[ 87].Y = 2.899999e+002f/600.0f*TESTAREAHEIGHT;
  448. pts[ 88].X = 2.655213e+002f/600.0f*TESTAREAWIDTH; pts[ 88].Y = 2.920783e+002f/600.0f*TESTAREAHEIGHT;
  449. pts[ 89].X = 2.649243e+002f/600.0f*TESTAREAWIDTH; pts[ 89].Y = 2.926785e+002f/600.0f*TESTAREAHEIGHT;
  450. pts[ 90].X = 2.649243e+002f/600.0f*TESTAREAWIDTH; pts[ 90].Y = 2.928842e+002f/600.0f*TESTAREAHEIGHT;
  451. pts[ 91].X = 2.649243e+002f/600.0f*TESTAREAWIDTH; pts[ 91].Y = 2.929590e+002f/600.0f*TESTAREAHEIGHT;
  452. pts[ 92].X = 2.650032e+002f/600.0f*TESTAREAWIDTH; pts[ 92].Y = 2.929816e+002f/600.0f*TESTAREAHEIGHT;
  453. pts[ 93].X = 2.650032e+002f/600.0f*TESTAREAWIDTH; pts[ 93].Y = 2.930042e+002f/600.0f*TESTAREAHEIGHT;
  454. pts[ 94].X = 2.650032e+002f/600.0f*TESTAREAWIDTH; pts[ 94].Y = 2.930609e+002f/600.0f*TESTAREAHEIGHT;
  455. pts[ 95].X = 2.645045e+002f/600.0f*TESTAREAWIDTH; pts[ 95].Y = 2.931171e+002f/600.0f*TESTAREAHEIGHT;
  456. pts[ 96].X = 2.610000e+002f/600.0f*TESTAREAWIDTH; pts[ 96].Y = 2.939999e+002f/600.0f*TESTAREAHEIGHT;
  457. pts[ 97].X = 2.543333e+002f/600.0f*TESTAREAWIDTH; pts[ 97].Y = 2.936666e+002f/600.0f*TESTAREAHEIGHT;
  458. pts[ 98].X = 2.476666e+002f/600.0f*TESTAREAWIDTH; pts[ 98].Y = 2.935999e+002f/600.0f*TESTAREAHEIGHT;
  459. pts[ 99].X = 2.410000e+002f/600.0f*TESTAREAWIDTH; pts[ 99].Y = 2.929999e+002f/600.0f*TESTAREAHEIGHT;
  460. pts[100].X = 2.543333e+002f/600.0f*TESTAREAWIDTH; pts[100].Y = 2.936666e+002f/600.0f*TESTAREAHEIGHT;
  461. pts[101].X = 2.476666e+002f/600.0f*TESTAREAWIDTH; pts[101].Y = 2.935999e+002f/600.0f*TESTAREAHEIGHT;
  462. pts[102].X = 2.410000e+002f/600.0f*TESTAREAWIDTH; pts[102].Y = 2.929999e+002f/600.0f*TESTAREAHEIGHT;
  463. pts[103].X = 2.379333e+002f/600.0f*TESTAREAWIDTH; pts[103].Y = 2.927333e+002f/600.0f*TESTAREAHEIGHT;
  464. pts[104].X = 2.376000e+002f/600.0f*TESTAREAWIDTH; pts[104].Y = 2.913333e+002f/600.0f*TESTAREAHEIGHT;
  465. pts[105].X = 2.350000e+002f/600.0f*TESTAREAWIDTH; pts[105].Y = 2.899999e+002f/600.0f*TESTAREAHEIGHT;
  466. pts[106].X = 2.300000e+002f/600.0f*TESTAREAWIDTH; pts[106].Y = 2.875333e+002f/600.0f*TESTAREAHEIGHT;
  467. pts[107].X = 2.252000e+002f/600.0f*TESTAREAWIDTH; pts[107].Y = 2.857333e+002f/600.0f*TESTAREAHEIGHT;
  468. pts[108].X = 2.210000e+002f/600.0f*TESTAREAWIDTH; pts[108].Y = 2.819999e+002f/600.0f*TESTAREAHEIGHT;
  469. pts[109].X = 2.158666e+002f/600.0f*TESTAREAWIDTH; pts[109].Y = 2.774666e+002f/600.0f*TESTAREAHEIGHT;
  470. pts[110].X = 2.125333e+002f/600.0f*TESTAREAWIDTH; pts[110].Y = 2.706666e+002f/600.0f*TESTAREAHEIGHT;
  471. pts[111].X = 2.070000e+002f/600.0f*TESTAREAWIDTH; pts[111].Y = 2.669999e+002f/600.0f*TESTAREAHEIGHT;
  472. pts[112].X = 2.047333e+002f/600.0f*TESTAREAWIDTH; pts[112].Y = 2.635999e+002f/600.0f*TESTAREAHEIGHT;
  473. pts[113].X = 2.058666e+002f/600.0f*TESTAREAWIDTH; pts[113].Y = 2.648666e+002f/600.0f*TESTAREAHEIGHT;
  474. pts[114].X = 2.040000e+002f/600.0f*TESTAREAWIDTH; pts[114].Y = 2.629999e+002f/600.0f*TESTAREAHEIGHT;
  475. pts[115].X = 2.047333e+002f/600.0f*TESTAREAWIDTH; pts[115].Y = 2.635999e+002f/600.0f*TESTAREAHEIGHT;
  476. pts[116].X = 2.058666e+002f/600.0f*TESTAREAWIDTH; pts[116].Y = 2.648666e+002f/600.0f*TESTAREAHEIGHT;
  477. pts[117].X = 2.040000e+002f/600.0f*TESTAREAWIDTH; pts[117].Y = 2.629999e+002f/600.0f*TESTAREAHEIGHT;
  478. BYTE typs[] = {
  479. 00, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  480. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  481. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  482. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  483. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  484. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  485. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  486. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  487. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  488. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  489. 03, 03, 03, 03, 03, 03, 03, 03, 03, 03,
  490. 03, 03, 03, 03, 03, 03, 03, 03
  491. };
  492. INT count1 = count;
  493. INT offset1 = 0;
  494. // offset1 = 15;
  495. // count1 = 19;
  496. count1 -= offset1;
  497. GpPointF* pts1 = &pts[0] + offset1;
  498. BYTE* typs1 = &typs[0] + offset1;
  499. GraphicsPath* path
  500. = new GraphicsPath(pts1, typs1, count1);
  501. Matrix mat;
  502. // mat.Translate(-300, - 200);
  503. // path->Transform(&mat);
  504. Matrix mat1;
  505. // mat1.Scale(5, 5);
  506. // path->Transform(&mat1);
  507. REAL width = 20;
  508. Color color(128, 0, 0, 0);
  509. SolidBrush brush(color);
  510. Pen pen(&brush, width);
  511. pen.SetLineJoin(LineJoinRound);
  512. g->DrawPath(&pen, path);
  513. delete path;
  514. }
  515. VOID CPaths::TestLeakPath(Graphics* g)
  516. {
  517. INT count = 83;
  518. GpPointF p[83];
  519. BYTE t[83];
  520. t[0] = 0; p[0].X = 1106.0f/600.0f*TESTAREAWIDTH; p[0].Y = 1751.0f/600.0f*TESTAREAHEIGHT;
  521. t[1] = 3; p[1].X = 1083.0f/600.0f*TESTAREAWIDTH; p[1].Y = 1733.0f/600.0f*TESTAREAHEIGHT;
  522. t[2] = 3; p[2].X = 1050.0f/600.0f*TESTAREAWIDTH; p[2].Y = 1735.0f/600.0f*TESTAREAHEIGHT;
  523. t[3] = 3; p[3].X = 1029.0f/600.0f*TESTAREAWIDTH; p[3].Y = 1756.0f/600.0f*TESTAREAHEIGHT;
  524. t[4] = 3; p[4].X = 1014.0f/600.0f*TESTAREAWIDTH; p[4].Y = 1771.0f/600.0f*TESTAREAHEIGHT;
  525. t[5] = 3; p[5].X = 1009.0f/600.0f*TESTAREAWIDTH; p[5].Y = 1792.0f/600.0f*TESTAREAHEIGHT;
  526. t[6] = 3; p[6].X = 1013.0f/600.0f*TESTAREAWIDTH; p[6].Y = 1811.0f/600.0f*TESTAREAHEIGHT;
  527. t[7] = 1; p[7].X = 1014.0f/600.0f*TESTAREAWIDTH; p[7].Y = 1811.0f/600.0f*TESTAREAHEIGHT;
  528. t[8] = 3; p[8].X = 999.0f/600.0f*TESTAREAWIDTH; p[8].Y = 1811.0f/600.0f*TESTAREAHEIGHT;
  529. t[9] = 3; p[9].X = 985.0f/600.0f*TESTAREAWIDTH; p[9].Y = 1817.0f/600.0f*TESTAREAHEIGHT;
  530. t[10] = 3; p[10].X = 975.0f/600.0f*TESTAREAWIDTH; p[10].Y = 1828.0f/600.0f*TESTAREAHEIGHT;
  531. t[11] = 3; p[11].X = 952.0f/600.0f*TESTAREAWIDTH; p[11].Y = 1850.0f/600.0f*TESTAREAHEIGHT;
  532. t[12] = 3; p[12].X = 952.0f/600.0f*TESTAREAWIDTH; p[12].Y = 1887.0f/600.0f*TESTAREAHEIGHT;
  533. t[13] = 3; p[13].X = 974.0f/600.0f*TESTAREAWIDTH; p[13].Y = 1909.0f/600.0f*TESTAREAHEIGHT;
  534. t[14] = 3; p[14].X = 976.0f/600.0f*TESTAREAWIDTH; p[14].Y = 1910.0f/600.0f*TESTAREAHEIGHT;
  535. t[15] = 3; p[15].X = 977.0f/600.0f*TESTAREAWIDTH; p[15].Y = 1912.0f/600.0f*TESTAREAHEIGHT;
  536. t[16] = 3; p[16].X = 979.0f/600.0f*TESTAREAWIDTH; p[16].Y = 1913.0f/600.0f*TESTAREAHEIGHT;
  537. t[17] = 1; p[17].X = 979.0f/600.0f*TESTAREAWIDTH; p[17].Y = 1913.0f/600.0f*TESTAREAHEIGHT;
  538. t[18] = 3; p[18].X = 969.0f/600.0f*TESTAREAWIDTH; p[18].Y = 1948.0f/600.0f*TESTAREAHEIGHT;
  539. t[19] = 3; p[19].X = 978.0f/600.0f*TESTAREAWIDTH; p[19].Y = 1986.0f/600.0f*TESTAREAHEIGHT;
  540. t[20] = 3; p[20].X = 1004.0f/600.0f*TESTAREAWIDTH; p[20].Y = 2011.0f/600.0f*TESTAREAHEIGHT;
  541. t[21] = 3; p[21].X = 1017.0f/600.0f*TESTAREAWIDTH; p[21].Y = 2024.0f/600.0f*TESTAREAHEIGHT;
  542. t[22] = 3; p[22].X = 1033.0f/600.0f*TESTAREAWIDTH; p[22].Y = 2033.0f/600.0f*TESTAREAHEIGHT;
  543. t[23] = 3; p[23].X = 1051.0f/600.0f*TESTAREAWIDTH; p[23].Y = 2038.0f/600.0f*TESTAREAHEIGHT;
  544. t[24] = 1; p[24].X = 1051.0f/600.0f*TESTAREAWIDTH; p[24].Y = 2038.0f/600.0f*TESTAREAHEIGHT;
  545. t[25] = 3; p[25].X = 1044.0f/600.0f*TESTAREAWIDTH; p[25].Y = 2067.0f/600.0f*TESTAREAHEIGHT;
  546. t[26] = 3; p[26].X = 1053.0f/600.0f*TESTAREAWIDTH; p[26].Y = 2097.0f/600.0f*TESTAREAHEIGHT;
  547. t[27] = 3; p[27].X = 1074.0f/600.0f*TESTAREAWIDTH; p[27].Y = 2118.0f/600.0f*TESTAREAHEIGHT;
  548. t[28] = 3; p[28].X = 1101.0f/600.0f*TESTAREAWIDTH; p[28].Y = 2145.0f/600.0f*TESTAREAHEIGHT;
  549. t[29] = 3; p[29].X = 1114.0f/600.0f*TESTAREAWIDTH; p[29].Y = 2151.0f/600.0f*TESTAREAHEIGHT;
  550. t[30] = 3; p[30].X = 1179.0f/600.0f*TESTAREAWIDTH; p[30].Y = 2132.0f/600.0f*TESTAREAHEIGHT;
  551. t[31] = 1; p[31].X = 1178.0f/600.0f*TESTAREAWIDTH; p[31].Y = 2132.0f/600.0f*TESTAREAHEIGHT;
  552. t[32] = 3; p[32].X = 1181.0f/600.0f*TESTAREAWIDTH; p[32].Y = 2146.0f/600.0f*TESTAREAHEIGHT;
  553. t[33] = 3; p[33].X = 1188.0f/600.0f*TESTAREAWIDTH; p[33].Y = 2159.0f/600.0f*TESTAREAHEIGHT;
  554. t[34] = 3; p[34].X = 1198.0f/600.0f*TESTAREAWIDTH; p[34].Y = 2169.0f/600.0f*TESTAREAHEIGHT;
  555. t[35] = 3; p[35].X = 1228.0f/600.0f*TESTAREAWIDTH; p[35].Y = 2198.0f/600.0f*TESTAREAHEIGHT;
  556. t[36] = 3; p[36].X = 1275.0f/600.0f*TESTAREAWIDTH; p[36].Y = 2198.0f/600.0f*TESTAREAHEIGHT;
  557. t[37] = 3; p[37].X = 1305.0f/600.0f*TESTAREAWIDTH; p[37].Y = 2168.0f/600.0f*TESTAREAHEIGHT;
  558. t[38] = 1; p[38].X = 1306.0f/600.0f*TESTAREAWIDTH; p[38].Y = 2168.0f/600.0f*TESTAREAHEIGHT;
  559. t[39] = 3; p[39].X = 1341.0f/600.0f*TESTAREAWIDTH; p[39].Y = 2194.0f/600.0f*TESTAREAHEIGHT;
  560. t[40] = 3; p[40].X = 1390.0f/600.0f*TESTAREAWIDTH; p[40].Y = 2190.0f/600.0f*TESTAREAHEIGHT;
  561. t[41] = 3; p[41].X = 1422.0f/600.0f*TESTAREAWIDTH; p[41].Y = 2158.0f/600.0f*TESTAREAHEIGHT;
  562. t[42] = 3; p[42].X = 1436.0f/600.0f*TESTAREAWIDTH; p[42].Y = 2144.0f/600.0f*TESTAREAHEIGHT;
  563. t[43] = 3; p[43].X = 1445.0f/600.0f*TESTAREAWIDTH; p[43].Y = 2126.0f/600.0f*TESTAREAHEIGHT;
  564. t[44] = 3; p[44].X = 1448.0f/600.0f*TESTAREAWIDTH; p[44].Y = 2107.0f/600.0f*TESTAREAHEIGHT;
  565. t[45] = 1; p[45].X = 1448.0f/600.0f*TESTAREAWIDTH; p[45].Y = 2106.0f/600.0f*TESTAREAHEIGHT;
  566. t[46] = 3; p[46].X = 1457.0f/600.0f*TESTAREAWIDTH; p[46].Y = 2103.0f/600.0f*TESTAREAHEIGHT;
  567. t[47] = 3; p[47].X = 1465.0f/600.0f*TESTAREAWIDTH; p[47].Y = 2097.0f/600.0f*TESTAREAHEIGHT;
  568. t[48] = 3; p[48].X = 1472.0f/600.0f*TESTAREAWIDTH; p[48].Y = 2091.0f/600.0f*TESTAREAHEIGHT;
  569. t[49] = 3; p[49].X = 1494.0f/600.0f*TESTAREAWIDTH; p[49].Y = 2068.0f/600.0f*TESTAREAHEIGHT;
  570. t[50] = 3; p[50].X = 1499.0f/600.0f*TESTAREAWIDTH; p[50].Y = 2033.0f/600.0f*TESTAREAHEIGHT;
  571. t[51] = 3; p[51].X = 1484.0f/600.0f*TESTAREAWIDTH; p[51].Y = 2006.0f/600.0f*TESTAREAHEIGHT;
  572. t[52] = 1; p[52].X = 1489.0f/600.0f*TESTAREAWIDTH; p[52].Y = 2006.0f/600.0f*TESTAREAHEIGHT;
  573. t[53] = 3; p[53].X = 1502.0f/600.0f*TESTAREAWIDTH; p[53].Y = 1981.0f/600.0f*TESTAREAHEIGHT;
  574. t[54] = 3; p[54].X = 1499.0f/600.0f*TESTAREAWIDTH; p[54].Y = 1946.0f/600.0f*TESTAREAHEIGHT;
  575. t[55] = 3; p[55].X = 1478.0f/600.0f*TESTAREAWIDTH; p[55].Y = 1925.0f/600.0f*TESTAREAHEIGHT;
  576. t[56] = 3; p[56].X = 1464.0f/600.0f*TESTAREAWIDTH; p[56].Y = 1911.0f/600.0f*TESTAREAHEIGHT;
  577. t[57] = 3; p[57].X = 1446.0f/600.0f*TESTAREAWIDTH; p[57].Y = 1905.0f/600.0f*TESTAREAHEIGHT;
  578. t[58] = 3; p[58].X = 1427.0f/600.0f*TESTAREAWIDTH; p[58].Y = 1907.0f/600.0f*TESTAREAHEIGHT;
  579. t[59] = 1; p[59].X = 1429.0f/600.0f*TESTAREAWIDTH; p[59].Y = 1907.0f/600.0f*TESTAREAHEIGHT;
  580. t[60] = 3; p[60].X = 1430.0f/600.0f*TESTAREAWIDTH; p[60].Y = 1889.0f/600.0f*TESTAREAHEIGHT;
  581. t[61] = 3; p[61].X = 1424.0f/600.0f*TESTAREAWIDTH; p[61].Y = 1871.0f/600.0f*TESTAREAHEIGHT;
  582. t[62] = 3; p[62].X = 1412.0f/600.0f*TESTAREAWIDTH; p[62].Y = 1859.0f/600.0f*TESTAREAHEIGHT;
  583. t[63] = 3; p[63].X = 1396.0f/600.0f*TESTAREAWIDTH; p[63].Y = 1843.0f/600.0f*TESTAREAHEIGHT;
  584. t[64] = 3; p[64].X = 1374.0f/600.0f*TESTAREAWIDTH; p[64].Y = 1838.0f/600.0f*TESTAREAHEIGHT;
  585. t[65] = 3; p[65].X = 1353.0f/600.0f*TESTAREAWIDTH; p[65].Y = 1845.0f/600.0f*TESTAREAHEIGHT;
  586. t[66] = 1; p[66].X = 1352.0f/600.0f*TESTAREAWIDTH; p[66].Y = 1846.0f/600.0f*TESTAREAHEIGHT;
  587. t[67] = 3; p[67].X = 1352.0f/600.0f*TESTAREAWIDTH; p[67].Y = 1828.0f/600.0f*TESTAREAHEIGHT;
  588. t[68] = 3; p[68].X = 1345.0f/600.0f*TESTAREAWIDTH; p[68].Y = 1810.0f/600.0f*TESTAREAHEIGHT;
  589. t[69] = 3; p[69].X = 1332.0f/600.0f*TESTAREAWIDTH; p[69].Y = 1797.0f/600.0f*TESTAREAHEIGHT;
  590. t[70] = 3; p[70].X = 1314.0f/600.0f*TESTAREAWIDTH; p[70].Y = 1779.0f/600.0f*TESTAREAHEIGHT;
  591. t[71] = 3; p[71].X = 1287.0f/600.0f*TESTAREAWIDTH; p[71].Y = 1773.0f/600.0f*TESTAREAHEIGHT;
  592. t[72] = 3; p[72].X = 1262.0f/600.0f*TESTAREAWIDTH; p[72].Y = 1781.0f/600.0f*TESTAREAHEIGHT;
  593. t[73] = 1; p[73].X = 1262.0f/600.0f*TESTAREAWIDTH; p[73].Y = 1781.0f/600.0f*TESTAREAHEIGHT;
  594. t[74] = 3; p[74].X = 1258.0f/600.0f*TESTAREAWIDTH; p[74].Y = 1766.0f/600.0f*TESTAREAHEIGHT;
  595. t[75] = 3; p[75].X = 1250.0f/600.0f*TESTAREAWIDTH; p[75].Y = 1752.0f/600.0f*TESTAREAHEIGHT;
  596. t[76] = 3; p[76].X = 1239.0f/600.0f*TESTAREAWIDTH; p[76].Y = 1741.0f/600.0f*TESTAREAHEIGHT;
  597. t[77] = 3; p[77].X = 1205.0f/600.0f*TESTAREAWIDTH; p[77].Y = 1706.0f/600.0f*TESTAREAHEIGHT;
  598. t[78] = 3; p[78].X = 1149.0f/600.0f*TESTAREAWIDTH; p[78].Y = 1707.0f/600.0f*TESTAREAHEIGHT;
  599. t[79] = 3; p[79].X = 1114.0f/600.0f*TESTAREAWIDTH; p[79].Y = 1742.0f/600.0f*TESTAREAHEIGHT;
  600. t[80] = 3; p[80].X = 1111.0f/600.0f*TESTAREAWIDTH; p[80].Y = 1745.0f/600.0f*TESTAREAHEIGHT;
  601. t[81] = 3; p[81].X = 1108.0f/600.0f*TESTAREAWIDTH; p[81].Y = 1748.0f/600.0f*TESTAREAHEIGHT;
  602. t[82] = 0x83; p[82].X = 1106.0f/600.0f*TESTAREAWIDTH; p[82].Y = 1751.0f/600.0f*TESTAREAHEIGHT;
  603. INT count1 = count;
  604. INT offset1 = 0;
  605. count1 -= offset1;
  606. GpPointF* pts1 = &p[0] + offset1;
  607. BYTE* typs1 = &t[0] + offset1;
  608. GraphicsPath* path
  609. = new GraphicsPath(pts1, typs1, count1);
  610. RectF rect;
  611. path->GetBounds(&rect);
  612. Matrix m;
  613. m.Scale(0.8f, 0.8f);
  614. m.Scale(TESTAREAWIDTH/rect.Width, TESTAREAHEIGHT/rect.Height);
  615. m.Translate(-rect.X, -rect.Y);
  616. path->Transform(&m);
  617. REAL width = 6;
  618. Color color(128, 0, 0, 0);
  619. SolidBrush brush(color);
  620. Pen pen(&brush, width);
  621. pen.SetLineJoin(LineJoinRound);
  622. g->DrawPath(&pen, path);
  623. delete path;
  624. }
  625. VOID CPaths::TestExcelCurvePath(Graphics *g)
  626. {
  627. INT count = 9;
  628. PointF p[9];
  629. BYTE t[] = {00, 01, 03, 03, 03, 03, 03, 03, 01};
  630. p[0].X = 4.070000e+002f/600.0f*TESTAREAWIDTH; p[0].Y = 8.400000e+001f/600.0f*TESTAREAHEIGHT;
  631. p[1].X = 1.324267e+002f/600.0f*TESTAREAWIDTH; p[1].Y = 1.177392e+002f/600.0f*TESTAREAHEIGHT;
  632. p[2].X = 1.324267e+002f/600.0f*TESTAREAWIDTH; p[2].Y = 1.196965e+002f/600.0f*TESTAREAHEIGHT;
  633. p[3].X = 1.332627e+002f/600.0f*TESTAREAWIDTH; p[3].Y = 1.217801e+002f/600.0f*TESTAREAHEIGHT;
  634. p[4].X = 1.350000e+002f/600.0f*TESTAREAWIDTH; p[4].Y = 1.240000e+002f/600.0f*TESTAREAHEIGHT;
  635. p[5].X = 1.590000e+002f/600.0f*TESTAREAWIDTH; p[5].Y = 1.546667e+002f/600.0f*TESTAREAHEIGHT;
  636. p[6].X = 3.550000e+002f/600.0f*TESTAREAWIDTH; p[6].Y = 2.113333e+002f/600.0f*TESTAREAHEIGHT;
  637. p[7].X = 5.510000e+002f/600.0f*TESTAREAWIDTH; p[7].Y = 2.680000e+002f/600.0f*TESTAREAHEIGHT;
  638. p[8].X = 5.510000e+002f/600.0f*TESTAREAWIDTH; p[8].Y = 2.680000e+002f/600.0f*TESTAREAHEIGHT;
  639. GraphicsPath* path
  640. = new GraphicsPath(p, t, count);
  641. REAL width = 1;
  642. Color color(128, 0, 0, 0);
  643. SolidBrush brush(color);
  644. Pen pen(&brush, width);
  645. g->DrawPath(&pen, path);
  646. delete path;
  647. }
  648. VOID CPaths::TestDegenerateBezierPath(Graphics *g)
  649. {
  650. REAL width = 4; // Pen width
  651. Point points[4];
  652. GraphicsPath* path = new GraphicsPath(FillModeWinding);
  653. points[0].X = INT_MIN; points[0].Y = INT_MAX;
  654. points[1].X = INT_MIN; points[1].Y = INT_MIN;
  655. points[2].X = INT_MIN; points[2].Y = INT_MIN;
  656. points[3].X = INT_MIN; points[3].Y = INT_MIN;
  657. path->AddBeziers(points, 4);
  658. Color blackColor(128, 0, 0, 0);
  659. SolidBrush blackBrush(blackColor);
  660. Color yellowColor(128, 255, 255, 0);
  661. SolidBrush yellowBrush(yellowColor);
  662. width = 6;
  663. Pen blackPen(&blackBrush, width);
  664. g->FillPath(&yellowBrush, path);
  665. // g->DrawPath(&blackPen, path);
  666. g->DrawBezier(&blackPen, points[0], points[1], points[2], points[3]);
  667. delete path;
  668. }
  669. VOID TestEscherNewPath(Graphics* g)
  670. {
  671. INT count = 0x2b;
  672. PointF p[0x2b];
  673. BYTE t[0x2b];
  674. memset(&t[0], 3, count);
  675. t[0] = 0;
  676. p[0x00].X = 0.0000f; p[0x00].Y = 118.667f;
  677. p[0x01].X = 96.9648f; p[0x01].Y = 161.683f;
  678. p[0x02].X = 193.482f; p[0x02].Y = 204.793f;
  679. p[0x03].X = 232.976f; p[0x03].Y = 205.164f;
  680. p[0x04].X = 96.9648f; p[0x04].Y = 161.683f;
  681. p[0x05].X = 193.482f; p[0x05].Y = 204.793f;
  682. p[0x06].X = 232.976f; p[0x06].Y = 205.164f;
  683. p[0x07].X = 272.470f; p[0x07].Y = 205.534f;
  684. p[0x08].X = 233.440f; p[0x08].Y = 132.202f;
  685. p[0x09].X = 236.777f; p[0x09].Y = 120.799f;
  686. p[0x0a].X = 240.115f; p[0x0a].Y = 109.396f;
  687. p[0x0b].X = 246.233f; p[0x0b].Y = 126.083f;
  688. p[0x0c].X = 252.908f; p[0x0c].Y = 136.467f;
  689. p[0x0d].X = 259.583f; p[0x0d].Y = 146.850f;
  690. p[0x0e].X = 276.456f; p[0x0e].Y = 182.357f;
  691. p[0x0f].X = 276.827f; p[0x0f].Y = 182.914f;
  692. p[0x10].X = 259.583f; p[0x10].Y = 146.850f;
  693. p[0x11].X = 276.456f; p[0x11].Y = 182.357f;
  694. p[0x12].X = 276.827f; p[0x12].Y = 182.914f;
  695. p[0x13].X = 276.829f; p[0x13].Y = 182.917f;
  696. p[0x14].X = 276.831f; p[0x14].Y = 182.918f;
  697. p[0x15].X = 276.831f; p[0x15].Y = 182.918f;
  698. p[0x16].X = 276.832f; p[0x16].Y = 182.918f;
  699. p[0x17].X = 276.832f; p[0x17].Y = 182.917f;
  700. p[0x18].X = 276.832f; p[0x18].Y = 182.916f;
  701. p[0x19].X = 276.832f; p[0x19].Y = 182.546f;
  702. p[0x1a].X = 260.180f; p[0x1a].Y = 139.438f;
  703. p[0x1b].X = 255.890f; p[0x1b].Y = 139.438f;
  704. p[0x1c].X = 255.616f; p[0x1c].Y = 139.438f;
  705. p[0x1d].X = 255.392f; p[0x1d].Y = 139.614f;
  706. p[0x1e].X = 255.226f; p[0x1e].Y = 139.990f;
  707. p[0x1f].X = 252.445f; p[0x1f].Y = 146.294f;
  708. p[0x20].X = 256.524f; p[0x20].Y = 210.077f;
  709. p[0x21].X = 259.861f; p[0x21].Y = 220.831f;
  710. p[0x22].X = 263.199f; p[0x22].Y = 231.585f;
  711. p[0x23].X = 270.523f; p[0x23].Y = 207.296f;
  712. p[0x24].X = 275.066f; p[0x24].Y = 204.422f;
  713. p[0x25].X = 277.365f; p[0x25].Y = 202.967f;
  714. p[0x26].X = 279.427f; p[0x26].Y = 202.486f;
  715. p[0x27].X = 281.383f; p[0x27].Y = 202.486f;
  716. p[0x28].X = 283.292f; p[0x28].Y = 202.486f;
  717. p[0x29].X = 285.101f; p[0x29].Y = 202.944f;
  718. p[0x2a].X = 286.932f; p[0x2a].Y = 203.402f;
  719. GraphicsPath* path
  720. = new GraphicsPath(p, t, count);
  721. REAL width = 0.555903f;
  722. Color color(128, 0, 0, 0);
  723. SolidBrush brush(color);
  724. Pen pen(&brush, width);
  725. path->Widen(&pen);
  726. g->FillPath(&brush, path);
  727. // g->DrawPath(&pen, path);
  728. delete path;
  729. }
  730. VOID CPaths::TestPie(Graphics *g)
  731. {
  732. // Provided by good old Nolan
  733. Color c(0xff, 0xff, 0, 0);
  734. SolidBrush b(c);
  735. Pen p(&b, 10.0f);
  736. Status status = g->DrawPie(&p, 75, 350, 800, 110, 180, 0);
  737. // ASSERT(status == Ok);
  738. }