/** * Returns an ImageRenderer for the PictureData * * @param graphics * @return the image renderer */ public static ImageRenderer getImageRenderer(Graphics2D graphics, String contentType) { ImageRenderer renderer = (ImageRenderer)graphics.getRenderingHint(Drawable.IMAGE_RENDERER); if (renderer != null) { return renderer; } if (PictureType.WMF.contentType.equals(contentType)) { try { @SuppressWarnings("unchecked") Class<? extends ImageRenderer> irc = (Class<? extends ImageRenderer>) DrawPictureShape.class.getClassLoader().loadClass(WMF_IMAGE_RENDERER); return irc.newInstance(); } catch (Exception e) { // WMF image renderer is not on the classpath, continuing with BitmapRenderer // although this doesn't make much sense ... LOG.log(POILogger.ERROR, "WMF image renderer is not on the classpath - include poi-scratchpad jar!", e); } } return new BitmapImageRenderer(); }
@Override public boolean drawImage( Graphics2D graphics, Rectangle2D anchor) { return drawImage(graphics, anchor, null); }
@Override public void setAlpha(double alpha) { if (img == null) return; Dimension dim = getDimension(); BufferedImage newImg = new BufferedImage((int)dim.getWidth(), (int)dim.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = newImg.createGraphics(); RescaleOp op = new RescaleOp(new float[]{1.0f, 1.0f, 1.0f, (float)alpha}, new float[]{0,0,0,0}, null); g.drawImage(img, op, 0, 0); g.dispose(); img = newImg; }
@Override public void loadImage(InputStream data, String contentType) throws IOException { img = readImage(data, contentType); }
} finally { if (img.getType() != BufferedImage.TYPE_INT_ARGB) { int y = findTruncatedBlackBox(img, width, height); if (y < height) { BufferedImage argbImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
@Override public void loadImage(byte data[], String contentType) throws IOException { img = readImage(new ByteArrayInputStream(data), contentType); }
} finally { if (img.getType() != BufferedImage.TYPE_INT_ARGB) { int y = findTruncatedBlackBox(img, width, height); if (y < height) { BufferedImage argbImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
@Override public void loadImage(InputStream data, String contentType) throws IOException { img = readImage(data, contentType); }
@Override public boolean drawImage( Graphics2D graphics, Rectangle2D anchor) { return drawImage(graphics, anchor, null); }
@Override public void setAlpha(double alpha) { if (img == null) return; Dimension dim = getDimension(); BufferedImage newImg = new BufferedImage((int)dim.getWidth(), (int)dim.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = newImg.createGraphics(); RescaleOp op = new RescaleOp(new float[]{1.0f, 1.0f, 1.0f, (float)alpha}, new float[]{0,0,0,0}, null); g.drawImage(img, op, 0, 0); g.dispose(); img = newImg; }
/** * Returns an ImageRenderer for the PictureData * * @param graphics * @return the image renderer */ public static ImageRenderer getImageRenderer(Graphics2D graphics, String contentType) { ImageRenderer renderer = (ImageRenderer)graphics.getRenderingHint(Drawable.IMAGE_RENDERER); if (renderer != null) { return renderer; } if (PictureType.WMF.contentType.equals(contentType)) { try { @SuppressWarnings("unchecked") Class<? extends ImageRenderer> irc = (Class<? extends ImageRenderer>) DrawPictureShape.class.getClassLoader().loadClass(WMF_IMAGE_RENDERER); return irc.newInstance(); } catch (Exception e) { // WMF image renderer is not on the classpath, continuing with BitmapRenderer // although this doesn't make much sense ... LOG.log(POILogger.ERROR, "WMF image renderer is not on the classpath - include poi-scratchpad jar!", e); } } return new BitmapImageRenderer(); }
@Override public void loadImage(byte data[], String contentType) throws IOException { img = readImage(new ByteArrayInputStream(data), contentType); }