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
136 public interface Figure
\r
138 Figure shift(Point p);
\r
139 Figure centering(Point p);
\r
142 public static class FigureExtention
\r
144 public static Figure shift(this Figure target, double x, double y)
\r
146 return target.shift(new Point(x, y));
\r
148 public static Figure centering(this Figure target)
\r
150 return target.centering(Main.drawable.getCenter());
\r
152 public static Figure centering(this Figure target, double x, double y)
\r
154 return target.centering(new Point(x, y));
\r
158 public class Image : Figure
\r
160 public WriteableBitmap buffer;
\r
161 public Point datum;
\r
162 public Rectangle self_rect;
\r
164 public Image(int wid, int hei)
\r
166 buffer = new WriteableBitmap(wid, hei);
\r
167 self_rect = new Rectangle(wid, hei);
\r
170 /*public Image shift(double x, double y)
\r
176 public Figure shift(Point p)
\r
181 public Figure centering(Point p)
\r
183 datum.x = p.x - width / 2.0;
\r
184 datum.y = p.y - height / 2.0;
\r
188 public void pix(int x, int y, Color col)
\r
190 buffer.SetPixel(x, y, col);
\r
194 public void field(System.Func<int,int,System.Windows.Media.Color> func)
\r
196 buffer.ForEach(func);
\r
198 public void field(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)
\r
200 buffer.ForEach(func);
\r
205 Main.drawable.image(this);
\r
208 public double width { get { return self_rect.width; } }
\r
209 public double height { get { return self_rect.height; } }
\r