@Override public void draw(Context2d ctx, float dx, float dy, float dw, float dh, float sx, float sy, float sw, float sh) { // adjust our source rect to account for the scale factor sx *= scale.factor; sy *= scale.factor; sw *= scale.factor; sh *= scale.factor; ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh); }
@Override public void draw(Object ctx, float dx, float dy, float dw, float dh, float sx, float sy, float sw, float sh) { // adjust our source rect to account for the scale factor sx *= scale.factor; sy *= scale.factor; sw *= scale.factor; sh *= scale.factor; ((Context2d)ctx).drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh); }
@Override public void draw(Object ctx, float dx, float dy, float dw, float dh, float sx, float sy, float sw, float sh) { // adjust our source rect to account for the scale factor sx *= scale.factor; sy *= scale.factor; sw *= scale.factor; sh *= scale.factor; ((Context2d)ctx).drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh); }
@Override public void draw(Context2d ctx, float x, float y, float width, float height) { ctx.drawImage(img, x, y, width, height); }
@Override public void draw(Object ctx, float x, float y, float width, float height) { ((Context2d)ctx).drawImage(img, x, y, width, height); }
@Override public void draw(Object ctx, float x, float y, float width, float height) { ((Context2d)ctx).drawImage(img, x, y, width, height); }
//Scale to size public static String scaleImage(Image image, int width, int height) { Canvas canvasTmp = Canvas.createIfSupported(); Context2d context = canvasTmp.getContext2d(); canvasTmp.setCoordinateSpaceWidth(width); canvasTmp.setCoordinateSpaceHeight(height); ImageElement imageElement = ImageElement.as(image.getElement()); context.drawImage(imageElement, 0, 0, width, height); //Most browsers support an extra option for: toDataURL(mime type, quality) where quality = 0-1 double. //This is not available through this java library but might work with elemental version? String tempStr = canvasTmp.toDataUrl("image/jpeg"); return tempStr; }
/** * Native call to capture the frame of the video stream. */ protected String nativeCaptureToDataURL(CanvasElement canvas, Element element, String mimeType) { VideoElement videoElement = (VideoElement) element; int width = videoElement.getVideoWidth(); int height = videoElement.getVideoHeight(); if (Double.isNaN(width) || Double.isNaN(height)) { width = videoElement.getClientWidth(); height = videoElement.getClientHeight(); } canvas.setWidth(width); canvas.setHeight(height); Context2d context = canvas.getContext2d(); context.drawImage(videoElement, 0, 0, width, height); return canvas.toDataUrl(mimeType); }
/** * Warning: Scaling through the canvas will only work with images that use * premultiplied alpha. * * @param maxSize the max size of absoluteWidth or absoluteHeight * * @return a new Image, or the same one if no clamping was necessary */ public PixmapTextureData clampToMaxSize ( int maxSize ) { int imgWidth = image.getOffsetWidth(); int imgHeight = image.getOffsetHeight(); if ( imgWidth <= maxSize && imgHeight <= maxSize ) return this; int maxDimension = Math.max( imgWidth, imgHeight ); int newWidth = (int) Math.floor( imgWidth * maxSize / maxDimension ); int newHeight = (int) Math.floor( imgHeight * maxSize / maxDimension ); CanvasElement canvas = Document.get().createElement("canvas").cast(); canvas.setWidth(newWidth); canvas.setHeight(newHeight); Context2d context = canvas.getContext2d(); context.drawImage((ImageElement)image, 0, 0, imgWidth, imgHeight, 0, 0, newWidth, newHeight ); image.getParentElement().appendChild(canvas); image.removeFromParent(); image = canvas; return this; }
private void copyBufferToCanvas() { clearCanvas(canvas); double dx = (bufferBounds.getX() - canvasBounds.getX()) * matrix.getXx(); double dy = -(bufferFactor - 1) * canvas.getCoordinateSpaceHeight() + (bufferBounds.getY() - canvasBounds.getY()) * matrix.getYy(); canvas.getContext2d().drawImage(buffer.getCanvasElement(), dx, dy); }
@Override protected Pattern toSubPattern(AbstractImageGL<?> image, boolean repeatX, boolean repeatY, float x, float y, float width, float height) { CanvasElement canvas = Document.get().createElement("canvas").<CanvasElement>cast(); canvas.setWidth(MathUtil.iceil(width)); canvas.setHeight(MathUtil.iceil(height)); canvas.getContext2d().drawImage(img, x, y, width, height, 0, 0, width, height); ImageElement subelem = canvas.cast(); return new HtmlPattern(image, subelem, repeatX, repeatY); }
private void copyBufferToCanvas() { clearCanvas(canvas); double dx = (bufferBounds.getX() - canvasBounds.getX()) * matrix.getXx(); double dy = -(bufferFactor - 1) * canvas.getCoordinateSpaceHeight() + (bufferBounds.getY() - canvasBounds.getY()) * matrix.getYy(); canvas.getContext2d().drawImage(buffer.getCanvasElement(), dx, dy); }
public CanvasImageElement(ImageElement imageElement, Bbox box) { this.box = new Bbox(box.getX(), box.getY(), box.getWidth(), box.getHeight()); hiddenImageCanvas = Canvas.createIfSupported(); hiddenImageCanvas.setVisible(false); hiddenImageCanvas.setCoordinateSpaceWidth(imageElement.getWidth()); hiddenImageCanvas.setCoordinateSpaceHeight(imageElement.getHeight()); hiddenImageCanvas.getContext2d().drawImage(imageElement, 0, 0); }
context.drawImage(imageElement, 0, 0); ImageData imageData = context.getImageData(0, 0, width, height);
context.drawImage(imageElement, 0, 0); ImageData imageData = context.getImageData(0, 0, width, height);
@Override public PixmapTextureData toPowerOfTwo() { if(isPowerOfTwo()) return this; int width = image.getOffsetWidth(); int height = image.getOffsetHeight(); CanvasElement canvas = Document.get().createElement("canvas").cast(); // Scale up the texture to the next highest power of two dimensions. canvas.setWidth( Mathematics.getNextHighestPowerOfTwo( width ) ); canvas.setHeight( Mathematics.getNextHighestPowerOfTwo( height ) ); Context2d context = canvas.getContext2d(); context.drawImage((ImageElement)image, 0, 0, width, height); image = canvas; return this; }
@Override public void paint(Canvas canvas, Matrix matrix) { /* * paint image on canvas based on the original and with the transformations of the matrix. * */ Context2d context2d = canvas.getContext2d(); context2d.save(); boolean xReversal = matrix.getXx() < 0; boolean yReversal = matrix.getYy() < 0; context2d.scale(xReversal ? -1 : 1, yReversal ? -1 : 1); double xValue = xReversal ? box.getMaxX() * -1 : box.getX(); double yValue = yReversal ? box.getMaxY() * -1 : box.getY(); context2d.drawImage(hiddenImageCanvas.getCanvasElement(), xValue, yValue, box.getWidth(), box.getHeight()); context2d.restore(); }
@Override public void getRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { assert isLoaded() : "Cannot getRgb() a non-ready image"; if (canvas == null) { canvas = img.getOwnerDocument().createCanvasElement(); canvas.setHeight(img.getHeight()); canvas.setWidth(img.getWidth()); canvas.getContext2d().drawImage(img, 0, 0); // img.getOwnerDocument().getBody().appendChild(canvas); } Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.getImageData(startX, startY, width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int r = pixelData.get(i++); int g = pixelData.get(i++); int b = pixelData.get(i++); int a = pixelData.get(i++); rgbArray [dst + x] = a << 24 | r << 16 | g << 8 | b; } dst += scanSize; } }
@Override public void getRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { assert isReady() : "Cannot getRgb() a non-ready image"; if (canvas == null) { canvas = img.getOwnerDocument().createCanvasElement(); canvas.setHeight(img.getHeight()); canvas.setWidth(img.getWidth()); canvas.getContext2d().drawImage(img, 0, 0); // img.getOwnerDocument().getBody().appendChild(canvas); } Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.getImageData(startX, startY, width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int r = pixelData.get(i++); int g = pixelData.get(i++); int b = pixelData.get(i++); int a = pixelData.get(i++); rgbArray [dst + x] = a << 24 | r << 16 | g << 8 | b; } dst += scanSize; } }
@Override public void getRgb(int startX, int startY, int width, int height, int[] rgbArray, int offset, int scanSize) { assert isLoaded() : "Cannot getRgb() a non-ready image"; if (canvas == null) { canvas = img.getOwnerDocument().createCanvasElement(); canvas.setHeight(img.getHeight()); canvas.setWidth(img.getWidth()); canvas.getContext2d().drawImage(img, 0, 0); // img.getOwnerDocument().getBody().appendChild(canvas); } Context2d ctx = canvas.getContext2d(); ImageData imageData = ctx.getImageData(startX, startY, width, height); CanvasPixelArray pixelData = imageData.getData(); int i = 0; int dst = offset; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x ++) { int r = pixelData.get(i++); int g = pixelData.get(i++); int b = pixelData.get(i++); int a = pixelData.get(i++); rgbArray [dst + x] = a << 24 | r << 16 | g << 8 | b; } dst += scanSize; } }