Xamarin Public Jenkins (auto-signing) 966bba02bb Imported Upstream version 5.2.0.175
Former-commit-id: bb0468d0f257ff100aa895eb5fe583fb5dfbf900
2017-06-07 13:16:24 +00:00

630 lines
20 KiB
C#

//
// System.Drawing.Drawing2D.TestHatchBrush.cs
//
// Author:
// Ravindra (rkumar@novell.com)
//
// Copyright (C) 2004,2006 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Security.Permissions;
using NUnit.Framework;
namespace MonoTests.System.Drawing.Drawing2D
{
[TestFixture]
public class HatchBrushTest {
Graphics gr;
Bitmap bmp;
Font font;
Color bgColor; // background color
Color fgColor; // foreground color
int currentTop; // the location for next drawing operation
int spacing; // space between two consecutive drawing operations
int fontSize; // text size
int textStart; // text starting location
int lineStart; // line starting location
int length; // length of the line
int penWidth; // width of the Pen used to draw lines
public HatchBrushTest ()
{
fontSize = 16;
textStart = 10;
lineStart = 200;
length = 400;
penWidth = 50;
currentTop = 0;
spacing = 50;
bgColor = Color.Yellow;
fgColor = Color.Red;
}
[Test]
public void TestProperties ()
{
HatchBrush hbr = new HatchBrush(HatchStyle.SolidDiamond, fgColor);
Assert.AreEqual (hbr.HatchStyle, HatchStyle.SolidDiamond, "Props#1");
Assert.AreEqual (hbr.ForegroundColor.ToArgb (), fgColor.ToArgb (), "Props#2");
Assert.AreEqual (hbr.BackgroundColor.ToArgb (), Color.Black.ToArgb (), "Props#3");
hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
Assert.AreEqual (hbr.HatchStyle, HatchStyle.Cross, "Props#4");
Assert.AreEqual (hbr.ForegroundColor.ToArgb (), fgColor.ToArgb (), "Props#5");
Assert.AreEqual (hbr.BackgroundColor.ToArgb (), bgColor.ToArgb (), "Props#6");
}
[Test]
public void TestClone ()
{
HatchBrush hbr = new HatchBrush(HatchStyle.Cross, fgColor, bgColor);
HatchBrush clone = (HatchBrush) hbr.Clone ();
Assert.AreEqual (hbr.HatchStyle, clone.HatchStyle, "Clone#1");
Assert.AreEqual (hbr.ForegroundColor, clone.ForegroundColor, "Clone#2");
Assert.AreEqual (hbr.BackgroundColor, clone.BackgroundColor, "Clone#3");
}
[Test]
public void TestDrawing ()
{
// create a bitmap with big enough dimensions
// to accomodate all the tests
bmp = new Bitmap (700, 6000); // width, height
gr = Graphics.FromImage (bmp);
try {
font = new Font (new FontFamily ("Arial"), fontSize);
}
catch (ArgumentException) {
Assert.Ignore ("Arial FontFamily couldn't be found");
}
// make the background white
gr.Clear (Color.White);
// draw figures using hatch brush constructed
// using different constructors
Constructors ();
// draw figures using different hatchstyles
HatchStyles ();
// save the drawing
string file = "TestHatchBrush" + getOutSufix() + ".png";
bmp.Save (file, ImageFormat.Png);
File.Delete (file);
}
private void Constructors ()
{
int top = currentTop;
SolidBrush br = new SolidBrush (Color.Black);
top += spacing;
gr.DrawString ("Test Constructors", font, br, textStart, top);
// #1
top += spacing;
gr.DrawString ("Test #1 Horizontal, BackgroundColor=Black, ForegroundColor=White", font, br, textStart, top);
top += spacing;
Pen pen = new Pen (new HatchBrush (HatchStyle.Horizontal, Color.White), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #2
top += spacing;
gr.DrawString ("Test #2 Vertical, BackgroundColor=Blue, ForegroundColor=Red", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Vertical, Color.Red, Color.Blue), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
currentTop = top;
}
private void HatchStyles ()
{
int top = currentTop;
HatchBrush hbr;
Pen pen;
SolidBrush br = new SolidBrush (Color.Black);
top += spacing;
gr.DrawString ("Test HatchStyles", font, br, textStart, top);
// #1
top += spacing;
gr.DrawString ("Test #1 Horizontal", font, br, textStart, top);
top += spacing;
hbr = new HatchBrush (HatchStyle.Horizontal, fgColor, bgColor);
pen = new Pen (hbr, penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #2
top += spacing;
gr.DrawString ("Test #2 Min", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.Min, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #3
top += spacing;
gr.DrawString ("Test #3 DarkHorizontal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DarkHorizontal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #4
top += spacing;
gr.DrawString ("Test #4 LightHorizontal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.LightHorizontal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #5
top += spacing;
gr.DrawString ("Test #5 NarrowHorizontal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.NarrowHorizontal, fgColor, bgColor);
gr.DrawLine (pen, lineStart,top, lineStart + length,top);
// #6
top += spacing;
gr.DrawString ("Test #6 Vertical", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.Vertical, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #7
top += spacing;
gr.DrawString ("Test #7 DarkVertical", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DarkVertical, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #8
top += spacing;
gr.DrawString ("Test #8 LightVertical", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.LightVertical, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #9
top += spacing;
gr.DrawString ("Test #9 NarrowVertical", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.NarrowVertical, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #10
top += spacing;
gr.DrawString ("Test #10 Cross", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.Cross, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #11
top += spacing;
gr.DrawString ("Test #11 LargeGrid", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.LargeGrid, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #12
top += spacing;
gr.DrawString ("Test #12 SmallGrid", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.SmallGrid, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #13
top += spacing;
gr.DrawString ("Test #13 DottedGrid", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DottedGrid, fgColor, bgColor);
gr.DrawLine (pen, lineStart,top, lineStart + length,top);
// #14
top += spacing;
gr.DrawString ("Test #14 DiagonalCross", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DiagonalCross, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #15
top += spacing;
gr.DrawString ("Test #15 BackwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.BackwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #16
top += spacing;
gr.DrawString ("Test #16 ForwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.ForwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #17
top += spacing;
gr.DrawString ("Test #17 LightDownwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.LightDownwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #18
top += spacing;
gr.DrawString ("Test #18 DarkDownwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DarkDownwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #19
top += spacing;
gr.DrawString ("Test #19 WideDownwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.WideDownwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #20
top += spacing;
gr.DrawString ("Test #20 LightUpwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.LightUpwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #21
top += spacing;
gr.DrawString ("Test #21 DarkUpwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DarkUpwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #22
top += spacing;
gr.DrawString ("Test #22 WideUpwardDiagonal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.WideUpwardDiagonal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #23
top += spacing;
gr.DrawString ("Test #23 DashedHorizontal", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DashedHorizontal, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #24
top += spacing;
gr.DrawString ("Test #24 DashedVertical", font, br, textStart, top);
top += spacing;
hbr = new HatchBrush (HatchStyle.DashedVertical, fgColor, bgColor);
gr.FillRectangle (hbr, lineStart, top, length, penWidth);
// #25
top += spacing;
gr.DrawString ("Test #25 DashedDownwardDiagonal", font, br, textStart, top);
top += spacing;
hbr = new HatchBrush (HatchStyle.DashedDownwardDiagonal, fgColor, bgColor);
gr.FillRectangle (hbr, lineStart, top, length, penWidth);
// #26
top += spacing;
gr.DrawString ("Test #26 DashedUpwardDiagonal", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.DashedUpwardDiagonal, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #27
top += spacing;
gr.DrawString ("Test #27 05Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent05, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #28
top += spacing;
gr.DrawString ("Test #28 10Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent10, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #29
top += spacing;
gr.DrawString ("Test #29 20Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent20, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #30
top += spacing;
gr.DrawString ("Test #30 25Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent25, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #31
top += spacing;
gr.DrawString ("Test #31 30Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent30, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #32
top += spacing;
gr.DrawString ("Test #32 40Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent40, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #33
top += spacing;
gr.DrawString ("Test #33 50Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent50, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #34
top += spacing;
gr.DrawString ("Test #34 60Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent60, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #35
top += spacing;
gr.DrawString ("Test #35 70Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent70, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #36
top += spacing;
gr.DrawString ("Test #36 75Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent75, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #37
top += spacing;
gr.DrawString ("Test #37 80Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent80, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #38
top += spacing;
gr.DrawString ("Test #38 90Percent", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Percent90, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #39
top += spacing;
gr.DrawString ("Test #39 SmallConfetti", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.SmallConfetti, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #40
top += spacing;
gr.DrawString ("Test #40 LargeConfetti", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.LargeConfetti, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #41
top += spacing;
gr.DrawString ("Test #41 ZigZag", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.ZigZag, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #42
top += spacing;
gr.DrawString ("Test #42 Wave", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Wave, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #43
top += spacing;
gr.DrawString ("Test #43 HorizontalBrick", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.HorizontalBrick, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #44
top += spacing;
gr.DrawString ("Test #44 DiagonalBrick", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.DiagonalBrick, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #45
top += spacing;
gr.DrawString ("Test #45 Weave", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Weave, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #46
top += spacing;
gr.DrawString ("Test #46 Plaid", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Plaid, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #47
top += spacing;
gr.DrawString ("Test #47 Divot", font, br, textStart, top);
top += spacing;
pen = new Pen (new HatchBrush (HatchStyle.Divot, fgColor, bgColor), penWidth);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #48
top += spacing;
gr.DrawString ("Test #48 SmallCheckerBoard", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.SmallCheckerBoard, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #49
top += spacing;
gr.DrawString ("Test #49 LargeCheckerBoard", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.LargeCheckerBoard, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #50
top += spacing;
gr.DrawString ("Test #50 OutlinedDiamond", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.OutlinedDiamond, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #51
top += spacing;
gr.DrawString ("Test #51 SolidDiamond", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.SolidDiamond, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #52
top += spacing;
gr.DrawString ("Test #52 DottedDiamond", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.DottedDiamond, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #53
top += spacing;
gr.DrawString ("Test #53 Shingle", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.Shingle, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #54
top += spacing;
gr.DrawString ("Test #54 Trellis", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.Trellis, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
// #55
top += spacing;
gr.DrawString ("Test #55 Sphere", font, br, textStart, top);
top += spacing;
pen.Brush = new HatchBrush (HatchStyle.Sphere, fgColor, bgColor);
gr.DrawLine (pen, lineStart, top, lineStart + length, top);
currentTop = top;
}
internal string getOutSufix()
{
string s;
int p = (int) Environment.OSVersion.Platform;
if ((p == 4) || (p == 128) || (p == 6))
s = "-unix";
else
s = "-windows";
if (Type.GetType ("Mono.Runtime", false) == null)
s += "-msnet";
else
s += "-mono";
return s;
}
}
}