OSDN Git Service

3 to 4
[psychlops/silverlight.git] / dev4 / psychlops / core / graphic / module.cs
1 using System;\r
2 using System.Windows;\r
3 \r
4 \r
5 namespace Psychlops\r
6 {\r
7 \r
8         public partial struct Point\r
9         {\r
10                 public double x, y, z;\r
11                 public Point(double dx, double dy, double dz)\r
12                 {\r
13                         x = dx;\r
14                         y = dy;\r
15                         z = dz;\r
16                 }\r
17                 public Point(double dx, double dy)\r
18                 {\r
19                         x = dx;\r
20                         y = dy;\r
21                         z = 0.0;\r
22                 }\r
23                 public Point set(double dx, double dy, double dz)\r
24                 {\r
25                         x = dx;\r
26                         y = dy;\r
27                         z = dz;\r
28                         return this;\r
29                 }\r
30                 public Point set(double dx, double dy)\r
31                 {\r
32                         x = dx;\r
33                         y = dy;\r
34                         z = 0.0;\r
35                         return this;\r
36                 }\r
37 \r
38                 public static Point operator +(Point lhs, Point rhs)\r
39                 {\r
40                         return new Point(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z);\r
41                 }\r
42                 public static Point operator -(Point lhs, Point rhs)\r
43                 {\r
44                         return new Point(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z);\r
45                 }\r
46                 public override string ToString()\r
47                 {\r
48                         return "X:"+ x.ToString() + " Y:"+ y.ToString() + " Z:"+ z.ToString();\r
49                 }\r
50         }\r
51 \r
52 \r
53         public partial struct Color\r
54         {\r
55                 public double r, g, b, a;\r
56                 public Color(double lum)\r
57                 {\r
58                         r = g = b = lum;\r
59                         a = 1.0;\r
60                 }\r
61                 public Color(double red, double green, double blue)\r
62                 {\r
63                         r = red;\r
64                         g = green;\r
65                         b = blue;\r
66                         a = 1.0;\r
67                 }\r
68                 public Color(double red, double green, double blue, double alpha)\r
69                 {\r
70                         r = red;\r
71                         g = green;\r
72                         b = blue;\r
73                         a = alpha;\r
74                 }\r
75                 public void set(double lum)\r
76                 {\r
77                         r = g = b = lum;\r
78                         a = 1.0;\r
79                 }\r
80                 public void set(double red, double green, double blue)\r
81                 {\r
82                         r = red;\r
83                         g = green;\r
84                         b = blue;\r
85                         a = 1.0;\r
86                 }\r
87                 public void set(double red, double green, double blue, double alpha)\r
88                 {\r
89                         r = red;\r
90                         g = green;\r
91                         b = blue;\r
92                         a = alpha;\r
93                 }\r
94 \r
95                 public override string ToString()\r
96                 {\r
97                         return "R:" + r.ToString() + " G:" + g.ToString() + " B:" + b.ToString() + " A:" + a.ToString();\r
98                 }\r
99 \r
100                 public static readonly Color\r
101                         black = new Color(0, 0, 0, 1),\r
102                         red = new Color(1, 0, 0, 1),\r
103                         green = new Color(0, 1, 0, 1),\r
104                         blue = new Color(0, 0, 1, 1),\r
105                         yellow = new Color(1, 1, 0, 1),\r
106                         magenta = new Color(1, 0, 1, 1),\r
107                         cyan = new Color(0, 1, 1, 1),\r
108                         white = new Color(1, 1, 1, 1),\r
109                         gray = new Color(.5, .5, .5, 1),\r
110                         null_color = new Color(0, 0, 0, 0);\r
111 \r
112         }\r
113 \r
114 \r
115         public interface Drawable\r
116         {\r
117                 Point getCenter();\r
118                 void clear(Color col);\r
119                 void pix(int x, int y, Color col);\r
120                 void line(Line drawee);\r
121                 void rect(Rectangle drawee);\r
122                 void ellipse(Ellipse drawee);\r
123                 void polygon(Polygon drawee);\r
124                 void letters(Letters drawee);\r
125                 void image(Image drawee);\r
126                 void msg(string s, double x, double y, Color c);\r
127         }\r
128 \r
129 \r
130 \r
131         public interface Figure\r
132         {\r
133                 Point datum { get; set; }\r
134                 Figure shift(Point p);\r
135                 Figure centering(Point p);\r
136                 void draw();\r
137         }\r
138         public static class FigureExtention\r
139         {\r
140                 public static Point getDatum(this Figure target)\r
141                 {\r
142                         return target.datum;\r
143                 }\r
144                 public static Point setDatum(this Figure target, Point p)\r
145                 {\r
146                         target.datum = p;\r
147                         return target.datum;\r
148                 }\r
149                 public static Figure shift(this Figure target, double x, double y)\r
150                 {\r
151                         return target.shift(new Point(x, y));\r
152                 }\r
153                 public static Figure centering(this Figure target)\r
154                 {\r
155                         return target.centering(Main.drawable.getCenter());\r
156                 }\r
157                 public static Figure centering(this Figure target, double x, double y)\r
158                 {\r
159                         return target.centering(new Point(x, y));\r
160                 }\r
161         }\r
162 \r
163         namespace Internal\r
164         {\r
165                 public interface PrimitiveFigure : Figure\r
166                 {\r
167                         UIElement toNative();\r
168                 }\r
169         }\r
170 }