javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ImageDataWrapper.java
author Anton Epple <toni.epple@eppleton.de>
Mon, 27 May 2013 08:30:30 +0200
branchcanvas
changeset 1145 0e2c3676d77a
parent 1135 836bc1845c65
child 1156 9a6cf322f890
permissions -rw-r--r--
Readded Image and ImageData to have the complete API again. No need to use Data in API anymore. Added caching to Image. Image are not required to be added to the page anymore, but are created in javaScript instead.
toni@521
     1
/**
toni@521
     2
 * Back 2 Browser Bytecode Translator
toni@521
     3
 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
toni@521
     4
 *
toni@521
     5
 * This program is free software: you can redistribute it and/or modify
toni@521
     6
 * it under the terms of the GNU General Public License as published by
toni@521
     7
 * the Free Software Foundation, version 2 of the License.
toni@521
     8
 *
toni@521
     9
 * This program is distributed in the hope that it will be useful,
toni@521
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
toni@521
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
toni@521
    12
 * GNU General Public License for more details.
toni@521
    13
 *
toni@521
    14
 * You should have received a copy of the GNU General Public License
toni@521
    15
 * along with this program. Look for COPYING file in the top folder.
toni@521
    16
 * If not, see http://opensource.org/licenses/GPL-2.0.
toni@521
    17
 */
toni@521
    18
/*
toni@521
    19
 * To change this template, choose Tools | Templates
toni@521
    20
 * and open the template in the editor.
toni@521
    21
 */
toni@1135
    22
package org.apidesign.bck2brwsr.htmlpage;
toni@521
    23
toni@1145
    24
import net.java.html.canvas.ImageData;
toni@521
    25
import org.apidesign.bck2brwsr.core.JavaScriptBody;
toni@521
    26
toni@521
    27
/**
toni@521
    28
 *
toni@521
    29
 * @author Anton Epple <toni.epple@eppleton.de>
toni@521
    30
 */
toni@1145
    31
public class ImageDataWrapper implements ImageData{
toni@521
    32
toni@521
    33
    private Object imageData;
toni@521
    34
    private Data data;
toni@521
    35
toni@1134
    36
    public ImageDataWrapper(Object imageData) {
toni@521
    37
        this.imageData = imageData;
toni@521
    38
    }
toni@521
    39
    
toni@521
    40
    public Data getData(){
toni@521
    41
        if (data == null){
toni@521
    42
            data = new Data(getDataImpl(imageData));
toni@521
    43
        }
toni@521
    44
        return data;
toni@521
    45
    }
toni@521
    46
    
toni@521
    47
    @JavaScriptBody(args = {"imageData"}, body = "return imageData.data")
toni@521
    48
    public native Object getDataImpl(Object imageData);
toni@521
    49
toni@521
    50
    public double getWidth() {
toni@521
    51
        return getWidthImpl(imageData);
toni@521
    52
    }
toni@521
    53
toni@521
    54
    @JavaScriptBody(args = {"imageData"}, body = "return imagedata.width;")
toni@521
    55
    private static native double getWidthImpl(Object imageData);
toni@521
    56
toni@521
    57
    public double getHeight() {
toni@521
    58
        return getHeightImpl(imageData);
toni@521
    59
    }
toni@521
    60
toni@521
    61
    @JavaScriptBody(args = {"imageData"}, body = "return imagedata.height;")
toni@521
    62
    private static native double getHeightImpl(Object imageData);
toni@521
    63
toni@521
    64
    Object object() {
toni@521
    65
        return imageData;
toni@521
    66
    }
toni@521
    67
toni@1145
    68
    @Override
toni@1145
    69
    public int getPixel(double x, double y) {
toni@1145
    70
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
toni@1145
    71
    }
toni@1145
    72
toni@1145
    73
    @Override
toni@1145
    74
    public void setPixel(double x, double y, int value) {
toni@1145
    75
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
toni@1145
    76
    }
toni@1145
    77
toni@1134
    78
toni@521
    79
    public static class Data {
toni@521
    80
toni@521
    81
        Object data;
toni@521
    82
toni@521
    83
        public Data(Object data) {
toni@521
    84
            this.data = data;
toni@521
    85
        }
toni@521
    86
toni@521
    87
        public int get(int index) {
toni@521
    88
            return getImpl(data, index);
toni@521
    89
        }
toni@521
    90
toni@521
    91
        public void set(int index, int value) {
toni@521
    92
            setImpl(data, index, value);
toni@521
    93
        }
toni@521
    94
toni@521
    95
        @JavaScriptBody(args = {"data", "index", "value"}, body = "data[index]=value;")
toni@521
    96
        private static native void setImpl(Object data, int index, int value);
toni@521
    97
toni@521
    98
        @JavaScriptBody(args = {"imagedata", "index"}, body = "return data[index];")
toni@521
    99
        private static native int getImpl(Object data, int index);
toni@521
   100
    }
toni@521
   101
}