OSDN Git Service

f4c48d90ca83b96f7acee4c4d682b729140e36bb
[psychlops/silverlight.git] / dev4 / psychlops / core / graphic / image.cs
1 using System;\r
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
10 \r
11 \r
12 namespace Psychlops{\r
13 \r
14 \r
15         public partial class Image : Internal.PrimitiveFigure\r
16         {\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
23 \r
24                 public Image(string uri)\r
25                 {\r
26                         self_rect = new Rectangle();\r
27                         load__(uri);\r
28                 }\r
29 \r
30                 public Image(int wid, int hei)\r
31                 {\r
32                         self_rect = new Rectangle(wid, hei);\r
33                         initialize__(wid, hei);\r
34                 }\r
35 \r
36                 public Image set(int wid, int hei)\r
37                 {\r
38                         self_rect = new Rectangle(wid, hei);\r
39                         initialize__(wid, hei);\r
40                         return this;\r
41                 }\r
42 \r
43                 public Figure shift(Point p)\r
44                 {\r
45                         datum = datum + p;\r
46                         return this;\r
47                 }\r
48                 public Figure centering(Point p)\r
49                 {\r
50                         datum = new Point( p.x - width / 2.0, p.y - height / 2.0);\r
51                         return this;\r
52                 }\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
57 \r
58                 public void pix(int x, int y, Color col)\r
59                 {\r
60                         buffer.SetPixel(x, y, col);\r
61                 }\r
62 \r
63 \r
64                 public void field(System.Func<int, int, System.Windows.Media.Color> func)\r
65                 {\r
66                         field__(func);\r
67                 }\r
68                 public void field(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)\r
69                 {\r
70                         field__(func);\r
71                 }\r
72                 public void each(System.Func<int, int, System.Windows.Media.Color> func)\r
73                 {\r
74                         field__(func);\r
75                 }\r
76                 public void each(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)\r
77                 {\r
78                         field__(func);\r
79                 }\r
80 \r
81                 public void load(string uri)\r
82                 {\r
83                         load__(uri);\r
84                 }\r
85 \r
86                 public void draw()\r
87                 {\r
88                         Main.drawable.image(this);\r
89                 }\r
90 \r
91 \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
100 \r
101         }\r
102 \r
103 \r
104 }