]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/ImageNode.java
Sync git svn branch with SVN repository r33269.
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / nodes / ImageNode.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.scenegraph.g2d.nodes;\r
13 \r
14 import java.awt.Graphics2D;\r
15 import java.awt.geom.AffineTransform;\r
16 import java.awt.geom.Rectangle2D;\r
17 import java.awt.image.BufferedImage;\r
18 import java.io.ByteArrayInputStream;\r
19 import java.io.IOException;\r
20 \r
21 import javax.imageio.ImageIO;\r
22 \r
23 import org.simantics.scenegraph.g2d.G2DNode;\r
24 \r
25 public class ImageNode extends G2DNode {\r
26 \r
27     private static final long serialVersionUID = -4982578347433716440L;\r
28 \r
29     protected Boolean visible = Boolean.TRUE;\r
30     protected BufferedImage img = null;\r
31 \r
32     @SyncField("visible")\r
33     public void setVisible(Boolean visible) {\r
34         this.visible = visible;\r
35     }\r
36 \r
37     public boolean isVisible() {\r
38         return visible;\r
39     }\r
40 \r
41     @ClientSide\r
42     public void setImage(byte[] buf) {\r
43         try {\r
44             img = ImageIO.read(new ByteArrayInputStream(buf));\r
45         } catch (IOException e) {\r
46         }\r
47     }\r
48 \r
49     public void setImage(BufferedImage src) {\r
50         img = src;\r
51     }\r
52 \r
53     @Override\r
54     public void render(Graphics2D g) {\r
55         if (!visible || img == null) return;\r
56 \r
57         AffineTransform ot = null;\r
58         if (!transform.isIdentity()) {\r
59             ot = g.getTransform();\r
60             g.transform(transform);\r
61         }\r
62 \r
63 //        G2DParentNode parent = (G2DParentNode) getParent();\r
64 //        if(parent != null) {\r
65 //            Rectangle2D b = parent.getBoundsInLocal();\r
66 //            g.drawImage(img, (int)b.getMinX(), (int)b.getMinY(), (int)b.getWidth()+(int)b.getMinX(), (int)b.getHeight()+(int)b.getMinY(), 0, 0, img.getWidth(), img.getHeight(), null);\r
67 //        }\r
68         g.drawImage(img, 0, 0, null);\r
69 \r
70         if (ot != null)\r
71             g.setTransform(ot);\r
72     }\r
73 \r
74     @Override\r
75     public Rectangle2D getBoundsInLocal() {\r
76         return new Rectangle2D.Double(img.getMinX(), img.getMinY(), img.getWidth(), img.getHeight());\r
77     }\r
78 \r
79 }\r