/** * Helper method that will draw the underline of a curved label using the context of the cursor. */ private void drawCurvedStrikethrough( LineInfo line, LineStringCursor cursor, double startOrdinate, boolean drawingHalo, LineMetrics metrics) { final float lineOffset = metrics.getStrikethroughOffset(); final float lineThickness = metrics.getStrikethroughThickness(); drawCurvedLine(line, cursor, startOrdinate, drawingHalo, lineOffset, lineThickness); }
/** * Draws a line under the text with the same color of the text and with the same width using the * provided thickness and offset. */ private void drawStraightLabelStrikethroughIfNeeded( java.awt.Shape outline, LineMetrics metrics, boolean drawingHalo) { // let's see if text strikethrough is enabled for this label or we have something to draw if (!labelItem.isTextStrikethrough()) { // text strikethrough not enabled or nothing to draw return; } // get needed metrics values float thickness = metrics.getStrikethroughThickness(); float offset = metrics.getStrikethroughOffset(); drawStraightLabelLine(outline, drawingHalo, thickness, offset); }
/** * Vertical centering is not trivial, because visually we want centering on characters such as * a,m,e, and not centering on d,g whose center is affected by the full ascent or the full * descent. This method tries to computes the y anchor taking into account those. */ public double getLinePlacementYAnchor() { TextStyle2D textStyle = getLabel().getTextStyle(); LineMetrics lm = textStyle .getFont() .getLineMetrics(textStyle.getLabel(), graphics.getFontRenderContext()); // gracefully handle font size = 0 if (lm.getHeight() > 0) { return (Math.abs(lm.getStrikethroughOffset()) + lm.getDescent() + lm.getLeading()) / lm.getHeight(); } else { return 0; } }
int stPos = Math.round(lm.getStrikethroughOffset()) + g.getFont().getBaselineFor(chars[pos]) + 1;
public float getStrikethroughOffset() { return _lineMetrics.getStrikethroughOffset(); }
public float getStrikethroughOffset() { return _lineMetrics.getStrikethroughOffset(); }
public float getStrikethroughOffset() { return _lineMetrics.getStrikethroughOffset(); }
public float getStrikethroughOffset() { float max = -Float.MAX_VALUE; for (LineMetrics met : _lineMetrics) { max = Math.max(max, met.getStrikethroughOffset()); } return max; }
public int getStrikeoutPosition(String family, int style, int size) { setFont(family, style, size); return -Math.round(lineMetrics.getStrikethroughOffset()); }
private synchronized void initStrikethrough(Graphics g) { LineMetrics lm = font.getLineMetrics("aAyY", ((Graphics2D) g).getFontRenderContext()); strikethroughOffset = lm.getStrikethroughOffset(); strikethroughThickness = lm.getStrikethroughThickness(); inited |= ST_INITED; }
private synchronized void initStrikethrough(Graphics g) { LineMetrics lm = font.getLineMetrics("aAyY", ((Graphics2D)g).getFontRenderContext()); // NOI18N strikethroughOffset = lm.getStrikethroughOffset(); strikethroughThickness = lm.getStrikethroughThickness(); inited |= ST_INITED; }
/** * Vertical centering is not trivial, because visually we want centering on * characters such as a,m,e, and not centering on d,g whose center is * affected by the full ascent or the full descent. This method tries to * computes the y anchor taking into account those. */ public double getLinePlacementYAnchor() { TextStyle2D textStyle = getLabel().getTextStyle(); LineMetrics lm = textStyle.getFont().getLineMetrics(textStyle.getLabel(), graphics.getFontRenderContext()); // gracefully handle font size = 0 if(lm.getHeight() > 0) return (Math.abs(lm.getStrikethroughOffset()) + lm.getDescent() + lm.getLeading()) / lm.getHeight(); else return 0; }
LineMetrics lm = getEffectiveFont().getLineMetrics("", fontRenderContext); float ascent = lm.getAscent(); int strikethroughX = Math.round(lm.getAscent() + lm.getStrikethroughOffset()); int underlineX = Math.round(lm.getAscent() + lm.getUnderlineOffset()); boolean underline = getEffectiveUnderline();
LineMetrics lm = getEffectiveFont().getLineMetrics("", fontRenderContext); float ascent = lm.getAscent(); int strikethroughX = Math.round(lm.getAscent() + lm.getStrikethroughOffset()); int underlineX = Math.round(lm.getAscent() + lm.getUnderlineOffset()); boolean underline = getEffectiveUnderline();
/** * Constructs a GVTLineMetrics object based on the specified line metrics. * * @param lineMetrics The lineMetrics object that this metrics object will * be based upon. */ public GVTLineMetrics(LineMetrics lineMetrics) { this.ascent = lineMetrics.getAscent(); this.baselineIndex = lineMetrics.getBaselineIndex(); this.baselineOffsets = lineMetrics.getBaselineOffsets(); this.descent = lineMetrics.getDescent(); this.height = lineMetrics.getHeight(); this.leading = lineMetrics.getLeading(); this.numChars = lineMetrics.getNumChars(); this.strikethroughOffset = lineMetrics.getStrikethroughOffset(); this.strikethroughThickness = lineMetrics.getStrikethroughThickness(); this.underlineOffset = lineMetrics.getUnderlineOffset(); this.underlineThickness = lineMetrics.getUnderlineThickness(); this.overlineOffset = -this.ascent; this.overlineThickness = this.underlineThickness; }
/** * Constructs a GVTLineMetrics object based on the specified line metrics. * * @param lineMetrics The lineMetrics object that this metrics object will * be based upon. */ public GVTLineMetrics(LineMetrics lineMetrics) { this.ascent = lineMetrics.getAscent(); this.baselineIndex = lineMetrics.getBaselineIndex(); this.baselineOffsets = lineMetrics.getBaselineOffsets(); this.descent = lineMetrics.getDescent(); this.height = lineMetrics.getHeight(); this.leading = lineMetrics.getLeading(); this.numChars = lineMetrics.getNumChars(); this.strikethroughOffset = lineMetrics.getStrikethroughOffset(); this.strikethroughThickness = lineMetrics.getStrikethroughThickness(); this.underlineOffset = lineMetrics.getUnderlineOffset(); this.underlineThickness = lineMetrics.getUnderlineThickness(); this.overlineOffset = -this.ascent; this.overlineThickness = this.underlineThickness; }
/** * Constructs a GVTLineMetrics object based on the specified line metrics. * * @param lineMetrics The lineMetrics object that this metrics object will * be based upon. */ public GVTLineMetrics(LineMetrics lineMetrics) { this.ascent = lineMetrics.getAscent(); this.baselineIndex = lineMetrics.getBaselineIndex(); this.baselineOffsets = lineMetrics.getBaselineOffsets(); this.descent = lineMetrics.getDescent(); this.height = lineMetrics.getHeight(); this.leading = lineMetrics.getLeading(); this.numChars = lineMetrics.getNumChars(); this.strikethroughOffset = lineMetrics.getStrikethroughOffset(); this.strikethroughThickness = lineMetrics.getStrikethroughThickness(); this.underlineOffset = lineMetrics.getUnderlineOffset(); this.underlineThickness = lineMetrics.getUnderlineThickness(); this.overlineOffset = -this.ascent; this.overlineThickness = this.underlineThickness; }
/** * Constructs a GVTLineMetrics object based on the specified line metrics * with a scale factor applied. * * @param lineMetrics The lineMetrics object that this metrics object will * be based upon. * @param scaleFactor The scale factor to apply to all metrics. */ public GVTLineMetrics(LineMetrics lineMetrics, float scaleFactor) { this.ascent = lineMetrics.getAscent() * scaleFactor; this.baselineIndex = lineMetrics.getBaselineIndex(); this.baselineOffsets = lineMetrics.getBaselineOffsets(); for (int i=0; i<baselineOffsets.length; i++) { this.baselineOffsets[i] *= scaleFactor; } this.descent = lineMetrics.getDescent() * scaleFactor; this.height = lineMetrics.getHeight() * scaleFactor; this.leading = lineMetrics.getLeading(); this.numChars = lineMetrics.getNumChars(); this.strikethroughOffset = lineMetrics.getStrikethroughOffset() * scaleFactor; this.strikethroughThickness = lineMetrics.getStrikethroughThickness() * scaleFactor; this.underlineOffset = lineMetrics.getUnderlineOffset() * scaleFactor; this.underlineThickness = lineMetrics.getUnderlineThickness() * scaleFactor; this.overlineOffset = -this.ascent; this.overlineThickness = this.underlineThickness; }
/** * Constructs a GVTLineMetrics object based on the specified line metrics * with a scale factor applied. * * @param lineMetrics The lineMetrics object that this metrics object will * be based upon. * @param scaleFactor The scale factor to apply to all metrics. */ public GVTLineMetrics(LineMetrics lineMetrics, float scaleFactor) { this.ascent = lineMetrics.getAscent() * scaleFactor; this.baselineIndex = lineMetrics.getBaselineIndex(); this.baselineOffsets = lineMetrics.getBaselineOffsets(); for (int i=0; i<baselineOffsets.length; i++) { this.baselineOffsets[i] *= scaleFactor; } this.descent = lineMetrics.getDescent() * scaleFactor; this.height = lineMetrics.getHeight() * scaleFactor; this.leading = lineMetrics.getLeading(); this.numChars = lineMetrics.getNumChars(); this.strikethroughOffset = lineMetrics.getStrikethroughOffset() * scaleFactor; this.strikethroughThickness = lineMetrics.getStrikethroughThickness() * scaleFactor; this.underlineOffset = lineMetrics.getUnderlineOffset() * scaleFactor; this.underlineThickness = lineMetrics.getUnderlineThickness() * scaleFactor; this.overlineOffset = -this.ascent; this.overlineThickness = this.underlineThickness; }
/** * Constructs a GVTLineMetrics object based on the specified line metrics * with a scale factor applied. * * @param lineMetrics The lineMetrics object that this metrics object will * be based upon. * @param scaleFactor The scale factor to apply to all metrics. */ public GVTLineMetrics(LineMetrics lineMetrics, float scaleFactor) { this.ascent = lineMetrics.getAscent() * scaleFactor; this.baselineIndex = lineMetrics.getBaselineIndex(); this.baselineOffsets = lineMetrics.getBaselineOffsets(); for (int i=0; i<baselineOffsets.length; i++) { this.baselineOffsets[i] *= scaleFactor; } this.descent = lineMetrics.getDescent() * scaleFactor; this.height = lineMetrics.getHeight() * scaleFactor; this.leading = lineMetrics.getLeading(); this.numChars = lineMetrics.getNumChars(); this.strikethroughOffset = lineMetrics.getStrikethroughOffset() * scaleFactor; this.strikethroughThickness = lineMetrics.getStrikethroughThickness() * scaleFactor; this.underlineOffset = lineMetrics.getUnderlineOffset() * scaleFactor; this.underlineThickness = lineMetrics.getUnderlineThickness() * scaleFactor; this.overlineOffset = -this.ascent; this.overlineThickness = this.underlineThickness; }