summaryrefslogtreecommitdiffstats
path: root/awt/javax/imageio/spi/ImageOutputStreamSpi.java
blob: b7a9a5c33322acf6ac7d84ccb693bf5864d8e6f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
/**
 * @author Rustem V. Rafikov
 * @version $Revision: 1.3 $
 */

package javax.imageio.spi;

import javax.imageio.stream.ImageOutputStream;
import java.io.IOException;
import java.io.File;

/**
 * The ImageOutputStreamSpi abstract class is a service provider interface (SPI)
 * for ImageOutputStreams.
 * 
 * @since Android 1.0
 */
public abstract class ImageOutputStreamSpi extends IIOServiceProvider implements
        RegisterableService {

    /**
     * The output class.
     */
    protected Class<?> outputClass;

    /**
     * Instantiates a new ImageOutputStreamSpi.
     */
    protected ImageOutputStreamSpi() {
        throw new UnsupportedOperationException("Not supported yet");
    }

    /**
     * Instantiates a new ImageOutputStreamSpi.
     * 
     * @param vendorName
     *            the vendor name.
     * @param version
     *            the version.
     * @param outputClass
     *            the output class.
     */
    public ImageOutputStreamSpi(String vendorName, String version, Class<?> outputClass) {
        super(vendorName, version);
        this.outputClass = outputClass;
    }

    /**
     * Gets an output Class object that represents the class or interface that
     * must be implemented by an output source.
     * 
     * @return the output class.
     */
    public Class<?> getOutputClass() {
        return outputClass;
    }

    /**
     * Returns true if the ImageOutputStream can use a cache file. If this
     * method returns false, the value of the useCache parameter of
     * createOutputStreamInstance will be ignored. The default implementation
     * returns false.
     * 
     * @return true, if the ImageOutputStream can use a cache file, false
     *         otherwise.
     */
    public boolean canUseCacheFile() {
        return false; // def
    }

    /**
     * Returns true if the ImageOutputStream implementation requires the use of
     * a cache file. The default implementation returns false.
     * 
     * @return true, if the ImageOutputStream implementation requires the use of
     *         a cache file, false otherwise.
     */
    public boolean needsCacheFile() {
        return false; // def
    }

    /**
     * Creates the ImageOutputStream associated with this service provider. The
     * output object should be an instance of the class returned by
     * getOutputClass method. This method uses the default system directory for
     * the cache file, if it is needed.
     * 
     * @param output
     *            the output Object.
     * @return the ImageOutputStream.
     * @throws IOException
     *             if an I/O exception has occurred.
     */
    public ImageOutputStream createOutputStreamInstance(Object output) throws IOException {
        return createOutputStreamInstance(output, true, null);
    }

    /**
     * Creates the ImageOutputStream associated with this service provider. The
     * output object should be an instance of the class returned by
     * getInputClass method. This method uses the specified directory for the
     * cache file, if the useCache parameter is true.
     * 
     * @param output
     *            the output Object.
     * @param useCache
     *            the flag indicating if cache file is needed or not.
     * @param cacheDir
     *            the cache directory.
     * @return the ImageOutputStream.
     * @throws IOException
     *             if an I/O exception has occurred.
     */
    public abstract ImageOutputStream createOutputStreamInstance(Object output, boolean useCache,
            File cacheDir) throws IOException;
}