OSDN Git Service

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