private void DrawArea(AreaShape shape, RGBColor backgroundColor, MappingConverter converter) { if (shape.FillPattern == AreaShapeFillPattern.Fill) { Color fillOuterColor = Color.FromArgb(shape.Color.R, shape.Color.G, shape.Color.B); Color fillInnerColor = Color.FromArgb(backgroundColor.R, backgroundColor.G, backgroundColor.B); foreach (RingShape ring in shape.OuterRings) { FillRing(ring, fillOuterColor, converter); } foreach (RingShape ring in shape.InnerRings) { FillRing(ring, fillInnerColor, converter); } } else { foreach (RingShape ring in shape.OuterRings) { DrawRing(ring, converter); } foreach (RingShape ring in shape.InnerRings) { DrawRing(ring, converter); } } }
public AreaShape GetAreaShape(Dictionary <string, RGBColor> colorRef) { AreaShape shape = new AreaShape(); shape.Transparency = transparencySymbol.GetTransparency(); shape.FillPattern = fillPatternSymbol.GetFillPattern(); if (innerRingSymbols.Count == 0) { // it only has outer ring shape.OuterRings = GetRing(outerRingSymbols, colorRef); } else { // it has inner rings shape.OuterRings = GetRing(outerRingSymbols, colorRef); shape.InnerRings = GetRing(innerRingSymbols, colorRef); } shape.Color = shape.OuterRings[0].Color; shape.Width = shape.OuterRings[0].Width; return(shape); }
public Collection <DAIShape> GetDrawingShapes(Dictionary <string, RGBColor> colorRef) { Collection <DAIShape> shapes = new Collection <DAIShape>(); Collection <S52BaseSymbol> symbols = new Collection <S52BaseSymbol>(); // get all symbol values Collection <string> symbolValues = vectorCommands; int penUpIndex = IndexOfSymbolValue(symbolValues, 0, symbolValues.Count, "PU"); int ringEndIndex = 0; while (penUpIndex != -1) { int drawingIndex = IndexOfSymbolValue(symbolValues, penUpIndex + 1, symbolValues.Count - 1, "PD", "CI", "AA"); int ringStartIndex = IndexOfSymbolValue(symbolValues, ringEndIndex + 1, drawingIndex - 1, "PM0"); if (ringStartIndex == -1 && drawingIndex != -1) { PUSymbol singleSymbol = GetSingleSymbolWithWidth(symbolValues, penUpIndex, ref drawingIndex); //singleSymbols.Add(singleSymbol); symbols.Add(singleSymbol); penUpIndex = IndexOfSymbolValue(symbolValues, drawingIndex + 1, symbolValues.Count - 1, "PU"); } else if (ringStartIndex == -1 && drawingIndex == -1) { penUpIndex = -1; } else { ringEndIndex = IndexOfSymbolValue(symbolValues, ringStartIndex + 1, symbolValues.Count, "PM2"); PMSymbol areaSymbol = GetAreaSymbol(symbolValues, ref penUpIndex, drawingIndex, ringStartIndex, ringEndIndex); //areaSymbols.Add(areaSymbol); symbols.Add(areaSymbol); } } //// get shapes from area symbols //foreach (PMSymbol areaSymbol in areaSymbols) //{ // AreaShape areaShape = areaSymbol.GetAreaShape(colorRef); // shapes.Add(areaShape); //} //// get shapes from single symbols //foreach (PUSymbol singleSymbol in singleSymbols) //{ // Collection<DAIShape> singleShapes = singleSymbol.GetShapes(colorRef); // foreach (DAIShape shape in singleShapes) // { // shapes.Add(shape); // } //} foreach (S52BaseSymbol symbol in symbols) { if (symbol is PUSymbol) { Collection <DAIShape> singleShapes = (symbol as PUSymbol).GetShapes(colorRef); foreach (DAIShape shape in singleShapes) { shapes.Add(shape); } } else if (symbol is PMSymbol) { AreaShape areaShape = (symbol as PMSymbol).GetAreaShape(colorRef); shapes.Add(areaShape); } } return(shapes); }