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
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
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
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
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
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