Example #1
0
        static String SetRuleStylePattern(RuleStyle style)
        {
            string rs = "";

            switch (style)
            {
            case RuleStyle.SOLID:
                rs = "[] 0 d ";
                break;

            case RuleStyle.DASHED:
                rs = "[3 3] 0 d ";
                break;

            case RuleStyle.DOTTED:
                rs = "[1 3] 0 d ";
                break;

            case RuleStyle.DOUBLE:
                rs = "[] 0 d ";
                break;

            default:
                rs = "[] 0 d ";
                break;
            }
            return(rs);
        }
Example #2
0
 public void DrawLine(float x1, float y1, float x2, float y2, float th, RuleStyle rs, PdfColor stroke)
 {
     InnerWrite("ET\nq\n" + stroke.getColorSpaceOut(false)
                + SetRuleStylePattern(rs) + PdfNumber.doubleOut(x1 / 1000f) + " "
                + PdfNumber.doubleOut(y1 / 1000f) + " m " + PdfNumber.doubleOut(x2 / 1000f) + " "
                + PdfNumber.doubleOut(y2 / 1000f) + " l " + PdfNumber.doubleOut(th / 1000f) + " w S\n"
                + "Q\nBT\n");
 }
Example #3
0
        public int AddLeader(BlockArea ba, FontState fontState, float red,
                             float green, float blue, int leaderPattern,
                             int leaderLengthMinimum, int leaderLengthOptimum,
                             int leaderLengthMaximum, int ruleThickness,
                             RuleStyle ruleStyle, int leaderPatternWidth,
                             int leaderAlignment)
        {
            LineArea la = ba.getCurrentLineArea();

            if (la == null)
            {
                return(-1);
            }

            la.changeFont(fontState);
            la.changeColor(red, green, blue);

            if (leaderLengthOptimum <= (la.getRemainingWidth()))
            {
                la.AddLeader(leaderPattern, leaderLengthMinimum,
                             leaderLengthOptimum, leaderLengthMaximum, ruleStyle,
                             ruleThickness, leaderPatternWidth, leaderAlignment);
            }
            else
            {
                la = ba.createNextLineArea();
                if (la == null)
                {
                    return(-1);
                }
                la.changeFont(fontState);
                la.changeColor(red, green, blue);

                if (leaderLengthMinimum <= la.getContentWidth())
                {
                    la.AddLeader(leaderPattern, leaderLengthMinimum,
                                 leaderLengthOptimum, leaderLengthMaximum,
                                 ruleStyle, ruleThickness, leaderPatternWidth,
                                 leaderAlignment);
                }
                else
                {
                    FonetDriver.ActiveDriver.FireFonetWarning(
                        "Leader doesn't fit into line, it will be clipped to fit.");
                    la.AddLeader(leaderPattern, la.getRemainingWidth(),
                                 leaderLengthOptimum, leaderLengthMaximum,
                                 ruleStyle, ruleThickness, leaderPatternWidth,
                                 leaderAlignment);
                }
            }
            return(1);
        }
Example #4
0
        /**
         * render leader area
         *
         * @param area area to render
         */

        public void RenderLeaderArea(LeaderArea area)
        {
            int       rx = this.currentXPosition;
            int       ry = this.currentYPosition;
            int       w  = area.getContentWidth();
            int       h  = area.GetHeight();
            int       th = area.getRuleThickness();
            RuleStyle st = area.getRuleStyle();

            // checks whether thickness is = 0, because of bug in pdf (or where?),
            // a line with thickness 0 is still displayed
            if (th != 0)
            {
                switch (st)
                {
                case RuleStyle.DOUBLE:
                    AddLine(rx, ry, rx + w, ry, th / 3, st,
                            new PdfColor(area.getRed(), area.getGreen(),
                                         area.getBlue()));
                    AddLine(rx, ry + (2 * th / 3), rx + w, ry + (2 * th / 3),
                            th / 3, st,
                            new PdfColor(area.getRed(), area.getGreen(),
                                         area.getBlue()));
                    break;

                case RuleStyle.GROOVE:
                    AddLine(rx, ry, rx + w, ry, th / 2, st,
                            new PdfColor(area.getRed(), area.getGreen(),
                                         area.getBlue()));
                    AddLine(rx, ry + (th / 2), rx + w, ry + (th / 2), th / 2, st,
                            new PdfColor(255, 255, 255));
                    break;

                case RuleStyle.RIDGE:
                    AddLine(rx, ry, rx + w, ry, th / 2, st,
                            new PdfColor(255, 255, 255));
                    AddLine(rx, ry + (th / 2), rx + w, ry + (th / 2), th / 2, st,
                            new PdfColor(area.getRed(), area.getGreen(),
                                         area.getBlue()));
                    break;

                default:
                    AddLine(rx, ry, rx + w, ry, th, st,
                            new PdfColor(area.getRed(), area.getGreen(),
                                         area.getBlue()));
                    break;
                }
                this.currentXPosition += area.getContentWidth();
                this.currentYPosition += th;
            }
        }
