OSDN Git Service

misc
authorHOSOKAWA Kenchi <hskwk@inter7.jp>
Sun, 21 Mar 2010 15:07:42 +0000 (00:07 +0900)
committerHOSOKAWA Kenchi <hskwk@inter7.jp>
Sun, 21 Mar 2010 15:07:42 +0000 (00:07 +0900)
dev3/psychlops/core/graphic/canvas.cs
dev3/psychlops/core/graphic/font.cs
dev3/psychlops/core/math/matrix.cs

index 9d2cad3..bffa5c4 100644 (file)
@@ -368,10 +368,10 @@ namespace Psychlops
                        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.TEXT_ALIGN_LEFT, TextAlignment.Left);\r
-                       LETTERS_H_ALIGN_BRIDGE.Add(Letters.HorizontalAlign.TEXT_ALIGN_CENTER, TextAlignment.Center);\r
-                       LETTERS_H_ALIGN_BRIDGE.Add(Letters.HorizontalAlign.TEXT_ALIGN_RIGHT, TextAlignment.Right);\r
-                       LETTERS_H_ALIGN_BRIDGE.Add(Letters.HorizontalAlign.NOT_SPECIFIED, TextAlignment.Left);\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.left, TextAlignment.Left);\r
                }\r
                #endregion\r
                public Letters clone()\r
@@ -393,9 +393,9 @@ namespace Psychlops
                        double left = 0;\r
                        switch (d.align)\r
                        {\r
-                               case Letters.HorizontalAlign.TEXT_ALIGN_LEFT: break;\r
-                               case Letters.HorizontalAlign.TEXT_ALIGN_CENTER: left = tmp.Width / 2; break;\r
-                               case Letters.HorizontalAlign.TEXT_ALIGN_RIGHT: left = tmp.Width; break;\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
index 95dd6bc..2d82293 100644 (file)
@@ -61,26 +61,27 @@ namespace Psychlops
                protected double width_, height_;\r
                public Point datum;\r
 \r
-               public enum HorizontalAlign { NOT_SPECIFIED=-1, TEXT_ALIGN_LEFT=0, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT };\r
+               public enum HorizontalAlign { not_specified=-1, left=0, center, right };\r
+               public const HorizontalAlign NOT_SPECIFIED=HorizontalAlign.not_specified, TEXT_ALIGN_LEFT=HorizontalAlign.left, TEXT_ALIGN_CENTER = HorizontalAlign.center, TEXT_ALIGN_RIGHT=HorizontalAlign.right;\r
                public HorizontalAlign align;\r
 \r
                public Letters()\r
                {\r
                        str_ = "";\r
                        font = Font.default_font;\r
-                       align = HorizontalAlign.TEXT_ALIGN_LEFT;\r
+                       align = HorizontalAlign.left;\r
                }\r
                public Letters(String init_str)\r
                {\r
                        str_ = init_str;\r
                        font_ = Font.default_font;\r
-                       align = HorizontalAlign.TEXT_ALIGN_LEFT;\r
+                       align = HorizontalAlign.center;\r
                }\r
                public Letters(String init_str, Font init_font)\r
                {\r
                        str_ = init_str;\r
                        font_ = init_font;\r
-                       align = HorizontalAlign.TEXT_ALIGN_LEFT;\r
+                       align = HorizontalAlign.right;\r
                }\r
                ~Letters()\r
                {\r
@@ -100,7 +101,7 @@ namespace Psychlops
                public Figure centering(Point p)\r
                {\r
                        datum = p;\r
-                       align = HorizontalAlign.TEXT_ALIGN_CENTER;\r
+                       align = HorizontalAlign.center;\r
                        return this;\r
                }\r
                public Figure shift(Point p)\r
index fd67eb0..e16003e 100644 (file)
@@ -3,4 +3,77 @@
 namespace Psychlops\r
 {\r
 \r
+\r
+       public abstract class Matrix\r
+       {\r
+               public abstract double this[int row, int col]\r
+               {\r
+                       get;\r
+                       set;\r
+               }\r
+\r
+               public static Matrix operator +(Matrix m, double d)\r
+               {\r
+                       return new MatrixExpression;\r
+               }\r
+       }\r
+\r
+\r
+       namespace Internal\r
+       {\r
+\r
+               public class MatrixImplementation : Matrix\r
+               {\r
+                       internal double[] elements;\r
+                       readonly int nrow, ncol;\r
+\r
+                       public MatrixImplementation(int dnrow, int dncol)\r
+                       {\r
+                               nrow = dnrow;\r
+                               ncol = dncol;\r
+                               elements = new double[nrow * ncol];\r
+                       }\r
+\r
+                       public override double this[int row, int col]\r
+                       {\r
+                               get\r
+                               {\r
+                                       return elements[(row - 1) * ncol + (col - 1)];\r
+                               }\r
+                               set\r
+                               {\r
+                                       elements[(row - 1) * ncol + (col - 1)] = value;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               public class MatrixExpression : Matrix\r
+               {\r
+                       MatrixImplementation imp;\r
+                       readonly int nrow, ncol;\r
+                       readonly int drow, dcol;\r
+                       \r
+                       public MatrixExpression(MatrixImplementation target, int ddrow, int ddcol, int dnrow, int dncol)\r
+                       {\r
+                               nrow = dnrow;\r
+                               ncol = dncol;\r
+                               drow = ddrow;\r
+                               dcol = ddcol;\r
+                               imp = target;\r
+                       }\r
+\r
+                       public override double this[int row, int col]\r
+                       {\r
+                               get\r
+                               {\r
+                                       return imp.elements[(row - drow) * ncol + (col - dcol)];\r
+                               }\r
+                               set\r
+                               {\r
+                                       imp.elements[(row - drow) * ncol + (col - dcol)] = value;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
 }
\ No newline at end of file