Beispiel #1
0
    internal void SetStencil(ShapeTemplate template)
    {
      flowChart1.ClearAll();

      Box backBox = flowChart1.CreateBox(0.0F, 0.0F, 100.0F, 100.0F);
      backBox.Style = BoxStyle.Rectangle;
      backBox.FillColor = System.Drawing.Color.FromArgb(55, System.Drawing.Color.LightSlateGray);
      backBox.FrameColor = System.Drawing.Color.FromArgb(61, System.Drawing.Color.LightSlateGray);
      backBox.Locked = true;

      modelBox = flowChart1.CreateBox(0.0F, 0.0F, 100.0F, 100.0F);
      modelBox.RotationAngle = 0.0F;
      modelBox.Style = BoxStyle.Shape;
      modelBox.Shape = template;
      modelBox.FillColor = System.Drawing.Color.FromArgb(220, 222, 184, 136);
      modelBox.FrameColor = System.Drawing.Color.FromArgb(255, 111, 92, 68);
      modelBox.EnabledHandles = Handles.None;
      modelBox.HandlesStyle = HandlesStyle.Invisible;

    }
Beispiel #2
0
		public bool Contains(ShapeTemplate obj)
		{
			return inner.Contains(obj);
		}
Beispiel #3
0
		internal ShapeCollection(ShapeTemplate[] array)
		{
			inner = new ArrayList();

			foreach (ShapeTemplate shape in array)
				inner.Add(shape);
		}
Beispiel #4
0
		/// <summary>
		/// create an image for the given shape
		/// </summary>
		private void createImage(ShapeTemplate template,
			System.Drawing.Brush brush, FlowChart chart)
		{
			if (template == null)
				return;

			Box b = chart.CreateBox(1, 1, imageSize.Width - 4, imageSize.Height - 4);
			b.Style = BoxStyle.Shape;
			b.Shape = template;
			b.PenWidth = 0;
			b.ShadowColor = Color.FromArgb(40, Color.Black);
			b.ShadowOffsetX = 1;
			b.ShadowOffsetY = 1;
			b.FillColor  = ShapeFillColor;
			b.CustomDraw = CustomDraw.Additional;

			Bitmap image = new Bitmap(imageSize.Width, imageSize.Height);
			Graphics g = Graphics.FromImage(image);
			g.SmoothingMode = SmoothingMode.AntiAlias;
			g.FillRectangle(brush, -1, -1, imageSize.Width + 1, imageSize.Height + 1);

			b.Draw(g, true);
			b.Draw(g, false);

			images.Images.Add(image);

			g.Dispose();
		}
Beispiel #5
0
		/// <summary>
		/// creates a new button
		/// </summary>
		private void createButton(ShapeTemplate template, int index)
		{
			if (template == null)
				return;

			ToolBarButton button = null;
			if (showText)
				button = new ToolBarButton(template.Id);
			else
				button = new ToolBarButton("");
			button.Tag = template;
			button.ImageIndex = index;
			button.ToolTipText = template.Id;
			base.Buttons.Add(button);

			// Set as default
			if (document.DefaultShape == template &&
				document.BoxStyle == BoxStyle.Shape)
				button.Pushed = true;
		}
Beispiel #6
0
		public override void loadFrom(BinaryReader reader, PersistContext ctx)
		{
			base.loadFrom(reader, ctx);

			int intStyle = 0;
			ShapeTemplate polyShape = null;

			setExpanded(reader.ReadBoolean());
			setExpandable(reader.ReadBoolean());
			enabledHandles = (Handles)reader.ReadInt64();
			intStyle = reader.ReadInt32();
			if (intStyle == 4) // Polygon
				style = BoxStyle.Shape;
			else
				style = (BoxStyle)intStyle;
			fillColor = ctx.loadColor();
			frameColor = ctx.loadColor();
			picturePos = (ImageAlign)reader.ReadInt32();
			text = reader.ReadString();
			textColor = ctx.loadColor();
			textFormat = ctx.loadStringFormat();
			transparent = reader.ReadBoolean();

			// this was used with the now obsolete bsPolygon boxes
			if (ctx.FileVersion < 22)
			{
				ctx.loadPtfArray();
				int c = reader.ReadInt32();
				byte[] b = reader.ReadBytes(c);

				if (intStyle == 4) // Polygon
					polyShape = new ShapeTemplate(b);
			}

			ctx.loadReference(this);
			ctx.loadReference(this);
			ArrowAnchor anchorIncoming =(ArrowAnchor)reader.ReadInt32();
			ArrowAnchor anchorOutgoing= (ArrowAnchor)reader.ReadInt32();
			customDraw = (CustomDraw)reader.ReadInt32();

			image = ctx.loadImage();

			pen.Width = PenWidth;
			pen.Color = frameColor;
			pen.DashStyle = PenDashStyle;
			brush.Release();
			brush = new SolidBrush(fillColor);
			brush.AddRef();

			if (ctx.FileVersion > 2)
			{
				if (ctx.FileVersion < 6)
				{
					shapeTemplate = (ShapeTemplate)ctx.loadObject();
					shapeData = (ShapeTemplate.PathData)ctx.loadObject();
				}

				if (ctx.FileVersion > 3)
				{
					pen = (Pen)ctx.loadObject();
					ctx.loadReference(this);

					selStyle = (HandlesStyle)reader.ReadInt32();

					if (ctx.FileVersion > 4)
					{
						// new in save format 5
						anchorPattern = ctx.loadAnchorPattern();

						if (ctx.FileVersion > 5)
						{
							// new in save format 6
							PolyTextLayout = reader.ReadBoolean();
							ShapeOrientation = (float)reader.ReadDouble();

							int hasShape = reader.ReadInt32();
							if (hasShape != -1)
							{
								string shpId = reader.ReadString();
								if (shpId == "")
								{
									shapeTemplate = (ShapeTemplate)ctx.loadObject();
									shapeData = (ShapeTemplate.PathData)ctx.loadObject();
								}
								else
								{
									ShapeTemplate stvalue = ShapeTemplate.FromId(shpId);
									ShapeTemplate newVal = flowChart.DefaultShape;
									if (stvalue != null)
										newVal = stvalue;
									if (newVal.Id == "")
										shapeTemplate = (ShapeTemplate)newVal.Clone();
									else
										shapeTemplate = newVal;
									shapeData = null;
								}
								updateShapePoints();
							}

							if (intStyle == 4) // Polygon
							{
								shapeTemplate = polyShape;
								shapeData = null;

								updateShapePoints();
							}

							if (ctx.FileVersion > 12)
							{
								// new in save format 13
								// now loaded in Node::loadFrom
								if (ctx.FileVersion < 15)
									hyperLink = reader.ReadString();

								if (ctx.FileVersion > 13)
								{
									// new in save format 14
									useStyledText = reader.ReadBoolean();

									if (ctx.FileVersion > 21)
									{
										// new in save format 22
										rotationAngle = reader.ReadSingle();
										rotateContents = reader.ReadBoolean();
									}
								}
							}
						}
					}
				}
			}

			updateText();
			layoutText();
		}
