Search in sources :

Example 1 with ImageObserver

use of java.awt.image.ImageObserver 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++;
    }
}
Also used : DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) Shape(java.awt.Shape) Element(org.w3c.dom.Element) Node(org.w3c.dom.Node) MissingResourceException(java.util.MissingResourceException) FileNotFoundException(java.io.FileNotFoundException) ArrayList(java.util.ArrayList) Rectangle(java.awt.Rectangle) Document(org.w3c.dom.Document) RenderableImage(java.awt.image.renderable.RenderableImage) Image(java.awt.Image) BufferedImage(java.awt.image.BufferedImage) RenderedImage(java.awt.image.RenderedImage) Font(java.awt.Font) BufferedImage(java.awt.image.BufferedImage) RenderableImage(java.awt.image.renderable.RenderableImage) BufferedImageOp(java.awt.image.BufferedImageOp) Stroke(java.awt.Stroke) GlyphVector(java.awt.font.GlyphVector) Composite(java.awt.Composite) NodeList(org.w3c.dom.NodeList) ImageObserver(java.awt.image.ImageObserver) Color(java.awt.Color) Paint(java.awt.Paint) Paint(java.awt.Paint) TextLayout(java.awt.font.TextLayout) Graphics2D(java.awt.Graphics2D) AttributedCharacterIterator(java.text.AttributedCharacterIterator) DocumentBuilder(javax.xml.parsers.DocumentBuilder) AffineTransform(java.awt.geom.AffineTransform) FontRenderContext(java.awt.font.FontRenderContext) RenderedImage(java.awt.image.RenderedImage) File(java.io.File) Map(java.util.Map) NamedNodeMap(org.w3c.dom.NamedNodeMap) TreeMap(java.util.TreeMap) Key(java.awt.RenderingHints.Key)

Example 2 with ImageObserver

use of java.awt.image.ImageObserver in project jdk8u_jdk by JetBrains.

the class AddNoLeak method main.

public static void main(String[] args) {
    System.setProperty("java.awt.headless", "true");
    Container cont = new Container();
    Image img = cont.createImage(new DummyImageSource());
    for (int i = 0; i < 15000; i++) {
        img.getWidth(new ImageObserver() {

            public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
                return false;
            }
        });
        if (i % 100 == 0) {
            System.gc();
        }
    }
}
Also used : Container(java.awt.Container) ImageObserver(java.awt.image.ImageObserver) Image(java.awt.Image)

Example 3 with ImageObserver

use of java.awt.image.ImageObserver in project intellij-community by JetBrains.

the class JBImageIcon method paintIcon.

@Override
public synchronized void paintIcon(final Component c, final Graphics g, final int x, final int y) {
    final ImageObserver observer = getImageObserver();
    UIUtil.drawImage(g, getImage(), x, y, observer == null ? c : observer);
}
Also used : ImageObserver(java.awt.image.ImageObserver)

Example 4 with ImageObserver

use of java.awt.image.ImageObserver in project jdk8u_jdk by JetBrains.

the class SunGraphics2D method drawHiDPIImage.

