javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/ImageData.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 26 Jan 2013 08:47:05 +0100
changeset 592 5e13b1ac2886
child 1787 ea12a3bb4b33
permissions -rw-r--r--
In order to support fields of the same name in subclasses we are now prefixing them with name of the class that defines them. To provide convenient way to access them from generated bytecode and also directly from JavaScript, there is a getter/setter function for each field. It starts with _ followed by the field name. If called with a parameter, it sets the field, with a parameter it just returns it.
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@521
    24
import org.apidesign.bck2brwsr.core.JavaScriptBody;
toni@521
    25
toni@521
    26
/**
toni@521
    27
 *
toni@521
    28
 * @author Anton Epple <toni.epple@eppleton.de>
toni@521
    29
 */
toni@521
    30
public class ImageData {
toni@521
    31
toni@521
    32
    private Object imageData;
toni@521
    33
    private Data data;
toni@521
    34
toni@521
    35
    public ImageData(Object imageData) {
toni@521
    36
        this.imageData = imageData;
toni@521
    37
    }
toni@521
    38
    
toni@521
    39
    public Data getData(){
toni@521
    40
        if (data == null){
toni@521
    41
            data = new Data(getDataImpl(imageData));
toni@521
    42
        }
toni@521
    43
        return data;
toni@521
    44
    }
toni@521
    45
    
toni@521
    46
    @JavaScriptBody(args = {"imageData"}, body = "return imageData.data")
toni@521
    47
    public native Object getDataImpl(Object imageData);
toni@521
    48
toni@521
    49
    public double getWidth() {
toni@521
    50
        return getWidthImpl(imageData);
toni@521
    51
    }
toni@521
    52
toni@521
    53
    @JavaScriptBody(args = {"imageData"}, body = "return imagedata.width;")
toni@521
    54
    private static native double getWidthImpl(Object imageData);
toni@521
    55
toni@521
    56
    public double getHeight() {
toni@521
    57
        return getHeightImpl(imageData);
toni@521
    58
    }
toni@521
    59
toni@521
    60
    @JavaScriptBody(args = {"imageData"}, body = "return imagedata.height;")
toni@521
    61
    private static native double getHeightImpl(Object imageData);
toni@521
    62
toni@521
    63
    Object object() {
toni@521
    64
        return imageData;
toni@521
    65
    }
toni@521
    66
toni@521
    67
    public static class Data {
toni@521
    68
toni@521
    69
        Object data;
toni@521
    70
toni@521
    71
        public Data(Object data) {
toni@521
    72
            this.data = data;
toni@521
    73
        }
toni@521
    74
toni@521
    75
        public int get(int index) {
toni@521
    76
            return getImpl(data, index);
toni@521
    77
        }
toni@521
    78
toni@521
    79
        public void set(int index, int value) {
toni@521
    80
            setImpl(data, index, value);
toni@521
    81
        }
toni@521
    82
toni@521
    83
        @JavaScriptBody(args = {"data", "index", "value"}, body = "data[index]=value;")
toni@521
    84
        private static native void setImpl(Object data, int index, int value);
toni@521
    85
toni@521
    86
        @JavaScriptBody(args = {"imagedata", "index"}, body = "return data[index];")
toni@521
    87
        private static native int getImpl(Object data, int index);
toni@521
    88
    }
toni@521
    89
}