toni@1118: /* toni@1118: * To change this template, choose Tools | Templates toni@1118: * and open the template in the editor. toni@1118: */ toni@1118: package net.java.html.canvas; toni@1118: toni@1118: import java.util.ServiceLoader; toni@1118: toni@1118: /** toni@1118: * toni@1118: * @author antonepple toni@1118: */ toni@1118: public abstract class GraphicsEnvironment { toni@1118: toni@1118: private static GraphicsEnvironment DEFAULT; toni@1118: toni@1118: public GraphicsEnvironment getDefault() { toni@1118: if (DEFAULT == null) { toni@1118: ServiceLoader loader = ServiceLoader.load(GraphicsEnvironment.class); toni@1118: DEFAULT = loader.iterator().next(); toni@1118: } toni@1118: return DEFAULT == null ? getDummyInstance() : DEFAULT; toni@1118: } toni@1118: toni@1118: public abstract Image getImageForPath(String path); toni@1118: toni@1118: public abstract LinearGradient createLinearGradient(); toni@1118: toni@1118: public abstract Pattern createPattern(); toni@1118: toni@1118: public abstract RadialGradient createRadialGradient(); toni@1118: toni@1118: public abstract TextMetrics createTextMetrics(); toni@1118: toni@1118: private GraphicsEnvironment getDummyInstance() { toni@1118: toni@1118: return new GraphicsEnvironment() { toni@1118: toni@1118: @Override toni@1118: public Image getImageForPath(String path) { toni@1118: return new Image() { toni@1118: toni@1118: @Override toni@1118: public int getHeight() { toni@1118: return 0; toni@1118: } toni@1118: toni@1118: @Override toni@1118: public int getWidth() { toni@1118: return 0; toni@1118: } toni@1118: }; toni@1118: } toni@1118: toni@1118: @Override toni@1118: public LinearGradient createLinearGradient() { toni@1118: return new LinearGradient() { toni@1118: toni@1118: @Override toni@1118: public void addColorStop(double position, String color) { toni@1118: toni@1118: } toni@1118: }; toni@1118: } toni@1118: toni@1118: @Override toni@1118: public Pattern createPattern() { toni@1118: return new Pattern() { toni@1118: }; toni@1118: } toni@1118: toni@1118: @Override toni@1118: public RadialGradient createRadialGradient() { toni@1118: return new RadialGradient() { toni@1118: toni@1118: @Override toni@1118: public void addColorStop(double position, String color) { toni@1118: toni@1118: } toni@1118: }; toni@1118: } toni@1118: toni@1118: @Override toni@1118: public TextMetrics createTextMetrics() { toni@1118: return new TextMetrics() { toni@1118: toni@1118: @Override toni@1118: public double getHeight() { toni@1118: return 0; toni@1118: } toni@1118: toni@1118: @Override toni@1118: public double getWidth() { toni@1118: return 0; toni@1118: } toni@1118: }; toni@1118: } toni@1118: }; toni@1118: } toni@1118: toni@1118: toni@1118: }