/** * Draws the glyph to the given image, upscaled by a factor of {@link #scale}. * * @param image the image to draw to * @param glyph the glyph to draw */ private void drawGlyph(BufferedImage image, Glyph glyph) { Graphics2D inputG = (Graphics2D) image.getGraphics(); inputG.setTransform(AffineTransform.getScaleInstance(scale, scale)); // We don't really want anti-aliasing (we'll discard it anyway), // but accurate positioning might improve the result slightly inputG.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); inputG.setColor(Color.WHITE); inputG.fill(glyph.getShape()); }
public void setTransform( float translationX, float translationY, int shadowsize, float magnification ) { AffineTransform transform = new AffineTransform(); transform.translate( translationX + shadowsize * magnification, translationY + shadowsize * magnification ); transform.scale( magnification, magnification ); gc.setTransform( transform ); }
public void setTransform( float translationX, float translationY, int shadowsize, float magnification ) { // PDI-9953 - always use original GC's transform. AffineTransform transform = (AffineTransform) originalTransform.clone(); transform.translate( translationX + shadowsize * magnification, translationY + shadowsize * magnification ); transform.scale( magnification, magnification ); gc.setTransform( transform ); }
@Override protected void render( Graphics2D gc, int centerX, int centerY, int width, int height, double angleRadians ) { AffineTransform oldTransform = gc.getTransform(); try { double scaleX = width * 1.0 / bitmap.getWidth(); double scaleY = height * 1.0 / bitmap.getHeight(); AffineTransform affineTransform = new AffineTransform( oldTransform ); if ( centerX != 0 || centerY != 0 ) { affineTransform.translate( centerX, centerY ); } affineTransform.scale( scaleX, scaleY ); if ( angleRadians != 0 ) { affineTransform.rotate( angleRadians ); } affineTransform.translate( -bitmap.getWidth() / 2, -bitmap.getHeight() / 2 ); gc.setTransform( affineTransform ); gc.drawImage( bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), null ); } finally { gc.setTransform( oldTransform ); } } }
final boolean isLine = shape instanceof Line2D.Double; if (isLine) { gg.setColor(colorLine); gg.draw(shape); } else { gg.setColor(color); gg.fill(shape); final AffineTransform at = g2d.getTransform(); g2d.scale(1 / dpiFactor, 1 / dpiFactor); g2d.drawImage(destination, (int) (bounds.getMinX() * dpiFactor), (int) (bounds.getMinY() * dpiFactor), null); g2d.setTransform(at);
public void testAutoWrapLocalTransform() throws Exception { Style style = RendererBaseTest.loadStyle(this, "textWrapEnabled.sld"); MapContent mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.setMapContent(mc); int SIZE = 300; final BufferedImage image = new BufferedImage(SIZE, SIZE, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) image.getGraphics(); g.setColor(Color.white); g.fillRect(0, 0, SIZE, SIZE); g.setTransform( new AffineTransform( 1.1, Math.sin(Math.toRadians(15)), -Math.sin(Math.toRadians(15)), 1.1, 15, 20)); renderer.paint(g, new Rectangle(SIZE, SIZE), bounds); mc.dispose(); renderer.getMapContent().dispose(); String refPath = "./src/test/resources/org/geotools/renderer/lite/test-data/textWrapEnabledLocalTransform.png"; ImageAssert.assertEquals(new File(refPath), image, 3000); }
public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D) g; AffineTransform tmp = g2d.getTransform(); Object oldInterpolation = g2d.getRenderingHint(RenderingHints.KEY_INTERPOLATION); if (oldInterpolation == null) { oldInterpolation = RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR; } try { AffineTransform at = new AffineTransform(tmp); at.concatenate(this.at); g2d.setTransform(at); g2d.setRenderingHint( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); icon.paintIcon(c, g2d, 0, 0); } finally { g2d.setTransform(tmp); g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, oldInterpolation); } } }
/** * Compute the cumulative height occupied by the text * * @param oldGraphics the graphics context, which properties are to be copied, may be null * @return the height in points */ public double getTextHeight(Graphics2D oldGraphics) { // dry-run in a 1x1 image and return the vertical advance BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); if (oldGraphics != null) { graphics.addRenderingHints(oldGraphics.getRenderingHints()); graphics.setTransform(oldGraphics.getTransform()); } DrawFactory.getInstance(graphics).fixFonts(graphics); return drawParagraphs(graphics, 0, 0); }
public static BufferedImage process(BufferedImage im) { Log.info("Rotation"); final BufferedImage newIm = new BufferedImage(im.getHeight(), im.getWidth(), BufferedImage.TYPE_INT_RGB); final Graphics2D g2d = newIm.createGraphics(); final AffineTransform at = new AffineTransform(0, 1, 1, 0, 0, 0); at.concatenate(new AffineTransform(-1, 0, 0, 1, im.getWidth(), 0)); g2d.setTransform(at); g2d.drawImage(im, 0, 0, null); g2d.dispose(); return newIm; }
@Override public void visit(XDGFShape shape, AffineTransform globalTransform, int level) { AffineTransform savedTr = _graphics.getTransform(); _graphics.transform(globalTransform); drawPath(shape); drawText(shape); // we're done, undo the transforms _graphics.setTransform(savedTr); }
Graphics2D g2d = (Graphics2D) g.create(); AffineTransform at = g2d.getTransform(); at.translate(originX, originY); g2d.setTransform(at); g2d.scale(scale, scale); g2d.rotate(Math.toRadians(angle), 0, 0); g2d.fillRect(xOffset, yOffset, rectWidth, rectHeight); g2d.dispose();
public void draw(Graphics2D graphics) { // the coordinate system of this group of shape Rectangle2D interior = getShape().getInteriorAnchor(); // anchor of this group relative to the parent shape Rectangle2D exterior = getShape().getAnchor(); AffineTransform tx = (AffineTransform)graphics.getRenderingHint(Drawable.GROUP_TRANSFORM); AffineTransform tx0 = new AffineTransform(tx); double scaleX = interior.getWidth() == 0. ? 1.0 : exterior.getWidth() / interior.getWidth(); double scaleY = interior.getHeight() == 0. ? 1.0 : exterior.getHeight() / interior.getHeight(); tx.translate(exterior.getX(), exterior.getY()); tx.scale(scaleX, scaleY); tx.translate(-interior.getX(), -interior.getY()); DrawFactory drawFact = DrawFactory.getInstance(graphics); AffineTransform at2 = graphics.getTransform(); for (Shape<?,?> child : getShape()) { // remember the initial transform and restore it after we are done with the drawing AffineTransform at = graphics.getTransform(); graphics.setRenderingHint(Drawable.GSAVE, true); Drawable draw = drawFact.getDrawable(child); draw.applyTransform(graphics); draw.draw(graphics); // restore the coordinate system graphics.setTransform(at); graphics.setRenderingHint(Drawable.GRESTORE, true); } graphics.setTransform(at2); graphics.setRenderingHint(Drawable.GROUP_TRANSFORM, tx0); }
g.setColor(Color.WHITE); g.fillRect(0, 0, WIDTH, HEIGHT); g.setColor(Color.getHSBColor(relDepth, 1.0f, 0.9f)); g.fillRect(x1, EXT_PAD, x2 - x1, GRAPH_HEIGHT); g.setColor(Color.getHSBColor(relDepth, 1.0f, 0.9f)); int y1 = HEIGHT * (depth - minDepth) / (maxDepth - minDepth + 1); int y2 = HEIGHT * (depth + 1 - minDepth) / (maxDepth - minDepth + 1); AffineTransform orig = g.getTransform(); g.rotate(-Math.toRadians(90.0), SCALE_WIDTH + EXT_PAD - 5, GRAPH_HEIGHT + EXT_PAD); g.drawString("Actual:", SCALE_WIDTH + EXT_PAD - 5, GRAPH_HEIGHT + EXT_PAD); g.setTransform(orig); g.setTransform(orig);
/** * Draws the glyph to the given image, upscaled by a factor of {@link #scale}. * * @param image the image to draw to * @param glyph the glyph to draw */ private void drawGlyph(BufferedImage image, Glyph glyph) { Graphics2D inputG = (Graphics2D) image.getGraphics(); inputG.setTransform(AffineTransform.getScaleInstance(scale, scale)); // We don't really want anti-aliasing (we'll discard it anyway), // but accurate positioning might improve the result slightly inputG.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); inputG.setColor(Color.WHITE); inputG.fill(glyph.getShape()); }
final BufferedImage image = new BufferedImage(SIZE, SIZE, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) image.getGraphics(); g.setColor(Color.white); g.fillRect(0, 0, SIZE, SIZE); g.setTransform( new AffineTransform( 1.1, Math.sin(Math.toRadians(15)),
// create an AffineTransform // and a triangle centered on (0,0) and pointing downward // somewhere outside Swing's paint loop AffineTransform tx = new AffineTransform(); Line2D.Double line = new Line2D.Double(0,0,100,100); Polygon arrowHead = new Polygon(); arrowHead.addPoint( 0,5); arrowHead.addPoint( -5, -5); arrowHead.addPoint( 5,-5); // [...] private void drawArrowHead(Graphics2D g2d) { tx.setToIdentity(); double angle = Math.atan2(line.y2-line.y1, line.x2-line.x1); tx.translate(line.x2, line.y2); tx.rotate((angle-Math.PI/2d)); Graphics2D g = (Graphics2D) g2d.create(); g.setTransform(tx); g.fill(arrowHead); g.dispose(); }
Rectangle r = new Rectangle(x, y, delegateIcon.getIconWidth(), delegateIcon.getIconHeight()); g2.setClip(r); AffineTransform original = g2.getTransform(); AffineTransform at = new AffineTransform(); at.concatenate(original); at.rotate(Math.toRadians( angleInDegrees ), x + cWidth, y + cHeight); g2.setTransform(at); delegateIcon.paintIcon(c, g2, x, y); g2.setTransform(original); rotatingTimer.start();
Font font = graphics.getFont(); AffineTransform oldTr = graphics.getTransform(); graphics.setTransform(oldTr);
g2.fillRect(0, 0, bi.getWidth(), bi.getHeight()); AffineTransform at = new AffineTransform(); at.rotate(theta, cx, cy); g2.setTransform(at); g2.drawImage(image, -minX, -minY, null); g2.dispose();
int tsy = ts.getY() - INTERACTING_SHIFT; graphics.setColor(INTERACTING_COLOR); graphics.drawLine(fsx, fsy, tsx, tsy); AffineTransform t = new AffineTransform(); t.translate(tsx, tsy); t.rotate(tsx - fsx, tsy - fsy); t.rotate(Math.PI / -2); AffineTransform ot = graphics.getTransform(); graphics.setTransform(t); graphics.fill(ARROW_HEAD); graphics.setTransform(ot);