Gwt wrapper
This commit is contained in:
parent
c733c8f7dc
commit
98057d9f73
@ -1,8 +1,10 @@
|
|||||||
package org.oscim.gdx.client;
|
package org.oscim.gdx.client;
|
||||||
|
|
||||||
|
import org.oscim.backend.Log;
|
||||||
import org.oscim.backend.canvas.Bitmap;
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
import com.badlogic.gdx.graphics.GL10;
|
import com.badlogic.gdx.graphics.GL10;
|
||||||
import com.badlogic.gdx.graphics.Pixmap;
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
import com.google.gwt.dom.client.ImageElement;
|
import com.google.gwt.dom.client.ImageElement;
|
||||||
@ -10,28 +12,39 @@ import com.google.gwt.user.client.ui.Image;
|
|||||||
import com.google.gwt.user.client.ui.RootPanel;
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
|
|
||||||
public class GwtBitmap implements Bitmap {
|
public class GwtBitmap implements Bitmap {
|
||||||
Pixmap bitmap;
|
Pixmap pixmap;
|
||||||
Image image;
|
Image image;
|
||||||
|
boolean disposable;
|
||||||
public GwtBitmap(Image data) {
|
public GwtBitmap(Image data) {
|
||||||
ImageElement imageElement = ImageElement.as(data.getElement());
|
ImageElement imageElement = ImageElement.as(data.getElement());
|
||||||
bitmap = new Pixmap(imageElement);
|
pixmap = new Pixmap(imageElement);
|
||||||
image = data;
|
image = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** always argb8888 */
|
||||||
|
public GwtBitmap(int width, int height, int format) {
|
||||||
|
pixmap = new Pixmap(width, height, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GwtBitmap(String fileName) {
|
||||||
|
FileHandle handle = Gdx.files.internal(fileName);
|
||||||
|
pixmap = new Pixmap(handle);
|
||||||
|
disposable = true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getWidth() {
|
public int getWidth() {
|
||||||
return bitmap.getWidth();
|
return pixmap.getWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getHeight() {
|
public int getHeight() {
|
||||||
return bitmap.getHeight();
|
return pixmap.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recycle() {
|
public void recycle() {
|
||||||
bitmap.dispose();
|
pixmap.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -46,14 +59,18 @@ public class GwtBitmap implements Bitmap {
|
|||||||
@Override
|
@Override
|
||||||
public int uploadToTexture(boolean replace) {
|
public int uploadToTexture(boolean replace) {
|
||||||
|
|
||||||
Gdx.gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, bitmap.getGLInternalFormat(), bitmap.getWidth(),
|
Gdx.gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, pixmap.getGLInternalFormat(), pixmap.getWidth(),
|
||||||
bitmap.getHeight(), 0,
|
pixmap.getHeight(), 0,
|
||||||
bitmap.getGLFormat(), bitmap.getGLType(), bitmap.getPixels());
|
pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels());
|
||||||
|
|
||||||
bitmap.dispose();
|
|
||||||
|
if (disposable || image != null){
|
||||||
|
Log.d("", "dispose pixmap " +getWidth() +"/" + getHeight());
|
||||||
|
pixmap.dispose();
|
||||||
|
|
||||||
if (image != null)
|
if (image != null)
|
||||||
RootPanel.get().remove(image);
|
RootPanel.get().remove(image);
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
49
vtm-gdx-html/src/org/oscim/gdx/client/GwtCanvas.java
Normal file
49
vtm-gdx-html/src/org/oscim/gdx/client/GwtCanvas.java
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package org.oscim.gdx.client;
|
||||||
|
|
||||||
|
import org.oscim.backend.Log;
|
||||||
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
|
import org.oscim.backend.canvas.Paint;
|
||||||
|
|
||||||
|
import com.google.gwt.canvas.dom.client.Context2d;
|
||||||
|
|
||||||
|
public class GwtCanvas implements org.oscim.backend.canvas.Canvas {
|
||||||
|
GwtBitmap bitmap;
|
||||||
|
public GwtCanvas() {
|
||||||
|
// canvas comes with gdx pixmap
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBitmap(Bitmap bitmap) {
|
||||||
|
this.bitmap = (GwtBitmap) bitmap;
|
||||||
|
this.bitmap.pixmap.setColor(0);
|
||||||
|
this.bitmap.pixmap.getContext().clearRect(0, 0, this.bitmap.getWidth(), this.bitmap.getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawText(String string, float x, float y, Paint paint) {
|
||||||
|
if (bitmap == null){
|
||||||
|
Log.d("", "no bitmap set on canvas");
|
||||||
|
}
|
||||||
|
|
||||||
|
GwtPaint p = (GwtPaint) paint;
|
||||||
|
Context2d ctx = bitmap.pixmap.getContext();
|
||||||
|
ctx.setFont(p.font);
|
||||||
|
|
||||||
|
if (p.stroke){
|
||||||
|
Log.d("", "stroke " + p.stroke + " " + p.color + " " + p.font + " "+ string);
|
||||||
|
ctx.setStrokeStyle(p.color);
|
||||||
|
ctx.strokeText(string, x, y);
|
||||||
|
} else{
|
||||||
|
Log.d("", "fill " + p.stroke + " " + p.color + " " + p.font + " "+ string);
|
||||||
|
ctx.setFillStyle(p.color);
|
||||||
|
ctx.fillText(string, x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawBitmap(Bitmap bitmap, float x, float y) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -4,17 +4,40 @@ import java.io.InputStream;
|
|||||||
|
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.backend.canvas.Bitmap;
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
import org.oscim.backend.canvas.Canvas;
|
|
||||||
import org.oscim.backend.canvas.Paint;
|
import org.oscim.backend.canvas.Paint;
|
||||||
|
|
||||||
|
import com.google.gwt.canvas.client.Canvas;
|
||||||
|
import com.google.gwt.canvas.dom.client.Context2d;
|
||||||
|
import com.google.gwt.canvas.dom.client.TextMetrics;
|
||||||
|
|
||||||
public class GwtCanvasAdapter extends CanvasAdapter {
|
public class GwtCanvasAdapter extends CanvasAdapter {
|
||||||
|
|
||||||
|
public static final GwtCanvasAdapter INSTANCE = new GwtCanvasAdapter();
|
||||||
|
static final Context2d ctx;
|
||||||
|
static {
|
||||||
|
Canvas canvas = Canvas.createIfSupported();
|
||||||
|
canvas.setCoordinateSpaceWidth(1);
|
||||||
|
canvas.setCoordinateSpaceHeight(1);
|
||||||
|
ctx = canvas.getContext2d();
|
||||||
|
}
|
||||||
|
|
||||||
|
static synchronized float getTextWidth(String text, String font) {
|
||||||
|
ctx.setFont(font);
|
||||||
|
TextMetrics tm = ctx.measureText(text);
|
||||||
|
return (float)tm.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Bitmap decodeBitmap(InputStream in) {
|
public Bitmap decodeBitmap(InputStream in) {
|
||||||
|
//ImageData data = new ImageData();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Bitmap loadBitmapAsset(String fileName) {
|
||||||
|
return new GwtBitmap(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getColor(Color color) {
|
public int getColor(Color color) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
@ -23,8 +46,7 @@ public class GwtCanvasAdapter extends CanvasAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Paint getPaint() {
|
public Paint getPaint() {
|
||||||
// TODO Auto-generated method stub
|
return new GwtPaint();
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -35,14 +57,12 @@ public class GwtCanvasAdapter extends CanvasAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Bitmap getBitmap(int width, int height, int format) {
|
public Bitmap getBitmap(int width, int height, int format) {
|
||||||
// TODO Auto-generated method stub
|
return new GwtBitmap(width, height, format);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Canvas getCanvas() {
|
public org.oscim.backend.canvas.Canvas getCanvas() {
|
||||||
// TODO Auto-generated method stub
|
return new GwtCanvas();
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
100
vtm-gdx-html/src/org/oscim/gdx/client/GwtPaint.java
Normal file
100
vtm-gdx-html/src/org/oscim/gdx/client/GwtPaint.java
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
package org.oscim.gdx.client;
|
||||||
|
|
||||||
|
import org.oscim.backend.canvas.Bitmap;
|
||||||
|
import org.oscim.backend.canvas.Paint;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
|
|
||||||
|
public class GwtPaint implements Paint {
|
||||||
|
|
||||||
|
String color;
|
||||||
|
boolean stroke;
|
||||||
|
|
||||||
|
float strokeWidth;
|
||||||
|
float fontSize;
|
||||||
|
Align mAlign;
|
||||||
|
|
||||||
|
String font = "15px sans-serif";
|
||||||
|
|
||||||
|
//private int cap;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColor() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTextHeight(String text) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTextWidth(String text) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBitmapShader(Bitmap bitmap) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setColor(int color) {
|
||||||
|
float a = ((color >>> 24) & 0xff) / 255f;
|
||||||
|
int r = (color >>> 16) & 0xff;
|
||||||
|
int g = (color >>> 8) & 0xff;
|
||||||
|
int b = (color & 0xff) ;
|
||||||
|
|
||||||
|
this.color = Pixmap.make(r, g, b, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDashPathEffect(float[] strokeDasharray) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStrokeCap(Cap cap) {
|
||||||
|
stroke = true;
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStrokeWidth(float width) {
|
||||||
|
stroke = true;
|
||||||
|
strokeWidth = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStyle(Style style) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTextAlign(Align align) {
|
||||||
|
mAlign = align;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTextSize(float size) {
|
||||||
|
fontSize = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float measureText(String text) {
|
||||||
|
return GwtCanvasAdapter.getTextWidth(text, font);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getFontHeight() {
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getFontDescent() {
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user