示例#1
0
文件: Test.cs 项目: jonc/carto
 public void AddASymbol()
 {
     Map map = new Map();
     var resolver = map.Write();
     Glyph glyph = new Glyph();
     resolver.Dispose();
 }
示例#2
0
文件: SymDef.cs 项目: jonc/carto
        public void SetPattern(bool drawPattern, bool offsetRows, float width, float height, float angle, Glyph glyph)
        {
            CheckModifiable();

            this.drawPattern = drawPattern;
            this.offsetRows = offsetRows;
            this.patternWidth = width;
            this.patternHeight = height;
            this.patternAngle = angle;
            this.patternGlyph = glyph;
        }
示例#3
0
文件: SymDef.cs 项目: jonc/carto
 public void GetPattern(out bool drawPattern, out bool offsetRows, out float width, out float height, out float angle, out Glyph glyph)
 {
     drawPattern = this.drawPattern;
     offsetRows = this.offsetRows;
     width = this.patternWidth;
     height = this.patternHeight;
     angle = this.patternAngle;
     glyph = this.patternGlyph;
 }
示例#4
0
文件: SymDef.cs 项目: jonc/carto
 public PointSymDef(string name, int ocadID, Glyph glyph, bool allowRotation)
     : base(name, ocadID)
 {
     if (glyph == null)
         throw new ArgumentNullException("glyph");
     this.glyph = glyph;
     this.allowRotation = allowRotation;
 }
示例#5
0
文件: OcadImport.cs 项目: jonc/carto
        Glyph CreateGlyph(OcadSymbolElt[] elts)
        {
            if (elts == null)
                return null;

            Glyph glyph = new Glyph();

            foreach (OcadSymbolElt elt in elts) {
                SymColor color = GetColor(elt.stColor);

                switch (elt.stType) {
                case 1: // line
                    glyph.AddLine(color, CreateSymPath(elt.stCoords), ToWorldDimensions(elt.stLineWidth), ImportLineStyle((short) elt.stFlags));
                    break;
                case 2: // area
                    SymPathWithHoles areaPath = CreateAreaSymPath(elt.stCoords);
                    glyph.AddArea(color, areaPath);
                    break;
                case 3: // circle
                    float width = ToWorldDimensions(elt.stLineWidth);
                    float diameter = ToWorldDimensions(elt.stDiameter);
                    if (version > 8)
                        diameter += width;              // diameter is from middle of line in OCAD 9+, from outer edges in OCAD 6-8.
                    glyph.AddCircle(color, PointFromOcadCoord(elt.stCoords[0]), width, diameter);
                    break;
                case 4:
                    glyph.AddFilledCircle(color, PointFromOcadCoord(elt.stCoords[0]), ToWorldDimensions(elt.stDiameter));
                    break;
                default:
                    throw new OcadFileFormatException("Invalid symbol element kind {0}", elt.stType);
                }
            }

            glyph.ConstructionComplete();

            return glyph;
        }
示例#6
0
文件: OcadExport.cs 项目: jonc/carto
        OcadSymbolElt[] SymbolEltsFromGlyph(Glyph glyph, out short datasize)
        {
            Glyph.GlyphPart[] parts = glyph.GetParts();
            OcadSymbolElt[] elts = new OcadSymbolElt[parts.Length];

            datasize = 0;

            for (int i = 0; i < parts.Length; ++i) {
                elts[i] = SymbolEltFromGlyphPart(parts[i]);
                datasize += (short) (2 + elts[i].stnPoly);
            }

            return elts;
        }
示例#7
0
文件: OcadExport.cs 项目: jonc/carto
        OcadSymbolElt SymbolEltFromGlyphPart(Glyph.GlyphPart part)
        {
            OcadSymbolElt elt = new OcadSymbolElt();

            elt.stColor = NumberOfColor(part.color);

            switch (part.kind) {
            case GlyphPartKind.Area:
                elt.stType = 2;
                elt.stCoords = CoordsFromSymPathWithHoles(part.areaPath);
                break;

            case GlyphPartKind.Line:
                elt.stType = 1;
                elt.stFlags = (ushort) OcadLineStyle(part.lineStyle);
                elt.stLineWidth = (short) ToOcadDimensions(part.lineWidth);
                elt.stCoords = CoordsFromSymPath(part.path);
                break;

            case GlyphPartKind.Circle:
                elt.stType = 3;
                elt.stLineWidth = (short) ToOcadDimensions(part.lineWidth);
                if (version > 8)
                    elt.stDiameter = (short) ToOcadDimensions(part.circleDiam - part.lineWidth);
                else
                    elt.stDiameter = (short) ToOcadDimensions(part.circleDiam);
                elt.stCoords = new OcadCoord[1] { OcadCoordFromPoint(part.point) };
                break;

            case GlyphPartKind.FilledCircle:
                elt.stType = 4;
                elt.stDiameter = (short) ToOcadDimensions(part.circleDiam);
                elt.stCoords = new OcadCoord[1] { OcadCoordFromPoint(part.point) };
                break;

            default:
                Debug.Fail("bad GlyphPartKind");
                break;
            }

            elt.stnPoly = (short) elt.stCoords.Length;
            return elt;
        }