Exemple #1
0
        public string[] ExportTemplateCode(int srcCode)
        {
            Outline outLine = null;
            bool    isExistElementTemplate = false;
            int     i;
            int     contourCnt = 1;

            ArrayList arr = new ArrayList();

            setShapeTemplate(arr, srcCode);

            outLine = (Outline)outLines[0];
            getContour(outLine, arr, srcCode);

            for (i = 0; i < outLines.Count; ++i)
            {
                outLine = (Outline)outLines[i];

                //if (outLine is Contour)
                //	continue;
                if (!isExistElementTemplate)
                {
                    setElementTemplate(arr, srcCode);
                    isExistElementTemplate = true;
                }

                if (outLine is Ellipse)
                {
                    getEllipse(i + contourCnt, outLine, arr, srcCode);
                }
                else
                if (outLine is PolyLine)
                {
                    getPolyLine(i + contourCnt, outLine, arr, srcCode);
                }
            }

            if (isExistElementTemplate)
            {
                setEndElementTemplate(arr, srcCode);
            }

            for (i = 1; i < outLines.Count; ++i)
            {
                outLine = (Outline)outLines[i];
                if (outLine is Contour)
                {
                    getContour(outLine, arr, srcCode);
                    contourCnt += 1;
                }
            }


            setEndShapeTemplate(flagDefineTextArea, arr, srcCode);

            string[] str = new string[arr.Count];
            for (i = 0; i < arr.Count; ++i)
            {
                str[i] = arr[i].ToString();
            }

            return(str);
        }
    protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
    {
      PointF p = new PointF();
      p.X = e.X + (int)scrollX;
      p.Y = e.Y + (int)scrollY;
      SaveCurrX = p.X;
      SaveCurrY = p.Y;

      base.Cursor = Cursors.Default;

      if (flagShowPoints)
      {
        for (int i = 0; i < outLines.Count; ++i)
        {
          Outline outline = (Outline)outLines[i];
          if (outline.checkOverPoint(p))
          {
            base.Cursor = Cursors.SizeAll;
            pointedOutline = outline;
            break;
          }
        }

        if (dragging)
        {
          currOutline.updatePoint(p);
          Invalidate();
        }

        if (pointedOutline != null)
        {
          if (pointedOutline is SegmentedOutline)
            if ((pointedOutline as SegmentedOutline).PointedBezierSegment(p))
              Invalidate();

          if (pointedOutline is Ellipse)
            if ((pointedOutline as Ellipse).isPointedEllipse(p))
              Invalidate();
        }
      }
    }
    protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
    {
      dragging = false;
      PointF p = new PointF();

      p.X = e.X + scrollX;
      p.Y = e.Y + scrollY;

      if (e.Button == MouseButtons.Right)
      {
        saveNewPosX = p.X;
        saveNewPosY = p.Y;

        this.ContextMenu = CntMenuDecoration;
        for (int i = 0; i < outLines.Count; ++i)
        {
          Outline outLine = (Outline)outLines[i];

          if (outLine is Ellipse && (outLine as Ellipse).getSegmentIndex(p) < distanceToLine)
          {
            currOutline = outLine;
            return;
          }

          if (!(outLine is Ellipse) && outLine.getSegmentIndex(p) > -1)
          {
            saveIndex = i;
            saveOutline = (SegmentedOutline)outLine;
            outLine.addMenuItems(CntMenuSegment, p);
            this.ContextMenu = CntMenuSegment;
            break;
          }
        }

        if (saveOutline != null)
          if (saveOutline.checkOverPoint(p))
          {
            if (saveOutline.isAllowCombineCntMenu(p))
              this.ContextMenu = CntMenuCombine;
          }
      }
      if (e.Button == MouseButtons.Left)
      {
        for (int i = 0; i < outLines.Count; ++i)
        {
          Outline s = (Outline)outLines[i];
          if (s.hitTest(p))
          {
            dragging = true;
            currOutline = s;
            break;
          }
        }
      }
    }
    private void getPolyLine(int outLineCnt, Outline outLine, ArrayList arr, int srcCode)
    {
      string[] getNames = (outLine as PolyLine).getNamesAsText();

      for (int i = 0; i < getNames.Length; ++i)
      {
        if (srcCode == 0)
          if (outLineCnt != outLines.Count)
            arr.Add(getNames[i] + ",");
          else
            if (i != getNames.Length - 1)
              arr.Add(getNames[i] + ",");
            else
              arr.Add(getNames[i]);

        if (srcCode == 1)
          if (outLineCnt != outLines.Count)
            arr.Add(getNames[i] + ", _ ");
          else
            if (i != getNames.Length - 1)
              arr.Add(getNames[i] + ", _ ");
            else
              arr.Add(getNames[i] + " _ ");
      }
    }
    private void getContour(Outline outLine, ArrayList arr, int srcCode)
    {
      setElementTemplate(arr, srcCode);

      string[] getNames = (outLine as Contour).getNamesAsText();

      for (int i = 0; i < getNames.Length; ++i)
      {
        if (srcCode == 0)
          if (i != getNames.Length - 1)
            arr.Add(getNames[i] + ",");
          else
            arr.Add(getNames[i]);

        if (srcCode == 1)
          if (i != getNames.Length - 1)
            arr.Add(getNames[i] + ", _ ");
          else
            arr.Add(getNames[i] + " _ ");
      }
      setEndElementTemplate(arr, srcCode);
    }
    private void getEllipse(int outLineCnt, Outline outLine, ArrayList arr, int srcCode)
    {
      if (srcCode == 0)
        if (outLineCnt != outLines.Count)
          arr.Add((outLine as Ellipse).saveNameAsText() + ",");
        else
          arr.Add((outLine as Ellipse).saveNameAsText());

      if (srcCode == 1)
        if (outLineCnt != outLines.Count)
          arr.Add((outLine as Ellipse).saveNameAsText() + ", _");
        else
          arr.Add((outLine as Ellipse).saveNameAsText() + " _");
    }