OSDN Git Service

123
[psychlops/silverlight.git] / dev4 / psychlops / core / graphic / module.cs
index 7afeeaf..db366c1 100644 (file)
@@ -8,32 +8,19 @@ namespace Psychlops
        public partial struct Point\r
        {\r
                public double x, y, z;\r
-               public Point(double dx, double dy, double dz)\r
+               public Point(double dx, double dy, double dz = 0.0)\r
                {\r
                        x = dx;\r
                        y = dy;\r
                        z = dz;\r
                }\r
-               public Point(double dx, double dy)\r
-               {\r
-                       x = dx;\r
-                       y = dy;\r
-                       z = 0.0;\r
-               }\r
-               public Point set(double dx, double dy, double dz)\r
+               public Point set(double dx, double dy, double dz = 0.0)\r
                {\r
                        x = dx;\r
                        y = dy;\r
                        z = dz;\r
                        return this;\r
                }\r
-               public Point set(double dx, double dy)\r
-               {\r
-                       x = dx;\r
-                       y = dy;\r
-                       z = 0.0;\r
-                       return this;\r
-               }\r
 \r
                public static Point operator +(Point lhs, Point rhs)\r
                {\r
@@ -58,14 +45,7 @@ namespace Psychlops
                        r = g = b = lum;\r
                        a = 1.0;\r
                }\r
-               public Color(double red, double green, double blue)\r
-               {\r
-                       r = red;\r
-                       g = green;\r
-                       b = blue;\r
-                       a = 1.0;\r
-               }\r
-               public Color(double red, double green, double blue, double alpha)\r
+               public Color(double red, double green, double blue, double alpha = 1.0)\r
                {\r
                        r = red;\r
                        g = green;\r
@@ -77,14 +57,7 @@ namespace Psychlops
                        r = g = b = lum;\r
                        a = 1.0;\r
                }\r
-               public void set(double red, double green, double blue)\r
-               {\r
-                       r = red;\r
-                       g = green;\r
-                       b = blue;\r
-                       a = 1.0;\r
-               }\r
-               public void set(double red, double green, double blue, double alpha)\r
+               public void set(double red, double green, double blue, double alpha = 1.0)\r
                {\r
                        r = red;\r
                        g = green;\r
@@ -123,6 +96,7 @@ namespace Psychlops
                void polygon(Polygon drawee);\r
                void letters(Letters drawee);\r
                void image(Image drawee);\r
+               void group(Group drawee);\r
                void msg(string s, double x, double y, Color c);\r
        }\r
 \r
@@ -146,17 +120,17 @@ namespace Psychlops
                        target.datum = p;\r
                        return target.datum;\r
                }\r
-               public static Figure shift(this Figure target, double x, double y)\r
+               public static Figure shift(this Figure target, double x, double y, double z = 0.0)\r
                {\r
-                       return target.shift(new Point(x, y));\r
+                       return target.shift(new Point(x, y, z));\r
                }\r
                public static Figure centering(this Figure target)\r
                {\r
                        return target.centering(Main.drawable.getCenter());\r
                }\r
-               public static Figure centering(this Figure target, double x, double y)\r
+               public static Figure centering(this Figure target, double x, double y, double z = 0.0)\r
                {\r
-                       return target.centering(new Point(x, y));\r
+                       return target.centering(new Point(x, y, z));\r
                }\r
        }\r
 \r
@@ -165,6 +139,76 @@ namespace Psychlops
                public interface PrimitiveFigure : Figure\r
                {\r
                        UIElement toNative();\r
+                       UIElement poolNative(Canvas c);\r
+               }\r
+       }\r
+\r
+       public partial class Group : Internal.PrimitiveFigure\r
+       {\r
+               System.Collections.Generic.List<Figure> list;\r
+               System.Windows.Controls.Canvas cnvs;\r
+               System.Windows.Media.TransformGroup trans;\r
+               System.Windows.Media.TransformCollection transF;\r
+               System.Windows.Media.RotateTransform rotateF;\r
+               SimpleProcedure setRotation_;\r
+               System.Windows.Media.ScaleTransform scaleF;\r
+               SimpleProcedure setScaling_;\r
+               System.Windows.Media.TranslateTransform translateF;\r
+\r
+               bool AsyncBool;\r
+               double rotation_;\r
+               public double rotation\r
+               {\r
+                       get { return rotation_; }\r
+                       set { rotation_ = value; rotateF.Dispatcher.BeginInvoke(setRotation_); }\r
+               }               \r
+               public Point axis\r
+               {\r
+                       get;\r
+                       set;\r
+               }\r
+               Point scaling_;\r
+               public Point scaling\r
+               {\r
+                       get { return scaling_; }\r
+                       set { scaling_ = value; scaleF.Dispatcher.BeginInvoke(setScaling_); }\r
+               }\r
+\r
+               AppendFunc1 append_;\r
+\r
+               public Group()\r
+               {\r
+                       setRotation_ = new SimpleProcedure(setRotation__);\r
+                       setScaling_ = new SimpleProcedure(setScaling__);\r
+                       append_ = new AppendFunc1(append__);\r
+                       list = new System.Collections.Generic.List<Figure>();\r
+                       AsyncBool = false;\r
+                       initialize__();\r
+                       while (!AsyncBool) { }\r
+               }\r
+\r
+               public Group append(Internal.PrimitiveFigure fig)\r
+               {\r
+                       list.Add(fig);\r
+                       cnvs.Dispatcher.BeginInvoke(append_, fig);\r
+                       return this;\r
+               }\r
+\r
+               public Point datum { get; set; }\r
+               public Figure shift(Point p)\r
+               {\r
+                       datum = datum + p;\r
+                       return this;\r
+               }\r
+               public Figure centering(Point p)\r
+               {\r
+                       datum = p;\r
+                       return this;\r
+               }\r
+               public void draw()\r
+               {\r
+                       Main.drawable.group(this);\r
                }\r
        }\r
+\r
 }
\ No newline at end of file