2 // System.Drawing.Drawing2D.TestHatchBrush.cs
5 // Ravindra (rkumar@novell.com)
7 // Copyright (C) 2004,2006 Novell, Inc (http://www.novell.com)
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:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
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.
33 using System.Drawing.Imaging;
34 using System.Drawing.Drawing2D;
35 using System.Security.Permissions;
36 using NUnit.Framework;
38 namespace MonoTests.System.Drawing.Drawing2D
41 [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
42 public class HatchBrushTest {
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
57 public HatchBrushTest ()
67 bgColor = Color.Yellow;
72 public void TestProperties ()
74 HatchBrush hbr = new HatchBrush(HatchStyle.SolidDiamond, fgColor);
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");
80 hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
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");
88 public void TestClone ()
90 HatchBrush hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
92 HatchBrush clone = (HatchBrush) hbr.Clone ();
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");
101 [Category ("NotWorking")]
103 public void TestDrawing ()
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);
110 font = new Font (new FontFamily ("Arial"), fontSize);
112 catch (ArgumentException) {
113 Assert.Ignore ("Arial FontFamily couldn't be found");
116 // make the background white
117 gr.Clear (Color.White);
119 // draw figures using hatch brush constructed
120 // using different constructors
123 // draw figures using different hatchstyles
127 string file = "TestHatchBrush" + getOutSufix() + ".png";
128 bmp.Save (file, ImageFormat.Png);
132 private void Constructors ()
134 int top = currentTop;
135 SolidBrush br = new SolidBrush (Color.Black);
139 gr.DrawString ("Test Constructors", font, br, textStart, top);
143 gr.DrawString ("Test #1 Horizontal, BackgroundColor=Black, ForegroundColor=White", font, br, textStart, top);
146 Pen pen = new Pen (new HatchBrush (HatchStyle.Horizontal, Color.White), penWidth);
147 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
151 gr.DrawString ("Test #2 Vertical, BackgroundColor=Blue, ForegroundColor=Red", font, br, textStart, top);
154 pen = new Pen (new HatchBrush (HatchStyle.Vertical, Color.Red, Color.Blue), penWidth);
155 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
160 private void HatchStyles ()
162 int top = currentTop;
165 SolidBrush br = new SolidBrush (Color.Black);
169 gr.DrawString ("Test HatchStyles", font, br, textStart, top);
173 gr.DrawString ("Test #1 Horizontal", font, br, textStart, top);
176 hbr = new HatchBrush (HatchStyle.Horizontal, fgColor, bgColor);
177 pen = new Pen (hbr, penWidth);
178 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
182 gr.DrawString ("Test #2 Min", font, br, textStart, top);
185 pen.Brush = new HatchBrush (HatchStyle.Min, fgColor, bgColor);
186 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
190 gr.DrawString ("Test #3 DarkHorizontal", font, br, textStart, top);
193 pen.Brush = new HatchBrush (HatchStyle.DarkHorizontal, fgColor, bgColor);
194 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
198 gr.DrawString ("Test #4 LightHorizontal", font, br, textStart, top);
201 pen.Brush = new HatchBrush (HatchStyle.LightHorizontal, fgColor, bgColor);
202 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
206 gr.DrawString ("Test #5 NarrowHorizontal", font, br, textStart, top);
209 pen.Brush = new HatchBrush (HatchStyle.NarrowHorizontal, fgColor, bgColor);
210 gr.DrawLine (pen, lineStart,top, lineStart + length,top);
214 gr.DrawString ("Test #6 Vertical", font, br, textStart, top);
217 pen.Brush = new HatchBrush (HatchStyle.Vertical, fgColor, bgColor);
218 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
222 gr.DrawString ("Test #7 DarkVertical", font, br, textStart, top);
225 pen.Brush = new HatchBrush (HatchStyle.DarkVertical, fgColor, bgColor);
226 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
230 gr.DrawString ("Test #8 LightVertical", font, br, textStart, top);
233 pen.Brush = new HatchBrush (HatchStyle.LightVertical, fgColor, bgColor);
234 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
238 gr.DrawString ("Test #9 NarrowVertical", font, br, textStart, top);
241 pen.Brush = new HatchBrush (HatchStyle.NarrowVertical, fgColor, bgColor);
242 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
246 gr.DrawString ("Test #10 Cross", font, br, textStart, top);
249 pen.Brush = new HatchBrush (HatchStyle.Cross, fgColor, bgColor);
250 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
254 gr.DrawString ("Test #11 LargeGrid", font, br, textStart, top);
257 pen.Brush = new HatchBrush (HatchStyle.LargeGrid, fgColor, bgColor);
258 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
262 gr.DrawString ("Test #12 SmallGrid", font, br, textStart, top);
265 pen.Brush = new HatchBrush (HatchStyle.SmallGrid, fgColor, bgColor);
266 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
270 gr.DrawString ("Test #13 DottedGrid", font, br, textStart, top);
273 pen.Brush = new HatchBrush (HatchStyle.DottedGrid, fgColor, bgColor);
274 gr.DrawLine (pen, lineStart,top, lineStart + length,top);
278 gr.DrawString ("Test #14 DiagonalCross", font, br, textStart, top);
281 pen.Brush = new HatchBrush (HatchStyle.DiagonalCross, fgColor, bgColor);
282 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
286 gr.DrawString ("Test #15 BackwardDiagonal", font, br, textStart, top);
289 pen.Brush = new HatchBrush (HatchStyle.BackwardDiagonal, fgColor, bgColor);
290 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
294 gr.DrawString ("Test #16 ForwardDiagonal", font, br, textStart, top);
297 pen.Brush = new HatchBrush (HatchStyle.ForwardDiagonal, fgColor, bgColor);
298 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
302 gr.DrawString ("Test #17 LightDownwardDiagonal", font, br, textStart, top);
305 pen.Brush = new HatchBrush (HatchStyle.LightDownwardDiagonal, fgColor, bgColor);
306 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
310 gr.DrawString ("Test #18 DarkDownwardDiagonal", font, br, textStart, top);
313 pen.Brush = new HatchBrush (HatchStyle.DarkDownwardDiagonal, fgColor, bgColor);
314 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
318 gr.DrawString ("Test #19 WideDownwardDiagonal", font, br, textStart, top);
321 pen.Brush = new HatchBrush (HatchStyle.WideDownwardDiagonal, fgColor, bgColor);
322 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
326 gr.DrawString ("Test #20 LightUpwardDiagonal", font, br, textStart, top);
329 pen.Brush = new HatchBrush (HatchStyle.LightUpwardDiagonal, fgColor, bgColor);
330 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
334 gr.DrawString ("Test #21 DarkUpwardDiagonal", font, br, textStart, top);
337 pen.Brush = new HatchBrush (HatchStyle.DarkUpwardDiagonal, fgColor, bgColor);
338 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
342 gr.DrawString ("Test #22 WideUpwardDiagonal", font, br, textStart, top);
345 pen.Brush = new HatchBrush (HatchStyle.WideUpwardDiagonal, fgColor, bgColor);
346 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
350 gr.DrawString ("Test #23 DashedHorizontal", font, br, textStart, top);
353 pen.Brush = new HatchBrush (HatchStyle.DashedHorizontal, fgColor, bgColor);
354 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
358 gr.DrawString ("Test #24 DashedVertical", font, br, textStart, top);
361 hbr = new HatchBrush (HatchStyle.DashedVertical, fgColor, bgColor);
362 gr.FillRectangle (hbr, lineStart, top, length, penWidth);
366 gr.DrawString ("Test #25 DashedDownwardDiagonal", font, br, textStart, top);
369 hbr = new HatchBrush (HatchStyle.DashedDownwardDiagonal, fgColor, bgColor);
370 gr.FillRectangle (hbr, lineStart, top, length, penWidth);
374 gr.DrawString ("Test #26 DashedUpwardDiagonal", font, br, textStart, top);
377 pen = new Pen (new HatchBrush (HatchStyle.DashedUpwardDiagonal, fgColor, bgColor), penWidth);
378 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
382 gr.DrawString ("Test #27 05Percent", font, br, textStart, top);
385 pen = new Pen (new HatchBrush (HatchStyle.Percent05, fgColor, bgColor), penWidth);
386 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
390 gr.DrawString ("Test #28 10Percent", font, br, textStart, top);
393 pen = new Pen (new HatchBrush (HatchStyle.Percent10, fgColor, bgColor), penWidth);
394 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
398 gr.DrawString ("Test #29 20Percent", font, br, textStart, top);
401 pen = new Pen (new HatchBrush (HatchStyle.Percent20, fgColor, bgColor), penWidth);
402 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
406 gr.DrawString ("Test #30 25Percent", font, br, textStart, top);
409 pen = new Pen (new HatchBrush (HatchStyle.Percent25, fgColor, bgColor), penWidth);
410 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
414 gr.DrawString ("Test #31 30Percent", font, br, textStart, top);
417 pen = new Pen (new HatchBrush (HatchStyle.Percent30, fgColor, bgColor), penWidth);
418 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
422 gr.DrawString ("Test #32 40Percent", font, br, textStart, top);
425 pen = new Pen (new HatchBrush (HatchStyle.Percent40, fgColor, bgColor), penWidth);
426 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
430 gr.DrawString ("Test #33 50Percent", font, br, textStart, top);
433 pen = new Pen (new HatchBrush (HatchStyle.Percent50, fgColor, bgColor), penWidth);
434 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
438 gr.DrawString ("Test #34 60Percent", font, br, textStart, top);
441 pen = new Pen (new HatchBrush (HatchStyle.Percent60, fgColor, bgColor), penWidth);
442 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
446 gr.DrawString ("Test #35 70Percent", font, br, textStart, top);
449 pen = new Pen (new HatchBrush (HatchStyle.Percent70, fgColor, bgColor), penWidth);
450 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
454 gr.DrawString ("Test #36 75Percent", font, br, textStart, top);
457 pen = new Pen (new HatchBrush (HatchStyle.Percent75, fgColor, bgColor), penWidth);
458 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
462 gr.DrawString ("Test #37 80Percent", font, br, textStart, top);
465 pen = new Pen (new HatchBrush (HatchStyle.Percent80, fgColor, bgColor), penWidth);
466 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
470 gr.DrawString ("Test #38 90Percent", font, br, textStart, top);
473 pen = new Pen (new HatchBrush (HatchStyle.Percent90, fgColor, bgColor), penWidth);
474 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
478 gr.DrawString ("Test #39 SmallConfetti", font, br, textStart, top);
481 pen = new Pen (new HatchBrush (HatchStyle.SmallConfetti, fgColor, bgColor), penWidth);
482 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
486 gr.DrawString ("Test #40 LargeConfetti", font, br, textStart, top);
489 pen = new Pen (new HatchBrush (HatchStyle.LargeConfetti, fgColor, bgColor), penWidth);
490 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
494 gr.DrawString ("Test #41 ZigZag", font, br, textStart, top);
497 pen = new Pen (new HatchBrush (HatchStyle.ZigZag, fgColor, bgColor), penWidth);
498 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
502 gr.DrawString ("Test #42 Wave", font, br, textStart, top);
505 pen = new Pen (new HatchBrush (HatchStyle.Wave, fgColor, bgColor), penWidth);
506 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
510 gr.DrawString ("Test #43 HorizontalBrick", font, br, textStart, top);
513 pen = new Pen (new HatchBrush (HatchStyle.HorizontalBrick, fgColor, bgColor), penWidth);
514 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
518 gr.DrawString ("Test #44 DiagonalBrick", font, br, textStart, top);
521 pen = new Pen (new HatchBrush (HatchStyle.DiagonalBrick, fgColor, bgColor), penWidth);
522 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
526 gr.DrawString ("Test #45 Weave", font, br, textStart, top);
529 pen = new Pen (new HatchBrush (HatchStyle.Weave, fgColor, bgColor), penWidth);
530 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
534 gr.DrawString ("Test #46 Plaid", font, br, textStart, top);
537 pen = new Pen (new HatchBrush (HatchStyle.Plaid, fgColor, bgColor), penWidth);
538 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
542 gr.DrawString ("Test #47 Divot", font, br, textStart, top);
545 pen = new Pen (new HatchBrush (HatchStyle.Divot, fgColor, bgColor), penWidth);
546 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
550 gr.DrawString ("Test #48 SmallCheckerBoard", font, br, textStart, top);
553 pen.Brush = new HatchBrush (HatchStyle.SmallCheckerBoard, fgColor, bgColor);
554 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
558 gr.DrawString ("Test #49 LargeCheckerBoard", font, br, textStart, top);
561 pen.Brush = new HatchBrush (HatchStyle.LargeCheckerBoard, fgColor, bgColor);
562 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
566 gr.DrawString ("Test #50 OutlinedDiamond", font, br, textStart, top);
569 pen.Brush = new HatchBrush (HatchStyle.OutlinedDiamond, fgColor, bgColor);
570 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
574 gr.DrawString ("Test #51 SolidDiamond", font, br, textStart, top);
577 pen.Brush = new HatchBrush (HatchStyle.SolidDiamond, fgColor, bgColor);
578 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
582 gr.DrawString ("Test #52 DottedDiamond", font, br, textStart, top);
585 pen.Brush = new HatchBrush (HatchStyle.DottedDiamond, fgColor, bgColor);
586 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
590 gr.DrawString ("Test #53 Shingle", font, br, textStart, top);
593 pen.Brush = new HatchBrush (HatchStyle.Shingle, fgColor, bgColor);
594 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
598 gr.DrawString ("Test #54 Trellis", font, br, textStart, top);
601 pen.Brush = new HatchBrush (HatchStyle.Trellis, fgColor, bgColor);
602 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
606 gr.DrawString ("Test #55 Sphere", font, br, textStart, top);
609 pen.Brush = new HatchBrush (HatchStyle.Sphere, fgColor, bgColor);
610 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
615 internal string getOutSufix()
619 int p = (int) Environment.OSVersion.Platform;
620 if ((p == 4) || (p == 128) || (p == 6))
625 if (Type.GetType ("Mono.Runtime", false) == null)