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
12 namespace Psychlops{
\r
15 public partial class Image : Internal.PrimitiveFigure
\r
17 public WriteableBitmap buffer;
\r
18 public Point datum { get; set; }
\r
19 public Point getDatum() { return datum; }
\r
20 public Point setDatum(Point p) { datum = p; return datum; }
\r
21 public Rectangle self_rect;
\r
22 protected bool AsyncBool;
\r
24 public Image(string uri)
\r
26 self_rect = new Rectangle();
\r
30 public Image(int wid, int hei)
\r
32 self_rect = new Rectangle(wid, hei);
\r
33 initialize__(wid, hei);
\r
36 public Image set(int wid, int hei)
\r
38 self_rect = new Rectangle(wid, hei);
\r
39 initialize__(wid, hei);
\r
43 public Figure shift(Point p)
\r
48 public Figure centering(Point p)
\r
50 datum = new Point( p.x - width / 2.0, p.y - height / 2.0);
\r
53 public Image move_to(Point p) { datum = p; return this; }
\r
54 public Image move_to(double x, double y, double z) { datum = new Point(x, y, z); return this; }
\r
55 public Image locate(Point p) { datum = p; return this; }
\r
56 public Image locate(double x, double y, double z) { datum = new Point(x, y, z); return this; }
\r
58 public void pix(int x, int y, Color col)
\r
60 buffer.SetPixel(x, y, col);
\r
64 public void field(System.Func<int, int, System.Windows.Media.Color> func)
\r
68 public void field(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)
\r
72 public void each(System.Func<int, int, System.Windows.Media.Color> func)
\r
76 public void each(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)
\r
81 public void load(string uri)
\r
88 Main.drawable.image(this);
\r
92 public double width { get { return self_rect.width; } }
\r
93 public double height { get { return self_rect.height; } }
\r
94 public Point center { get { return new Point(width/2.0, height/2.0); } }
\r
95 public double getWidth() { return width; }
\r
96 public double getHeight() { return height; }
\r
97 public Point getCenter() { return center; }
\r
98 public double getHcenter() { return width / 2.0; }
\r
99 public double getVcenter() { return height / 2.0; }
\r