diff options
| author | Pierre-Charles David | 2015-09-18 13:47:18 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2016-02-23 10:29:39 +0000 |
| commit | c530ac267dcf8e7779fbc06e4c710fa397d488b7 (patch) | |
| tree | 4b624e24c473e9d9473b8d49727037d5ff43c675 | |
| parent | c024e70ab53d41e7c8c2f4665999c6cad3be0d74 (diff) | |
| download | org.eclipse.sirius-c530ac267dcf8e7779fbc06e4c710fa397d488b7.tar.gz org.eclipse.sirius-c530ac267dcf8e7779fbc06e4c710fa397d488b7.tar.xz org.eclipse.sirius-c530ac267dcf8e7779fbc06e4c710fa397d488b7.zip | |
[442268] Merge getKey() and getContextKey() into a single method
Merge the logic of AbstractCachedSVGFigure.getContextKey(),
AbstractCachedSVGFigure.getKey() and SVGFigure.getKey() into a single
equivalent getKey(Graphics) in SVGFigure.
Bug: 442268
Change-Id: Icd06d8c494dedbda37e4518adfab5912bce6c738
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
3 files changed, 21 insertions, 27 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/AbstractCachedSVGFigure.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/AbstractCachedSVGFigure.java index 08924c2824..2dbffa6397 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/AbstractCachedSVGFigure.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/AbstractCachedSVGFigure.java @@ -14,7 +14,6 @@ import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.sirius.common.tools.api.util.StringUtil; import org.eclipse.sirius.diagram.ui.tools.internal.figure.svg.ImageCache; -import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; /** @@ -29,27 +28,6 @@ public abstract class AbstractCachedSVGFigure extends SVGFigure { */ private static final ImageCache CACHE = new ImageCache(); - private String getContextKey(Graphics graphics) { - // CHECKSTYLE:OFF - int aaText = SWT.DEFAULT; - try { - aaText = graphics.getTextAntialias(); - } catch (Exception e) { - // not supported - } - // CHECKSTYLE:ON - - StringBuilder result = new StringBuilder(); - result.append(aaText); - result.append(AbstractCachedSVGFigure.SEPARATOR); - Rectangle r = getClientArea(); - result.append(r.width); - result.append(AbstractCachedSVGFigure.SEPARATOR); - result.append(r.height); - - return result.toString(); - } - /** * Get the image cached or create new one and cache it. * @@ -61,7 +39,7 @@ public abstract class AbstractCachedSVGFigure extends SVGFigure { */ @Override protected Image getImage(Rectangle clientArea, Graphics graphics) { - return getImage(getKey() + getContextKey(graphics), clientArea, graphics); + return getImage(this, clientArea, graphics); } /** @@ -75,10 +53,11 @@ public abstract class AbstractCachedSVGFigure extends SVGFigure { * the graphical context * @return an image store in a cache */ - protected Image getImage(String key, Rectangle clientArea, Graphics graphics) { + private static Image getImage(SVGFigure fig, Rectangle clientArea, Graphics graphics) { + String key = fig.getKey(graphics); Image result = AbstractCachedSVGFigure.CACHE.getIfPresent(key); if (result == null) { - result = render(this, clientArea, graphics); + result = render(fig, clientArea, graphics); if (result != null) { AbstractCachedSVGFigure.CACHE.put(key, result); } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGFigure.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGFigure.java index 8236dc97b9..4fd218695f 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGFigure.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGFigure.java @@ -29,6 +29,7 @@ import org.eclipse.sirius.diagram.ui.provider.Messages; import org.eclipse.sirius.diagram.ui.tools.internal.figure.TransparentFigureGraphicsModifier; import org.eclipse.sirius.diagram.ui.tools.internal.figure.svg.SVGUtils; import org.eclipse.sirius.diagram.ui.tools.internal.figure.svg.SimpleImageTranscoder; +import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.w3c.dom.Document; @@ -205,12 +206,26 @@ public class SVGFigure extends Figure implements StyledFigure, ITransparentFigur * * @return The key corresponding to this BundleImageFigure. */ - protected String getKey() { + protected String getKey(Graphics graphics) { + int aaText = SWT.DEFAULT; + try { + aaText = graphics.getTextAntialias(); + } catch (Exception e) { + // not supported + } + StringBuffer result = new StringBuffer(); result.append(getDocumentKey()); result.append(AbstractCachedSVGFigure.SEPARATOR); result.append(getSiriusAlpha()); result.append(AbstractCachedSVGFigure.SEPARATOR); + result.append(aaText); + result.append(AbstractCachedSVGFigure.SEPARATOR); + Rectangle r = getClientArea(); + result.append(r.width); + result.append(AbstractCachedSVGFigure.SEPARATOR); + result.append(r.height); + return result.toString(); } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGWorkspaceImageFigure.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGWorkspaceImageFigure.java index d22991b5d6..bb4095afa0 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGWorkspaceImageFigure.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/figure/SVGWorkspaceImageFigure.java @@ -186,7 +186,7 @@ public class SVGWorkspaceImageFigure extends AbstractCachedSVGFigure implements SVGWorkspaceImageFigure fig = new SVGWorkspaceImageFigure(); fig.updateImageURI(path); fig.contentChanged(); - return fig.getImage(fig.getKey(), new Rectangle(0, 0, -1, -1), null); + return fig.getImage(new Rectangle(0, 0, -1, -1), null); } /** |
