# HG changeset patch # User toni.epple@eppleton.de # Date 1368792355 -7200 # Node ID e198f1a3814fe4c6d323955b6b601908402a60ca # Parent 848b2cc261e6081d51d9bd9f8a5bb3769c1b08f6 Created SPI as a Factory for GraphicsObjects diff -r 848b2cc261e6 -r e198f1a3814f javaquery/canvas/src/main/java/net/java/html/canvas/GraphicsEnvironment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/GraphicsEnvironment.java Fri May 17 14:05:55 2013 +0200 @@ -0,0 +1,102 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package net.java.html.canvas; + +import java.util.ServiceLoader; + +/** + * + * @author antonepple + */ +public abstract class GraphicsEnvironment { + + private static GraphicsEnvironment DEFAULT; + + public GraphicsEnvironment getDefault() { + if (DEFAULT == null) { + ServiceLoader loader = ServiceLoader.load(GraphicsEnvironment.class); + DEFAULT = loader.iterator().next(); + } + return DEFAULT == null ? getDummyInstance() : DEFAULT; + } + + public abstract Image getImageForPath(String path); + + public abstract LinearGradient createLinearGradient(); + + public abstract Pattern createPattern(); + + public abstract RadialGradient createRadialGradient(); + + public abstract TextMetrics createTextMetrics(); + + private GraphicsEnvironment getDummyInstance() { + + return new GraphicsEnvironment() { + + @Override + public Image getImageForPath(String path) { + return new Image() { + + @Override + public int getHeight() { + return 0; + } + + @Override + public int getWidth() { + return 0; + } + }; + } + + @Override + public LinearGradient createLinearGradient() { + return new LinearGradient() { + + @Override + public void addColorStop(double position, String color) { + + } + }; + } + + @Override + public Pattern createPattern() { + return new Pattern() { +}; + } + + @Override + public RadialGradient createRadialGradient() { + return new RadialGradient() { + + @Override + public void addColorStop(double position, String color) { + + } + }; + } + + @Override + public TextMetrics createTextMetrics() { + return new TextMetrics() { + + @Override + public double getHeight() { + return 0; + } + + @Override + public double getWidth() { + return 0; + } + }; + } + }; + } + + +}