All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.eppleton.canvas.javafx.ImageDataWrapper Maven / Gradle / Ivy

The newest version!
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package de.eppleton.canvas.javafx;

import javafx.scene.image.Image;
import javafx.scene.image.PixelReader;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.paint.Color;
import net.java.html.canvas.ImageData;

/**
 *
 * @author antonepple
 */
class ImageDataWrapper implements ImageData {

    private final WritableImage image;
    private final double height;
    private final double width;
    private final PixelWriter pixelWriter;

    public ImageDataWrapper(WritableImage image, double width, double height) {
        this.image = image;
        this.width = width;
        this.height = height;
        pixelReader = image.getPixelReader();
        pixelWriter = image.getPixelWriter();
    }
    private PixelReader pixelReader;

    @Override
    public double getHeight() {
        return height;
    }

    @Override
    public double getWidth() {
        return width;
    }

    @Override
    public int getR(int x, int y) {
        return (int) (255 * pixelReader.getColor(x, y).getRed());
    }

    @Override
    public int getG(int x, int y) {
        return (int) (255 * pixelReader.getColor(x, y).getGreen());
    }

    @Override
    public int getB(int x, int y) {
        return (int) (255 * pixelReader.getColor(x, y).getBlue());
    }

    @Override
    public int getA(int x, int y) {
        return (int) (255 * pixelReader.getColor(x, y).getOpacity());
    }

    @Override
    public void setR(int x, int y, int value) {
        double green = pixelReader.getColor(x, y).getGreen();
        double blue = pixelReader.getColor(x, y).getBlue();
        double opacity = pixelReader.getColor(x, y).getOpacity();
        pixelWriter.setColor(x, y, new Color(((double) value) / 255, green, blue, opacity));
    }

    @Override
    public void setG(int x, int y, int value) {
        double red = pixelReader.getColor(x, y).getRed();
        double blue = pixelReader.getColor(x, y).getBlue();
        double opacity = pixelReader.getColor(x, y).getOpacity();
        pixelWriter.setColor(x, y, new Color(red, ((double) value) / 255, blue, opacity));
    }

    @Override
    public void setB(int x, int y, int value) {
        double red = pixelReader.getColor(x, y).getRed();
        double green = pixelReader.getColor(x, y).getGreen();
        double opacity = pixelReader.getColor(x, y).getOpacity();
        pixelWriter.setColor(x, y, new Color(red, green, ((double) value) / 255, opacity));
    }

    @Override
    public void setA(int x, int y, int value) {
        double red = pixelReader.getColor(x, y).getRed();
        double green = pixelReader.getColor(x, y).getGreen();
        double blue = pixelReader.getColor(x, y).getBlue();
        pixelWriter.setColor(x, y, new Color(red, green, blue, ((double) value) / 255));
    }

    @Override
    public Image getImage() {
        return image;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy