com.google.gwt.canvas.dom.client.ImageData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vaadin-client Show documentation
Show all versions of vaadin-client Show documentation
Vaadin is a web application framework for Rich Internet Applications (RIA).
Vaadin enables easy development and maintenance of fast and
secure rich web
applications with a stunning look and feel and a wide browser support.
It features a server-side architecture with the majority of the logic
running
on the server. Ajax technology is used at the browser-side to ensure a
rich
and interactive user experience.
/*
* Copyright 2010 Google Inc.
*
* Licensed 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.
*/
package com.google.gwt.canvas.dom.client;
import com.google.gwt.core.client.JavaScriptObject;
/**
* Object that holds image data and a size.
*
* @see HTML Canvas 2D
* ImageData
*/
public class ImageData extends JavaScriptObject {
/**
* Number of colors at each location in the array.
*
* Because image data is stored as RGBA, this is 4.
*/
private static final int NUM_COLORS = 4;
/**
* Offsets for each color use RGBA ordering.
*/
private static final int OFFSET_RED = 0;
private static final int OFFSET_GREEN = 1;
private static final int OFFSET_BLUE = 2;
private static final int OFFSET_ALPHA = 3;
protected ImageData() {
}
/**
* Returns the alpha value at position (x,y).
*
* @param x the x coordinate
* @param y the y coordinate
* @return the alpha value at position (x,y), or 0 if not in the image
* @see #setAlphaAt(int, int, int)
* @see #getColorAt(int, int, int)
*/
public final int getAlphaAt(int x, int y) {
return getColorAt(x, y, OFFSET_ALPHA);
}
/**
* Returns the blue value at position (x,y).
*
* @param x the x coordinate
* @param y the y coordinate
* @return the blue value at position (x,y), or 0 if not in the image
* @see #setBlueAt(int, int, int)
* @see #getColorAt(int, int, int)
*/
public final int getBlueAt(int x, int y) {
return getColorAt(x, y, OFFSET_BLUE);
}
/**
* Returns a canvas pixel array of size width * height * 4.
*
* @return a {@link CanvasPixelArray} object
*/
public final native CanvasPixelArray getData() /*-{
return this.data;
}-*/;
/**
* Returns the green value at position (x,y).
*
* @param x the x coordinate
* @param y the y coordinate
* @return the green value at position (x,y), or 0 if not in the image
* @see #setGreenAt(int, int, int)
* @see #getColorAt(int, int, int)
*/
public final int getGreenAt(int x, int y) {
return getColorAt(x, y, OFFSET_GREEN);
}
/**
* Returns the height of this image data object.
*
* @return the image height as an int
*/
public final native int getHeight() /*-{
return this.height;
}-*/;
/**
* Returns the red value at position (x,y).
*
* @param x the x coordinate
* @param y the y coordinate
* @return the red value at position (x,y), or 0 if not in the image
* @see #setRedAt(int, int, int)
* @see #getColorAt(int, int, int)
*/
public final int getRedAt(int x, int y) {
return getColorAt(x, y, OFFSET_RED);
}
/**
* Returns the width of this image data object.
*
* @return the image width as an int
*/
public final native int getWidth() /*-{
return this.width;
}-*/;
/**
* Sets the alpha value at position (x,y).
*
* @param alpha the alpha value
* @param x the x coordinate
* @param y the y coordinate
* @see #getAlphaAt(int, int)
* @see #getColorAt(int, int, int)
*/
public final void setAlphaAt(int alpha, int x, int y) {
setColorAt(alpha, x, y, OFFSET_ALPHA);
}
/**
* Sets the blue value at position (x,y).
*
* @param blue the blue value
* @param x the x coordinate
* @param y the y coordinate
* @see #getBlueAt(int, int)
* @see #getColorAt(int, int, int)
*/
public final void setBlueAt(int blue, int x, int y) {
setColorAt(blue, x, y, OFFSET_BLUE);
}
/**
* Sets the green value at position (x,y).
*
* @param green the green value
* @param x the x coordinate
* @param y the y coordinate
* @see #getGreenAt(int, int)
* @see #getColorAt(int, int, int)
*/
public final void setGreenAt(int green, int x, int y) {
setColorAt(green, x, y, OFFSET_GREEN);
}
/**
* Sets the red value at position (x,y).
*
* @param red the red value
* @param x the x coordinate
* @param y the y coordinate
* @see #getRedAt(int, int)
* @see #getColorAt(int, int, int)
*/
public final void setRedAt(int red, int x, int y) {
setColorAt(red, x, y, OFFSET_RED);
}
/**
* Returns the color value at position (x,y) with the specified offset.
*
* Colors are stored in RGBA format, where the offset determines the color
* channel (R, G, B, or A). The values are stored in row-major order. If the
* specified location is not in the image, 0 is returned.
*
* @param x the x coordinate
* @param y the y coordinate
* @param offset the color offset
* @return the color value at position (x,y), or 0 if not in the image
* @see #setColorAt(int, int, int, int)
*/
private native int getColorAt(int x, int y, int offset) /*-{
return this.data[@com.google.gwt.canvas.dom.client.ImageData::NUM_COLORS *
(x + y * this.width) + offset] || 0;
}-*/;
/**
* Sets the color value at position (x,y) with the specified offset.
*
* Colors are stored in RGBA format, where the offset determines the color
* (R, G, B, or A.) The values are stored in row-major order.
*
* @param color the color (in the range 0...255)
* @param x the x coordinate
* @param y the y coordinate
* @param offset the color offset
* @see #getColorAt(int, int, int)
*/
private native void setColorAt(int color, int x, int y, int offset) /*-{
this.data[@com.google.gwt.canvas.dom.client.ImageData::NUM_COLORS *
(x + y * this.width) + offset] = color;
}-*/;
}