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); }
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); }