コード例 #1
0
ファイル: OcadImport.cs プロジェクト: jonc/carto
        SymDef CreateTextSymdef(string name, int ocadID, OcadTextSymbol ocadSym)
        {
            SymColor fontColor;
            bool bold, italic;
            TextSymDef symdef;
            float fontSize;
            float paraSpacing;
            float firstIndent, restIndent;
            float charSpacing, wordSpacing;
            float[] tabs;
            TextSymDefAlignment fontAlign;

            fontColor = GetColor(ocadSym.FontColor);

            italic = ocadSym.Italic;
            bold = (ocadSym.Weight >= 500);

            if (ocadSym.Alignment == 1)
                fontAlign = TextSymDefAlignment.Center;
            else if (ocadSym.Alignment == 2)
                fontAlign = TextSymDefAlignment.Right;
            else if (ocadSym.Alignment == 3)
                fontAlign = TextSymDefAlignment.Justified;
            else
                fontAlign = TextSymDefAlignment.Left;

            // ocadSym.FontSize is in 10ths of a point. Convert to mm.
            fontSize = ocadSym.FontSize / 720F * 25.4F;

            paraSpacing = ToWorldDimensions(ocadSym.ParaSpace);   // paragraph spacing in mm.
            firstIndent = ToWorldDimensions(ocadSym.IndentFirst);       // indent first line in mm.
            restIndent = ToWorldDimensions(ocadSym.IndentOther);    // indent rest lines in mm.
            charSpacing = ocadSym.CharSpace / 100F;
            wordSpacing = ocadSym.WordSpace / 100F;
            if (ocadSym.LBOn) {
                paraSpacing += ToWorldDimensions(ocadSym.LBDist + ocadSym.LBWidth);   // underlining counts in paragraph spacing.
            }

            tabs = null;
            if (ocadSym.nTabs > 0) {
                tabs = new float[ocadSym.nTabs];
                for (int i = 0; i < ocadSym.nTabs; ++i)
                    tabs[i] = ToWorldDimensions(ocadSym.Tabs[i]);
            }

            symdef = new TextSymDef(name, ocadID);

            symdef.SetFont(ocadSym.FontName, fontSize, bold, italic, fontColor, fontSize * ocadSym.LineSpace / 100F, paraSpacing, firstIndent, restIndent, tabs, charSpacing, wordSpacing, fontAlign);

            // handle framing.
            ReadFraming(ocadSym.FrMode, ocadSym.FrFlags, ocadSym.FrColor, ocadSym.FrWidth, ocadSym.FrSize, ocadSym.FrOfX, ocadSym.FrOfY, ocadSym.FrLeft, ocadSym.FrTop, ocadSym.FrRight, ocadSym.FrBottom, symdef);

            if (ocadSym.LBOn) {
                TextSymDef.Underlining underline = new TextSymDef.Underlining();
                underline.underlineOn = true;
                underline.underlineColor = GetColor(ocadSym.LBColor);
                underline.underlineDistance = ToWorldDimensions(ocadSym.LBDist);
                underline.underlineWidth = ToWorldDimensions(ocadSym.LBWidth);
                symdef.SetUnderline(underline);
            }

            return symdef;
        }
コード例 #2
0
ファイル: OcadImport.cs プロジェクト: jonc/carto
        SymDef CreateLineTextSymdef(string name, int ocadID, OcadLineTextSymbol ocadSym)
        {
            SymColor fontColor;
            bool bold, italic;
            TextSymDef symdef;
            float fontSize;
            float charSpacing;
            float wordSpacing;
            TextSymDefAlignment fontAlign;

            fontColor = GetColor(ocadSym.FontColor);

            italic = ocadSym.Italic;
            bold = (ocadSym.Weight >= 500);

            if (ocadSym.Alignment == 1)
                fontAlign = TextSymDefAlignment.Center;
            else if (ocadSym.Alignment == 2)
                fontAlign = TextSymDefAlignment.Right;
            else if (ocadSym.Alignment == 3)
                fontAlign = TextSymDefAlignment.Justified;
            else
                fontAlign = TextSymDefAlignment.Left;

            // ocadSym.FontSize is in 10ths of a point. Convert to mm.
            fontSize = ocadSym.FontSize / 720F * 25.4F;

            charSpacing = ocadSym.CharSpace / 100F;
            wordSpacing = ocadSym.WordSpace / 100F;

            symdef = new TextSymDef(name, ocadID);

            symdef.SetFont(ocadSym.FontName, fontSize, bold, italic, fontColor, fontSize, 0F, 0F, 0F, null, charSpacing, wordSpacing, fontAlign);

            // handle framing.
            ReadFraming(ocadSym.FrMode, ocadSym.FrFlags, ocadSym.FrColor, ocadSym.FrWidth, ocadSym.FrSize, ocadSym.FrOfX, ocadSym.FrOfY, 0, 0, 0, 0, symdef);

            return symdef;
        }
コード例 #3
0
ファイル: OcadImport.cs プロジェクト: jonc/carto
 // If a rectangle symbol include a grid, then we create extra line and text symbols
 // to handle the grid and numbers in the grid.
 void CreateRectangleGridSymdefs(string name, SymColor color, out LineSymDef lineSymdef, out TextSymDef textSymdef)
 {
     // UNDONE: Really should check that a real
     // UNDONE: symbol isn't using these ids, or that there aren't already synthetic symbols that match.
     lineSymdef = new LineSymDef(name + " grid lines", ocadIdNext++, color, 0.15F, LineStyle.Beveled);
     textSymdef = new TextSymDef(name + " grid text", ocadIdNext++);
     textSymdef.SetFont("Arial", 15F / 72F * 25.4F, true, false, color, 0, 0, 0, 0, null, 0, 1F, TextSymDefAlignment.Left);
     map.AddSymdef(lineSymdef);
     map.AddSymdef(textSymdef);
 }