use of java.awt.font.FontRenderContext in project bytecode-viewer by Konloch.
the class CodeSequenceDiagram method execute.
@Override
public void execute(ArrayList<ClassNode> classNodeList) {
if (BytecodeViewer.viewer.workPane.getCurrentViewer() == null || !(BytecodeViewer.viewer.workPane.getCurrentViewer() instanceof ClassViewer)) {
BytecodeViewer.showMessage("First open a class file.");
return;
}
ClassNode c = BytecodeViewer.viewer.workPane.getCurrentViewer().cn;
if (c == null) {
BytecodeViewer.showMessage("ClassNode is null for CodeSequenceDiagram. Please report to @Konloch");
return;
}
JFrame frame = null;
if (c.name != null)
frame = new JFrame("Code Sequence Diagram - " + c.name);
else
frame = new JFrame("Code Sequence Diagram - Unknown Name");
frame.setIconImages(Resources.iconList);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(400, 320);
mxGraph graph = new mxGraph();
graph.setVertexLabelsMovable(false);
graph.setGridEnabled(true);
graph.setEnabled(false);
graph.setCellsEditable(false);
graph.setCellsSelectable(false);
graph.setCellsMovable(false);
graph.setCellsLocked(true);
Object parent = graph.getDefaultParent();
Font font = UIManager.getDefaults().getFont("TabbedPane.font");
AffineTransform affinetransform = new AffineTransform();
FontRenderContext frc = new FontRenderContext(affinetransform, true, true);
graph.getModel().beginUpdate();
try {
int testX = 10;
int testY = 0;
double magicNumber = 5.8;
for (MethodNode m : (ArrayList<MethodNode>) c.methods) {
String mIdentifier = c.name + "." + m.name + m.desc;
Object node = graph.insertVertex(parent, null, mIdentifier, testX, testY, mIdentifier.length() * magicNumber, 30);
Object attach = node;
testX += (int) (font.getStringBounds(mIdentifier, frc).getWidth()) + 60;
for (AbstractInsnNode i : m.instructions.toArray()) {
if (i instanceof MethodInsnNode) {
MethodInsnNode mi = (MethodInsnNode) i;
String identifier = mi.owner + "." + mi.name + mi.desc;
Object node2 = graph.insertVertex(parent, null, identifier, testX, testY, identifier.length() * 5, 30);
testX += (int) (font.getStringBounds(identifier, frc).getWidth()) + 60;
graph.insertEdge(parent, null, null, attach, node2);
attach = node2;
}
}
testY += 60;
testX = 10;
}
} finally {
graph.getModel().endUpdate();
}
mxGraphComponent graphComponent = new mxGraphComponent(graph);
frame.getContentPane().add(graphComponent);
frame.setVisible(true);
}
use of java.awt.font.FontRenderContext in project poi by apache.
the class SLGraphics method getFontRenderContext.
/**
* Get the rendering context of the <code>Font</code> within this
* <code>Graphics2D</code> context.
* The {@link FontRenderContext}
* encapsulates application hints such as anti-aliasing and
* fractional metrics, as well as target device specific information
* such as dots-per-inch. This information should be provided by the
* application when using objects that perform typographical
* formatting, such as <code>Font</code> and
* <code>TextLayout</code>. This information should also be provided
* by applications that perform their own layout and need accurate
* measurements of various characteristics of glyphs such as advance
* and line height when various rendering hints have been applied to
* the text rendering.
*
* @return a reference to an instance of FontRenderContext.
* @see java.awt.font.FontRenderContext
* @see java.awt.Font#createGlyphVector(FontRenderContext,char[])
* @see java.awt.font.TextLayout
* @since JDK1.2
*/
public FontRenderContext getFontRenderContext() {
boolean isAntiAliased = RenderingHints.VALUE_TEXT_ANTIALIAS_ON.equals(getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING));
boolean usesFractionalMetrics = RenderingHints.VALUE_FRACTIONALMETRICS_ON.equals(getRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS));
return new FontRenderContext(new AffineTransform(), isAntiAliased, usesFractionalMetrics);
}
use of java.awt.font.FontRenderContext in project poi by apache.
the class PPGraphics2D method getFontRenderContext.
/**
* Get the rendering context of the <code>Font</code> within this
* <code>Graphics2D</code> context.
* The {@link FontRenderContext}
* encapsulates application hints such as anti-aliasing and
* fractional metrics, as well as target device specific information
* such as dots-per-inch. This information should be provided by the
* application when using objects that perform typographical
* formatting, such as <code>Font</code> and
* <code>TextLayout</code>. This information should also be provided
* by applications that perform their own layout and need accurate
* measurements of various characteristics of glyphs such as advance
* and line height when various rendering hints have been applied to
* the text rendering.
*
* @return a reference to an instance of FontRenderContext.
* @see java.awt.font.FontRenderContext
* @see java.awt.Font#createGlyphVector(FontRenderContext,char[])
* @see java.awt.font.TextLayout
* @since JDK1.2
*/
public FontRenderContext getFontRenderContext() {
boolean isAntiAliased = RenderingHints.VALUE_TEXT_ANTIALIAS_ON.equals(getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING));
boolean usesFractionalMetrics = RenderingHints.VALUE_FRACTIONALMETRICS_ON.equals(getRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS));
return new FontRenderContext(new AffineTransform(), isAntiAliased, usesFractionalMetrics);
}
use of java.awt.font.FontRenderContext in project poi by apache.
the class BaseTestBugzillaIssues method computeCellWidthManually.
// FIXME: this function is a self-fulfilling prophecy: this test will always pass as long
// as the code-under-test and the testcase code are written the same way (have the same bugs).
private double computeCellWidthManually(Cell cell0, Font font) {
final FontRenderContext fontRenderContext = new FontRenderContext(null, true, true);
RichTextString rt = cell0.getRichStringCellValue();
String[] lines = rt.getString().split("\\n");
assertEquals(1, lines.length);
String txt = lines[0] + "0";
AttributedString str = new AttributedString(txt);
copyAttributes(font, str, txt.length());
// TODO: support rich text fragments
/*if (rt.numFormattingRuns() > 0) {
}*/
TextLayout layout = new TextLayout(str.getIterator(), fontRenderContext);
double frameWidth = getFrameWidth(layout);
return ((frameWidth / 1) / 8);
}
use of java.awt.font.FontRenderContext in project intellij-community by JetBrains.
the class TextPainter method calcNumbersStripWidth.
private double calcNumbersStripWidth(Graphics2D g, Rectangle2D clip) {
if (!myPrintSettings.PRINT_LINE_NUMBERS) {
return 0;
}
int maxLineNumber = myLineNumber + (int) (clip.getHeight() / getLineHeight(g));
FontRenderContext fontRenderContext = (g).getFontRenderContext();
double numbersStripWidth = 0;
for (int i = myLineNumber; i < maxLineNumber; i++) {
double width = myPlainFont.getStringBounds(String.valueOf(i), fontRenderContext).getWidth();
if (numbersStripWidth < width) {
numbersStripWidth = width;
}
}
return numbersStripWidth;
}
Aggregations