summaryrefslogtreecommitdiffstats
path: root/awt/org/apache/harmony/awt/gl/Surface.java
diff options
context:
space:
mode:
Diffstat (limited to 'awt/org/apache/harmony/awt/gl/Surface.java')
-rw-r--r--awt/org/apache/harmony/awt/gl/Surface.java309
1 files changed, 0 insertions, 309 deletions
diff --git a/awt/org/apache/harmony/awt/gl/Surface.java b/awt/org/apache/harmony/awt/gl/Surface.java
deleted file mode 100644
index 8b0ae38..0000000
--- a/awt/org/apache/harmony/awt/gl/Surface.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * 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 Igor V. Stolyarov
- * @version $Revision$
- * Created on 10.11.2005
- *
- */
-package org.apache.harmony.awt.gl;
-
-import java.awt.Image;
-import java.awt.Transparency;
-import java.awt.color.ColorSpace;
-import java.awt.image.BufferedImage;
-import java.awt.image.ColorModel;
-import java.awt.image.ComponentColorModel;
-import java.awt.image.ComponentSampleModel;
-import java.awt.image.DataBuffer;
-import java.awt.image.DirectColorModel;
-import java.awt.image.IndexColorModel;
-import java.awt.image.MultiPixelPackedSampleModel;
-import java.awt.image.SampleModel;
-import java.awt.image.WritableRaster;
-import java.util.ArrayList;
-
-import org.apache.harmony.awt.gl.color.LUTColorConverter;
-
-
-/**
- * This class is super class for others types of Surfaces.
- * Surface is storing data and data format description, that are using
- * in blitting operations
- */
-public abstract class Surface implements Transparency{
-
- // Color Space Types
- public static final int sRGB_CS = 1;
- public static final int Linear_RGB_CS = 2;
- public static final int Linear_Gray_CS = 3;
- public static final int Custom_CS = 0;
-
- // Color Model Types
- public static final int DCM = 1; // Direct Color Model
- public static final int ICM = 2; // Index Color Model
- public static final int CCM = 3; // Component Color Model
-
- // Sample Model Types
- public static final int SPPSM = 1; // Single Pixel Packed Sample Model
- public static final int MPPSM = 2; // Multi Pixel Packed Sample Model
- public static final int CSM = 3; // Component Sample Model
- public static final int PISM = 4; // Pixel Interleaved Sample Model
- public static final int BSM = 5; // Banded Sample Model
-
- // Surface Types
- private static final int ALPHA_MASK = 0xff000000;
- private static final int RED_MASK = 0x00ff0000;
- private static final int GREEN_MASK = 0x0000ff00;
- private static final int BLUE_MASK = 0x000000ff;
- private static final int RED_BGR_MASK = 0x000000ff;
- private static final int GREEN_BGR_MASK = 0x0000ff00;
- private static final int BLUE_BGR_MASK = 0x00ff0000;
- private static final int RED_565_MASK = 0xf800;
- private static final int GREEN_565_MASK = 0x07e0;
- private static final int BLUE_565_MASK = 0x001f;
- private static final int RED_555_MASK = 0x7c00;
- private static final int GREEN_555_MASK = 0x03e0;
- private static final int BLUE_555_MASK = 0x001f;
-
- static{
- //???AWT
- /*
- System.loadLibrary("gl"); //$NON-NLS-1$
- initIDs();
- */
- }
-
-
- protected long surfaceDataPtr; // Pointer for Native Surface data
- protected int transparency = OPAQUE;
- protected int width;
- protected int height;
-
- /**
- * This list contains caches with the data of this surface that are valid at the moment.
- * Surface should clear this list when its data is updated.
- * Caches may check if they are still valid using isCacheValid method.
- * When cache gets data from the surface, it should call addValidCache method of the surface.
- */
- private final ArrayList<Object> validCaches = new ArrayList<Object>();
-
- public abstract ColorModel getColorModel();
- public abstract WritableRaster getRaster();
- public abstract int getSurfaceType(); // Syrface type. It is equal
- // BufferedImge type
- /**
- * Lock Native Surface data
- */
- public abstract long lock();
-
- /**
- * Unlock Native Surface data
- */
- public abstract void unlock();
-
- /**
- * Dispose Native Surface data
- */
- public abstract void dispose();
- public abstract Surface getImageSurface();
-
- public long getSurfaceDataPtr(){
- return surfaceDataPtr;
- }
-
- public final boolean isCaheValid(Object cache) {
- return validCaches.contains(cache);
- }
-
- public final void addValidCache(Object cache) {
- validCaches.add(cache);
- }
-
- protected final void clearValidCaches() {
- validCaches.clear();
- }
-
- /**
- * Returns could or coldn't the Surface be blit by Native blitter
- * @return - true if the Surface could be blit by Native blitter,
- * false in other case
- */
- public boolean isNativeDrawable(){
- return true;
- }
-
- public int getTransparency() {
- return transparency;
- }
-
- public int getWidth(){
- return width;
- }
-
- public int getHeight(){
- return height;
- }
-
- /**
- * If Surface has Raster, this method returns data array of Raster's DataBuffer
- * @return - data array
- */
- public Object getData(){
- return null;
- }
-
- public boolean invalidated(){
- return true;
- }
-
- public void validate(){}
-
- public void invalidate(){}
-
- /**
- * Computation type of BufferedImage or Surface
- * @param cm - ColorModel
- * @param raster - WritableRaste
- * @return - type of BufferedImage
- */
- public static int getType(ColorModel cm, WritableRaster raster){
- int transferType = cm.getTransferType();
- boolean hasAlpha = cm.hasAlpha();
- ColorSpace cs = cm.getColorSpace();
- int csType = cs.getType();
- SampleModel sm = raster.getSampleModel();
-
- if(csType == ColorSpace.TYPE_RGB){
- if(cm instanceof DirectColorModel){
- DirectColorModel dcm = (DirectColorModel) cm;
- switch (transferType) {
- case DataBuffer.TYPE_INT:
- if (dcm.getRedMask() == RED_MASK &&
- dcm.getGreenMask() == GREEN_MASK &&
- dcm.getBlueMask() == BLUE_MASK) {
- if (!hasAlpha) {
- return BufferedImage.TYPE_INT_RGB;
- }
- if (dcm.getAlphaMask() == ALPHA_MASK) {
- if (dcm.isAlphaPremultiplied()) {
- return BufferedImage.TYPE_INT_ARGB_PRE;
- }
- return BufferedImage.TYPE_INT_ARGB;
- }
- return BufferedImage.TYPE_CUSTOM;
- } else if (dcm.getRedMask() == RED_BGR_MASK &&
- dcm.getGreenMask() == GREEN_BGR_MASK &&
- dcm.getBlueMask() == BLUE_BGR_MASK) {
- if (!hasAlpha) {
- return BufferedImage.TYPE_INT_BGR;
- }
- } else {
- return BufferedImage.TYPE_CUSTOM;
- }
- case DataBuffer.TYPE_USHORT:
- if (dcm.getRedMask() == RED_555_MASK &&
- dcm.getGreenMask() == GREEN_555_MASK &&
- dcm.getBlueMask() == BLUE_555_MASK && !hasAlpha) {
- return BufferedImage.TYPE_USHORT_555_RGB;
- } else if (dcm.getRedMask() == RED_565_MASK &&
- dcm.getGreenMask() == GREEN_565_MASK &&
- dcm.getBlueMask() == BLUE_565_MASK) {
- return BufferedImage.TYPE_USHORT_565_RGB;
- }
- default:
- return BufferedImage.TYPE_CUSTOM;
- }
- }else if(cm instanceof IndexColorModel){
- IndexColorModel icm = (IndexColorModel) cm;
- int pixelBits = icm.getPixelSize();
- if(transferType == DataBuffer.TYPE_BYTE){
- if(sm instanceof MultiPixelPackedSampleModel && !hasAlpha &&
- pixelBits < 5){
- return BufferedImage.TYPE_BYTE_BINARY;
- }else if(pixelBits == 8){
- return BufferedImage.TYPE_BYTE_INDEXED;
- }
- }
- return BufferedImage.TYPE_CUSTOM;
- }else if(cm instanceof ComponentColorModel){
- ComponentColorModel ccm = (ComponentColorModel) cm;
- if(transferType == DataBuffer.TYPE_BYTE &&
- sm instanceof ComponentSampleModel){
- ComponentSampleModel csm =
- (ComponentSampleModel) sm;
- int[] offsets = csm.getBandOffsets();
- int[] bits = ccm.getComponentSize();
- boolean isCustom = false;
- for (int i = 0; i < bits.length; i++) {
- if (bits[i] != 8 ||
- offsets[i] != offsets.length - 1 - i) {
- isCustom = true;
- break;
- }
- }
- if (!isCustom) {
- if (!ccm.hasAlpha()) {
- return BufferedImage.TYPE_3BYTE_BGR;
- } else if (ccm.isAlphaPremultiplied()) {
- return BufferedImage.TYPE_4BYTE_ABGR_PRE;
- } else {
- return BufferedImage.TYPE_4BYTE_ABGR;
- }
- }
- }
- return BufferedImage.TYPE_CUSTOM;
- }
- return BufferedImage.TYPE_CUSTOM;
- }else if(cs == LUTColorConverter.LINEAR_GRAY_CS){
- if(cm instanceof ComponentColorModel &&
- cm.getNumComponents() == 1){
- int bits[] = cm.getComponentSize();
- if(transferType == DataBuffer.TYPE_BYTE &&
- bits[0] == 8){
- return BufferedImage.TYPE_BYTE_GRAY;
- }else if(transferType == DataBuffer.TYPE_USHORT &&
- bits[0] == 16){
- return BufferedImage.TYPE_USHORT_GRAY;
- }else{
- return BufferedImage.TYPE_CUSTOM;
- }
- }
- return BufferedImage.TYPE_CUSTOM;
- }
- return BufferedImage.TYPE_CUSTOM;
- }
-
- public static Surface getImageSurface(Image image){
- return AwtImageBackdoorAccessor.getInstance().getImageSurface(image);
- }
-
- @Override
- protected void finalize() throws Throwable{
- dispose();
- }
-
- public static boolean isGrayPallete(IndexColorModel icm){
- return AwtImageBackdoorAccessor.getInstance().isGrayPallete(icm);
- }
-
- /**
- * Initialization of Native data
- *
- */
- //???AWT: private static native void initIDs();
-}