use of java.awt.RenderingHints.Key in project jdk8u_jdk by JetBrains.
the class TestLayoutVsICU method show.
private void show(String arg) throws ParserConfigurationException, SAXException, IOException {
id = "<none>";
File xmlFile = new File(arg);
if (!xmlFile.exists()) {
throw new FileNotFoundException("Can't open input XML file " + arg);
}
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
if (OPT_VERBOSE) {
System.out.println("# Parsing " + xmlFile.getAbsolutePath());
}
Document doc = db.parse(xmlFile);
Element e = doc.getDocumentElement();
if (!XML_LAYOUT_TESTS.equals(e.getNodeName())) {
throw new IllegalArgumentException("Document " + xmlFile.getAbsolutePath() + " does not have <layout-tests> as its base");
}
NodeList testCases = e.getElementsByTagName(XML_TEST_CASE);
for (int caseNo = 0; caseNo < testCases.getLength(); caseNo++) {
final Node testCase = testCases.item(caseNo);
final Map<String, String> testCaseAttrs = attrs(testCase);
id = testCaseAttrs.get(XML_ID);
final String script = testCaseAttrs.get(XML_SCRIPT);
String testText = null;
Integer[] expectGlyphs = null;
Integer[] expectIndices = null;
Map<String, String> fontAttrs = null;
if (OPT_VERBOSE) {
System.out.println("#" + caseNo + " id=" + id + ", script=" + script);
}
NodeList children = testCase.getChildNodes();
for (int sub = 0; sub < children.getLength(); sub++) {
Node n = children.item(sub);
if (n.getNodeType() != Node.ELEMENT_NODE)
continue;
String nn = n.getNodeName();
if (nn.equals(XML_TEST_FONT)) {
fontAttrs = attrs(n);
} else if (nn.equals(XML_TEST_TEXT)) {
testText = n.getTextContent();
} else if (nn.equals(XML_RESULT_GLYPHS)) {
String hex = n.getTextContent();
expectGlyphs = parseHexArray(hex);
} else if (nn.equals(XML_RESULT_INDICES)) {
String hex = n.getTextContent();
expectIndices = parseHexArray(hex);
} else if (OPT_VERBOSE) {
System.out.println("Ignoring node " + nn);
}
}
if (fontAttrs == null) {
throw new IllegalArgumentException(id + " Missing node " + XML_TEST_FONT);
}
if (testText == null) {
throw new IllegalArgumentException(id + " Missing node " + XML_TEST_TEXT);
}
String fontName = fontAttrs.get(XML_NAME);
Font f = getFont(fontName, fontAttrs);
if (f == null) {
if (OPT_FAILMISSING) {
throw new MissingResourceException("Missing font, abort test", Font.class.getName(), fontName);
}
System.out.println("Skipping " + id + " because font is missing: " + fontName);
skipped++;
continue;
}
FontRenderContext frc = new FontRenderContext(null, true, true);
TextLayout tl = new TextLayout(testText, f, frc);
final List<GlyphVector> glyphs = new ArrayList<GlyphVector>();
Graphics2D myg2 = new Graphics2D() {
@Override
public void draw(Shape s) {
// TODO Auto-generated method stub
}
@Override
public boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) {
// TODO Auto-generated method stub
return false;
}
@Override
public void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public void drawRenderedImage(RenderedImage img, AffineTransform xform) {
// TODO Auto-generated method stub
}
@Override
public void drawRenderableImage(RenderableImage img, AffineTransform xform) {
// TODO Auto-generated method stub
}
@Override
public void drawString(String str, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public void drawString(String str, float x, float y) {
// TODO Auto-generated method stub
}
@Override
public void drawString(AttributedCharacterIterator iterator, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public void drawString(AttributedCharacterIterator iterator, float x, float y) {
// TODO Auto-generated method stub
}
@Override
public void drawGlyphVector(GlyphVector g, float x, float y) {
if (x != 0.0 || y != 0.0) {
throw new InternalError("x,y should be 0 but got " + x + "," + y);
}
//System.err.println("dGV : " + g.toString() + " @ "+x+","+y);
glyphs.add(g);
}
@Override
public void fill(Shape s) {
// TODO Auto-generated method stub
}
@Override
public boolean hit(Rectangle rect, Shape s, boolean onStroke) {
// TODO Auto-generated method stub
return false;
}
@Override
public GraphicsConfiguration getDeviceConfiguration() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setComposite(Composite comp) {
// TODO Auto-generated method stub
}
@Override
public void setPaint(Paint paint) {
// TODO Auto-generated method stub
}
@Override
public void setStroke(Stroke s) {
// TODO Auto-generated method stub
}
@Override
public void setRenderingHint(Key hintKey, Object hintValue) {
// TODO Auto-generated method stub
}
@Override
public Object getRenderingHint(Key hintKey) {
// TODO Auto-generated method stub
return null;
}
@Override
public void setRenderingHints(Map<?, ?> hints) {
// TODO Auto-generated method stub
}
@Override
public void addRenderingHints(Map<?, ?> hints) {
// TODO Auto-generated method stub
}
@Override
public RenderingHints getRenderingHints() {
// TODO Auto-generated method stub
return null;
}
@Override
public void translate(int x, int y) {
// TODO Auto-generated method stub
}
@Override
public void translate(double tx, double ty) {
// TODO Auto-generated method stub
}
@Override
public void rotate(double theta) {
// TODO Auto-generated method stub
}
@Override
public void rotate(double theta, double x, double y) {
// TODO Auto-generated method stub
}
@Override
public void scale(double sx, double sy) {
// TODO Auto-generated method stub
}
@Override
public void shear(double shx, double shy) {
// TODO Auto-generated method stub
}
@Override
public void transform(AffineTransform Tx) {
// TODO Auto-generated method stub
}
@Override
public void setTransform(AffineTransform Tx) {
// TODO Auto-generated method stub
}
@Override
public AffineTransform getTransform() {
// TODO Auto-generated method stub
return null;
}
@Override
public Paint getPaint() {
// TODO Auto-generated method stub
return null;
}
@Override
public Composite getComposite() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setBackground(Color color) {
// TODO Auto-generated method stub
}
@Override
public Color getBackground() {
// TODO Auto-generated method stub
return null;
}
@Override
public Stroke getStroke() {
// TODO Auto-generated method stub
return null;
}
@Override
public void clip(Shape s) {
// TODO Auto-generated method stub
}
@Override
public FontRenderContext getFontRenderContext() {
// TODO Auto-generated method stub
return null;
}
@Override
public Graphics create() {
// TODO Auto-generated method stub
return null;
}
@Override
public Color getColor() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setColor(Color c) {
// TODO Auto-generated method stub
}
@Override
public void setPaintMode() {
// TODO Auto-generated method stub
}
@Override
public void setXORMode(Color c1) {
// TODO Auto-generated method stub
}
@Override
public Font getFont() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setFont(Font font) {
// TODO Auto-generated method stub
}
@Override
public FontMetrics getFontMetrics(Font f) {
// TODO Auto-generated method stub
return null;
}
@Override
public Rectangle getClipBounds() {
// TODO Auto-generated method stub
return null;
}
@Override
public void clipRect(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void setClip(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public Shape getClip() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setClip(Shape clip) {
// TODO Auto-generated method stub
}
@Override
public void copyArea(int x, int y, int width, int height, int dx, int dy) {
// TODO Auto-generated method stub
}
@Override
public void drawLine(int x1, int y1, int x2, int y2) {
// TODO Auto-generated method stub
}
@Override
public void fillRect(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void clearRect(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
// TODO Auto-generated method stub
}
@Override
public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
// TODO Auto-generated method stub
}
@Override
public void drawOval(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void fillOval(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
// TODO Auto-generated method stub
}
@Override
public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
// TODO Auto-generated method stub
}
@Override
public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) {
// TODO Auto-generated method stub
}
@Override
public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) {
// TODO Auto-generated method stub
}
@Override
public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) {
// TODO Auto-generated method stub
}
@Override
public boolean drawImage(Image img, int x, int y, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
};
tl.draw(myg2, 0, 0);
if (glyphs.size() != 1) {
err("drew " + glyphs.size() + " times - expected 1");
total++;
bad++;
continue;
}
boolean isBad = false;
GlyphVector gv = glyphs.get(0);
// GLYPHS
int[] gotGlyphs = gv.getGlyphCodes(0, gv.getNumGlyphs(), new int[gv.getNumGlyphs()]);
// go up to this count
int count = Math.min(gotGlyphs.length, expectGlyphs.length);
for (int i = 0; i < count; i++) {
if (gotGlyphs[i] != expectGlyphs[i]) {
err("@" + i + " - got \tglyph 0x" + Integer.toHexString(gotGlyphs[i]) + " wanted 0x" + Integer.toHexString(expectGlyphs[i]));
isBad = true;
break;
}
}
// INDICES
int[] gotIndices = gv.getGlyphCharIndices(0, gv.getNumGlyphs(), new int[gv.getNumGlyphs()]);
for (int i = 0; i < count; i++) {
if (gotIndices[i] != expectIndices[i]) {
err("@" + i + " - got \tindex 0x" + Integer.toHexString(gotGlyphs[i]) + " wanted 0x" + Integer.toHexString(expectGlyphs[i]));
isBad = true;
break;
}
}
// COUNT
if (gotGlyphs.length != expectGlyphs.length) {
System.out.println("Got " + gotGlyphs.length + " wanted " + expectGlyphs.length + " glyphs");
isBad = true;
} else {
if (OPT_VERBOSE) {
System.out.println(">> OK: " + gotGlyphs.length + " glyphs");
}
}
if (isBad) {
bad++;
System.out.println("* FAIL: " + id + " /\t" + fontName);
} else {
System.out.println("* OK : " + id + " /\t" + fontName);
}
total++;
}
}
use of java.awt.RenderingHints.Key in project jdk8u_jdk by JetBrains.
the class SunGraphics2D method setRenderingHint.
/**
* Sets the preferences for the rendering algorithms.
* Hint categories include controls for rendering quality and
* overall time/quality trade-off in the rendering process.
* @param hintKey The key of hint to be set. The strings are
* defined in the RenderingHints class.
* @param hintValue The value indicating preferences for the specified
* hint category. These strings are defined in the RenderingHints
* class.
* @see RenderingHints
*/
public void setRenderingHint(Key hintKey, Object hintValue) {
// to the Hints object untouched
if (!hintKey.isCompatibleValue(hintValue)) {
throw new IllegalArgumentException(hintValue + " is not compatible with " + hintKey);
}
if (hintKey instanceof SunHints.Key) {
boolean stateChanged;
boolean textStateChanged = false;
boolean recognized = true;
SunHints.Key sunKey = (SunHints.Key) hintKey;
int newHint;
if (sunKey == SunHints.KEY_TEXT_ANTIALIAS_LCD_CONTRAST) {
newHint = ((Integer) hintValue).intValue();
} else {
newHint = ((SunHints.Value) hintValue).getIndex();
}
switch(sunKey.getIndex()) {
case SunHints.INTKEY_RENDERING:
stateChanged = (renderHint != newHint);
if (stateChanged) {
renderHint = newHint;
if (interpolationHint == -1) {
interpolationType = (newHint == SunHints.INTVAL_RENDER_QUALITY ? AffineTransformOp.TYPE_BILINEAR : AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
}
}
break;
case SunHints.INTKEY_ANTIALIASING:
stateChanged = (antialiasHint != newHint);
antialiasHint = newHint;
if (stateChanged) {
textStateChanged = (textAntialiasHint == SunHints.INTVAL_TEXT_ANTIALIAS_DEFAULT);
if (strokeState != STROKE_CUSTOM) {
validateBasicStroke((BasicStroke) stroke);
}
}
break;
case SunHints.INTKEY_TEXT_ANTIALIASING:
stateChanged = (textAntialiasHint != newHint);
textStateChanged = stateChanged;
textAntialiasHint = newHint;
break;
case SunHints.INTKEY_FRACTIONALMETRICS:
stateChanged = (fractionalMetricsHint != newHint);
textStateChanged = stateChanged;
fractionalMetricsHint = newHint;
break;
case SunHints.INTKEY_AATEXT_LCD_CONTRAST:
stateChanged = false;
/* Already have validated it is an int 100 <= newHint <= 250 */
lcdTextContrast = newHint;
break;
case SunHints.INTKEY_INTERPOLATION:
interpolationHint = newHint;
switch(newHint) {
case SunHints.INTVAL_INTERPOLATION_BICUBIC:
newHint = AffineTransformOp.TYPE_BICUBIC;
break;
case SunHints.INTVAL_INTERPOLATION_BILINEAR:
newHint = AffineTransformOp.TYPE_BILINEAR;
break;
default:
case SunHints.INTVAL_INTERPOLATION_NEAREST_NEIGHBOR:
newHint = AffineTransformOp.TYPE_NEAREST_NEIGHBOR;
break;
}
stateChanged = (interpolationType != newHint);
interpolationType = newHint;
break;
case SunHints.INTKEY_STROKE_CONTROL:
stateChanged = (strokeHint != newHint);
strokeHint = newHint;
break;
case SunHints.INTKEY_RESOLUTION_VARIANT:
stateChanged = (resolutionVariantHint != newHint);
resolutionVariantHint = newHint;
break;
default:
recognized = false;
stateChanged = false;
break;
}
if (recognized) {
if (stateChanged) {
invalidatePipe();
if (textStateChanged) {
fontMetrics = null;
this.cachedFRC = null;
validFontInfo = false;
this.glyphVectorFontInfo = null;
}
}
if (hints != null) {
hints.put(hintKey, hintValue);
}
return;
}
}
// Nothing we recognize so none of "our state" has changed
if (hints == null) {
hints = makeHints(null);
}
hints.put(hintKey, hintValue);
}
use of java.awt.RenderingHints.Key in project grafikon by jub77.
the class DrawOutput method processSvg.
private void processSvg(Collection<Image> images, OutputStream stream, DrawLayout layout) throws OutputException {
DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
// Create an instance of org.w3c.dom.Document.
String svgNS = "http://www.w3.org/2000/svg";
Document document = domImpl.createDocument(svgNS, "svg", null);
SVGGeneratorContext context = SVGGeneratorContext.createDefault(document);
context.setGraphicContextDefaults(new SVGGeneratorContext.GraphicContextDefaults());
// set default font
context.getGraphicContextDefaults().setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 12));
// set antialiasing
Map<Key, Object> map = new HashMap<>();
map.put(RenderingHints.KEY_ANTIALIASING, Boolean.TRUE);
map.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
context.getGraphicContextDefaults().setRenderingHints(new RenderingHints(map));
SVGGraphics2D g2d = new SVGGraphics2D(context, false);
List<Dimension> sizes = this.getSizes(images, g2d);
Dimension size = this.getTotalSize(sizes, layout);
g2d.setSVGCanvasSize(size);
this.drawImages(sizes, images, g2d, layout);
// write to ouput - do not use css style
boolean useCSS = false;
try {
Writer out = new OutputStreamWriter(stream, "UTF-8");
g2d.stream(out, useCSS);
} catch (IOException e) {
throw new OutputException(e.getMessage(), e);
}
}
Aggregations