private Collection <PUSymbol> GetRingSymbols(Collection <string> symbolValues,
                                                     AreaShapeFillPattern fillPattern,
                                                     ref int penUpIndex,
                                                     int drawingIndex,
                                                     int ringEndIndex)
        {
            Collection <PUSymbol> singleSymbols = new Collection <PUSymbol>();

            while (drawingIndex < ringEndIndex)
            {
                if (fillPattern == AreaShapeFillPattern.OutLine)
                {
                    PUSymbol symbol = GetSingleSymbolWithWidth(symbolValues, penUpIndex, ref drawingIndex);
                    singleSymbols.Add(symbol);
                }
                else
                {
                    PUSymbol symbol = GetSingleSymbolWithoutWidth(symbolValues, penUpIndex, ref drawingIndex);
                    singleSymbols.Add(symbol);
                }

                penUpIndex = IndexOfSymbolValue(symbolValues, drawingIndex + 1, symbolValues.Count - 1, "PU");

                if (penUpIndex == -1)
                {
                    break;
                }

                drawingIndex = IndexOfSymbolValue(symbolValues, penUpIndex, symbolValues.Count - 1, "PD", "AA", "CI");
            }

            return(singleSymbols);
        }
Ejemplo n.º 2
0
 public AreaShape(Collection <RingShape> outerRings, Collection <RingShape> innerRings, int width, RGBColor color, int transparency, AreaShapeFillPattern fillPattern)
     : base(DAIShapeType.Area, width, color)
 {
     this.outerRings   = outerRings;
     this.innerRings   = outerRings;
     this.transparency = transparency;
     this.fillPattern  = fillPattern;
 }
        private PMSymbol GetAreaSymbol(Collection <string> symbolValues,
                                       ref int penUpIndex,
                                       int drawingIndex,
                                       int ringStartIndex,
                                       int ringEndIndex)
        {
            PMSymbol areaSymbol = new PMSymbol();

            // set fill pattern symbol
            int fillIndex = IndexOfSymbolValue(symbolValues, ringStartIndex + 1, symbolValues.Count, "FP", "EP");

            areaSymbol.FillPatternSymbol = new PFSymbol(symbolValues[fillIndex]);
            AreaShapeFillPattern fillPattern = areaSymbol.FillPatternSymbol.GetFillPattern();

            // set transparency symbol
            if (fillPattern == AreaShapeFillPattern.Fill)
            {
                int transIndex = LastIndexOfSymbolValue(symbolValues, 0, ringStartIndex, "ST");
                if (transIndex == -1)
                {
                    areaSymbol.TransparencySymbol = new STSymbol("ST0");
                }
                else
                {
                    areaSymbol.TransparencySymbol = new STSymbol(symbolValues[transIndex]);
                }
            }
            else
            {
                areaSymbol.TransparencySymbol = new STSymbol();
            }

            // set ring symbols
            int outerRingEndIndex = IndexOfSymbolValue(symbolValues, ringStartIndex + 1, fillIndex - 1, "PM1");

            if (outerRingEndIndex == -1)
            {
                areaSymbol.OuterRingSymbols = GetRingSymbols(symbolValues, fillPattern, ref penUpIndex, drawingIndex, ringEndIndex);
            }
            else
            {
                areaSymbol.OuterRingSymbols = GetRingSymbols(symbolValues, fillPattern, ref penUpIndex, drawingIndex, outerRingEndIndex);
                drawingIndex = IndexOfSymbolValue(symbolValues, penUpIndex + 1, symbolValues.Count - 1, "PD", "CI", "AA");
                areaSymbol.InnerRingSymbols = GetRingSymbols(symbolValues, fillPattern, ref penUpIndex, drawingIndex, ringEndIndex);
            }

            return(areaSymbol);
        }