OSDN Git Service

many
[psychlops/silverlight.git] / dev3 / 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         }\r
47 \r
48 \r
49         public partial struct Color\r
50         {\r
51                 public double r, g, b, a;\r
52                 public Color(double lum)\r
53                 {\r
54                         r = g = b = lum;\r
55                         a = 1.0;\r
56                 }\r
57                 public Color(double red, double green, double blue)\r
58                 {\r
59                         r = red;\r
60                         g = green;\r
61                         b = blue;\r
62                         a = 1.0;\r
63                 }\r
64                 public Color(double red, double green, double blue, double alpha)\r
65                 {\r
66                         r = red;\r
67                         g = green;\r
68                         b = blue;\r
69                         a = alpha;\r
70                 }\r
71                 public void set(double lum)\r
72                 {\r
73                         r = g = b = lum;\r
74                         a = 1.0;\r
75                 }\r
76                 public void set(double red, double green, double blue)\r
77                 {\r
78                         r = red;\r
79                         g = green;\r
80                         b = blue;\r
81                         a = 1.0;\r
82                 }\r
83                 public void set(double red, double green, double blue, double alpha)\r
84                 {\r
85                         r = red;\r
86                         g = green;\r
87                         b = blue;\r
88                         a = alpha;\r
89                 }\r
90 \r
91                 public static readonly Color\r
92                         black = new Color(0, 0, 0, 1),\r
93                         red = new Color(1, 0, 0, 1),\r
94                         green = new Color(0, 1, 0, 1),\r
95                         blue = new Color(0, 0, 1, 1),\r
96                         yellow = new Color(1, 1, 0, 1),\r
97                         magenta = new Color(1, 0, 1, 1),\r
98                         cyan = new Color(0, 1, 1, 1),\r
99                         white = new Color(1, 1, 1, 1),\r
100                         gray = new Color(.5, .5, .5, 1),\r
101                         null_color = new Color(0, 0, 0, 0);\r
102 \r
103         }\r
104 \r
105 \r
106         public interface Drawable\r
107         {\r
108                 Point getCenter();\r
109                 void clear(Color col);\r
110                 void pix(int x, int y, Color col);\r
111                 void line(Line drawee);\r
112                 void rect(Rectangle drawee);\r
113                 void ellipse(Ellipse drawee);\r
114                 void polygon(Polygon drawee);\r
115                 void letters(Letters drawee);\r
116                 void image(Image drawee);\r
117                 void msg(string s, double x, double y, Color c);\r
118         }\r
119 \r
120 \r
121 \r
122         public interface Figure\r
123         {\r
124                 Figure shift(Point p);\r
125                 Figure centering(Point p);\r
126                 void draw();\r
127         }\r
128         public static class FigureExtention\r
129         {\r
130                 public static Figure shift(this Figure target, double x, double y)\r
131                 {\r
132                         return target.shift(new Point(x, y));\r
133                 }\r
134                 public static Figure centering(this Figure target)\r
135                 {\r
136                         return target.centering(Main.drawable.getCenter());\r
137                 }\r
138                 public static Figure centering(this Figure target, double x, double y)\r
139                 {\r
140                         return target.centering(new Point(x, y));\r
141                 }\r
142         }\r
143 \r
144         namespace Internal\r
145         {\r
146                 public interface PrimitiveFigure : Figure\r
147                 {\r
148                         UIElement toNative();\r
149                 }\r
150         }\r
151 }