// end of text rendering methods
private Boolean drawHiDPIImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer, AffineTransform xform) {
    if (img instanceof VolatileImage) {
        final SurfaceData sd = SurfaceManager.getManager(img).getPrimarySurfaceData();
        final double scaleX = sd.getDefaultScaleX();
        final double scaleY = sd.getDefaultScaleY();
        if (scaleX == 1 && scaleY == 1) {
            return null;
        }
        sx1 = Region.clipScale(sx1, scaleX);
        sx2 = Region.clipScale(sx2, scaleX);
        sy1 = Region.clipScale(sy1, scaleY);
        sy2 = Region.clipScale(sy2, scaleY);
        AffineTransform tx = null;
        if (xform != null) {
            tx = new AffineTransform(transform);
            transform(xform);
        }
        boolean result = scaleImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, bgcolor, observer);
        if (tx != null) {
            transform.setTransform(tx);
            invalidateTransform();
        }
        return result;
    } else if (resolutionVariantHint != SunHints.INTVAL_RESOLUTION_VARIANT_BASE && (img instanceof MultiResolutionImage)) {
        // get scaled destination image size
        int width = img.getWidth(observer);
        int height = img.getHeight(observer);
        MultiResolutionImage mrImage = (MultiResolutionImage) img;
        Image resolutionVariant = getResolutionVariant(mrImage, width, height, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, xform);
        if (resolutionVariant != img && resolutionVariant != null) {
            // recalculate source region for the resolution variant
            ImageObserver rvObserver = MultiResolutionToolkitImage.getResolutionVariantObserver(img, observer, width, height, -1, -1);
            int rvWidth = resolutionVariant.getWidth(rvObserver);
            int rvHeight = resolutionVariant.getHeight(rvObserver);
            if (0 < width && 0 < height && 0 < rvWidth && 0 < rvHeight) {
                double widthScale = ((double) rvWidth) / width;
                double heightScale = ((double) rvHeight) / height;
                sx1 = Region.clipScale(sx1, widthScale);
                sy1 = Region.clipScale(sy1, heightScale);
                sx2 = Region.clipScale(sx2, widthScale);
                sy2 = Region.clipScale(sy2, heightScale);
                observer = rvObserver;
                img = resolutionVariant;
                if (xform != null) {
                    assert dx1 == 0 && dy1 == 0;
                    assert dx2 == img.getWidth(observer);
                    assert dy2 == img.getHeight(observer);
                    AffineTransform renderTX = new AffineTransform(xform);
                    renderTX.scale(1 / widthScale, 1 / heightScale);
                    return transformImage(img, renderTX, observer);
                }
                return scaleImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, bgcolor, observer);
            }
        }
    }
    return null;
}
Also used : VolatileImage(java.awt.image.VolatileImage) ImageObserver(java.awt.image.ImageObserver) AffineTransform(java.awt.geom.AffineTransform) RenderableImage(java.awt.image.renderable.RenderableImage) BufferedImage(java.awt.image.BufferedImage) Image(java.awt.Image) RenderedImage(java.awt.image.RenderedImage) VolatileImage(java.awt.image.VolatileImage) ToolkitImage(sun.awt.image.ToolkitImage) MultiResolutionImage(java.awt.image.MultiResolutionImage) MultiResolutionToolkitImage(sun.awt.image.MultiResolutionToolkitImage) MultiResolutionImage(java.awt.image.MultiResolutionImage)

Example 5 with ImageObserver

use of java.awt.image.ImageObserver in project java-swing-tips by aterai.

the class MainPanel method makeImageIcon.

private static ImageIcon makeImageIcon(URL url, final JTable table, final int row, final int col) {
    ImageIcon icon = new ImageIcon(url);
    // Wastefulness: icon.setImageObserver((ImageObserver) table);
    icon.setImageObserver(new ImageObserver() {

        // @see http://www2.gol.com/users/tame/swing/examples/SwingExamples.html
        @Override
        public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) {
            if (!table.isShowing()) {
                // @see javax.swing.JLabel#imageUpdate(...)
                return false;
            }
            if ((infoflags & (FRAMEBITS | ALLBITS)) != 0) {
                // @see java.awt.Component#imageUpdate(...)
                // JDK 1.6.0
                int vr = table.convertRowIndexToView(row);
                int vc = table.convertColumnIndexToView(col);
                table.repaint(table.getCellRect(vr, vc, false));
            }
            return (infoflags & (ALLBITS | ABORT)) == 0;
        }
    });
    return icon;
}
Also used : ImageObserver(java.awt.image.ImageObserver)

Aggregations

ImageObserver (java.awt.image.ImageObserver)9 Image (java.awt.Image)5 BufferedImage (java.awt.image.BufferedImage)3 MultiResolutionImage (java.awt.image.MultiResolutionImage)3 Graphics2D (java.awt.Graphics2D)2 AffineTransform (java.awt.geom.AffineTransform)2 RenderedImage (java.awt.image.RenderedImage)2 RenderableImage (java.awt.image.renderable.RenderableImage)2 File (java.io.File)2 Color (java.awt.Color)1 Component (java.awt.Component)1 Composite (java.awt.Composite)1 Container (java.awt.Container)1 Font (java.awt.Font)1 Graphics (java.awt.Graphics)1 Paint (java.awt.Paint)1 Rectangle (java.awt.Rectangle)1 Key (java.awt.RenderingHints.Key)1 Shape (java.awt.Shape)1 Stroke (java.awt.Stroke)1