\r
internal static partial class CONST\r
{\r
- internal static readonly Int32 MAX_OBJ_N = 1500;\r
- internal static readonly Int32 MOBJ_N = 1000;\r
- internal static readonly Int32 COBJ_N = 300;\r
- internal static readonly Int32 HOBJ_N = 100;\r
+ internal static readonly Int32 MAX_OBJ_N = 4096;//65535;\r
+ internal static readonly Int32 MOBJ_N = 2048;//16384;\r
+ internal static readonly Int32 COBJ_N = 300;//4096;\r
+ internal static readonly Int32 HOBJ_N = 100;//1024;\r
+ internal static readonly Int32 MOBJ_I = 500;\r
+ internal static readonly Int32 COBJ_I = 300;\r
+ internal static readonly Int32 HOBJ_I = 100;\r
}\r
\r
namespace Templates\r
internal Internal.PrimitiveFigure[] stack;\r
internal int stackN = 0;\r
internal Line[] lineStack;\r
- internal int lineStackN = 0;\r
+ internal int lineStackN = 0, lineStackMAX = 0;\r
internal Rectangle[] rectStack;\r
- internal int rectStackN = 0;\r
+ internal int rectStackN = 0, rectStackMAX = 0;\r
internal ShaderField[] shaderStack;\r
- internal int shaderStackN = 0;\r
+ internal int shaderStackN = 0, shaderStackMAX = 0;\r
internal Ellipse[] ellipseStack;\r
- internal int ellipseStackN = 0;\r
+ internal int ellipseStackN = 0, ellipseStackMAX = 0;\r
internal Polygon[] polygonStack;\r
- internal int polygonStackN = 0;\r
+ internal int polygonStackN = 0, polygonStackMAX = 0;\r
internal Letters[] lettersStack;\r
- internal int lettersStackN = 0;\r
+ internal int lettersStackN = 0, lettersStackMAX = 0;\r
internal Image[] imageStack;\r
- internal int imageStackN = 0;\r
+ internal int imageStackN = 0, imageStackMAX = 0;\r
internal Group[] groupStack;\r
- internal int groupStackN = 0;\r
+ internal int groupStackN = 0, groupStackMAX = 0;\r
\r
public StackableDrawable()\r
{\r
lettersStack = new Letters[CONST.COBJ_N];\r
imageStack = new Image[CONST.HOBJ_N];\r
groupStack = new Group[CONST.HOBJ_N];\r
- for (int i = 0; i < CONST.MOBJ_N; i++)\r
+ for (int i = 0; i < CONST.MOBJ_I; i++)\r
{\r
- lineStack[i] = new Line(0,0,0,0);\r
rectStack[i] = new Rectangle();\r
- ellipseStack[i] = new Ellipse();\r
}\r
- for (int i = 0; i < CONST.COBJ_N; i++)\r
+ rectStackMAX = CONST.MOBJ_I;\r
+ for (int i = 0; i < CONST.COBJ_I; i++)\r
{\r
+ lineStack[i] = new Line(0, 0, 0, 0);\r
+ ellipseStack[i] = new Ellipse();\r
shaderStack[i] = new ShaderField();\r
polygonStack[i] = new Polygon();\r
- lettersStack[i] = new Letters();\r
}\r
- for (int i = 0; i < CONST.HOBJ_N; i++)\r
+ lineStackMAX = CONST.COBJ_I;\r
+ shaderStackMAX = CONST.COBJ_I;\r
+ ellipseStackMAX = CONST.COBJ_I;\r
+ polygonStackMAX = CONST.COBJ_I;\r
+ for (int i = 0; i < CONST.HOBJ_I; i++)\r
{\r
imageStack[i] = new Image();\r
+ lettersStack[i] = new Letters();\r
// groupStack[i] = new Group();\r
}\r
-\r
+ imageStackMAX = CONST.HOBJ_I;\r
+ lettersStackMAX = CONST.HOBJ_I;\r
\r
}\r
\r
internal System.Windows.Point[] pointPool;\r
internal int pointPoolN;\r
internal SolidColorBrush[] brushPool;\r
- internal int brushPoolN;\r
+ internal int brushPoolN, brushPoolMAX;\r
\r
internal System.Windows.Controls.Canvas[] UIElementPool;\r
internal int UIElementPoolN;\r
internal int lastVisibleN;\r
\r
internal System.Windows.Shapes.Line[] linePool;\r
- internal int linePoolN;\r
+ internal int linePoolN, linePoolMAX;\r
internal System.Windows.Shapes.Rectangle[] dummyRectPool;\r
internal System.Windows.Shapes.Rectangle[] rectPool;\r
- internal int rectPoolN;\r
+ internal int rectPoolN, rectPoolMAX;\r
internal System.Windows.Shapes.Rectangle[] shaderPool;\r
- internal int shaderPoolN;\r
+ internal int shaderPoolN, shaderPoolMAX;\r
internal System.Windows.Shapes.Ellipse[] ellipsePool;\r
- internal int ellipsePoolN;\r
+ internal int ellipsePoolN, ellipsePoolMAX;\r
internal System.Windows.Shapes.Polygon[] polygonPool;\r
- internal int polygonPoolN;\r
+ internal int polygonPoolN, polygonPoolMAX;\r
internal System.Windows.Controls.TextBlock[] lettersPool;\r
- internal int lettersPoolN;\r
+ internal int lettersPoolN, lettersPoolMAX;\r
internal System.Windows.Controls.Image[] imagePool;\r
- internal int imagePoolN;\r
+ internal int imagePoolN, imagePoolMAX;\r
internal Dictionary<int, bool> imagePoolT;\r
internal System.Windows.Controls.Canvas[] groupPool;\r
- internal int groupPoolN;\r
+ internal int groupPoolN, groupPoolMAX;\r
\r
#region initializer\r
\r
\r
pointPool = new System.Windows.Point[CONST.MOBJ_N];\r
brushPool = new SolidColorBrush[CONST.MOBJ_N];\r
- linePool = new System.Windows.Shapes.Line[CONST.MOBJ_N];\r
rectPool = new System.Windows.Shapes.Rectangle[CONST.MOBJ_N];\r
- ellipsePool = new System.Windows.Shapes.Ellipse[CONST.MOBJ_N];\r
for (int i = 0; i < CONST.MOBJ_N; i++)\r
{\r
- pointPool[i] = new System.Windows.Point();\r
+ //pointPool[i] = new System.Windows.Point();\r
brushPool[i] = new SolidColorBrush();\r
- linePool[i] = new System.Windows.Shapes.Line();\r
rectPool[i] = new System.Windows.Shapes.Rectangle();\r
- ellipsePool[i] = new System.Windows.Shapes.Ellipse();\r
}\r
+ ellipsePool = new System.Windows.Shapes.Ellipse[CONST.COBJ_N];\r
+ linePool = new System.Windows.Shapes.Line[CONST.COBJ_N];\r
shaderPool = new System.Windows.Shapes.Rectangle[CONST.COBJ_N];\r
polygonPool = new System.Windows.Shapes.Polygon[CONST.COBJ_N];\r
- lettersPool = new System.Windows.Controls.TextBlock[CONST.COBJ_N];\r
for (int i = 0; i < CONST.COBJ_N; i++)\r
{\r
+ linePool[i] = new System.Windows.Shapes.Line();\r
+ ellipsePool[i] = new System.Windows.Shapes.Ellipse();\r
shaderPool[i] = new System.Windows.Shapes.Rectangle();\r
polygonPool[i] = new System.Windows.Shapes.Polygon();\r
- lettersPool[i] = new System.Windows.Controls.TextBlock();\r
}\r
+ lettersPool = new System.Windows.Controls.TextBlock[CONST.HOBJ_N];\r
imagePool = new System.Windows.Controls.Image[CONST.HOBJ_N];\r
imagePoolT = new Dictionary<int, bool>(CONST.HOBJ_N);\r
groupPool = new System.Windows.Controls.Canvas[CONST.HOBJ_N];\r
for (int i = 0; i < CONST.HOBJ_N; i++)\r
{\r
+ lettersPool[i] = new System.Windows.Controls.TextBlock();\r
imagePool[i] = new System.Windows.Controls.Image();\r
imagePoolT.Add(imagePool[i].GetHashCode(), false);\r
groupPool[i] = new System.Windows.Controls.Canvas();\r
public UIElement toNative() { return this; }\r
public void copyToStack(Templates.StackableDrawable d)\r
{\r
+ if (d.rectStackMAX <= d.rectStackN)\r
+ {\r
+ d.rectStackMAX += CONST.HOBJ_I;\r
+ for (int i = d.rectStackN; i < d.rectStackMAX; i++)\r
+ {\r
+ d.rectStack[i] = new Rectangle();\r
+ }\r
+ }\r
var tmp = d.rectStack[d.rectStackN];\r
tmp.v1 = v1;\r
tmp.v2 = v2;\r