OSDN Git Service

c56ea61629c9ff20ca0029cd45be5fd909cb38e5
[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() \r
25                 {\r
26                         self_rect = new Rectangle(1, 1);\r
27                         initialize__(1, 1);\r
28                 }\r
29 \r
30                 public Image(string uri)\r
31                 {\r
32                         self_rect = new Rectangle();\r
33                         load__(uri);\r
34                 }\r
35 \r
36                 public Image(int wid, int hei)\r
37                 {\r
38                         self_rect = new Rectangle(wid, hei);\r
39                         initialize__(wid, hei);\r
40                 }\r
41 \r
42                 public Image set(int wid, int hei)\r
43                 {\r
44                         self_rect = new Rectangle(wid, hei);\r
45                         initialize__(wid, hei);\r
46                         return this;\r
47                 }\r
48 \r
49                 public Figure shift(Point p)\r
50                 {\r
51                         datum = datum + p;\r
52                         return this;\r
53                 }\r
54                 public Figure centering(Point p)\r
55                 {\r
56                         datum = new Point( p.x - width / 2.0, p.y - height / 2.0);\r
57                         return this;\r
58                 }\r
59                 public Image move_to(Point p) { datum = p; return this; }\r
60                 public Image move_to(double x, double y, double z) { datum = new Point(x, y, z); return this; }\r
61                 public Image locate(Point p) { datum = p; return this; }\r
62                 public Image locate(double x, double y, double z) { datum = new Point(x, y, z); return this; }\r
63 \r
64                 public void pix(int x, int y, Color col)\r
65                 {\r
66                         buffer.SetPixel(x, y, col);\r
67                 }\r
68 \r
69 \r
70                 public void field(System.Func<int, int, System.Windows.Media.Color> func)\r
71                 {\r
72                         field__(func);\r
73                 }\r
74                 public void field(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)\r
75                 {\r
76                         field__(func);\r
77                 }\r
78                 public void each(System.Func<int, int, System.Windows.Media.Color> func)\r
79                 {\r
80                         field__(func);\r
81                 }\r
82                 public void each(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)\r
83                 {\r
84                         field__(func);\r
85                 }\r
86 \r
87                 public void load(string uri)\r
88                 {\r
89                         load__(uri);\r
90                 }\r
91 \r
92                 public void draw()\r
93                 {\r
94                         Main.drawable.image(this);\r
95                 }\r
96 \r
97 \r
98                 public double width { get { return self_rect.width; } }\r
99                 public double height { get { return self_rect.height; } }\r
100                 public Point center { get { return new Point(width/2.0, height/2.0); } }\r
101                 public double getWidth() { return width; }\r
102                 public double getHeight() { return height; }\r
103                 public Point getCenter() { return center; }\r
104                 public double getHcenter() { return width / 2.0; }\r
105                 public double getVcenter() { return height / 2.0; }\r
106 \r
107         }\r
108 \r
109 \r
110 }