javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/ImageData.java
author toni.epple@eppleton.de
Tue, 21 May 2013 16:10:52 +0200
branchcanvas
changeset 1125 a3d504d7e588
parent 1112 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/HTML5ImageData.java@024b165f8f21
permissions -rw-r--r--
Refactored names to unpopular naming scheme, because (a) bck2brwsr Canvas implementation must be named Canvas due to mapping in bck2brwsr and I don't want interface and impl to have the same name. (b) with the "I" prefix at least it's consistent, even if nobody uses that anymore. (c) names are the same as in HTML5 Canvas Javascript API, so it's more familiar...
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@521
    22
package org.apidesign.bck2brwsr.htmlpage.api;
toni@521
    23
toni@1125
    24
import net.java.html.canvas.IImageData;
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@1125
    31
public class ImageData implements IImageData{
toni@521
    32
toni@521
    33
    private Object imageData;
toni@521
    34
    private Data data;
toni@521
    35
toni@1125
    36
    public ImageData(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@521
    68
    public static class Data {
toni@521
    69
toni@521
    70
        Object data;
toni@521
    71
toni@521
    72
        public Data(Object data) {
toni@521
    73
            this.data = data;
toni@521
    74
        }
toni@521
    75
toni@521
    76
        public int get(int index) {
toni@521
    77
            return getImpl(data, index);
toni@521
    78
        }
toni@521
    79
toni@521
    80
        public void set(int index, int value) {
toni@521
    81
            setImpl(data, index, value);
toni@521
    82
        }
toni@521
    83
toni@521
    84
        @JavaScriptBody(args = {"data", "index", "value"}, body = "data[index]=value;")
toni@521
    85
        private static native void setImpl(Object data, int index, int value);
toni@521
    86
toni@521
    87
        @JavaScriptBody(args = {"imagedata", "index"}, body = "return data[index];")
toni@521
    88
        private static native int getImpl(Object data, int index);
toni@521
    89
    }
toni@521
    90
}