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); }
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"); }
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); }
/** * 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; } }
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; }
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(); }
/** * 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); }
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; }
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)); } }