OSDN Git Service

3 to 4
[psychlops/silverlight.git] / dev3 / psychlops / core / graphic / canvas.cs
diff --git a/dev3/psychlops/core/graphic/canvas.cs b/dev3/psychlops/core/graphic/canvas.cs
deleted file mode 100644 (file)
index 0adfc4e..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-using System;\r
-using System.Windows;\r
-using System.Windows.Controls;\r
-using System.Windows.Documents;\r
-using System.Windows.Input;\r
-using System.Windows.Media;\r
-using System.Windows.Media.Animation;\r
-using System.Windows.Media.Imaging;\r
-using System.Windows.Shapes;\r
-using System.Windows.Browser;\r
-\r
-\r
-\r
-namespace Psychlops\r
-{\r
-\r
-       namespace Templates\r
-       {\r
-\r
-               public class StackableDrawable : Drawable\r
-               {\r
-                       protected System.Collections.Generic.Queue<Internal.PrimitiveFigure> stack;\r
-\r
-                       public StackableDrawable()\r
-                       {\r
-                               stack = new System.Collections.Generic.Queue<Internal.PrimitiveFigure>();\r
-                       }\r
-\r
-                       public void clear()\r
-                       {\r
-                               clear(Color.black);\r
-                       }\r
-                       public virtual void clear(Color col)\r
-                       {\r
-                               //rect(back_panel, col);\r
-                       }\r
-\r
-                       public virtual void pix(int x, int y, Color col)\r
-                       {\r
-                       }\r
-\r
-                       public virtual void line(Line drawee)\r
-                       {\r
-                               stack.Enqueue(drawee.clone());\r
-                       }\r
-\r
-                       public virtual void rect(Rectangle drawee)\r
-                       {\r
-                               stack.Enqueue(drawee.clone());\r
-                       }\r
-\r
-                       public virtual void ellipse(Ellipse drawee)\r
-                       {\r
-                               stack.Enqueue(drawee.clone());\r
-                       }\r
-\r
-                       public virtual void polygon(Polygon drawee)\r
-                       {\r
-                               stack.Enqueue(drawee.clone());\r
-                       }\r
-\r
-                       public virtual void letters(Letters drawee)\r
-                       {\r
-                               stack.Enqueue(drawee.clone());\r
-                       }\r
-\r
-                       public virtual void image(Image drawee)\r
-                       {\r
-                               stack.Enqueue(drawee.clone());\r
-                       }\r
-\r
-                       public void msg(string str, double x, double y) { msg(str, x, y, Color.white); }\r
-                       public virtual void msg(string dstr, double x, double y, Color col)\r
-                       {\r
-                               var let = new Letters(dstr);\r
-                               let.locate(x, y);\r
-                               let.fill = col;\r
-                               this.letters(let);\r
-                       }\r
-                       public void var<Type>(Type val, double x, double y) { msg(val.ToString(), x, y, Color.white); }\r
-                       public void var<Type>(Type val, double x, double y, Color col) { msg(val.ToString(), x, y, col); }\r
-\r
-                       public virtual Point getCenter() { return new Point(0, 0, 0); }\r
-               }\r
-\r
-       }\r
-\r
-       public class Canvas : Templates.StackableDrawable\r
-       {\r
-\r
-               #region initializer\r
-\r
-               internal delegate void TwoIntProcedure(int x, int y);\r
-               internal delegate void SimpleProcedure();\r
-               SimpleProcedure flipexec;\r
-\r
-               //public static System.Windows.Controls.Image default_buffer_frame;\r
-               public static System.Windows.Controls.UserControl default_panel;\r
-               public static System.Windows.Controls.Canvas default_api_canvas;\r
-               public static WriteableBitmap default_buffer;\r
-               //WriteableBitmap buffer;\r
-               //System.Windows.Controls.Image instance;\r
-               System.Windows.Controls.Canvas api_canvas;\r
-               System.Windows.Controls.UserControl panel;\r
-               Rectangle back_panel;\r
-               double width_, height_;\r
-\r
-               public Canvas(int wid, int hei)\r
-               {\r
-                       panel = default_panel;\r
-                       api_canvas = default_api_canvas;\r
-                       initialize(wid, hei);\r
-               }\r
-               public Canvas(int wid, int hei, System.Windows.Controls.Canvas apicnvs, System.Windows.Controls.UserControl system)\r
-               {\r
-                       panel = system;\r
-                       api_canvas = apicnvs;\r
-                       initialize(wid, hei);\r
-               }\r
-               protected void initialize(int wid, int hei)\r
-               {\r
-\r
-                       width_ = wid;\r
-                       height_ = hei;\r
-                       api_canvas.Dispatcher.BeginInvoke(new TwoIntProcedure(initialize__), wid, hei);\r
-                       Mouse._prime = api_canvas;\r
-                       Main.drawable = this;\r
-                       Main.canvas = this;\r
-\r
-                       back_panel = new Rectangle(wid, hei);\r
-\r
-                       flipexec = new SimpleProcedure(executeFlip);\r
-               }\r
-               protected void initialize__(int wid, int hei)\r
-               {\r
-                       api_canvas.Width = wid;\r
-                       api_canvas.Height = hei;\r
-                       api_canvas.MouseMove += Mouse.Canvas_MousePos;\r
-                       api_canvas.MouseLeftButtonDown += Mouse.Canvas_LDown;\r
-                       api_canvas.MouseLeftButtonUp += Mouse.Canvas_LUp;\r
-                       api_canvas.MouseWheel += Mouse.Canvas_MouseWheel;\r
-                       panel.KeyDown += Keyboard.Canvas_KeyDown;\r
-                       panel.KeyUp += Keyboard.Canvas_KeyUp;\r
-\r
-                       HtmlElement htmlHost = HtmlPage.Document.GetElementById("silverlightControlHost");\r
-                       //if (htmlHost != null) HtmlPage.Window.Alert("silverlightControlHost is null");\r
-                       htmlHost.SetStyleAttribute("width", (200+wid).ToString()+"px");\r
-                       htmlHost.SetStyleAttribute("height", (20+hei).ToString() + "px");\r
-                       htmlHost.SetStyleAttribute("margin", "2em auto auto auto");\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region static initializer\r
-               /*\r
-               static System.Windows.Shapes.Line api_line;\r
-               static System.Windows.Shapes.Path api_curve;\r
-               static System.Windows.Shapes.Rectangle api_rect;\r
-               static System.Windows.Shapes.Ellipse api_ellipse;\r
-               static System.Windows.Shapes.Polygon api_polygon;\r
-               static System.Windows.Shapes.Polyline api_polyline;\r
-               static System.Windows.Media.Color api_color;\r
-               static System.Windows.Media.SolidColorBrush api_fill;\r
-               static System.Windows.Media.SolidColorBrush api_stroke;\r
-               static System.Windows.Media.TranslateTransform api_translation;\r
-               static Canvas()\r
-               {\r
-                       api_line = new System.Windows.Shapes.Line();\r
-                       api_curve    = new System.Windows.Shapes.Path();\r
-                       api_rect     = new System.Windows.Shapes.Rectangle();\r
-                       api_ellipse  = new System.Windows.Shapes.Ellipse();\r
-                       api_polygon  = new System.Windows.Shapes.Polygon();\r
-                       api_polyline = new System.Windows.Shapes.Polyline();\r
-                       api_color       = new System.Windows.Media.Color();\r
-                       api_fill        = new System.Windows.Media.SolidColorBrush();\r
-                       api_stroke      = new System.Windows.Media.SolidColorBrush();\r
-                       api_translation = new System.Windows.Media.TranslateTransform();\r
-               }\r
-               */\r
-               #endregion\r
-\r
-\r
-               public override void clear(Color col)\r
-               {\r
-                       back_panel.fill = col;\r
-                       rect(back_panel);\r
-               }\r
-\r
-               int nextIntervalFrame = 1, chacked = 0;\r
-               public void flip()\r
-               {\r
-                       //api_canvas.Dispatcher.BeginInvoke(flipexec);\r
-                       //flipexec();\r
-                       //System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);\r
-                       lock (this)\r
-                       {\r
-                               nextIntervalFrame = 1;\r
-                               chacked = 1;\r
-                       }\r
-                       Internal.Main.canvas_flag.WaitOne();\r
-               }\r
-               public void executeFlip()\r
-               {\r
-                       lock (this)\r
-                       {\r
-                               nextIntervalFrame--;\r
-                       }\r
-                       if (nextIntervalFrame <= 0)\r
-                       {\r
-                               //Psychlops.AppState.statusBar = chacked.ToString();\r
-                               if (chacked > 0)\r
-                               {\r
-                                       var tmp = new System.Windows.Controls.Canvas();\r
-                                       if (stack.Count > 0)\r
-                                       {\r
-                                               foreach (Internal.PrimitiveFigure f in stack)\r
-                                               {\r
-                                                       tmp.Children.Add(f.toNative());\r
-                                               }\r
-                                       }\r
-                                       api_canvas.Children.Clear();\r
-                                       api_canvas.Children.Add(tmp);\r
-                                       stack.Clear();\r
-                                       lock (this)\r
-                                       {\r
-                                               chacked = 0;\r
-                                       }\r
-                                       Psychlops.Internal.Main.canvas_flag.Set();\r
-                               }\r
-                       }\r
-                       System.Threading.Thread.Sleep(0);\r
-               }\r
-\r
-               #region Properties\r
-\r
-               public double width { get { return width_; } }\r
-               public double height { get { return height_; } }\r
-               public Point center { get { return new Point(width / 2.0, height / 2.0, 0); } }\r
-               public double getWidth() { return width; }\r
-               public double getHeight() { return height; }\r
-               public override Point getCenter() { return center; }\r
-               public double getHCenter() { return width / 2; }\r
-               public double getVCenter() { return height / 2; }\r
-               public double getRefreshRate() { return 60; }\r
-\r
-               #endregion\r
-\r
-\r
-       }\r
-\r
-\r
-\r
-       #region primitive tokenizer\r
-\r
-       partial struct Point\r
-       {\r
-               public static implicit operator System.Windows.Point(Point d)\r
-               {\r
-                       return new System.Windows.Point(d.x, d.y);\r
-               }\r
-       }\r
-\r
-       partial struct Color\r
-       {\r
-               public static implicit operator System.Windows.Media.Color(Color d)\r
-               {\r
-                       return System.Windows.Media.Color.FromArgb((byte)(d.a * 255), (byte)(d.r * 255), (byte)(d.g * 255), (byte)(d.b * 255));\r
-               }\r
-               public static implicit operator System.Windows.Media.SolidColorBrush(Color d)\r
-               {\r
-                       return new SolidColorBrush { Color = d };\r
-               }\r
-       }\r
-\r
-       partial struct Stroke\r
-       {\r
-               public void apply(System.Windows.Shapes.Shape target)\r
-               {\r
-                       target.Stroke = this;\r
-                       //target.StrokeDashArray\r
-                       target.StrokeThickness = thick;\r
-               }\r
-               public static implicit operator SolidColorBrush(Stroke d)\r
-               {\r
-                       return new SolidColorBrush { Color = d.color };\r
-               }\r
-       }\r
-\r
-       partial class Line\r
-       {\r
-               public Line dup()\r
-               {\r
-                       return (Line)MemberwiseClone();\r
-               }\r
-               public Line clone()\r
-               {\r
-                       return (Line)MemberwiseClone();\r
-               }\r
-               public static implicit operator System.Windows.Shapes.Line(Line d)\r
-               {\r
-                       var tmp =  new System.Windows.Shapes.Line() { X1 = d.begin.x, Y1 = d.begin.y, X2 = d.end.x, Y2 = d.end.y };\r
-                       if (d.stroke.thick == 0.0) tmp.Stroke = d.fill;\r
-                       else d.stroke.apply(tmp);\r
-                       return tmp;\r
-               }\r
-               public UIElement toNative() { return this; }\r
-       }\r
-\r
-       partial class Rectangle\r
-       {\r
-               public Rectangle dup()\r
-               {\r
-                       return (Rectangle)MemberwiseClone();\r
-               }\r
-               public Rectangle clone()\r
-               {\r
-                       return (Rectangle)MemberwiseClone();\r
-               }\r
-               public static implicit operator System.Windows.Rect(Rectangle d)\r
-               {\r
-                       return new System.Windows.Rect(d.v1.x, d.v1.y, d.v2.x, d.v2.y);\r
-               }\r
-               public static implicit operator System.Windows.Shapes.Rectangle(Rectangle d)\r
-               {\r
-                       var tmp = new System.Windows.Shapes.Rectangle { Width = d.width, Height = d.height, Fill = d.fill };\r
-                       d.stroke.apply(tmp);\r
-                       System.Windows.Controls.Canvas.SetLeft(tmp, d.left);\r
-                       System.Windows.Controls.Canvas.SetTop(tmp, d.top);\r
-                       return tmp;\r
-               }\r
-               public UIElement toNative() { return this; }\r
-       }\r
-\r
-       partial class Ellipse\r
-       {\r
-               public Ellipse dup()\r
-               {\r
-                       return (Ellipse)MemberwiseClone();\r
-               }\r
-               public Ellipse clone()\r
-               {\r
-                       return (Ellipse)MemberwiseClone();\r
-               }\r
-               public static implicit operator System.Windows.Shapes.Ellipse(Ellipse d)\r
-               {\r
-                       var tmp = new System.Windows.Shapes.Ellipse { Width = d.width, Height = d.height, Fill = d.fill };\r
-                       d.stroke.apply(tmp);\r
-                       System.Windows.Controls.Canvas.SetLeft(tmp, d.left);\r
-                       System.Windows.Controls.Canvas.SetTop(tmp, d.top);\r
-                       return tmp;\r
-               }\r
-               public UIElement toNative() { return this; }\r
-       }\r
-\r
-       partial class Polygon\r
-       {\r
-               public Polygon dup()\r
-               {\r
-                       return (Polygon)MemberwiseClone();\r
-               }\r
-               public Polygon clone()\r
-               {\r
-                       return (Polygon)MemberwiseClone();\r
-               }\r
-               public static implicit operator System.Windows.Shapes.Polygon(Polygon d)\r
-               {\r
-                       var tmp = new System.Windows.Shapes.Polygon { Fill = d.fill };\r
-                       d.stroke.apply(tmp);\r
-                       foreach (Point p in d.vertices)\r
-                       {\r
-                               tmp.Points.Add(p);\r
-                       }\r
-                       System.Windows.Controls.Canvas.SetLeft(tmp, d.datum.x);\r
-                       System.Windows.Controls.Canvas.SetTop(tmp, d.datum.y);\r
-                       return tmp;\r
-               }\r
-               public UIElement toNative() { return this; }\r
-       }\r
-       \r
-       partial class Letters\r
-       {\r
-               #region static initializer\r
-               internal static System.Collections.Generic.Dictionary<int, System.Windows.FontWeight> FONT_WEIGHT_BRIDGE;\r
-               internal static System.Collections.Generic.Dictionary<Font.Style, System.Windows.FontStyle> FONT_STYLE_BRIDGE;\r
-               internal static System.Collections.Generic.Dictionary<Letters.HorizontalAlign, TextAlignment> LETTERS_H_ALIGN_BRIDGE;\r
-               static Letters()\r
-               {\r
-                       FONT_WEIGHT_BRIDGE = new System.Collections.Generic.Dictionary<int, System.Windows.FontWeight>();\r
-                       FONT_WEIGHT_BRIDGE.Add((int)Font.Weight.normal, System.Windows.FontWeights.Normal);\r
-                       FONT_WEIGHT_BRIDGE.Add((int)Font.Weight.bold, System.Windows.FontWeights.Bold);\r
-                       FONT_STYLE_BRIDGE = new System.Collections.Generic.Dictionary<Font.Style, System.Windows.FontStyle>();\r
-                       FONT_STYLE_BRIDGE.Add(Font.Style.normal, System.Windows.FontStyles.Normal);\r
-                       FONT_STYLE_BRIDGE.Add(Font.Style.italic, System.Windows.FontStyles.Italic);\r
-                       FONT_STYLE_BRIDGE.Add(Font.Style.oblique, System.Windows.FontStyles.Italic);\r
-                       LETTERS_H_ALIGN_BRIDGE = new System.Collections.Generic.Dictionary<Letters.HorizontalAlign, TextAlignment>();\r
-                       LETTERS_H_ALIGN_BRIDGE.Add(Letters.HorizontalAlign.left, TextAlignment.Left);\r
-                       LETTERS_H_ALIGN_BRIDGE.Add(Letters.HorizontalAlign.center, TextAlignment.Center);\r
-                       LETTERS_H_ALIGN_BRIDGE.Add(Letters.HorizontalAlign.right, TextAlignment.Right);\r
-                       LETTERS_H_ALIGN_BRIDGE.Add(Letters.HorizontalAlign.not_specified, TextAlignment.Left);\r
-               }\r
-               #endregion\r
-               public Letters dup()\r
-               {\r
-                       return (Letters)MemberwiseClone();\r
-               }\r
-               public Letters clone()\r
-               {\r
-                       return (Letters)MemberwiseClone();\r
-               }\r
-               public static implicit operator System.Windows.Controls.TextBlock(Letters d)\r
-               {\r
-                       //var zapi_shape = new System.Windows.Documents.Glyphs();\r
-                       var tmp = new System.Windows.Controls.TextBlock {\r
-                               Text = d.str, Width = 500, Height = 500,\r
-                               FontSize = d.font.size,\r
-                               //tmp.FontFamily = ,\r
-                               FontStyle = FONT_STYLE_BRIDGE[d.font.style],\r
-                               FontWeight = FONT_WEIGHT_BRIDGE[d.font.weight],\r
-                               TextAlignment = LETTERS_H_ALIGN_BRIDGE[d.align],\r
-                               Foreground = d.fill\r
-                       };\r
-                       double left = 0;\r
-                       switch (d.align)\r
-                       {\r
-                               case Letters.HorizontalAlign.left: break;\r
-                               case Letters.HorizontalAlign.center: left = tmp.Width / 2; break;\r
-                               case Letters.HorizontalAlign.right: left = tmp.Width; break;\r
-                       }\r
-                       System.Windows.Controls.Canvas.SetLeft(tmp, d.datum.x - left);\r
-                       System.Windows.Controls.Canvas.SetTop(tmp, d.datum.y - d.font.size);\r
-                       return tmp;\r
-               }\r
-               public UIElement toNative() { return this; }\r
-       }\r
-\r
-       partial class Image\r
-       {\r
-               internal void initialize__(int wid, int hei)\r
-               {\r
-                       Canvas.default_api_canvas.Dispatcher.BeginInvoke(new Canvas.TwoIntProcedure(create__), wid, hei);\r
-                       //buffer = new WriteableBitmap(wid, hei);\r
-               }\r
-               internal void create__(int wid, int hei)\r
-               {\r
-                       buffer = new WriteableBitmap(wid, hei);\r
-               }\r
-               delegate void FieldFunc1(System.Func<int, int, System.Windows.Media.Color> func);\r
-               delegate void FieldFunc2(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func);\r
-               public void field__(System.Func<int, int, System.Windows.Media.Color> func)\r
-               {\r
-                       Canvas.default_api_canvas.Dispatcher.BeginInvoke(new FieldFunc1(field___), func);\r
-                       //buffer.ForEach(func);\r
-               }\r
-               public void field__(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)\r
-               {\r
-                       Canvas.default_api_canvas.Dispatcher.BeginInvoke(new FieldFunc2(field___), func);\r
-                       //buffer.ForEach(func);\r
-               }\r
-               public void field___(System.Func<int, int, System.Windows.Media.Color> func)\r
-               {\r
-                       buffer.ForEach(func);\r
-               }\r
-               public void field___(System.Func<int, int, System.Windows.Media.Color, System.Windows.Media.Color> func)\r
-               {\r
-                       buffer.ForEach(func);\r
-               }\r
-\r
-               public Image clone()\r
-               {\r
-                       return (Image)MemberwiseClone();\r
-               }\r
-               public static implicit operator System.Windows.Controls.Image(Image d)\r
-               {\r
-                       var tmp = new System.Windows.Controls.Image();\r
-                       tmp.Source = d.buffer;\r
-                       System.Windows.Controls.Canvas.SetLeft(tmp, d.datum.x);\r
-                       System.Windows.Controls.Canvas.SetTop(tmp, d.datum.y);\r
-                       return tmp;\r
-               }\r
-               public UIElement toNative() { return this; }\r
-       }\r
-\r
-       #endregion\r
-\r
-\r
-}
\ No newline at end of file