2 // System.Drawing.Drawing2D.TestHatchBrush.cs
5 // Ravindra (rkumar@novell.com)
7 // Copyright (C) 2004 Novell, Inc. http://www.novell.com
12 using System.Drawing.Imaging;
13 using System.Drawing.Drawing2D;
14 using NUnit.Framework;
16 namespace MonoTests.System.Drawing.Drawing2D
19 public class HatchBrushTest : Assertion
24 Color bgColor; // background color
25 Color fgColor; // foreground color
26 int currentTop; // the location for next drawing operation
27 int spacing; // space between two consecutive drawing operations
28 int fontSize; // text size
29 int textStart; // text starting location
30 int lineStart; // line starting location
31 int length; // length of the line
32 int penWidth; // width of the Pen used to draw lines
35 public void GetReady () { }
38 public void Clear () { }
40 public HatchBrushTest ()
50 bgColor = Color.Yellow;
55 public void TestProperties ()
57 HatchBrush hbr = new HatchBrush(HatchStyle.SolidDiamond, fgColor);
59 AssertEquals ("Props#1", hbr.HatchStyle, HatchStyle.SolidDiamond);
60 AssertEquals ("Props#2", hbr.ForegroundColor.ToArgb(), fgColor.ToArgb());
61 AssertEquals ("Props#3", hbr.BackgroundColor.ToArgb(), Color.Black.ToArgb());
63 hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
65 AssertEquals ("Props#4", hbr.HatchStyle, HatchStyle.Cross);
66 AssertEquals ("Props#5", hbr.ForegroundColor.ToArgb(), fgColor.ToArgb());
67 AssertEquals ("Props#6", hbr.BackgroundColor.ToArgb(), bgColor.ToArgb());
71 public void TestClone ()
73 HatchBrush hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
75 HatchBrush clone = (HatchBrush) hbr.Clone ();
77 AssertEquals ("Clone#1", hbr.HatchStyle, clone.HatchStyle);
78 AssertEquals ("Clone#2", hbr.ForegroundColor, clone.ForegroundColor);
79 AssertEquals ("Clone#3", hbr.BackgroundColor, clone.BackgroundColor);
83 public void TestDrawing ()
85 // create a bitmap with big enough dimensions
86 // to accomodate all the tests
87 bmp = new Bitmap (700, 4000); // width, height
88 gr = Graphics.FromImage (bmp);
89 font = new Font (new FontFamily ("Arial"), fontSize);
91 // make the background white
92 gr.Clear (Color.White);
94 // draw figures using hatch brush constructed
95 // using different constructors
98 // draw figures using different hatchstyles
102 string file = getDir () + "TestHatchBrush.png";
103 bmp.Save (file, ImageFormat.Png);
106 private void Constructors ()
108 int top = currentTop;
109 SolidBrush br = new SolidBrush (Color.Black);
113 gr.DrawString ("Test Constructors", font, br, textStart, top);
117 gr.DrawString ("Test #1 Horizontal, BackgroundColor=Black, ForegroundColor=White", font, br, textStart, top);
120 Pen pen = new Pen (new HatchBrush (HatchStyle.Horizontal, Color.White), penWidth);
121 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
125 gr.DrawString ("Test #2 Vertical, BackgroundColor=Blue, ForegroundColor=Red", font, br, textStart, top);
128 pen = new Pen (new HatchBrush (HatchStyle.Vertical, Color.Red, Color.Blue), penWidth);
129 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
134 private void HatchStyles ()
136 int top = currentTop;
139 SolidBrush br = new SolidBrush (Color.Black);
143 gr.DrawString ("Test HatchStyles", font, br, textStart, top);
147 gr.DrawString ("Test #1 Horizontal", font, br, textStart, top);
150 hbr = new HatchBrush (HatchStyle.Horizontal, fgColor, bgColor);
151 pen = new Pen (hbr, penWidth);
152 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
156 gr.DrawString ("Test #2 Min", font, br, textStart, top);
159 pen.Brush = new HatchBrush (HatchStyle.Min, fgColor, bgColor);
160 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
164 gr.DrawString ("Test #3 DarkHorizontal", font, br, textStart, top);
167 pen.Brush = new HatchBrush (HatchStyle.DarkHorizontal, fgColor, bgColor);
168 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
172 gr.DrawString ("Test #4 LightHorizontal", font, br, textStart, top);
175 pen.Brush = new HatchBrush (HatchStyle.LightHorizontal, fgColor, bgColor);
176 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
180 gr.DrawString ("Test #5 NarrowHorizontal", font, br, textStart, top);
183 pen.Brush = new HatchBrush (HatchStyle.NarrowHorizontal, fgColor, bgColor);
184 gr.DrawLine (pen, lineStart,top, lineStart + length,top);
188 gr.DrawString ("Test #6 Vertical", font, br, textStart, top);
191 pen.Brush = new HatchBrush (HatchStyle.Vertical, fgColor, bgColor);
192 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
196 gr.DrawString ("Test #7 DarkVertical", font, br, textStart, top);
199 pen.Brush = new HatchBrush (HatchStyle.DarkVertical, fgColor, bgColor);
200 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
204 gr.DrawString ("Test #8 LightVertical", font, br, textStart, top);
207 pen.Brush = new HatchBrush (HatchStyle.LightVertical, fgColor, bgColor);
208 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
212 gr.DrawString ("Test #9 NarrowVertical", font, br, textStart, top);
215 pen.Brush = new HatchBrush (HatchStyle.NarrowVertical, fgColor, bgColor);
216 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
220 gr.DrawString ("Test #10 Cross", font, br, textStart, top);
223 pen.Brush = new HatchBrush (HatchStyle.Cross, fgColor, bgColor);
224 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
228 gr.DrawString ("Test #11 LargeGrid", font, br, textStart, top);
231 pen.Brush = new HatchBrush (HatchStyle.LargeGrid, fgColor, bgColor);
232 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
236 gr.DrawString ("Test #12 SmallGrid", font, br, textStart, top);
239 pen.Brush = new HatchBrush (HatchStyle.SmallGrid, fgColor, bgColor);
240 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
244 gr.DrawString ("Test #13 DottedGrid", font, br, textStart, top);
247 pen.Brush = new HatchBrush (HatchStyle.DottedGrid, fgColor, bgColor);
248 gr.DrawLine (pen, lineStart,top, lineStart + length,top);
252 gr.DrawString ("Test #14 DiagonalCross", font, br, textStart, top);
255 pen.Brush = new HatchBrush (HatchStyle.DiagonalCross, fgColor, bgColor);
256 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
260 gr.DrawString ("Test #15 BackwardDiagonal", font, br, textStart, top);
263 pen.Brush = new HatchBrush (HatchStyle.BackwardDiagonal, fgColor, bgColor);
264 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
268 gr.DrawString ("Test #16 ForwardDiagonal", font, br, textStart, top);
271 pen.Brush = new HatchBrush (HatchStyle.ForwardDiagonal, fgColor, bgColor);
272 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
276 gr.DrawString ("Test #17 LightDownwardDiagonal", font, br, textStart, top);
279 pen.Brush = new HatchBrush (HatchStyle.LightDownwardDiagonal, fgColor, bgColor);
280 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
284 gr.DrawString ("Test #18 DarkDownwardDiagonal", font, br, textStart, top);
287 pen.Brush = new HatchBrush (HatchStyle.DarkDownwardDiagonal, fgColor, bgColor);
288 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
292 gr.DrawString ("Test #19 WideDownwardDiagonal", font, br, textStart, top);
295 pen.Brush = new HatchBrush (HatchStyle.WideDownwardDiagonal, fgColor, bgColor);
296 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
300 gr.DrawString ("Test #20 LightUpwardDiagonal", font, br, textStart, top);
303 pen.Brush = new HatchBrush (HatchStyle.LightUpwardDiagonal, fgColor, bgColor);
304 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
308 gr.DrawString ("Test #21 DarkUpwardDiagonal", font, br, textStart, top);
311 pen.Brush = new HatchBrush (HatchStyle.DarkUpwardDiagonal, fgColor, bgColor);
312 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
316 gr.DrawString ("Test #22 WideUpwardDiagonal", font, br, textStart, top);
319 pen.Brush = new HatchBrush (HatchStyle.WideUpwardDiagonal, fgColor, bgColor);
320 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
324 gr.DrawString ("Test #23 DashedHorizontal", font, br, textStart, top);
327 pen.Brush = new HatchBrush (HatchStyle.DashedHorizontal, fgColor, bgColor);
328 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
332 gr.DrawString ("Test #24 DashedVertical", font, br, textStart, top);
335 hbr = new HatchBrush (HatchStyle.DashedVertical, fgColor, bgColor);
336 gr.FillRectangle (hbr, lineStart, top, length, penWidth);
340 gr.DrawString ("Test #25 DashedDownwardDiagonal", font, br, textStart, top);
343 hbr = new HatchBrush (HatchStyle.DashedDownwardDiagonal, fgColor, bgColor);
344 gr.FillRectangle (hbr, lineStart, top, length, penWidth);
348 gr.DrawString ("Test #26 DashedUpwardDiagonal", font, br, textStart, top);
351 pen = new Pen (new HatchBrush (HatchStyle.DashedUpwardDiagonal, fgColor, bgColor), penWidth);
352 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
356 gr.DrawString ("Test #27 HorizontalBrick", font, br, textStart, top);
359 pen = new Pen (new HatchBrush (HatchStyle.HorizontalBrick, fgColor, bgColor), penWidth);
360 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
364 gr.DrawString ("Test #28 DiagonalBrick", font, br, textStart, top);
367 pen = new Pen (new HatchBrush (HatchStyle.DiagonalBrick, fgColor, bgColor), penWidth);
368 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
372 gr.DrawString ("Test #29 LargeCheckerBoard", font, br, textStart, top);
375 pen.Brush = new HatchBrush (HatchStyle.LargeCheckerBoard, fgColor, bgColor);
376 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
380 gr.DrawString ("Test #30 SmallCheckerBoard", font, br, textStart, top);
383 pen.Brush = new HatchBrush (HatchStyle.SmallCheckerBoard, fgColor, bgColor);
384 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
388 gr.DrawString ("Test #31 OutlinedDiamond", font, br, textStart, top);
391 pen.Brush = new HatchBrush (HatchStyle.OutlinedDiamond, fgColor, bgColor);
392 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
396 gr.DrawString ("Test #32 SolidDiamond", font, br, textStart, top);
399 pen.Brush = new HatchBrush (HatchStyle.SolidDiamond, fgColor, bgColor);
400 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
404 gr.DrawString ("Test #33 DottedDiamond", font, br, textStart, top);
407 pen.Brush = new HatchBrush (HatchStyle.DottedDiamond, fgColor, bgColor);
408 gr.DrawLine (pen, lineStart, top, lineStart + length, top);
413 /* Get the right directory depending on the runtime */
414 private string getDir ()
418 if (Environment.GetEnvironmentVariable ("MSNet") == null)