444e1e6066e765db76f854651ffc19418122af1d
[mono.git] / mcs / class / System.Drawing / Test / System.Drawing.Drawing2D / TestHatchBrush.cs
1 //
2 // System.Drawing.Drawing2D.TestHatchBrush.cs 
3 //
4 // Author:
5 //      Ravindra (rkumar@novell.com)
6 //
7 // Copyright (C) 2004,2006 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29
30 using System;
31 using System.IO;
32 using System.Drawing;
33 using System.Drawing.Imaging;
34 using System.Drawing.Drawing2D;
35 using System.Security.Permissions;
36 using NUnit.Framework;
37
38 namespace MonoTests.System.Drawing.Drawing2D
39 {
40         [TestFixture]
41         [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
42         public class HatchBrushTest {
43                 Graphics gr;
44                 Bitmap bmp;
45                 Font font;
46                 Color bgColor;  // background color
47                 Color fgColor;  // foreground color
48                 int currentTop; // the location for next drawing operation
49                 int spacing;    // space between two consecutive drawing operations
50                 int fontSize;   // text size
51                 int textStart;  // text starting location
52                 int lineStart;  // line starting location
53                 int length;     // length of the line
54                 int penWidth;   // width of the Pen used to draw lines
55
56
57                 public HatchBrushTest ()
58                 {
59                         fontSize = 16;
60                         textStart = 10;
61                         lineStart = 200;
62                         length = 400;
63                         penWidth = 50;
64                         currentTop = 0;
65                         spacing = 50;
66
67                         bgColor = Color.Yellow;
68                         fgColor = Color.Red;
69                 }
70
71                 [Test]
72                 public void TestProperties () 
73                 {
74                         HatchBrush hbr = new HatchBrush(HatchStyle.SolidDiamond, fgColor);
75
76                         Assert.AreEqual (hbr.HatchStyle, HatchStyle.SolidDiamond, "Props#1");
77                         Assert.AreEqual (hbr.ForegroundColor.ToArgb (), fgColor.ToArgb (), "Props#2");
78                         Assert.AreEqual (hbr.BackgroundColor.ToArgb (), Color.Black.ToArgb (), "Props#3");
79
80                         hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
81
82                         Assert.AreEqual (hbr.HatchStyle, HatchStyle.Cross, "Props#4");
83                         Assert.AreEqual (hbr.ForegroundColor.ToArgb (), fgColor.ToArgb (), "Props#5");
84                         Assert.AreEqual (hbr.BackgroundColor.ToArgb (), bgColor.ToArgb (), "Props#6");
85                 }
86
87                 [Test]
88                 public void TestClone ()
89                 {
90                         HatchBrush hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
91
92                         HatchBrush clone = (HatchBrush) hbr.Clone ();
93
94                         Assert.AreEqual (hbr.HatchStyle, clone.HatchStyle, "Clone#1");
95                         Assert.AreEqual (hbr.ForegroundColor, clone.ForegroundColor, "Clone#2");
96                         Assert.AreEqual (hbr.BackgroundColor, clone.BackgroundColor, "Clone#3");
97                 }
98
99                 [Test]
100 #if TARGET_JVM
101                 [Category ("NotWorking")]
102 #endif
103                 public void TestDrawing ()
104                 {
105                         // create a bitmap with big enough dimensions 
106                         // to accomodate all the tests
107                         bmp = new Bitmap (700, 6000); // width, height
108                         gr = Graphics.FromImage (bmp);
109                         try {
110                                 font = new Font (new FontFamily ("Arial"), fontSize);
111                         }
112                         catch (ArgumentException) {
113                                 Assert.Ignore ("Arial FontFamily couldn't be found");
114                         }
115
116                         // make the background white
117                         gr.Clear (Color.White);
118
119                         // draw figures using hatch brush constructed
120                         // using different constructors
121                         Constructors ();
122
123                         // draw figures using different hatchstyles
124                         HatchStyles ();
125
126                         // save the drawing
127                         string file =  "TestHatchBrush" + getOutSufix() + ".png";
128                         bmp.Save (file, ImageFormat.Png);
129                         File.Delete (file);
130                 }
131
132                 private void Constructors ()
133                 {
134                         int top = currentTop;
135                         SolidBrush br = new SolidBrush (Color.Black);
136
137                         top += spacing;
138
139                         gr.DrawString ("Test Constructors", font, br, textStart, top);
140
141                         // #1
142                         top += spacing;
143                         gr.DrawString ("Test #1 Horizontal, BackgroundColor=Black, ForegroundColor=White", font, br, textStart, top);
144
145                         top += spacing;
146                         Pen pen = new Pen (new HatchBrush (HatchStyle.Horizontal, Color.White), penWidth);
147                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
148
149                         // #2
150                         top += spacing;
151                         gr.DrawString ("Test #2 Vertical, BackgroundColor=Blue, ForegroundColor=Red", font, br, textStart, top);
152                         
153                         top += spacing;
154                         pen = new Pen (new HatchBrush (HatchStyle.Vertical, Color.Red, Color.Blue), penWidth);
155                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
156
157                         currentTop = top;
158                 }
159
160                 private void HatchStyles ()
161                 {
162                         int top = currentTop;
163                         HatchBrush hbr;
164                         Pen pen;
165                         SolidBrush br = new SolidBrush (Color.Black);
166
167                         top += spacing;
168
169                         gr.DrawString ("Test HatchStyles", font, br, textStart, top);
170
171                         // #1
172                         top += spacing;
173                         gr.DrawString ("Test #1 Horizontal", font, br, textStart, top);
174
175                         top += spacing;
176                         hbr = new HatchBrush (HatchStyle.Horizontal, fgColor, bgColor);
177                         pen = new Pen (hbr, penWidth);
178                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
179
180                         // #2
181                         top += spacing;
182                         gr.DrawString ("Test #2 Min", font, br, textStart, top);
183                         
184                         top += spacing;
185                         pen.Brush = new HatchBrush (HatchStyle.Min, fgColor, bgColor);
186                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
187
188                         // #3
189                         top += spacing;
190                         gr.DrawString ("Test #3 DarkHorizontal", font, br, textStart, top);
191
192                         top += spacing;
193                         pen.Brush = new HatchBrush (HatchStyle.DarkHorizontal, fgColor, bgColor);
194                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
195
196                         // #4
197                         top += spacing;
198                         gr.DrawString ("Test #4 LightHorizontal", font, br, textStart, top);
199
200                         top += spacing;
201                         pen.Brush = new HatchBrush (HatchStyle.LightHorizontal, fgColor, bgColor);
202                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
203
204                         // #5
205                         top += spacing;
206                         gr.DrawString ("Test #5 NarrowHorizontal", font, br, textStart, top);
207
208                         top += spacing;
209                         pen.Brush = new HatchBrush (HatchStyle.NarrowHorizontal, fgColor, bgColor);
210                         gr.DrawLine (pen, lineStart,top, lineStart + length,top);
211
212                         // #6
213                         top += spacing;
214                         gr.DrawString ("Test #6 Vertical", font, br, textStart, top);
215
216                         top += spacing;
217                         pen.Brush = new HatchBrush (HatchStyle.Vertical, fgColor, bgColor);
218                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
219
220                         // #7
221                         top += spacing;
222                         gr.DrawString ("Test #7 DarkVertical", font, br, textStart, top);
223
224                         top += spacing;
225                         pen.Brush = new HatchBrush (HatchStyle.DarkVertical, fgColor, bgColor);
226                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
227
228                         // #8
229                         top += spacing;
230                         gr.DrawString ("Test #8 LightVertical", font, br, textStart, top);
231
232                         top += spacing;
233                         pen.Brush = new HatchBrush (HatchStyle.LightVertical, fgColor, bgColor);
234                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
235
236                         // #9
237                         top += spacing;
238                         gr.DrawString ("Test #9 NarrowVertical", font, br, textStart, top);
239
240                         top += spacing;
241                         pen.Brush = new HatchBrush (HatchStyle.NarrowVertical, fgColor, bgColor);
242                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
243
244                         // #10
245                         top += spacing;
246                         gr.DrawString ("Test #10 Cross", font, br, textStart, top);
247
248                         top += spacing;
249                         pen.Brush = new HatchBrush (HatchStyle.Cross, fgColor, bgColor);
250                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
251
252                         // #11
253                         top += spacing;
254                         gr.DrawString ("Test #11 LargeGrid", font, br, textStart, top);
255
256                         top += spacing;
257                         pen.Brush = new HatchBrush (HatchStyle.LargeGrid, fgColor, bgColor);
258                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
259
260                         // #12
261                         top += spacing;
262                         gr.DrawString ("Test #12 SmallGrid", font, br, textStart, top);
263                         
264                         top += spacing;
265                         pen.Brush = new HatchBrush (HatchStyle.SmallGrid, fgColor, bgColor);
266                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
267
268                         // #13
269                         top += spacing;
270                         gr.DrawString ("Test #13 DottedGrid", font, br, textStart, top);
271                         
272                         top += spacing;
273                         pen.Brush = new HatchBrush (HatchStyle.DottedGrid, fgColor, bgColor);
274                         gr.DrawLine (pen, lineStart,top, lineStart + length,top);
275
276                         // #14
277                         top += spacing;
278                         gr.DrawString ("Test #14 DiagonalCross", font, br, textStart, top);
279
280                         top += spacing;
281                         pen.Brush = new HatchBrush (HatchStyle.DiagonalCross, fgColor, bgColor);
282                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
283
284                         // #15
285                         top += spacing;
286                         gr.DrawString ("Test #15 BackwardDiagonal", font, br, textStart, top);
287
288                         top += spacing;
289                         pen.Brush = new HatchBrush (HatchStyle.BackwardDiagonal, fgColor, bgColor);
290                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
291
292                         // #16
293                         top += spacing;
294                         gr.DrawString ("Test #16 ForwardDiagonal", font, br, textStart, top);
295
296                         top += spacing;
297                         pen.Brush = new HatchBrush (HatchStyle.ForwardDiagonal, fgColor, bgColor);
298                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
299
300                         // #17
301                         top += spacing;
302                         gr.DrawString ("Test #17 LightDownwardDiagonal", font, br, textStart, top);
303
304                         top += spacing;
305                         pen.Brush = new HatchBrush (HatchStyle.LightDownwardDiagonal, fgColor, bgColor);
306                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
307
308                         // #18
309                         top += spacing;
310                         gr.DrawString ("Test #18 DarkDownwardDiagonal", font, br, textStart, top);
311
312                         top += spacing;
313                         pen.Brush = new HatchBrush (HatchStyle.DarkDownwardDiagonal, fgColor, bgColor);
314                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
315
316                         // #19
317                         top += spacing;
318                         gr.DrawString ("Test #19 WideDownwardDiagonal", font, br, textStart, top);
319
320                         top += spacing;
321                         pen.Brush = new HatchBrush (HatchStyle.WideDownwardDiagonal, fgColor, bgColor);
322                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
323
324                         // #20
325                         top += spacing;
326                         gr.DrawString ("Test #20 LightUpwardDiagonal", font, br, textStart, top);
327
328                         top += spacing;
329                         pen.Brush = new HatchBrush (HatchStyle.LightUpwardDiagonal, fgColor, bgColor);
330                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
331
332                         // #21
333                         top += spacing;
334                         gr.DrawString ("Test #21 DarkUpwardDiagonal", font, br, textStart, top);
335
336                         top += spacing;
337                         pen.Brush = new HatchBrush (HatchStyle.DarkUpwardDiagonal, fgColor, bgColor);
338                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
339
340                         // #22
341                         top += spacing;
342                         gr.DrawString ("Test #22 WideUpwardDiagonal", font, br, textStart, top);
343
344                         top += spacing;
345                         pen.Brush = new HatchBrush (HatchStyle.WideUpwardDiagonal, fgColor, bgColor);
346                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
347
348                         // #23
349                         top += spacing;
350                         gr.DrawString ("Test #23 DashedHorizontal", font, br, textStart, top);
351                         
352                         top += spacing;
353                         pen.Brush = new HatchBrush (HatchStyle.DashedHorizontal, fgColor, bgColor);
354                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
355
356                         // #24
357                         top += spacing;
358                         gr.DrawString ("Test #24 DashedVertical", font, br, textStart, top);
359                         
360                         top += spacing;
361                         hbr = new HatchBrush (HatchStyle.DashedVertical, fgColor, bgColor);
362                         gr.FillRectangle (hbr, lineStart, top, length, penWidth);
363
364                         // #25
365                         top += spacing;
366                         gr.DrawString ("Test #25 DashedDownwardDiagonal", font, br, textStart, top);
367                         
368                         top += spacing;
369                         hbr = new HatchBrush (HatchStyle.DashedDownwardDiagonal, fgColor, bgColor);
370                         gr.FillRectangle (hbr, lineStart, top, length, penWidth);
371
372                         // #26
373                         top += spacing;
374                         gr.DrawString ("Test #26 DashedUpwardDiagonal", font, br, textStart, top);
375                         
376                         top += spacing;
377                         pen = new Pen (new HatchBrush (HatchStyle.DashedUpwardDiagonal, fgColor, bgColor), penWidth);
378                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
379
380                         // #27
381                         top += spacing;
382                         gr.DrawString ("Test #27 05Percent", font, br, textStart, top);
383                         
384                         top += spacing;
385                         pen = new Pen (new HatchBrush (HatchStyle.Percent05, fgColor, bgColor), penWidth);
386                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
387
388                         // #28
389                         top += spacing;
390                         gr.DrawString ("Test #28 10Percent", font, br, textStart, top);
391                         
392                         top += spacing;
393                         pen = new Pen (new HatchBrush (HatchStyle.Percent10, fgColor, bgColor), penWidth);
394                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
395
396                         // #29
397                         top += spacing;
398                         gr.DrawString ("Test #29 20Percent", font, br, textStart, top);
399                         
400                         top += spacing;
401                         pen = new Pen (new HatchBrush (HatchStyle.Percent20, fgColor, bgColor), penWidth);
402                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
403
404                         // #30
405                         top += spacing;
406                         gr.DrawString ("Test #30 25Percent", font, br, textStart, top);
407                         
408                         top += spacing;
409                         pen = new Pen (new HatchBrush (HatchStyle.Percent25, fgColor, bgColor), penWidth);
410                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
411
412                         // #31
413                         top += spacing;
414                         gr.DrawString ("Test #31 30Percent", font, br, textStart, top);
415                         
416                         top += spacing;
417                         pen = new Pen (new HatchBrush (HatchStyle.Percent30, fgColor, bgColor), penWidth);
418                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
419
420                         // #32
421                         top += spacing;
422                         gr.DrawString ("Test #32 40Percent", font, br, textStart, top);
423                         
424                         top += spacing;
425                         pen = new Pen (new HatchBrush (HatchStyle.Percent40, fgColor, bgColor), penWidth);
426                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
427
428                         // #33
429                         top += spacing;
430                         gr.DrawString ("Test #33 50Percent", font, br, textStart, top);
431                         
432                         top += spacing;
433                         pen = new Pen (new HatchBrush (HatchStyle.Percent50, fgColor, bgColor), penWidth);
434                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
435
436                         // #34
437                         top += spacing;
438                         gr.DrawString ("Test #34 60Percent", font, br, textStart, top);
439                         
440                         top += spacing;
441                         pen = new Pen (new HatchBrush (HatchStyle.Percent60, fgColor, bgColor), penWidth);
442                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
443
444                         // #35
445                         top += spacing;
446                         gr.DrawString ("Test #35 70Percent", font, br, textStart, top);
447                         
448                         top += spacing;
449                         pen = new Pen (new HatchBrush (HatchStyle.Percent70, fgColor, bgColor), penWidth);
450                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
451
452                         // #36
453                         top += spacing;
454                         gr.DrawString ("Test #36 75Percent", font, br, textStart, top);
455                         
456                         top += spacing;
457                         pen = new Pen (new HatchBrush (HatchStyle.Percent75, fgColor, bgColor), penWidth);
458                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
459
460                         // #37
461                         top += spacing;
462                         gr.DrawString ("Test #37 80Percent", font, br, textStart, top);
463                         
464                         top += spacing;
465                         pen = new Pen (new HatchBrush (HatchStyle.Percent80, fgColor, bgColor), penWidth);
466                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
467
468                         // #38
469                         top += spacing;
470                         gr.DrawString ("Test #38 90Percent", font, br, textStart, top);
471                         
472                         top += spacing;
473                         pen = new Pen (new HatchBrush (HatchStyle.Percent90, fgColor, bgColor), penWidth);
474                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
475
476                         // #39
477                         top += spacing;
478                         gr.DrawString ("Test #39 SmallConfetti", font, br, textStart, top);
479                         
480                         top += spacing;
481                         pen = new Pen (new HatchBrush (HatchStyle.SmallConfetti, fgColor, bgColor), penWidth);
482                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
483
484                         // #40
485                         top += spacing;
486                         gr.DrawString ("Test #40 LargeConfetti", font, br, textStart, top);
487                         
488                         top += spacing;
489                         pen = new Pen (new HatchBrush (HatchStyle.LargeConfetti, fgColor, bgColor), penWidth);
490                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
491
492                         // #41
493                         top += spacing;
494                         gr.DrawString ("Test #41 ZigZag", font, br, textStart, top);
495                         
496                         top += spacing;
497                         pen = new Pen (new HatchBrush (HatchStyle.ZigZag, fgColor, bgColor), penWidth);
498                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
499
500                         // #42
501                         top += spacing;
502                         gr.DrawString ("Test #42 Wave", font, br, textStart, top);
503                         
504                         top += spacing;
505                         pen = new Pen (new HatchBrush (HatchStyle.Wave, fgColor, bgColor), penWidth);
506                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
507
508                         // #43
509                         top += spacing;
510                         gr.DrawString ("Test #43 HorizontalBrick", font, br, textStart, top);
511                         
512                         top += spacing;
513                         pen = new Pen (new HatchBrush (HatchStyle.HorizontalBrick, fgColor, bgColor), penWidth);
514                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
515
516                         // #44
517                         top += spacing;
518                         gr.DrawString ("Test #44 DiagonalBrick", font, br, textStart, top);
519                         
520                         top += spacing;
521                         pen = new Pen (new HatchBrush (HatchStyle.DiagonalBrick, fgColor, bgColor), penWidth);
522                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
523
524                         // #45
525                         top += spacing;
526                         gr.DrawString ("Test #45 Weave", font, br, textStart, top);
527                         
528                         top += spacing;
529                         pen = new Pen (new HatchBrush (HatchStyle.Weave, fgColor, bgColor), penWidth);
530                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
531
532                         // #46
533                         top += spacing;
534                         gr.DrawString ("Test #46 Plaid", font, br, textStart, top);
535                         
536                         top += spacing;
537                         pen = new Pen (new HatchBrush (HatchStyle.Plaid, fgColor, bgColor), penWidth);
538                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
539
540                         // #47
541                         top += spacing;
542                         gr.DrawString ("Test #47 Divot", font, br, textStart, top);
543                         
544                         top += spacing;
545                         pen = new Pen (new HatchBrush (HatchStyle.Divot, fgColor, bgColor), penWidth);
546                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
547
548                         // #48
549                         top += spacing;
550                         gr.DrawString ("Test #48 SmallCheckerBoard", font, br, textStart, top);
551                         
552                         top += spacing;
553                         pen.Brush = new HatchBrush (HatchStyle.SmallCheckerBoard, fgColor, bgColor);
554                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
555
556                         // #49
557                         top += spacing;
558                         gr.DrawString ("Test #49 LargeCheckerBoard", font, br, textStart, top);
559                         
560                         top += spacing;
561                         pen.Brush = new HatchBrush (HatchStyle.LargeCheckerBoard, fgColor, bgColor);
562                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
563
564                         // #50
565                         top += spacing;
566                         gr.DrawString ("Test #50 OutlinedDiamond", font, br, textStart, top);
567                         
568                         top += spacing;
569                         pen.Brush = new HatchBrush (HatchStyle.OutlinedDiamond, fgColor, bgColor);
570                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
571
572                         // #51
573                         top += spacing;
574                         gr.DrawString ("Test #51 SolidDiamond", font, br, textStart, top);
575                         
576                         top += spacing;
577                         pen.Brush = new HatchBrush (HatchStyle.SolidDiamond, fgColor, bgColor);
578                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
579
580                         // #52
581                         top += spacing;
582                         gr.DrawString ("Test #52 DottedDiamond", font, br, textStart, top);
583                         
584                         top += spacing;
585                         pen.Brush = new HatchBrush (HatchStyle.DottedDiamond, fgColor, bgColor);
586                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
587
588                         // #53
589                         top += spacing;
590                         gr.DrawString ("Test #53 Shingle", font, br, textStart, top);
591                         
592                         top += spacing;
593                         pen.Brush = new HatchBrush (HatchStyle.Shingle, fgColor, bgColor);
594                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
595
596                         // #54
597                         top += spacing;
598                         gr.DrawString ("Test #54 Trellis", font, br, textStart, top);
599                         
600                         top += spacing;
601                         pen.Brush = new HatchBrush (HatchStyle.Trellis, fgColor, bgColor);
602                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
603
604                         // #55
605                         top += spacing;
606                         gr.DrawString ("Test #55 Sphere", font, br, textStart, top);
607                         
608                         top += spacing;
609                         pen.Brush = new HatchBrush (HatchStyle.Sphere, fgColor, bgColor);
610                         gr.DrawLine (pen, lineStart, top, lineStart + length, top);
611
612                         currentTop = top;
613                 }
614
615                 internal string getOutSufix()
616                 {
617                         string s;
618
619                         int p = (int) Environment.OSVersion.Platform;
620                         if ((p == 4) || (p == 128) || (p == 6))
621                                 s = "-unix";
622                         else
623                                 s = "-windows";
624
625                         if (Type.GetType ("Mono.Runtime", false) == null)
626                                 s += "-msnet";
627                         else
628                                 s += "-mono";
629
630                         return s;
631                 }
632         }
633 }