14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package sun.awt.image;
27
28 import java.awt.Color;
29 import java.awt.GraphicsEnvironment;
30 import java.awt.GraphicsConfiguration;
31 import java.awt.Image;
32 import java.awt.ImageCapabilities;
33 import java.awt.image.BufferedImage;
34 import java.util.concurrent.ConcurrentHashMap;
35 import java.util.Iterator;
36 import sun.java2d.SurfaceData;
37 import sun.java2d.SurfaceDataProxy;
38 import sun.java2d.loops.CompositeType;
39
40 /**
41 * The abstract base class that manages the various SurfaceData objects that
42 * represent an Image's contents. Subclasses can customize how the surfaces
43 * are organized, whether to cache the original contents in an accelerated
44 * surface, and so on.
45 * <p>
46 * The SurfaceManager also maintains an arbitrary "cache" mechanism which
47 * allows other agents to store data in it specific to their use of this
48 * image. The most common use of the caching mechanism is for destination
49 * SurfaceData objects to store cached copies of the source image.
50 */
51 public abstract class SurfaceManager {
52
53 public static abstract class ImageAccessor {
269 * happening because the associated surface is no longer
270 * being accelerated (for instance the acceleration priority
271 * is set below the threshold needed for acceleration).
272 * Returns a boolean that indicates if the cached object is
273 * no longer needed and should be removed from the cache.
274 */
275 public boolean flush(boolean deaccelerated);
276 }
277
278 /**
279 * Called when image's acceleration priority is changed.
280 * <p>
281 * The default implementation will visit all of the value objects
282 * in the cacheMap when the priority gets set to 0.0 and flush them
283 * if they implement the FlushableCacheData interface.
284 */
285 public void setAccelerationPriority(float priority) {
286 if (priority == 0.0f) {
287 flush(true);
288 }
289 }
290 }
|
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package sun.awt.image;
27
28 import java.awt.Color;
29 import java.awt.GraphicsEnvironment;
30 import java.awt.GraphicsConfiguration;
31 import java.awt.Image;
32 import java.awt.ImageCapabilities;
33 import java.awt.image.BufferedImage;
34 import java.awt.image.VolatileImage;
35 import java.util.concurrent.ConcurrentHashMap;
36 import java.util.Iterator;
37 import sun.java2d.SurfaceData;
38 import sun.java2d.SurfaceDataProxy;
39 import sun.java2d.loops.CompositeType;
40
41 /**
42 * The abstract base class that manages the various SurfaceData objects that
43 * represent an Image's contents. Subclasses can customize how the surfaces
44 * are organized, whether to cache the original contents in an accelerated
45 * surface, and so on.
46 * <p>
47 * The SurfaceManager also maintains an arbitrary "cache" mechanism which
48 * allows other agents to store data in it specific to their use of this
49 * image. The most common use of the caching mechanism is for destination
50 * SurfaceData objects to store cached copies of the source image.
51 */
52 public abstract class SurfaceManager {
53
54 public static abstract class ImageAccessor {
270 * happening because the associated surface is no longer
271 * being accelerated (for instance the acceleration priority
272 * is set below the threshold needed for acceleration).
273 * Returns a boolean that indicates if the cached object is
274 * no longer needed and should be removed from the cache.
275 */
276 public boolean flush(boolean deaccelerated);
277 }
278
279 /**
280 * Called when image's acceleration priority is changed.
281 * <p>
282 * The default implementation will visit all of the value objects
283 * in the cacheMap when the priority gets set to 0.0 and flush them
284 * if they implement the FlushableCacheData interface.
285 */
286 public void setAccelerationPriority(float priority) {
287 if (priority == 0.0f) {
288 flush(true);
289 }
290 }
291
292 /**
293 * Returns a scale factor of the image. This is utility method, which
294 * fetches information from the SurfaceData of the image.
295 *
296 * @see SurfaceData#getDefaultScale
297 */
298 public static int getImageScale(final Image img) {
299 if (!(img instanceof VolatileImage)) {
300 return 1;
301 }
302 final SurfaceManager sm = getManager(img);
303 return sm.getPrimarySurfaceData().getDefaultScale();
304 }
305 }
|