Beispiel #7
0
		static ShapeTemplate()
		{
			lock (defaultShapes)
			{
				// Fill the list with all default shapes.
				// Each shape has associated string id to it
				if (defaultShapes.Count == 0 || !defaultShapesDefined)
				{
					defaultShapesDefined = true;

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100),
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						FillMode.Winding, "Rectangle");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 100, 50),
							new LineTemplate(100, 50, 50, 100),
							new LineTemplate(50, 100, 0, 50),
							new LineTemplate(0, 50, 50, 0)
						},
						FillMode.Winding, "Decision");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 50, 0),
							new BezierTemplate(50, 0, 80, 0, 100, 30, 100, 50),
							new BezierTemplate(100, 50, 100, 70, 80, 100, 50, 100),
							new LineTemplate(50, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						FillMode.Winding, "Delay");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100),
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 15, 100),
							new LineTemplate(85, 0, 85, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 85, 0),
							new LineTemplate(85, 0, 85, 100),
							new LineTemplate(85, 100, 15, 100),
							new LineTemplate(15, 100, 15, 0)
						},
						FillMode.Winding, "Procedure");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new ArcTemplate(0, 0, 100, 100, 0, 360)
						},
						FillMode.Winding, "Ellipse");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 50, 0),
							new LineTemplate(50, 0, 100, 100),
							new LineTemplate(100, 100, 0, 100)
						},
						FillMode.Winding, "Alternative");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(40, 50, 0, 0),
							new LineTemplate(0, 0, 60, 0),
							new LineTemplate(60, 0, 100, 50),
							new LineTemplate(100, 50, 60, 100),
							new LineTemplate(60, 100, 0, 100),
							new LineTemplate(0, 100, 40, 50)
						},
						FillMode.Winding, "Arrow1");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 25, 0),
							new LineTemplate(25, 0, 25, 40),
							new LineTemplate(25, 40, 60, 40),
							new LineTemplate(60, 40, 60, 0),
							new LineTemplate(60, 0, 100, 50),
							new LineTemplate(100, 50, 60, 100),
							new LineTemplate(60, 100, 60, 60),
							new LineTemplate(60, 60, 25, 60),
							new LineTemplate(25, 60, 25, 100),
							new LineTemplate(25, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						FillMode.Winding, "Arrow2");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 30, 60, 30),
							new LineTemplate(60, 30, 60, 0),
							new LineTemplate(60, 0, 100, 50),
							new LineTemplate(100, 50, 60, 100),
							new LineTemplate(60, 100, 60, 70),
							new LineTemplate(60, 70, 0, 70),
							new LineTemplate(0, 70, 0, 30)
						},
						FillMode.Winding, "Arrow3");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 30, 60, 30),
							new LineTemplate(60, 30, 60, 0),
							new LineTemplate(60, 0, 100, 50),
							new LineTemplate(100, 50, 60, 100),
							new LineTemplate(60, 100, 60, 70),
							new LineTemplate(60, 70, 0, 70),
							new LineTemplate(0, 70, 20, 50),
							new LineTemplate(20, 50, 0, 30)
						},
						FillMode.Winding, "Arrow4");
				
					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(30, 30, 30, 0),
							new LineTemplate(30, 0, 0, 50),
							new LineTemplate(0, 50, 30, 100),
							new LineTemplate(30, 100, 30, 70),
							new LineTemplate(30, 70, 70, 70),
							new LineTemplate(70, 70, 70, 100),
							new LineTemplate(70, 100, 100, 50),
							new LineTemplate(100, 50, 70, 0),
							new LineTemplate(70, 0, 70, 30),
							new LineTemplate(70, 30, 30, 30)
						},
						FillMode.Winding, "Arrow5");
				
					new ShapeTemplate(
						new ElementTemplate[]
						{
							new BezierTemplate(0, 100, 50, 66, 50, 33, 0, 0),
							new LineTemplate(0, 0, 100, 50),
							new LineTemplate(100, 50, 0, 100)
						},
						FillMode.Winding, "Arrow6");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 70, 0),
							new LineTemplate(70, 0, 100, 50),
							new LineTemplate(100, 50, 70, 100),
							new LineTemplate(70, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						FillMode.Winding, "Arrow7");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(40, 0, 40, 35),
							new LineTemplate(40, 35, 0, 0),
							new LineTemplate(0, 0, 0, 100),
							new LineTemplate(0, 100, 40, 65),
							new LineTemplate(40, 65, 40, 100),
							new LineTemplate(40, 100, 100, 50),
							new LineTemplate(100, 50, 40, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(40, 35, 40, 65)
						},
						null,
						FillMode.Winding, "Arrow8");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 25, 0, 25),
							new LineTemplate(0, 25, 0, 100),
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 100, 25),
							new LineTemplate(100, 25, 75, 0),
							new LineTemplate(75, 0, 25, 0),
							new LineTemplate(25, 0, 0, 25)
						},
						FillMode.Winding, "BeginLoop");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 100, 100)
						},
						FillMode.Winding, "Collate");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new BezierTemplate(0, 80, 6, 94, 30, 100, 50, 100),
							new BezierTemplate(50, 100, 70, 100, 94, 94, 100, 80),
							new LineTemplate(100, 80, 50, 0),
							new LineTemplate(50, 0, 0, 80)
						},
						new ElementTemplate[]
						{
							new BezierTemplate(0, 80, 10, 65, 30, 60, 50, 60),
							new BezierTemplate(50, 60, 70, 60, 90, 65, 100, 80)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 80, 50, 0),
							new LineTemplate(50, 0, 100, 80),
							new BezierTemplate(100, 80, 94, 66, 70, 60, 50, 60),
							new BezierTemplate(50, 60, 30, 60, 6, 66, 0, 80)
						},
						FillMode.Winding, "ConeDown");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new BezierTemplate(0, 80, 6, 94, 30, 100, 50, 100),
							new BezierTemplate(50, 100, 70, 100, 94, 94, 100, 80),
							new LineTemplate(100, 80, 50, 0),
							new LineTemplate(50, 0, 0, 80)
						},
						FillMode.Winding, "ConeUp");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 15, 100, 15),
							new LineTemplate(0, 85, 100, 85)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 15, 100, 15),
							new LineTemplate(100, 15, 100, 85),
							new LineTemplate(100, 85, 0, 85),
							new LineTemplate(0, 85, 0, 15)
						},
						FillMode.Winding, "CreateRequest");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(40, 40, 40, 0),
							new LineTemplate(40, 0, 60, 0),
							new LineTemplate(60, 0, 60, 40),
							new LineTemplate(60, 40, 100, 40),
							new LineTemplate(100, 40, 100, 60),
							new LineTemplate(100, 60, 60, 60),
							new LineTemplate(60, 60, 60, 100),
							new LineTemplate(60, 100, 40, 100),
							new LineTemplate(40, 100, 40, 60),
							new LineTemplate(40, 60, 0, 60),
							new LineTemplate(0, 60, 0, 40),
							new LineTemplate(0, 40, 40, 40)
						},
						FillMode.Winding, "Cross");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 20, 100, 80),
							new BezierTemplate(100, 80, 100, 95, 70, 100, 50, 100),
							new BezierTemplate(50, 100, 30, 100, 0, 95, 0, 80),
							new LineTemplate(0, 80, 0, 20),
							new BezierTemplate(0, 20, 0, 5, 30, 0, 50, 0),
							new BezierTemplate(50, 0, 70, 0, 100, 5, 100, 20)
						},
						new ElementTemplate[]
						{
							new BezierTemplate(100, 20, 100, 35, 70, 40, 50, 40),
							new BezierTemplate(50, 40, 30, 40, 0, 35, 0, 20)
						},
						new ElementTemplate[]
						{
							new LineTemplate(100, 20, 100, 80),
							new BezierTemplate(100, 80, 100, 95, 70, 100, 50, 100),
							new BezierTemplate(50, 100, 30, 100, 0, 95, 0, 80),
							new LineTemplate(0, 80, 0, 20),
							new BezierTemplate(0, 20, 16, 35, 30, 40, 50, 40),
							new BezierTemplate(50, 40, 70, 40, 100, 35, 100, 20)
						},
						FillMode.Winding, "Cylinder");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 50, 25, 100),
							new LineTemplate(25, 100, 75, 100),
							new LineTemplate(75, 100, 100, 50),
							new LineTemplate(100, 50, 75, 0),
							new LineTemplate(75, 0, 25, 0),
							new LineTemplate(25, 0, 0, 50)
						},
						FillMode.Winding, "Decision2");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 100, 100),
							new BezierTemplate(100, 100, 85, 100, 67, 75, 67, 50),
							new BezierTemplate(67, 50, 67, 25, 85, 0, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new BezierTemplate(0, 0, 15, 0, 33, 25, 33, 50),
							new BezierTemplate(33, 50, 33, 75, 15, 100, 0, 100)
						},
						FillMode.Winding, "DInDelay");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(33, 100, 67, 100),
							new BezierTemplate(67, 100, 80, 100, 100, 75, 100, 50),
							new BezierTemplate(100, 50, 100, 25, 85, 0, 67, 0),
							new LineTemplate(67, 0, 33, 0),
							new BezierTemplate(33, 0, 15, 0, 0, 25, 0, 50),
							new BezierTemplate(0, 50, 0, 75, 15, 100, 33, 100)
						},
						FillMode.Winding, "DOutDelay");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 20, 100, 80),
							new BezierTemplate(100, 80, 100, 95, 70, 100, 50, 100),
							new BezierTemplate(50, 100, 30, 100, 0, 95, 0, 80),
							new LineTemplate(0, 80, 0, 20),
							new BezierTemplate(0, 20, 0, 5, 30, 0, 50, 0),
							new BezierTemplate(50, 0, 70, 0, 100, 5, 100, 20)
						},
						new ElementTemplate[]
						{
							new BezierTemplate(100, 20, 100, 35, 70, 40, 50, 40),
							new BezierTemplate(50, 40, 30, 40, 0, 35, 0, 20),
							new BezierTemplate(100, 30, 100, 45, 70, 50, 50, 50),
							new BezierTemplate(50, 50, 30, 50, 0, 45, 0, 30)
						},
						new ElementTemplate[]
						{
							new LineTemplate(100, 30, 100, 80),
							new BezierTemplate(100, 80, 100, 95, 70, 100, 50, 100),
							new BezierTemplate(50, 100, 30, 100, 0, 95, 0, 80),
							new LineTemplate(0, 80, 0, 30),
							new BezierTemplate(0, 30, 16, 45, 30, 50, 50, 50),
							new BezierTemplate(50, 50, 70, 50, 100, 45, 100, 30)
						},
						FillMode.Winding, "DiskStorage");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(10, 100, 90, 100),
							new BezierTemplate(90, 100, 95, 100, 100, 95, 100, 90),
							new LineTemplate(100, 90, 100, 10),
							new BezierTemplate(100, 10, 100, 5, 95, 0, 90, 0),
							new LineTemplate(90, 0, 10, 0),
							new BezierTemplate(10, 0, 5, 0, 0, 5, 0, 10),
							new LineTemplate(0, 10, 0, 90),
							new BezierTemplate(0, 90, 0, 95, 5, 100, 10, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 15, 100, 15)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 15, 100, 15),
							new LineTemplate(100, 15, 100, 100),
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 0, 15)
						},
						FillMode.Winding, "DividedEvent");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 15, 100, 15)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 15, 100, 15),
							new LineTemplate(100, 15, 100, 100),
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 0, 15)
						},
						FillMode.Winding, "DividedProcess");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 90, 0, 0),
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 90),
							new BezierTemplate(100, 90, 83, 80, 66, 80, 50, 90),
							new BezierTemplate(50, 90, 33, 100, 16, 100, 0, 90)
						},
						FillMode.Winding, "Document");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 75, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 0, 75),
							new LineTemplate(0, 75, 25, 100),
							new LineTemplate(25, 100, 75, 100),
							new LineTemplate(75, 100, 100, 75)
						},
						FillMode.Winding, "EndLoop");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new BezierTemplate(50, 20, 50, 5, 65, 0, 75, 0),
							new BezierTemplate(75, 0, 85, 0, 100, 10, 100, 25),
							new BezierTemplate(100, 25, 100, 50, 67, 75, 50, 100),
							new BezierTemplate(50, 100, 33, 75, 0, 50, 0, 25),
							new BezierTemplate(0, 25, 0, 10, 15, 0, 25, 0),
							new BezierTemplate(25, 0, 35, 0, 50, 5, 50, 20)
						},
						FillMode.Winding, "Heart");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 0, 100),
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 100, 0),
							new LineTemplate(100, 0, 0, 40),
							new LineTemplate(0, 40, 0, 100)
						},
						FillMode.Winding, "Input");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 15, 100, 15),
							new LineTemplate(15, 0, 15, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 15, 100, 15),
							new LineTemplate(100, 15, 100, 100),
							new LineTemplate(100, 100, 15, 100),
							new LineTemplate(15, 100, 15, 15)
						},
						FillMode.Winding, "InternalStorage");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 80, 50),
							new LineTemplate(80, 50, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						FillMode.Winding, "MessageFromUser");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 100, 20, 100),
							new LineTemplate(20, 100, 0, 50),
							new LineTemplate(0, 50, 20, 0),
							new LineTemplate(20, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100)
						},
						FillMode.Winding, "MessageToUser");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 92, 0, 20),
							new LineTemplate(0, 20, 10, 20),
							new LineTemplate(10, 20, 10, 10),
							new LineTemplate(10, 10, 20, 10),
							new LineTemplate(20, 10, 20, 0),
							new LineTemplate(20, 0, 100, 0),
							new LineTemplate(100, 0, 100, 72),
							new BezierTemplate(100, 72, 95, 69, 90, 69, 90, 69),
							new LineTemplate(90, 69, 90, 82),
							new BezierTemplate(90, 82, 85, 79, 80, 79, 80, 79),
							new LineTemplate(80, 79, 80, 92),
							new BezierTemplate(80, 92, 66, 84, 53, 84, 39, 92),
							new BezierTemplate(39, 92, 26, 100, 13, 100, 0, 92)
						},
						new ElementTemplate[]
						{
							new LineTemplate(10, 20, 80, 20),
							new LineTemplate(80, 20, 80, 79),
							new LineTemplate(20, 10, 90, 10),
							new LineTemplate(90, 10, 90, 69)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 92, 0, 20),
							new LineTemplate(0, 20, 80, 20),
							new LineTemplate(80, 20, 80, 20),
							new LineTemplate(80, 20, 80, 92),
							new BezierTemplate(80, 92, 66, 84, 53, 84, 39, 92),
							new BezierTemplate(39, 92, 26, 100, 13, 100, 0, 92)
						},
						FillMode.Winding, "MultiDocument");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 50, 100),
							new LineTemplate(50, 100, 100, 0),
							new LineTemplate(100, 0, 0, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(10, 20, 90, 20)
						},
						new ElementTemplate[]
						{
							new LineTemplate(50, 100, 10, 20),
							new LineTemplate(10, 20, 90, 20),
							new LineTemplate(90, 20, 50, 100)
						},
						FillMode.Winding, "OfflineStorage");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 70, 0, 0),
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 70),
							new LineTemplate(100, 70, 50, 100),
							new LineTemplate(50, 100, 0, 70)
						},
						FillMode.Winding, "OffpageReference");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 80, 50),
							new LineTemplate(80, 50, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 15, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(20, 0, 20, 100),
							new LineTemplate(20, 100, 100, 100),
							new LineTemplate(100, 100, 80, 50),
							new LineTemplate(80, 50, 100, 0),
							new LineTemplate(100, 0, 20, 0)
						},
						FillMode.Winding, "PrimitiveFromCall");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 100, 20, 100),
							new LineTemplate(20, 100, 0, 50),
							new LineTemplate(0, 50, 20, 0),
							new LineTemplate(20, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(85, 0, 85, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(80, 0, 80, 100),
							new LineTemplate(80, 100, 20, 100),
							new LineTemplate(20, 100, 0, 50),
							new LineTemplate(0, 50, 20, 0),
							new LineTemplate(20, 0, 80, 0)
						},
						FillMode.Winding, "PrimitiveToCall");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100),
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 15, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100),
							new LineTemplate(100, 100, 15, 100),
							new LineTemplate(15, 100, 15, 0)
						},
						FillMode.Winding, "Process");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 100, 20),
							new LineTemplate(100, 20, 100, 80),
							new LineTemplate(100, 80, 50, 100),
							new LineTemplate(50, 100, 50, 100),
							new LineTemplate(50, 100, 0, 80),
							new LineTemplate(0, 80, 0, 20),
							new LineTemplate(0, 20, 50, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 20, 50, 40),
							new LineTemplate(50, 40, 50, 100),
							new LineTemplate(50, 40, 100, 20)
						},
						null,
						FillMode.Winding, "Prysm");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 100, 100, 80),
							new LineTemplate(100, 80, 50, 0),
							new LineTemplate(50, 0, 0, 80),
							new LineTemplate(0, 80, 50, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 80, 50, 60),
							new LineTemplate(50, 0, 50, 60),
							new LineTemplate(100, 80, 50, 60),
						},
						null,
						FillMode.Winding, "PyramidDown");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 100, 100, 80),
							new LineTemplate(100, 80, 50, 0),
							new LineTemplate(50, 0, 0, 80),
							new LineTemplate(0, 80, 50, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 50, 100)
						},
						null,
						FillMode.Winding, "PyramidUp");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 0, 100),
							new LineTemplate(0, 100, 0, 30),
							new LineTemplate(0, 30, 30, 0),
							new LineTemplate(30, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100),
							new LineTemplate(100, 100, 0, 100)
						},
						FillMode.Winding, "PunchedCard");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 25, 0),
							new LineTemplate(25, 0, 100, 0),
							new LineTemplate(100, 0, 75, 100),
							new LineTemplate(75, 100, 0, 100)
						},
						FillMode.Winding, "Save");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 100, 50),
							new LineTemplate(100, 50, 50, 100),
							new LineTemplate(50, 100, 0, 50),
							new LineTemplate(0, 50, 50, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 50, 100, 50)
						},
						null,
						FillMode.Winding, "Sort");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new ArcTemplate(0, 0, 100, 100, 0, 360)
						},
						new ElementTemplate[]
						{
							new BezierTemplate(50, 0, 25, 25, 25, 75, 50, 100)
						},
						new ElementTemplate[]
						{
							new BezierTemplate(50, 100, 25, 75, 25, 25, 50, 0),
							new ArcTemplate(50, 0, 50, 100, 270, 180)
						},
						FillMode.Winding, "Sphere");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new BezierTemplate(15, 100, 5, 100, 0, 75, 0, 50),
							new BezierTemplate(0, 50, 0, 25, 5, 0, 15, 0),
							new LineTemplate(15, 0, 85, 0),
							new BezierTemplate(85, 0, 95, 0, 100, 25, 100, 50),
							new BezierTemplate(100, 50, 100, 75, 95, 100, 85, 100),
							new LineTemplate(85, 100, 15, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 15, 100),
							new LineTemplate(85, 0, 85, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 80, 0),
							new LineTemplate(80, 0, 80, 100),
							new LineTemplate(80, 100, 15, 100),
							new LineTemplate(15, 100, 15, 0)
						},
						FillMode.Winding, "Start");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 67, 100),
							new BezierTemplate(67, 100, 85, 100, 100, 75, 100, 50),
							new BezierTemplate(100, 50, 100, 25, 85, 0, 67, 0),
							new LineTemplate(67, 0, 0, 0),
							new BezierTemplate(0, 0, 15, 0, 33, 25, 33, 50),
							new BezierTemplate(33, 50, 33, 75, 15, 100, 0, 100)
						},
						FillMode.Winding, "DDelay");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(20, 100, 80, 100),
							new BezierTemplate(80, 100, 90, 100, 100, 75, 100, 50),
							new BezierTemplate(100, 50, 100, 25, 90, 0, 80, 0),
							new LineTemplate(80, 0, 20, 0),
							new BezierTemplate(20, 0, 10, 0, 0, 25, 0, 50),
							new BezierTemplate(0, 50, 0, 75, 10, 100, 20, 100)
						},
						FillMode.Winding, "Terminator");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 20, 100),
							new LineTemplate(20, 100, 80, 100),
							new LineTemplate(80, 100, 100, 0)
						},
						FillMode.Winding, "ManualOperation");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new BezierTemplate(40, 100, 15, 100, 0, 70, 0, 50),
							new BezierTemplate(0, 50, 0, 30, 15, 0, 40, 0),
							new LineTemplate(40, 0, 85, 0),
							new BezierTemplate(85, 0, 100, 20, 100, 30, 100, 50),
							new BezierTemplate(100, 50, 100, 70, 100, 80, 85, 100),
							new LineTemplate(85, 100, 40, 100)
						},
						FillMode.Winding, "Display");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 80, 100),
							new LineTemplate(80, 100, 80, 90),
							new LineTemplate(80, 90, 90, 90),
							new LineTemplate(90, 90, 90, 80),
							new LineTemplate(90, 80, 100, 80),
							new LineTemplate(100, 80, 100, 0),
							new LineTemplate(100, 0, 20, 0),
							new LineTemplate(20, 0, 20, 10),
							new LineTemplate(20, 10, 10, 10),
							new LineTemplate(10, 10, 10, 20),
							new LineTemplate(10, 20, 0, 20),
							new LineTemplate(0, 20, 0, 100)
						},
						new ElementTemplate[]
						{
							new LineTemplate(10, 20, 80, 20),
							new LineTemplate(80, 20, 80, 90),
							new LineTemplate(20, 10, 90, 10),
							new LineTemplate(90, 10, 90, 80)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 80, 100),
							new LineTemplate(80, 100, 80, 20),
							new LineTemplate(80, 20, 0, 20),
							new LineTemplate(0, 20, 0, 100)
						},
						FillMode.Winding, "MultiProc");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 90, 0, 0),
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 90),
							new BezierTemplate(100, 90, 83, 80, 66, 80, 50, 90),
							new BezierTemplate(50, 90, 33, 100, 16, 100, 0, 90)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 0, 15, 96)
						},
						new ElementTemplate[]
						{
							new LineTemplate(16, 94, 16, 0),
							new LineTemplate(16, 0, 100, 0),
							new LineTemplate(100, 0, 100, 90),
							new BezierTemplate(100, 90, 83, 80, 66, 80, 50, 90),
							new BezierTemplate(50, 90, 33, 100, 24, 100, 16, 94)
						},
						FillMode.Winding, "LinedDocument");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(100, 20, 100, 80),
							new BezierTemplate(100, 80, 100, 95, 70, 100, 50, 100),
							new BezierTemplate(50, 100, 30, 100, 0, 95, 0, 80),
							new LineTemplate(0, 80, 0, 20),
							new BezierTemplate(0, 20, 0, 5, 30, 0, 50, 0),
							new BezierTemplate(50, 0, 70, 0, 100, 5, 100, 20)
						},
						new ElementTemplate[]
						{
							new BezierTemplate(100, 20, 100, 35, 70, 40, 50, 40),
							new BezierTemplate(50, 40, 30, 40, 0, 35, 0, 20),
							new BezierTemplate(100, 30, 100, 45, 70, 50, 50, 50),
							new BezierTemplate(50, 50, 30, 50, 0, 45, 0, 30),
							new BezierTemplate(100, 40, 100, 55, 70, 60, 50, 60),
							new BezierTemplate(50, 60, 30, 60, 0, 55, 0, 40)
						},
						new ElementTemplate[]
						{
							new LineTemplate(100, 40, 100, 80),
							new BezierTemplate(100, 80, 100, 95, 70, 100, 50, 100),
							new BezierTemplate(50, 100, 30, 100, 0, 95, 0, 80),
							new LineTemplate(0, 80, 0, 40),
							new BezierTemplate(0, 40, 16, 55, 30, 60, 50, 60),
							new BezierTemplate(50, 60, 70, 60, 100, 55, 100, 40)
						},
						FillMode.Winding, "Database");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(15, 100, 85, 100),
							new LineTemplate(85, 100, 100, 50),
							new LineTemplate(100, 50, 85, 0),
							new LineTemplate(85, 0, 15, 0),
							new LineTemplate(15, 0, 0, 50),
							new LineTemplate(0, 50, 15, 100)
						},
						FillMode.Winding, "DataTransmition");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new BezierTemplate(67, 0, 58, 2, 61, 7, 60, 19),
							new BezierTemplate(60, 19, 49, 11, 51, 8, 43, 14),
							new BezierTemplate(43, 14, 37, 19, 40, 25, 41, 33),
							new BezierTemplate(41, 33, 35, 24, 27, 13, 13, 21),
							new BezierTemplate(13, 21, 10, 25, 7, 29, 15, 44),
							new BezierTemplate(15, 44, 5, 47, 0, 50, 0, 63),
							new BezierTemplate(0, 63, 3, 74, 17, 72, 27, 71),
							new BezierTemplate(27, 71, 21, 77, 14, 93, 27, 100),
							new BezierTemplate(27, 100, 38, 100, 52, 93, 55, 78),
							new BezierTemplate(55, 78, 70, 93, 81, 87, 88, 80),
							new BezierTemplate(88, 80, 91, 69, 87, 63, 79, 57),
							new BezierTemplate(79, 57, 90, 52, 100, 43, 100, 24),
							new BezierTemplate(100, 24, 96, 7, 77, 0, 67, 0)
						},
						FillMode.Winding, "Cloud");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(60, 90, 100, 100),
							new LineTemplate(100, 100, 100, 0),
							new LineTemplate(100, 0, 0, 0),
							new LineTemplate(0, 0, 0, 90),
							new LineTemplate(0, 90, 60, 90)
						},
						FillMode.Winding, "TransmittalTape");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100),
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(5, 5, 95, 5),
							new LineTemplate(95, 5, 95, 95),
							new LineTemplate(95, 95, 5, 95),
							new LineTemplate(5, 95, 5, 5)
						},
						new ElementTemplate[]
						{
							new LineTemplate(5, 5, 95, 5),
							new LineTemplate(95, 5, 95, 95),
							new LineTemplate(95, 95, 5, 95),
							new LineTemplate(5, 95, 5, 5)
						},
						FillMode.Winding, "FramedRectangle");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 90, 0, 10),
							new BezierTemplate(0, 10, 16, 20, 33, 20, 50, 10),
							new BezierTemplate(50, 10, 66, 0, 83, 0, 100, 10),
							new LineTemplate(100, 10, 100, 90),
							new BezierTemplate(100, 90, 83, 80, 66, 80, 50, 90),
							new BezierTemplate(50, 90, 33, 100, 16, 100, 0, 90)
						},
						FillMode.Winding, "Microform");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 80, 75),
							new LineTemplate(80, 75, 100, 85),
							new LineTemplate(100, 85, 100, 15),
							new LineTemplate(100, 15, 80, 25),
							new LineTemplate(80, 25, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						FillMode.Winding, "MicroformRecording");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 50, 74),
							new LineTemplate(50, 74, 100, 100),
							new LineTemplate(100, 100, 100, 0),
							new LineTemplate(100, 0, 50, 25),
							new LineTemplate(50, 25, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						FillMode.Winding, "MicroformProcessing");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 10, 40, 50),
							new LineTemplate(40, 50, 0, 90),
							new LineTemplate(0, 90, 10, 100),
							new LineTemplate(10, 100, 50, 60),
							new LineTemplate(50, 60, 90, 100),
							new LineTemplate(90, 100, 100, 90),
							new LineTemplate(100, 90, 60, 50),
							new LineTemplate(60, 50, 100, 10),
							new LineTemplate(100, 10, 90, 0),
							new LineTemplate(90, 0, 50, 40),
							new LineTemplate(50, 40, 10, 0),
							new LineTemplate(10, 0, 0, 10)
						},
						FillMode.Winding, "ConnectedIssues");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 100, 100),
							new LineTemplate(100, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(10, 0, 0, 10),
							new LineTemplate(90, 0, 100, 10),
							new LineTemplate(90, 100, 100, 90),
							new LineTemplate(0, 90, 10, 100)
						},
						null,
						FillMode.Winding, "ExternalOrganization");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 100, 50),
							new LineTemplate(100, 50, 50, 100),
							new LineTemplate(50, 100, 0, 50),
							new LineTemplate(0, 50, 50, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(40, 10, 60, 10),
							new LineTemplate(40, 90, 60, 90),
							new LineTemplate(10, 40, 10, 60),
							new LineTemplate(90, 40, 90, 60)
						},
						null,
						FillMode.Winding, "ExternalProcess");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 0, 100),
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 100, 30),
							new LineTemplate(100, 30, 70, 0),
							new LineTemplate(70, 0, 0, 0)
						},
						new ElementTemplate[]
						{
							new LineTemplate(70, 0, 70, 30),
							new LineTemplate(70, 30, 100, 30)
						},
						new ElementTemplate[]
						{
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 100, 30),
							new LineTemplate(100, 30, 70, 30),
							new LineTemplate(70, 30, 70, 0),
							new LineTemplate(70, 0, 0, 0),
							new LineTemplate(0, 0, 0, 100)
						},
						FillMode.Winding, "File");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 0, 50),
							new LineTemplate(0, 50, 15, 100),
							new LineTemplate(15, 100, 85, 100),
							new LineTemplate(85, 100, 100, 50),
							new LineTemplate(100, 50, 50, 0)
						},
						FillMode.Winding, "Pentagon");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(28, 100, 0, 70),
							new LineTemplate(0, 70, 10, 25),
							new LineTemplate(10, 25, 50, 0),
							new LineTemplate(50, 0, 90, 25),
							new LineTemplate(90, 25, 100, 70),
							new LineTemplate(100, 70, 72, 100),
							new LineTemplate(72, 100, 28, 100)
						},
						FillMode.Winding, "Heptagon");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(33, 100, 0, 67),
							new LineTemplate(0, 67, 0, 33),
							new LineTemplate(0, 33, 33, 0),
							new LineTemplate(33, 0, 67, 0),
							new LineTemplate(67, 0, 100, 33),
							new LineTemplate(100, 33, 100, 67),
							new LineTemplate(100, 67, 67, 100),
							new LineTemplate(67, 100, 33, 100)
						},
						FillMode.Winding, "Octagon");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(30, 100, 100, 100),
							new LineTemplate(100, 100, 70, 0),
							new LineTemplate(70, 0, 0, 0),
							new LineTemplate(0, 0, 30, 100)
						},
						FillMode.Winding, "RSave");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 50, 0),
							new LineTemplate(50, 0, 40, 33),
							new LineTemplate(40, 33, 0, 30),
							new LineTemplate( 0, 30, 30, 50),
							new LineTemplate(30, 50, 15, 100),
							new LineTemplate(15, 100, 50, 60),
							new LineTemplate(50, 60, 85, 100),
							new LineTemplate(85, 100, 67, 50),
							new LineTemplate(67, 50, 100, 30),
							new LineTemplate(100, 30, 60, 33),
							new LineTemplate(60, 33, 50, 0)
						},
						FillMode.Winding, "Star");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(30, 0, 30, 0),
							new LineTemplate(30, 0, 15, 40),
							new LineTemplate(15, 40, 45, 40),
							new LineTemplate(45, 40, 30, 100),
							new LineTemplate(30, 100, 65, 30),
							new LineTemplate(65, 30, 33, 27),
							new LineTemplate(33, 27, 56, 0),
							new LineTemplate(56, 0, 30, 0)
						},
						FillMode.Winding, "Lightning");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 30, 50),
							new LineTemplate(30, 50, 0, 100),
							new LineTemplate(0, 100, 100, 50),
							new LineTemplate(100, 50, 0, 0)
						},
						FillMode.Winding, "Arrow9");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 30, 50),
							new LineTemplate(30, 50, 0, 100),
							new LineTemplate(0, 100, 100, 100),
							new LineTemplate(100, 100, 70, 50),
							new LineTemplate(70, 50, 100, 0),
							new LineTemplate(100, 0, 0, 0)
						},
						FillMode.Winding, "Hourglass");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(70, 100, 70, 100),
							new LineTemplate(70, 100, 0, 100),
							new LineTemplate(0, 100, 0, 30),
							new LineTemplate(0, 30, 70, 30),
							new LineTemplate(70, 30, 0, 30),
							new LineTemplate(0, 30, 30, 0),
							new LineTemplate(30, 0, 100, 0),
							new LineTemplate(100, 0, 70, 30),
							new LineTemplate(70, 30, 100, 0),
							new LineTemplate(100, 0, 100, 70),
							new LineTemplate(100, 70, 70, 100),
							new LineTemplate(70, 100, 70, 30),
							new LineTemplate(70, 30, 70, 100)
						},
						null,
						new ElementTemplate[]
						{
							new LineTemplate(70, 100, 0, 100),
							new LineTemplate(0, 100, 0, 30),
							new LineTemplate(0, 30, 70, 30),
							new LineTemplate(70, 30, 70, 100)
						},
						FillMode.Winding, "Cube");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 0, 100),
							new LineTemplate(0, 100, 100, 50),
							new LineTemplate(100, 50, 100, 100),
							new LineTemplate(100, 100, 100, 0),
							new LineTemplate(100, 0, 100, 50),
							new LineTemplate(100, 50, 0, 0)
						},
						FillMode.Winding, "Interrupt");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 0, 100),
							new LineTemplate(0, 100, 80, 50),
							new LineTemplate(80, 50, 80, 20),
							new LineTemplate(80, 20, 100, 0),
							new LineTemplate(100, 0, 80, 20),
							new LineTemplate(80, 20, 80, 80),
							new LineTemplate(80, 80, 60, 100),
							new LineTemplate(60, 100, 80, 80),
							new LineTemplate(80, 80, 80, 50),
							new LineTemplate(80, 50, 0, 0)
						},
						FillMode.Winding, "Interrupt2");

					float y = (float)Math.Sqrt(3) * 25 + 50;
					new ShapeTemplate(
						new ElementTemplate[]
						{
							new ArcTemplate(0, 0, 100, 100, 90, 330),
							new LineTemplate(75, y, 100, y),
							new LineTemplate(100, y, 100, 100),
							new LineTemplate(100, 100, 50, 100)
						},
						FillMode.Winding, "Tape");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new ArcTemplate(40, 0, 20, 20, 0, 360),
							new LineTemplate(50, 20, 70, 20),
							new ArcTemplate(65, 20, 10, 10, 270, 90),
							new LineTemplate(75, 25, 75, 60),
							new LineTemplate(75, 60, 68, 60),
							new LineTemplate(68, 60, 68, 30),
							new LineTemplate(68, 30, 64, 30),
							new LineTemplate(64, 30, 64, 100),
							new LineTemplate(64, 100, 52, 100),
							new LineTemplate(52, 100, 52, 65),
							new LineTemplate(52, 65, 48, 65),
							new LineTemplate(48, 65, 48, 100),
							new LineTemplate(48, 100, 36, 100),
							new LineTemplate(36, 100, 36, 30),
							new LineTemplate(36, 30, 32, 30),
							new LineTemplate(32, 30, 32, 60),
							new LineTemplate(32, 60, 25, 60),
							new LineTemplate(25, 60, 25, 25),
							new ArcTemplate(25, 20, 10, 10, 180, 90),
							new LineTemplate(30, 20, 50, 20)
						},
						FillMode.Winding, "Actor");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(10, 0, 90, 0),
							new ArcTemplate(80, 0, 20, 20, -90, 90),
							new LineTemplate(100, 10, 100, 90),
							new ArcTemplate(80, 80, 20, 20, 0, 90),
							new LineTemplate(90, 100, 10, 100),
							new ArcTemplate(0, 80, 20, 20, 90, 90),
							new LineTemplate(0, 90, 0, 10),
							new ArcTemplate(0, 0, 20, 20, 180, 90)
						},
						FillMode.Winding, "RoundRect");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(10, 0, 90, 0),
							new ArcTemplate(80, 0, 20, 100, -90, 180),
							new LineTemplate(90, 100, 10, 100),
							new ArcTemplate(0, 0, 20, 100, 90, 180)
						},
						new ElementTemplate[]
						{
							new ArcTemplate(0, 0, 20, 100, -90, 180)
						},
						new ElementTemplate[]
						{
							new LineTemplate(10, 0, 90, 0),
							new ArcTemplate(80, 0, 20, 100, -90, 180),
							new LineTemplate(90, 100, 10, 100),
							new BezierTemplate(10, 100, 35, 66, 35, 33, 10, 0)
						},
						FillMode.Winding, "DirectAccessStorage");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 100, 0),
							new LineTemplate(100, 0, 50, 100),
							new LineTemplate(50, 100, 0, 0)
						},
						FillMode.Winding, "Merge");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 50, 0),
							new LineTemplate(50, 0, 100, 50),
							new LineTemplate(100, 50, 50, 100),
							new LineTemplate(50, 100, 0, 100),
							new LineTemplate(0, 100, 0, 0)
						},
						FillMode.Winding, "OffpageConnection");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new ArcTemplate(0, 0, 100, 100, 0, 360)
						},
						new ElementTemplate[]
						{
							new LineTemplate(50, 0, 50, 100),
							new LineTemplate(0, 50, 100, 50)
						},
						null, FillMode.Winding, "Or");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new ArcTemplate(-100, 0, 200, 100, -90, 180),
							new BezierTemplate(0, 100, 55, 75, 55, 25, 0, 0)
						},
						FillMode.Winding, "Gate");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new LineTemplate(0, 0, 75, 0),
							new LineTemplate(75, 0, 100, 50),
							new LineTemplate(100, 50, 75, 100),
							new LineTemplate(75, 100, 0, 100),
							new LineTemplate(0, 100, 25, 50),
							new LineTemplate(25, 50, 0, 0)
						},
						FillMode.Winding, "IsoProcess");

					new ShapeTemplate(
						new ElementTemplate[]
						{
							new ArcTemplate(0, 0, 100, 100, 0, 360)
						},
						new ElementTemplate[]
						{
							new LineTemplate(15, 15, 85, 85),
							new LineTemplate(85, 15, 15, 85)
						},
						null, FillMode.Winding, "Junction");
				}

				Cylinder = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100, 10, 100, 90),
					new ArcTemplate(0, 80, 100, 20, 0, 180),
					new LineTemplate(0, 90, 0, 10),
					new ArcTemplate(0, 0, 100, 20, 180, 180),
					new ArcTemplate(0, 0, 100, 20, 0, 180),
					new ArcTemplate(0, 0, 100, 20, 180, 180) },
					FillMode.Winding);


				// Flowcharting
				Start = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  30,   0,  70),
					new LineTemplate(  0,  70,  20, 100),
					new LineTemplate( 20, 100,  30, 100),
					new LineTemplate( 30, 100,  30,   0),
					new LineTemplate( 30,   0,  30, 100),
					new LineTemplate( 30, 100,  70, 100),
					new LineTemplate( 70, 100,  70,   0),
					new LineTemplate( 70,   0,  70, 100),
					new LineTemplate( 70, 100,  80, 100),
					new LineTemplate( 80, 100, 100,  70),
					new LineTemplate(100,  70, 100,  30),
					new LineTemplate(100,  30,  80,   0),
					new LineTemplate( 80,   0,  20,   0),
					new LineTemplate( 20,   0,   0,  30) },
					FillMode.Winding);

				Procedure = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,   0,   0, 100),
					new LineTemplate(  0, 100,  15, 100),
					new LineTemplate( 15, 100,  15,   0),
					new LineTemplate( 15,   0,  15, 100),
					new LineTemplate( 15, 100,  85, 100),
					new LineTemplate( 85, 100,  85,   0),
					new LineTemplate( 85,   0,  85, 100),
					new LineTemplate( 85, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0),
					new LineTemplate(100,   0,   0,   0) },
					FillMode.Winding);

				CreateRequest = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,   0,   0,   0),
					new LineTemplate(  0,   0,   0,  15),
					new LineTemplate(  0,  15, 100,  15),
					new LineTemplate(100,  15,   0,  15),
					new LineTemplate(  0,  15,   0,  85),
					new LineTemplate(  0,  85, 100,  85),
					new LineTemplate(100,  85,   0,  85),
					new LineTemplate(  0,  85,   0, 100),
					new LineTemplate(  0, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0) },
					FillMode.Winding);

				Alternative = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,  50,   0),
					new LineTemplate( 50,   0, 100, 100),
					new LineTemplate(100, 100,   0, 100) },
					FillMode.Winding);

				Decision = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  50,  25,   0),
					new LineTemplate( 25,   0,  75,   0),
					new LineTemplate( 75,   0, 100,  50),
					new LineTemplate(100,  50,  75, 100),
					new LineTemplate( 75, 100,  25, 100),
					new LineTemplate( 25, 100,   0,  50) },
					FillMode.Winding);

				MessageFromUser = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,   0, 100,   0),
					new LineTemplate(100,   0,  65,  50),
					new LineTemplate( 65,  50, 100, 100),
					new LineTemplate(100, 100,   0, 100),
					new LineTemplate(  0, 100,   0,   0) },
					FillMode.Winding);

				PrimitiveFromCall = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,  20, 100),
					new LineTemplate( 20, 100,  20,   0),
					new LineTemplate( 20,   0,  20, 100),
					new LineTemplate( 20, 100, 100, 100),
					new LineTemplate(100, 100,  65,  50),
					new LineTemplate( 65,  50, 100,   0),
					new LineTemplate(100,   0,   0,   0),
					new LineTemplate(  0,   0,   0, 100) },
					FillMode.Winding);

				MessageToUser = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,   0,  35,   0),
					new LineTemplate( 35,   0,   0,  50),
					new LineTemplate(  0,  50,  35, 100),
					new LineTemplate( 35, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0) },
					FillMode.Winding);

				PrimitiveToCall = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,   0,  80,   0),
					new LineTemplate( 80,   0,  80, 100),
					new LineTemplate( 80, 100,  80,   0),
					new LineTemplate( 80,   0,  35,   0),
					new LineTemplate( 35,   0,   0,  50),
					new LineTemplate(  0,  50,  35, 100),
					new LineTemplate( 35, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0) },
					FillMode.Winding);

				Save = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,  35,   0),
					new LineTemplate( 35,   0, 100,   0),
					new LineTemplate(100,   0,  65, 100),
					new LineTemplate( 65, 100,   0, 100) },
					FillMode.Winding);

				OffpageReference = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  50,   0,   0),
					new LineTemplate(  0,   0, 100,   0),
					new LineTemplate(100,   0, 100,  50),
					new LineTemplate(100,  50,  50, 100),
					new LineTemplate( 50, 100,   0,  50) },
					FillMode.Winding);

				Document = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  90,   0,   0),
					new LineTemplate(  0,   0, 100,   0),
					new LineTemplate(100,   0, 100,  90),
					new BezierTemplate(100,  90,  83,  80,  67,  80,  50,  90),
					new BezierTemplate( 50,  90,  33, 100,  17, 100,   0,  90) },
					FillMode.Winding);

				DocumentReversed = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  90,   0,   0),
					new LineTemplate(  0,   0, 100,   0),
					new LineTemplate(100,   0, 100,  90),
					new BezierTemplate(100,  90,  83, 100,  66, 100,  50,  90),
					new BezierTemplate( 50,  90,  33,  80,  16,  80,   0,  90) },
					FillMode.Winding);

				MultiDocument = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  92,   0,  20),
					new LineTemplate(  0,  20,  10,  20),
					new LineTemplate( 10,  20,  80,  20),
					new LineTemplate( 80,  20,  80,  79),
					new BezierTemplate( 80,  79,  80,  79,  86,  79,  90,  82),
					new LineTemplate( 90,  82,  90,  10),
					new LineTemplate( 90,  10,  20,  10),
					new LineTemplate( 20,  10,  90,  10),
					new LineTemplate( 90,  10,  90,  69),
					new BezierTemplate( 90,  69,  90,  69,  96,  69, 100,  72),
					new LineTemplate(100,  72, 100,   0),
					new LineTemplate(100,   0,  20,   0),
					new LineTemplate( 20,   0,  20,  10),
					new LineTemplate( 20,  10,  10,  10),
					new LineTemplate( 10,  10,  10,  20),
					new LineTemplate( 10,  20,  80,  20),
					new LineTemplate( 80,  20,  80,  92),
					new BezierTemplate( 80,  92,  66,  84,  53,  84,  39,  92),
					new BezierTemplate( 39,  92,  26, 100,  13, 100,   0,  92) },
					FillMode.Winding);

				DividedProcess = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0),
					new LineTemplate(100,   0,   0,   0),
					new LineTemplate(  0,   0,   0,  25),
					new LineTemplate(  0,  25, 100,  25),
					new LineTemplate(100,  25,   0,  25),
					new LineTemplate(  0,  25,   0, 100) },
					FillMode.Winding);

				DividedEvent = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate(  0,  90,   0,  95,   5, 100,  10, 100),
					new LineTemplate( 10, 100,  90, 100),
					new BezierTemplate( 90, 100,  95, 100, 100,  95, 100,  90),
					new LineTemplate(100,  90, 100,  10),
					new BezierTemplate(100,  10, 100,   5,  95,   0,  90,   0),
					new LineTemplate( 90,   0,  10,   0),
					new BezierTemplate( 10,   0,   5,   0,   0,   5,   0,  10),
					new LineTemplate(  0,  10,   0,  25),
					new LineTemplate(  0,  25, 100,  25),
					new LineTemplate(100,  25,   0,  25),
					new LineTemplate(  0,  25,   0,  90) },
					FillMode.Winding);

				ManualOperation = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,   0, 100,   0),
					new LineTemplate(100,   0,  75, 100),
					new LineTemplate( 75, 100,  25, 100),
					new LineTemplate( 25, 100,   0,   0) },
					FillMode.Winding);

				Display = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate(  0,  50,   2,  67,  11,  90,  40, 100),
					new LineTemplate( 40, 100,  80, 100),
					new BezierTemplate( 80, 100,  90,  90, 100,  67, 100,  50),
					new BezierTemplate(100,  50, 100,  33,  90,  10,  80,   0),
					new LineTemplate( 80,   0,  40,   0),
					new BezierTemplate( 40,   0,  11,  10,   2,  33,   0,  50),
					},
					FillMode.Winding);

				MultiDocProc = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,  80, 100),
					new LineTemplate( 80, 100,  80,  20),
					new LineTemplate( 80,  20,  10,  20),
					new LineTemplate( 10,  20,  80,  20),
					new LineTemplate( 80,  20,  80,  90),
					new LineTemplate( 80,  90,  90,  90),
					new LineTemplate( 90,  90,  90,  10),
					new LineTemplate( 90,  10,  20,  10),
					new LineTemplate( 20,  10,  90,  10),
					new LineTemplate( 90,  10,  90,  80),
					new LineTemplate( 90,  80, 100,  80),
					new LineTemplate(100,  80, 100,   0),
					new LineTemplate(100,   0,  20,   0),
					new LineTemplate( 20,   0,  20,  10),
					new LineTemplate( 20,  10,  10,  10),
					new LineTemplate( 10,  10,  10,  20),
					new LineTemplate( 10,  20,   0,  20),
					new LineTemplate(  0,  20,   0, 100) },
					FillMode.Winding);

				Tape = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate( 50, 100,  85, 100),
					new LineTemplate( 85, 100,  85,  90),
					new LineTemplate( 85,  90,  70,  90),
					new BezierTemplate( 70,  90,  85,  90, 100,  75, 100,  50),
					new BezierTemplate(100,  50, 100,  25,  75,   0,  50,   0),
					new BezierTemplate( 50,   0,  25,   0,   0,  25,   0,  50),
					new BezierTemplate(  0,  50,   0,  75,  25, 100,  50, 100) },
					FillMode.Winding);

				ManualInput = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0),
					new LineTemplate(100,   0,   0,  25),
					new LineTemplate(  0,  25,   0, 100),
					},
					FillMode.Winding);

				InternalStorage = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,  20, 100),
					new LineTemplate( 20, 100,  20,   0),
					new LineTemplate( 20,   0,  20, 100),
					new LineTemplate( 20, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0),
					new LineTemplate(100,   0,   0,   0),
					new LineTemplate(  0,   0,   0,  20),
					new LineTemplate(  0,  20, 100,  20),
					new LineTemplate(100,  20,   0,  20),
					new LineTemplate(  0,  20,   0, 100) },
					FillMode.Winding);

				Card = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0),
					new LineTemplate(100,   0,  25,   0),
					new LineTemplate( 25,   0,   0,  25),
					new LineTemplate(  0,  25,   0, 100) },
					FillMode.Winding);

				DirectData = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate( 15, 100,   0, 100,   0,  66,   0,  50),
					new BezierTemplate(  0,  50,   0,  33,   0,   0,  15,   0),
					new LineTemplate( 15,   0,  85,   0),
					new BezierTemplate( 85,   0,  70,   0,  70,  33,  70,  50),
					new BezierTemplate( 70,  50,  70,  66,  70, 100,  85, 100),
					new BezierTemplate( 85, 100, 100, 100, 100,  66, 100,  50),
					new BezierTemplate(100,  50, 100,  33, 100,   0,  85,   0),
					new BezierTemplate( 85,   0,  70,   0,  70,  33,  70,  50),
					new BezierTemplate( 70,  50,  70,  66,  70, 100,  85, 100),
					new LineTemplate( 85, 100,  15, 100) },
					FillMode.Winding);

				PaperTape = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  90,   0,  10),
					new BezierTemplate(  0,  10,  16,  20,  33,  20,  50,  10),
					new BezierTemplate( 50,  10,  66,   0,  83,   0, 100,  10),
					new LineTemplate(100,  10, 100,  90),
					new BezierTemplate(100,  90,  83,  80,  66,  80,  50,  90),
					new BezierTemplate( 50,  90,  33, 100,  16, 100,   0,  90) },
					FillMode.Winding);

				PaperTapeReversed = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  90,   0,  10),
					new BezierTemplate(  0,  10,  16,   0,  33,   0,  50,  10),
					new BezierTemplate( 50,  10,  66,  20,  83,  20, 100,  10),
					new LineTemplate(100,  10, 100,  90),
					new BezierTemplate(100,  90,  83, 100,  66, 100,  50,  90),
					new BezierTemplate( 50,  90,  33,  80,  16,  80,   0,  90) },
					FillMode.Winding);

				LoopLimit = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,   0,  25),
					new LineTemplate(  0,  25,  25,   0),
					new LineTemplate( 25,   0,  75,   0),
					new LineTemplate( 75,   0, 100,  25),
					new LineTemplate(100,  25, 100, 100),
					new LineTemplate(100, 100,   0, 100) },
					FillMode.Winding);


				// Arrows
				Arrow1Left = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  50,  35,   0),
					new LineTemplate( 35,   0, 100,   0),
					new LineTemplate(100,   0,  65,  50),
					new LineTemplate( 65,  50, 100, 100),
					new LineTemplate(100, 100,  35, 100),
					new LineTemplate( 35, 100,   0,  50) },
					FillMode.Winding);

				Arrow1Top = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate( 50,   0, 100,  35),
					new LineTemplate(100,  35, 100, 100),
					new LineTemplate(100, 100,  50,  65),
					new LineTemplate( 50,  65,   0, 100),
					new LineTemplate(  0, 100,   0,  35),
					new LineTemplate(  0,  35,  50,   0) },
					FillMode.Winding);

				Arrow1Right = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,  50,  65, 100),
					new LineTemplate( 65, 100,   0, 100),
					new LineTemplate(  0, 100,  35,  50),
					new LineTemplate( 35,  50,   0,   0),
					new LineTemplate(  0,   0,  65,   0),
					new LineTemplate( 65,   0, 100,  50) },
					FillMode.Winding);

				Arrow1Bottom = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate( 50, 100,   0,  65),
					new LineTemplate(  0,  65,   0,   0),
					new LineTemplate(  0,   0,  50,  35),
					new LineTemplate( 50,  35, 100,   0),
					new LineTemplate(100,   0, 100,  65),
					new LineTemplate(100,  65,  50, 100) },
					FillMode.Winding);

				Arrow2Left = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate( 80,  60,  35,  60),
					new LineTemplate( 35,  60,  35, 100),
					new LineTemplate( 35, 100,   0,  50),
					new LineTemplate(  0,  50,  35,   0),
					new LineTemplate( 35,   0,  35,  40),
					new LineTemplate( 35,  40,  80,  40),
					new LineTemplate( 80,  40,  80,   0),
					new LineTemplate( 80,   0, 100,   0),
					new LineTemplate(100,   0, 100, 100),
					new LineTemplate(100, 100,  80, 100),
					new LineTemplate( 80, 100,  80,  60) },
					FillMode.Winding);

				Arrow2Top = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate( 40,  80,  40,  35),
					new LineTemplate( 40,  35,   0,  35),
					new LineTemplate(  0,  35,  50,   0),
					new LineTemplate( 50,   0, 100,  35),
					new LineTemplate(100,  35,  60,  35),
					new LineTemplate( 60,  35,  60,  80),
					new LineTemplate( 60,  80, 100,  80),
					new LineTemplate(100,  80, 100, 100),
					new LineTemplate(100, 100,   0, 100),
					new LineTemplate(  0, 100,   0,  80),
					new LineTemplate(  0,  80,  40,  80),
					},
					FillMode.Winding);

				Arrow2Right = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate( 20,  40,  65,  40),
					new LineTemplate( 65,  40,  65,   0),
					new LineTemplate( 65,   0, 100,  50),
					new LineTemplate(100,  50,  65, 100),
					new LineTemplate( 65, 100,  65,  60),
					new LineTemplate( 65,  60,  20,  60),
					new LineTemplate( 20,  60,  20, 100),
					new LineTemplate( 20, 100,   0, 100),
					new LineTemplate(  0, 100,   0,   0),
					new LineTemplate(  0,   0,  20,   0),
					new LineTemplate( 20,   0,  20,  40) },
					FillMode.Winding);

				Arrow2Bottom = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate( 60,  20,  60,  65),
					new LineTemplate( 60,  65, 100,  65),
					new LineTemplate(100,  65,  50, 100),
					new LineTemplate( 50, 100,   0,  65),
					new LineTemplate(  0,  65,  40,  65),
					new LineTemplate( 40,  65,  40,  20),
					new LineTemplate( 40,  20,   0,  20),
					new LineTemplate(  0,  20,   0,   0),
					new LineTemplate(  0,   0, 100,   0),
					new LineTemplate(100,   0, 100,  20),
					new LineTemplate(100,  20,  60,  20) },
					FillMode.Winding);

				Arrow3Left = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate(100,   0,  80,  30,  80,  70, 100, 100),
					new LineTemplate(100, 100,   0,  50),
					new LineTemplate(  0,  50, 100,   0) },
					FillMode.Winding);

				Arrow3Top = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate(100, 100,  70,  80,  30,  80,   0, 100),
					new LineTemplate(  0, 100,  50,   0),
					new LineTemplate( 50,   0, 100, 100) },
					FillMode.Winding);

				Arrow3Right = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate(  0, 100,  20,  70,  20,  30,   0,   0),
					new LineTemplate(  0,   0, 100,  50),
					new LineTemplate(100,  50,   0, 100) },
					FillMode.Winding);

				Arrow3Bottom = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate(  0,   0,  30,  20,  70,  20, 100,   0),
					new LineTemplate(100,   0,  50, 100),
					new LineTemplate( 50, 100,   0,   0) },
					FillMode.Winding);


				// 3D-Like
				ConeUp = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  80,  50,   0),
					new LineTemplate( 50,   0, 100,  80),
					new BezierTemplate(100,  80, 100,  90,  66, 100,  50, 100),
					new BezierTemplate( 50, 100,  33, 100,   0,  90,   0,  80) },
					FillMode.Winding);

				ConeDown = new ShapeTemplate(new ElementTemplate[] {
					new BezierTemplate(  0,  80,   4,  70,  33,  60,  50,  60),
					new BezierTemplate( 50,  60,  66,  60,  96,  70, 100,  80),
					new BezierTemplate(100,  80,  96,  70,  66,  60,  50,  60),
					new BezierTemplate( 50,  60,  33,  60,   4,  70,   0,  80),
					new LineTemplate(  0,  80,  50,   0),
					new LineTemplate( 50,   0, 100,  80),
					new BezierTemplate(100,  80, 100,  90,  66, 100,  50, 100),
					new BezierTemplate( 50, 100,  33, 100,   0,  90,   0,  80) },
					FillMode.Winding);

				CubeUp = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  80,  50, 100),
					new LineTemplate( 50, 100,  50,  40),
					new LineTemplate( 50,  40,  50, 100),
					new LineTemplate( 50, 100, 100,  80),
					new LineTemplate(100,  80, 100,  20),
					new LineTemplate(100,  20,  50,  40),
					new LineTemplate( 50,  40,   0,  20),
					new LineTemplate(  0,  20,  50,  40),
					new LineTemplate( 50,  40, 100,  20),
					new LineTemplate(100,  20,  50,   0),
					new LineTemplate( 50,   0,   0,  20),
					new LineTemplate(  0,  20,   0,  80) },
					FillMode.Winding);

				CubeDown = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,  20,  50,   0),
					new LineTemplate( 50,   0,  50,  60),
					new LineTemplate( 50,  60,  50,   0),
					new LineTemplate( 50,   0,   0,  20),
					new LineTemplate(  0,  20,   0,  80),
					new LineTemplate(  0,  80,  50,  60),
					new LineTemplate( 50,  60, 100,  80),
					new LineTemplate(100,  80,  50,  60),
					new LineTemplate( 50,  60,   0,  80),
					new LineTemplate(  0,  80,  50, 100),
					new LineTemplate( 50, 100, 100,  80),
					new LineTemplate(100,  80, 100,  20),
					},
					FillMode.Winding);

				PyramidUp = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  80,  50,   0),
					new LineTemplate( 50,   0, 100,  80),
					new LineTemplate(100,  80,  50, 100),
					new LineTemplate( 50, 100,  50,   0),
					new LineTemplate( 50,   0,  50, 100),
					new LineTemplate( 50, 100,   0,  80) },
					FillMode.Winding);

				PyramidDown = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,  80,  50,   0),
					new LineTemplate( 50,   0, 100,  80),
					new LineTemplate(100,  80,  50, 100),
					new LineTemplate( 50, 100, 100,  80),
					new LineTemplate(100,  80,  50,  60),
					new LineTemplate( 50,  60,   0,  80),
					new LineTemplate(  0,  80,  50,  60),
					new LineTemplate( 50,  60,  50,   0),
					new LineTemplate( 50,   0,  50,  60),
					new LineTemplate( 50,  60, 100,  80),
					new LineTemplate(100,  80,  50, 100),
					new LineTemplate( 50, 100,   0,  80) },
					FillMode.Winding);


				// Miscellaneous
				DeltaLeft = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,   0,  40,   0),
					new BezierTemplate( 40,   0,  20,   0,   0,  25,   0,  50),
					new BezierTemplate(  0,  50,   0,  75,  20, 100,  40, 100),
					new LineTemplate( 40, 100, 100, 100),
					new LineTemplate(100, 100, 100,   0) },
					FillMode.Winding);

				DeltaTop = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100, 100, 100,  40),
					new BezierTemplate(100,  40, 100,  20,  75,   0,  50,   0),
					new BezierTemplate( 50,   0,  25,   0,   0,  20,   0,  40),
					new LineTemplate(  0,  40,   0, 100),
					new LineTemplate(  0, 100, 100, 100) },
					FillMode.Winding);

				DeltaRight = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,  60, 100),
					new BezierTemplate( 60, 100,  80, 100, 100,  75, 100,  50),
					new BezierTemplate(100,  50, 100,  25,  80,   0,  60,   0),
					new LineTemplate( 60,   0,   0,   0),
					new LineTemplate(  0,   0,   0, 100) },
					FillMode.Winding);

				DeltaBottom = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,   0,   0,  60),
					new BezierTemplate(  0,  60,   0,  80,  25, 100,  50, 100),
					new BezierTemplate( 50, 100,  75, 100, 100,  80, 100,  60),
					new LineTemplate(100,  60, 100,   0),
					new LineTemplate(100,   0,   0,   0) },
					FillMode.Winding);

				DoubleDeltaLeft = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,   0,  40,   0),
					new BezierTemplate( 40,   0,  20,   0,   0,  25,   0,  50),
					new BezierTemplate(  0,  50,   0,  75,  20, 100,  40, 100),
					new LineTemplate( 40, 100, 100, 100),
					new BezierTemplate(100, 100,  60,  75,  60,  25, 100,   0) },
					FillMode.Winding);

				DoubleDeltaTop = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100, 100, 100,  40),
					new BezierTemplate(100,  40, 100,  20,  75,   0,  50,   0),
					new BezierTemplate( 50,   0,  25,   0,   0,  20,   0,  40),
					new LineTemplate(  0,  40,   0, 100),
					new BezierTemplate(  0, 100,  25,  60,  75,  60, 100, 100) },
					FillMode.Winding);

				DoubleDeltaRight = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0, 100,  60, 100),
					new BezierTemplate( 60, 100,  80, 100, 100,  75, 100,  50),
					new BezierTemplate(100,  50, 100,  25,  80,   0,  60,   0),
					new LineTemplate( 60,   0,   0,   0),
					new BezierTemplate(  0,   0,  40,  25,  40,  75,   0, 100) },
					FillMode.Winding);

				DoubleDeltaBottom = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,   0,   0,  60),
					new BezierTemplate(  0,  60,   0,  80,  25, 100,  50, 100),
					new BezierTemplate( 50, 100,  75, 100, 100,  80, 100,  60),
					new LineTemplate(100,  60, 100,   0),
					new BezierTemplate(100,   0,  75,  40,  25,  40,   0,   0) },
					FillMode.Winding);

				DeflateDeltaVertical = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(  0,   0,   0, 100),
					new BezierTemplate(  0, 100,  25,  60,  75,  60, 100, 100),
					new LineTemplate(100, 100, 100,   0),
					new BezierTemplate(100,   0,  75,  40,  25,  40,   0,   0) },
					FillMode.Winding);

				DeflateDeltaHorizontal = new ShapeTemplate(new ElementTemplate[] {
					new LineTemplate(100,   0,   0,   0),
					new BezierTemplate(  0,   0,  40,  25,  40,  75,   0, 100),
					new LineTemplate(  0, 100, 100, 100),
					new BezierTemplate(100, 100,  60,  75,  60,  25, 100,   0) },
					FillMode.Winding);
			}
		}
Beispiel #8
0
		public bool Equals(ShapeTemplate obj)
		{
			int i;
			ShapeTemplate tmpl = (ShapeTemplate)obj;

			if(elements.Length != tmpl.elements.Length)
				return false;
			for(i = 0; i < elements.Length; i++)
				if(!elements[i].SameAs(tmpl.elements[i]))
					return false;

			if((decorations != null && tmpl.decorations == null) ||
				(decorations == null && tmpl.decorations != null))
				return false;
			if(decorations != null)
			{
				if(decorations.Length != tmpl.decorations.Length)
					return false;

				for(i = 0; i < decorations.Length; i++)
					if(!decorations[i].SameAs(tmpl.decorations[i]))
						return false;
			}

			if((textArea != null && tmpl.textArea == null) ||
				(textArea == null && tmpl.textArea != null))
				return false;
			if(textArea != null)
			{
				if(textArea.Length != tmpl.textArea.Length)
					return false;

				for(i = 0; i < textArea.Length; i++)
					if(!textArea[i].SameAs(tmpl.textArea[i]))
						return false;
			}

			if(fillMode != tmpl.fillMode)
				return false;

			return true;
		}