Example #5
0
 public LeaderArea(
     FontState fontState, float red, float green,
     float blue, string text, int leaderLengthOptimum,
     int leaderPattern, int ruleThickness, RuleStyle ruleStyle)
     : base(fontState, leaderLengthOptimum, red, green, blue)
 {
     this.leaderPattern       = leaderPattern;
     this.leaderLengthOptimum = leaderLengthOptimum;
     this.ruleStyle           = ruleStyle;
     if (ruleStyle == RuleStyle.NONE)
     {
         ruleThickness = 0;
     }
     this.ruleThickness = ruleThickness;
 }
Example #6
0
        private string URL;                       //要执行的URL链接


        //通用
        public GeckofxWebbrower(Control control, DataGridView dgv, TaskInfoEntity taskInfoEntity, GeckofxWebbrowerType geckofxType, string URL)
        {
            //GeckoPreferences.User["gfx.font_rendering.graphite.enabled"] = false;
            geckoWebBrowser        = new GeckoWebBrowser();
            geckoWebBrowser.Parent = control;
            geckoWebBrowser.Dock   = DockStyle.Fill;

            this.taskInfoEntity = taskInfoEntity;
            this.control        = control;
            this.dgv            = dgv;
            this.geckofxType    = geckofxType; // 浏览类型
            ruleStyle           = new RuleStyle();
            xpathHelper         = new XpathHelper();
            this.URL            = URL;

            init();
        }
Example #7
0
        /**
         * add a line to the current stream
         *
         * @param x1 the start x location in millipoints
         * @param y1 the start y location in millipoints
         * @param x2 the end x location in millipoints
         * @param y2 the end y location in millipoints
         * @param th the thickness in millipoints
         * @param rs the rule style
         * @param r the red component
         * @param g the green component
         * @param b the blue component
         */

        private void AddLine(int x1, int y1, int x2, int y2, int th, RuleStyle rs,
                             PdfColor stroke)
        {
            CloseText();
            currentStream.DrawLine(x1, y1, x2, y2, th, rs, stroke);
        }
Example #8
0
        public void AddLeader(int leaderPattern, int leaderLengthMinimum,
                              int leaderLengthOptimum, int leaderLengthMaximum,
                              RuleStyle ruleStyle, int ruleThickness,
                              int leaderPatternWidth, int leaderAlignment)
        {
            WordArea leaderPatternArea;
            int      leaderLength = 0;
            char     dotIndex     = '.';
            int      dotWidth     =
                currentFontState.GetWidth(currentFontState.MapCharacter(dotIndex));
            char whitespaceIndex = ' ';
            int  whitespaceWidth =
                currentFontState.GetWidth(currentFontState.MapCharacter(whitespaceIndex));

            int remainingWidth = this.getRemainingWidth();

            if ((remainingWidth <= leaderLengthOptimum) ||
                (remainingWidth <= leaderLengthMaximum))
            {
                leaderLength = remainingWidth;
            }
            else if ((remainingWidth > leaderLengthOptimum) &&
                     (remainingWidth > leaderLengthMaximum))
            {
                leaderLength = leaderLengthMaximum;
            }
            else if ((leaderLengthOptimum > leaderLengthMaximum) &&
                     (leaderLengthOptimum < remainingWidth))
            {
                leaderLength = leaderLengthOptimum;
            }

            if (leaderLength <= 0)
            {
                return;
            }

            switch (leaderPattern)
            {
            case LeaderPattern.SPACE:
                InlineSpace spaceArea = new InlineSpace(leaderLength);
                pendingAreas.Add(spaceArea);
                break;

            case LeaderPattern.RULE:
                LeaderArea leaderArea = new LeaderArea(fontState, red, green,
                                                       blue, "", leaderLength,
                                                       leaderPattern,
                                                       ruleThickness, ruleStyle);
                leaderArea.setYOffset(placementOffset);
                pendingAreas.Add(leaderArea);
                break;

            case LeaderPattern.DOTS:
                if (leaderPatternWidth < dotWidth)
                {
                    leaderPatternWidth = 0;
                }
                if (leaderPatternWidth == 0)
                {
                    pendingAreas.Add(this.buildSimpleLeader(dotIndex,
                                                            leaderLength));
                }
                else
                {
                    if (leaderAlignment == LeaderAlignment.REFERENCE_AREA)
                    {
                        int spaceBeforeLeader =
                            this.getLeaderAlignIndent(leaderLength,
                                                      leaderPatternWidth);
                        if (spaceBeforeLeader != 0)
                        {
                            pendingAreas.Add(new InlineSpace(spaceBeforeLeader,
                                                             false));
                            pendingWidth += spaceBeforeLeader;
                            leaderLength -= spaceBeforeLeader;
                        }
                    }

                    InlineSpace spaceBetweenDots =
                        new InlineSpace(leaderPatternWidth - dotWidth, false);

                    leaderPatternArea = new WordArea(currentFontState, this.red,
                                                     this.green, this.blue,
                                                     ".", dotWidth);
                    leaderPatternArea.setYOffset(placementOffset);
                    int dotsFactor =
                        (int)Math.Floor(((double)leaderLength)
                                        / ((double)leaderPatternWidth));

                    for (int i = 0; i < dotsFactor; i++)
                    {
                        pendingAreas.Add(leaderPatternArea);
                        pendingAreas.Add(spaceBetweenDots);
                    }
                    pendingAreas.Add(new InlineSpace(leaderLength
                                                     - dotsFactor
                                                     * leaderPatternWidth));
                }
                break;

            case LeaderPattern.USECONTENT:
                FonetDriver.ActiveDriver.FireFonetError(
                    "leader-pattern=\"use-content\" not supported by this version of FO.NET");
                return;
            }
            pendingWidth += leaderLength;
            prev          = TEXT;
        }
