]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/gfx/TextImageDescriptor.java
Implement ImageDescriptor.getImageData(int zoom)
[simantics/platform.git] / bundles / org.simantics.utils.ui / src / org / simantics / utils / ui / gfx / TextImageDescriptor.java
index 71aff7113931ce96c3bb504e194bdb719a9c671e..6676ae2bc2b6f503eda05d8fed20b59e1f9e5c92 100644 (file)
@@ -28,16 +28,16 @@ import org.simantics.utils.ObjectUtils;
 public class TextImageDescriptor extends ImageDescriptor {
 
        static final PaletteData _RGB = new PaletteData(0x00ff0000, 0x0000ff00, 0x000000ff);
 public class TextImageDescriptor extends ImageDescriptor {
 
        static final PaletteData _RGB = new PaletteData(0x00ff0000, 0x0000ff00, 0x000000ff);
-       
+
        public String text;
        public int width, height;
        public String font;
        public int fontSize;
        public int style;
        public int rgb;
        public String text;
        public int width, height;
        public String font;
        public int fontSize;
        public int style;
        public int rgb;
-       
+
        private transient int hash;
        private transient int hash;
-       
+
        public TextImageDescriptor(String text, int width, int height, 
                        String font, int fontSize, 
                        int style, int rgb) {
        public TextImageDescriptor(String text, int width, int height, 
                        String font, int fontSize, 
                        int style, int rgb) {
@@ -53,38 +53,52 @@ public class TextImageDescriptor extends ImageDescriptor {
        }
 
        @Override
        }
 
        @Override
-       public ImageData getImageData() {
-        ImageData id = new ImageData(width, height, 24, _RGB);         
-        BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
-        Graphics2D g = (Graphics2D) bi.getGraphics();
-        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-        Font f = new Font(font, style, fontSize);
-        g.setFont( f );
-        Color c = new Color(rgb);
-        g.setColor( c );
-        FontMetrics fm = g.getFontMetrics(f);
-        Rectangle2D rect = fm.getStringBounds(text, g);
-        g.drawString(text, (float) ((width-rect.getWidth())/2), (float) ( (height/2) + (height-rect.getHeight())/2) );
-        g.dispose();        
-        
-        Raster alpha = bi.getAlphaRaster();        
-        for (int x=0; x<width; x++) {
-               for (int y=0; y<height; y++) {
-                       int a = alpha.getSample(x, y, 0);
-                       int rgb = bi.getRGB(x, y);
-                       id.setAlpha(x, y, a);
-                       id.setPixel(x, y, rgb);
-               }
-        }
-        
+       public ImageData getImageData(int zoom) {
+               int w = width;
+               int h = height;
+               int fs = fontSize;
+               if (zoom > 100) {
+                       float s = zoom / 100.0f;
+                       w = Math.round(width * s);
+                       h = Math.round(height * s);
+                       fs = Math.round(fontSize * s);
+               }
+               return getImageData(w, h, fs);
+       }
+
+       private ImageData getImageData(int width, int height, int fontSize) {
+               ImageData id = new ImageData(width, height, 24, _RGB);
+
+               BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
+               Graphics2D g = (Graphics2D) bi.getGraphics();
+               g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+               Font f = new Font(font, style, fontSize);
+               g.setFont( f );
+               Color c = new Color(rgb);
+               g.setColor( c );
+               FontMetrics fm = g.getFontMetrics(f);
+               Rectangle2D rect = fm.getStringBounds(text, g);
+               g.drawString(text, (float) ((width-rect.getWidth())/2), (float) ( (height/2) + (height-rect.getHeight())/2) );
+               g.dispose();
+
+               Raster alpha = bi.getAlphaRaster();
+               for (int x=0; x<width; x++) {
+                       for (int y=0; y<height; y++) {
+                               int a = alpha.getSample(x, y, 0);
+                               int rgb = bi.getRGB(x, y);
+                               id.setAlpha(x, y, a);
+                               id.setPixel(x, y, rgb);
+                       }
+               }
+
                return id;
        }
                return id;
        }
-       
+
        @Override
        public int hashCode() {
                return hash;
        }
        @Override
        public int hashCode() {
                return hash;
        }
-       
+
        @Override
        public boolean equals(Object obj) {
                if (obj instanceof TextImageDescriptor==false) return false;
        @Override
        public boolean equals(Object obj) {
                if (obj instanceof TextImageDescriptor==false) return false;