예제 #1
0
        // ---

        // --- PROPERTY GRID EVENTS
        private void pgrid_PropertyValueChanged(object s, System.Windows.Forms.PropertyValueChangedEventArgs e)
        {
            SvgElement ele = GetCurrentSvgElement();

            if (ele == null)
            {
                return;
            }

            // fill XML text
            txtXML.Text = ele.GetTagXml();

            // if the Id changes the tree node has to be refreshed
            if (e.ChangedItem.Label == "Id")
            {
                string sNodeName = ele.getElementName();
                string sId;
                sId = ele.Id;

                if (sId != "")
                {
                    sNodeName += "(";
                    sNodeName += sId;
                    sNodeName += ")";
                }

                TreeNode nod = FindNodeByTag(null, ele.getInternalId().ToString());
                if (nod != null)
                {
                    nod.Text = sNodeName;
                }
            }
        }
예제 #2
0
        // --- END MENU EDIT

        // --- TREE VIEW EVENTS
        private void tv_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            SvgElement ele = GetCurrentSvgElement();

            if (ele == null)
            {
                return;
            }

            pgrid.SelectedObject = ele;

            // fill XML text
            txtXML.Text = ele.GetTagXml();
        }
예제 #3
0
        public getElementData(SvgElement svge)
        {
            myShapes shapeData = new myShapes();
            errors   errType   = new errors();

            bool hasFill = svgFillColorFix.checkFill(svge.GetTagXml());


            switch (svge.getElementType())
            {
            case SvgElement._SvgElementType.typeCircle:
                //create circle object & check circle errors
                // check stroke color & width & fill to get zap type zapType = zapConstants.
                circleData myCircle = new circleData((SvgCircle)svge);

                zapCompliance errCheck = new zapCompliance();

                errCheck.checkStrokeFill(myCircle.strokeColor, myCircle.fillColor, myCircle.strokeWidth, hasFill);

                if (errCheck.validElement)
                {
                    length      = myShapes.circleCircumference(myCircle.radius);
                    area        = myShapes.circleArea(myCircle.radius);
                    xpos        = myCircle.xpos;
                    ypos        = myCircle.ypos;
                    zapType     = errCheck.zapType;
                    shapeHeight = myShapes.convertPixelToMm(myShapes.circleHeight(myCircle.radius));

                    // if raster line then change to rasterLineShape
                    if (isRasterLine(errCheck.zapType))
                    {
                        zapType = zapConstants.rasterLineShape;
                    }
                }
                else
                {
                    //throw error of correct type to user and end
                    errType.getElementError(errCheck.zapErrorType);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Circle";
                    userError        = true;
                }

                myCircle = null;
                errCheck = null;

                break;

            case SvgElement._SvgElementType.typeLine:

                lineData      myLine    = new lineData((SvgLine)svge);
                zapCompliance lineCheck = new zapCompliance();

                lineCheck.checkStrokeFill(myLine.strokeColor, myLine.fillColor, myLine.strokeWidth, hasFill);

                if (lineCheck.validElement)
                {
                    length = myShapes.lineLength(myLine.xpos1, myLine.xpos2, myLine.ypos1, myLine.ypos2);
                    //try distance calc
                    //double length2 = length = myShapes.distance(myLine.xpos1, myLine.xpos2, myLine.ypos1, myLine.ypos2);
                    area        = 0;
                    xpos        = myLine.xpos1;
                    ypos        = myLine.ypos2;
                    zapType     = lineCheck.zapType;
                    shapeHeight = myShapes.convertPixelToMm(Convert.ToDouble(myLine.strokeWidth));
                    // if raster line then add coordinates to points list
                    if (isRasterLine(lineCheck.zapType))
                    {
                        pointList.Add(new Point(myLine.xpos1, myLine.ypos1));
                    }
                }
                else
                {
                    errType.getElementError(lineCheck.zapErrorType);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Line";
                    userError        = true;
                }

                lineCheck = null;
                myLine    = null;

                break;

            case SvgElement._SvgElementType.typeEllipse:

                ellipseData   myEllipse    = new ellipseData((SvgEllipse)svge);
                zapCompliance ellipseCheck = new zapCompliance();

                ellipseCheck.checkStrokeFill(myEllipse.strokeColor, myEllipse.fillColor, myEllipse.strokeWidth, hasFill);

                if (ellipseCheck.validElement)
                {
                    length      = myShapes.ellipsePerimeter(myEllipse.rx, myEllipse.ry);
                    area        = myShapes.ellipseArea(myEllipse.rx, myEllipse.ry);
                    xpos        = myEllipse.cx;
                    ypos        = myEllipse.cy;
                    zapType     = ellipseCheck.zapType;
                    shapeHeight = myShapes.convertPixelToMm(myEllipse.ry);

                    // if raster line then change to rasterLineShape
                    if (isRasterLine(ellipseCheck.zapType))
                    {
                        zapType = zapConstants.rasterLineShape;
                    }
                }
                else
                {
                    errType.getElementError(ellipseCheck.zapErrorType);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Ellipse";
                    userError        = true;
                }

                myEllipse    = null;
                ellipseCheck = null;
                break;

            case SvgElement._SvgElementType.typeRect:

                rectangleData myRect    = new rectangleData((SvgRect)svge);
                zapCompliance rectCheck = new zapCompliance();

                rectCheck.checkStrokeFill(myRect.strokeColor, myRect.fillColor, myRect.strokeWidth, hasFill);


                if (rectCheck.validElement)
                {
                    length      = myShapes.rectanglePerimeter(myRect.rHeight, myRect.rWidth);
                    area        = myShapes.rectangleArea(myRect.rHeight, myRect.rWidth);
                    xpos        = myRect.xpos;
                    ypos        = myRect.ypos;
                    zapType     = rectCheck.zapType;
                    shapeHeight = myShapes.convertPixelToMm(myRect.rHeight);

                    // if raster line then change to rasterLineShape
                    if (isRasterLine(rectCheck.zapType))
                    {
                        zapType = zapConstants.rasterLineShape;
                    }
                }
                else
                {
                    //throw error of correct type to user and end
                    errType.getElementError(rectCheck.zapErrorType);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Rectangle";
                    userError        = true;
                }

                myRect    = null;
                rectCheck = null;
                break;

            case SvgElement._SvgElementType.typePolygon:

                polygonData   myPolygon = new polygonData((SvgPolygon)svge);
                zapCompliance polyCheck = new zapCompliance();

                polyCheck.checkStrokeFill(myPolygon.strokeColor, myPolygon.fillColor, myPolygon.strokeWidth, hasFill);

                if (polyCheck.validElement)
                {
                    length      = myShapes.polygonLength(myPolygon.points.Trim());
                    area        = myShapes.polygonArea(myPolygon.points.Trim());
                    xpos        = 0;
                    ypos        = 0;
                    zapType     = polyCheck.zapType;
                    shapeHeight = myShapes.polyHeight(myPolygon.points);

                    // if raster line then change to rasterLineShape
                    if (isRasterLine(polyCheck.zapType))
                    {
                        zapType = zapConstants.rasterLineShape;
                    }
                }
                else
                {
                    errType.getElementError(polyCheck.zapErrorType);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Polygon";
                    userError        = true;
                }

                myPolygon = null;
                polyCheck = null;

                break;

            case SvgElement._SvgElementType.typePolyLine:

                polylineData  myPolyLine    = new polylineData((SvgPolyLine)svge);
                zapCompliance polylineCheck = new zapCompliance();

                polylineCheck.checkStrokeFill(myPolyLine.strokeColor, myPolyLine.fillColor, myPolyLine.strokeWidth, hasFill);

                if (polylineCheck.validElement)
                {
                    length      = myShapes.sqlpolyLineLength(myPolyLine.points.Trim());
                    area        = 0;
                    xpos        = 0;
                    ypos        = 0;
                    zapType     = polylineCheck.zapType;
                    shapeHeight = 0;

                    // if raster line then change to rasterLineShape
                    if (isRasterLine(polylineCheck.zapType))
                    {
                        zapType = zapConstants.rasterLineShape;
                    }
                }
                else
                {
                    errType.getElementError(polylineCheck.zapErrorType);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Polyline";
                    userError        = true;
                }

                myPolyLine    = null;
                polylineCheck = null;

                break;

            case SvgElement._SvgElementType.typePath:

                pathData      myPath    = new pathData((SvgPath)svge);
                zapCompliance pathCheck = new zapCompliance();


                pathCheck.checkStrokeFill(myPath.strokeColor, myPath.fillColor, myPath.strokeWidth, hasFill);

                if (pathCheck.validElement)
                {
                    string pathData = myPath.shapeData;

                    length = myShapes.getPathLength(pathData);
                    //if zaptype is a fill calculate the area - save processing when not required
                    if (pathCheck.validFill)
                    {
                        area = myShapes.getPathAreaInk(pathData);
                    }
                    else
                    {
                        area = 0;
                    }
                    xpos        = 0;
                    ypos        = 0;
                    zapType     = pathCheck.zapType;
                    shapeHeight = myShapes.convertPixelToMm(shapeData.pathHeight(pathData));

                    // if raster line then change to rasterLineShape
                    if (isRasterLine(pathCheck.zapType))
                    {
                        zapType = zapConstants.rasterLineShape;
                    }
                }
                else
                {
                    errType.getElementError(pathCheck.zapErrorType);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Path (stroke colour: " + myPath.strokeColor + " stroke width: " + myPath.strokeWidth + " fill colour: " + myPath.fillColor + " ID: " + myPath.Id + ")";
                    userError        = true;
                }

                myPath    = null;
                pathCheck = null;

                break;

            default:
                //svglist = "blank";
                // unknown element return error of correct type

                //check if text or image
                switch (svge.getElementType())
                {
                case SvgElement._SvgElementType.typeImage:

                    errType.errBitmap();
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Image";
                    userError        = true;
                    break;

                case SvgElement._SvgElementType.typeText:
                    errType.getElementError(zapConstants.errContainsText);
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Text";
                    userError        = true;
                    break;

                default:
                    userErrorMsg     = errType.currentError;
                    userErrorElement = "Unknown Element in Design Error";
                    userError        = true;
                    break;
                }

                zapType = 0;
                length  = 0;
                area    = 0;
                xpos    = 0;
                ypos    = 0;

                break;
            }

            shapeData = null;
        }