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