Created SPI as a Factory for GraphicsObjects canvas
authortoni.epple@eppleton.de
Fri, 17 May 2013 14:05:55 +0200
branchcanvas
changeset 1118e198f1a3814f
parent 1117 848b2cc261e6
child 1119 73041c26cf4d
Created SPI as a Factory for GraphicsObjects
javaquery/canvas/src/main/java/net/java/html/canvas/GraphicsEnvironment.java
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/GraphicsEnvironment.java	Fri May 17 14:05:55 2013 +0200
     1.3 @@ -0,0 +1,102 @@
     1.4 +/*
     1.5 + * To change this template, choose Tools | Templates
     1.6 + * and open the template in the editor.
     1.7 + */
     1.8 +package net.java.html.canvas;
     1.9 +
    1.10 +import java.util.ServiceLoader;
    1.11 +
    1.12 +/**
    1.13 + *
    1.14 + * @author antonepple
    1.15 + */
    1.16 +public abstract class GraphicsEnvironment {
    1.17 +
    1.18 +    private static GraphicsEnvironment DEFAULT;
    1.19 +
    1.20 +    public GraphicsEnvironment getDefault() {
    1.21 +        if (DEFAULT == null) {
    1.22 +            ServiceLoader<GraphicsEnvironment> loader = ServiceLoader.load(GraphicsEnvironment.class);
    1.23 +            DEFAULT = loader.iterator().next();
    1.24 +        }
    1.25 +        return DEFAULT == null ? getDummyInstance() : DEFAULT;
    1.26 +    }
    1.27 +
    1.28 +    public abstract Image getImageForPath(String path);
    1.29 +    
    1.30 +    public abstract LinearGradient createLinearGradient();
    1.31 +    
    1.32 +    public abstract Pattern createPattern();
    1.33 +    
    1.34 +    public abstract RadialGradient createRadialGradient();
    1.35 +    
    1.36 +    public abstract TextMetrics createTextMetrics();
    1.37 +    
    1.38 +    private GraphicsEnvironment getDummyInstance() {
    1.39 +        
    1.40 +        return new GraphicsEnvironment() {
    1.41 +
    1.42 +            @Override
    1.43 +            public Image getImageForPath(String path) {
    1.44 +               return new Image() {
    1.45 +
    1.46 +                   @Override
    1.47 +                   public int getHeight() {
    1.48 +                     return 0;
    1.49 +                   }
    1.50 +
    1.51 +                   @Override
    1.52 +                   public int getWidth() {
    1.53 +                       return 0;
    1.54 +                   }
    1.55 +               };
    1.56 +            }
    1.57 +
    1.58 +            @Override
    1.59 +            public LinearGradient createLinearGradient() {
    1.60 +                return new LinearGradient() {
    1.61 +
    1.62 +                    @Override
    1.63 +                    public void addColorStop(double position, String color) {
    1.64 +                      
    1.65 +                    }
    1.66 +                };
    1.67 +            }
    1.68 +
    1.69 +            @Override
    1.70 +            public Pattern createPattern() {
    1.71 +               return new Pattern() {
    1.72 +};
    1.73 +            }
    1.74 +
    1.75 +            @Override
    1.76 +            public RadialGradient createRadialGradient() {
    1.77 +                return new RadialGradient() {
    1.78 +
    1.79 +                    @Override
    1.80 +                    public void addColorStop(double position, String color) {
    1.81 +                        
    1.82 +                    }
    1.83 +                };
    1.84 +            }
    1.85 +
    1.86 +            @Override
    1.87 +            public TextMetrics createTextMetrics() {
    1.88 +                return new TextMetrics() {
    1.89 +
    1.90 +                    @Override
    1.91 +                    public double getHeight() {
    1.92 +                        return 0;
    1.93 +                    }
    1.94 +
    1.95 +                    @Override
    1.96 +                    public double getWidth() {
    1.97 +                        return 0;
    1.98 +                    }
    1.99 +                };
   1.100 +            }
   1.101 +        };
   1.102 +    }
   1.103 +    
   1.104 +    
   1.105 +}