X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.utils.ui%2Fsrc%2Forg%2Fsimantics%2Futils%2Fui%2Fgfx%2FTextImageDescriptor.java;h=6676ae2bc2b6f503eda05d8fed20b59e1f9e5c92;hp=71aff7113931ce96c3bb504e194bdb719a9c671e;hb=399abb1d550786b9077895ea1587d3f556fb0ed0;hpb=662ee6d0e68c386fdbc22300bdadb58d61de5b17;ds=sidebyside diff --git a/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/gfx/TextImageDescriptor.java b/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/gfx/TextImageDescriptor.java index 71aff7113..6676ae2bc 100644 --- a/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/gfx/TextImageDescriptor.java +++ b/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/gfx/TextImageDescriptor.java @@ -28,16 +28,16 @@ import org.simantics.utils.ObjectUtils; 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; - + private transient int hash; - + 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 - 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 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