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