javaquery/canvas/src/main/java/net/java/html/canvas/GraphicsEnvironment.java
author toni.epple@eppleton.de
Fri, 17 May 2013 14:05:55 +0200
branchcanvas
changeset 1118 e198f1a3814f
child 1119 73041c26cf4d
permissions -rw-r--r--
Created SPI as a Factory for GraphicsObjects
     1 /*
     2  * To change this template, choose Tools | Templates
     3  * and open the template in the editor.
     4  */
     5 package net.java.html.canvas;
     6 
     7 import java.util.ServiceLoader;
     8 
     9 /**
    10  *
    11  * @author antonepple
    12  */
    13 public abstract class GraphicsEnvironment {
    14 
    15     private static GraphicsEnvironment DEFAULT;
    16 
    17     public GraphicsEnvironment getDefault() {
    18         if (DEFAULT == null) {
    19             ServiceLoader<GraphicsEnvironment> loader = ServiceLoader.load(GraphicsEnvironment.class);
    20             DEFAULT = loader.iterator().next();
    21         }
    22         return DEFAULT == null ? getDummyInstance() : DEFAULT;
    23     }
    24 
    25     public abstract Image getImageForPath(String path);
    26     
    27     public abstract LinearGradient createLinearGradient();
    28     
    29     public abstract Pattern createPattern();
    30     
    31     public abstract RadialGradient createRadialGradient();
    32     
    33     public abstract TextMetrics createTextMetrics();
    34     
    35     private GraphicsEnvironment getDummyInstance() {
    36         
    37         return new GraphicsEnvironment() {
    38 
    39             @Override
    40             public Image getImageForPath(String path) {
    41                return new Image() {
    42 
    43                    @Override
    44                    public int getHeight() {
    45                      return 0;
    46                    }
    47 
    48                    @Override
    49                    public int getWidth() {
    50                        return 0;
    51                    }
    52                };
    53             }
    54 
    55             @Override
    56             public LinearGradient createLinearGradient() {
    57                 return new LinearGradient() {
    58 
    59                     @Override
    60                     public void addColorStop(double position, String color) {
    61                       
    62                     }
    63                 };
    64             }
    65 
    66             @Override
    67             public Pattern createPattern() {
    68                return new Pattern() {
    69 };
    70             }
    71 
    72             @Override
    73             public RadialGradient createRadialGradient() {
    74                 return new RadialGradient() {
    75 
    76                     @Override
    77                     public void addColorStop(double position, String color) {
    78                         
    79                     }
    80                 };
    81             }
    82 
    83             @Override
    84             public TextMetrics createTextMetrics() {
    85                 return new TextMetrics() {
    86 
    87                     @Override
    88                     public double getHeight() {
    89                         return 0;
    90                     }
    91 
    92                     @Override
    93                     public double getWidth() {
    94                         return 0;
    95                     }
    96                 };
    97             }
    98         };
    99     }
   100     
   101     
   102 }