Example #9
0
        public override Status Layout(Area area)
        {
            BlockArea blockArea;

            if (!(area is BlockArea))
            {
                FonetDriver.ActiveDriver.FireFonetWarning(
                    "fo:leader must be a direct child of fo:block ");
                return(new Status(Status.OK));
            }
            else
            {
                blockArea = (BlockArea)area;
            }

            AccessibilityProps    mAccProps = propMgr.GetAccessibilityProps();
            AuralProps            mAurProps = propMgr.GetAuralProps();
            BorderAndPadding      bap       = propMgr.GetBorderAndPadding();
            BackgroundProps       bProps    = propMgr.GetBackgroundProps();
            MarginInlineProps     mProps    = propMgr.GetMarginInlineProps();
            RelativePositionProps mRelProps = propMgr.GetRelativePositionProps();
            ColorType             c         = this.properties.GetProperty("color").GetColorType();
            float red   = c.Red;
            float green = c.Green;
            float blue  = c.Blue;

            int leaderPattern       = this.properties.GetProperty("leader-pattern").GetEnum();
            int leaderLengthOptimum =
                this.properties.GetProperty("leader-length.optimum").GetLength().MValue();
            int leaderLengthMinimum =
                this.properties.GetProperty("leader-length.minimum").GetLength().MValue();
            Length maxlength = this.properties.GetProperty("leader-length.maximum").GetLength();
            int    leaderLengthMaximum;

            if (maxlength is PercentLength)
            {
                leaderLengthMaximum = (int)(((PercentLength)maxlength).value()
                                            * area.getAllocationWidth());
            }
            else
            {
                leaderLengthMaximum = maxlength.MValue();
            }
            int ruleThickness =
                this.properties.GetProperty("rule-thickness").GetLength().MValue();
            RuleStyle ruleStyle          = (RuleStyle)this.properties.GetProperty("rule-style").GetEnum();
            int       leaderPatternWidth =
                this.properties.GetProperty("leader-pattern-width").GetLength().MValue();
            int leaderAlignment =
                this.properties.GetProperty("leader-alignment").GetEnum();

            string id = this.properties.GetProperty("id").GetString();

            blockArea.GetMyRefs().InitializeID(id, blockArea);

            int succeeded = AddLeader(blockArea,
                                      propMgr.GetFontState(area.getFontInfo()),
                                      red, green, blue, leaderPattern,
                                      leaderLengthMinimum, leaderLengthOptimum,
                                      leaderLengthMaximum, ruleThickness,
                                      ruleStyle, leaderPatternWidth,
                                      leaderAlignment);

            if (succeeded == 1)
            {
                return(new Status(Status.OK));
            }
            else
            {
                return(new Status(Status.AREA_FULL_SOME));
            }
        }