2 using System.Windows;
\r
3 using System.Windows.Controls;
\r
4 using System.Windows.Documents;
\r
5 using System.Windows.Input;
\r
6 using System.Windows.Media;
\r
7 using System.Windows.Media.Animation;
\r
8 using System.Windows.Media.Imaging;
\r
9 using System.Windows.Shapes;
\r
18 public double x, y, z;
\r
19 public Point(double dx, double dy, double dz)
\r
25 public Point(double dx, double dy)
\r
31 public Point set(double dx, double dy, double dz)
\r
38 public Point set(double dx, double dy)
\r
46 public static Point operator +(Point lhs, Point rhs)
\r
48 return new Point(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z);
\r
50 public static Point operator -(Point lhs, Point rhs)
\r
52 return new Point(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z);
\r
54 public static implicit operator System.Windows.Point(Point d)
\r
56 return new System.Windows.Point(d.x, d.y);
\r
63 public double r, g, b, a;
\r
64 public Color(double lum)
\r
69 public Color(double red, double green, double blue)
\r
76 public Color(double red, double green, double blue, double alpha)
\r
83 public void set(double lum)
\r
88 public void set(double red, double green, double blue)
\r
95 public void set(double red, double green, double blue, double alpha)
\r
102 public static implicit operator System.Windows.Media.Color(Color d)
\r
104 return System.Windows.Media.Color.FromArgb((byte)(d.a * 255), (byte)(d.r * 255), (byte)(d.g * 255), (byte)(d.b * 255));
\r
107 public static readonly Color
\r
108 black = new Color(0, 0, 0, 1),
\r
109 red = new Color(1, 0, 0, 1),
\r
110 green = new Color(0, 1, 0, 1),
\r
111 blue = new Color(0, 0, 1, 1),
\r
112 yellow = new Color(1, 1, 0, 1),
\r
113 magenta = new Color(1, 0, 1, 1),
\r
114 cyan = new Color(0, 1, 1, 1),
\r
115 white = new Color(1, 1, 1, 1),
\r
116 gray = new Color(.5, .5, .5, 1);
\r
121 public interface Drawable
\r
124 void clear(Color col);
\r
125 void pix(int x, int y, Color col);
\r
126 void line(Line drawee, Color col);
\r
127 void rect(Rectangle drawee, Color col);
\r
128 void ellipse(Ellipse drawee, Color col);
\r
129 void polygon(Polygon drawee, Color col);
\r
130 void letters(Letters drawee, Color col);
\r
131 void image(Image drawee);
\r
132 void msg(string s, double x, double y, Color c);
\r
137 public interface Figure
\r
139 Figure shift(Point p);
\r
140 Figure centering(Point p);
\r
143 public static class FigureExtention
\r
145 public static Figure shift(this Figure target, double x, double y)
\r
147 return target.shift(new Point(x, y));
\r
149 public static Figure centering(this Figure target)
\r
151 return target.centering(Main.drawable.getCenter());
\r
153 public static Figure centering(this Figure target, double x, double y)
\r
155 return target.centering(new Point(x, y));
\r
159 public class Image : Figure
\r
161 public WriteableBitmap buffer;
\r
162 public Point datum;
\r
163 public Rectangle self_rect;
\r
165 public Image(int wid, int hei)
\r
167 buffer = new WriteableBitmap(wid, hei);
\r
168 self_rect = new Rectangle(wid, hei);
\r
171 /*public Image shift(double x, double y)
\r
177 public Figure shift(Point p)
\r
182 public Figure centering(Point p)
\r
184 datum.x = p.x - width / 2.0;
\r
185 datum.y = p.y - height / 2.0;
\r
189 public void pix(int x, int y, Color col)
\r
191 buffer.SetPixel(x, y, col);
\r
195 public void field(System.Func<int,int,System.Windows.Media.Color> func)
\r
197 buffer.ForEach(func);
\r
199 public void field(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)
\r
201 buffer.ForEach(func);
\r
206 Main.drawable.image(this);
\r
209 public double width { get { return self_rect.width; } }
\r
210 public double height { get { return self_rect.height; } }
\r