Gwt wrapper
This commit is contained in:
parent
c733c8f7dc
commit
98057d9f73
@ -1,8 +1,10 @@
|
||||
package org.oscim.gdx.client;
|
||||
|
||||
import org.oscim.backend.Log;
|
||||
import org.oscim.backend.canvas.Bitmap;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.GL10;
|
||||
import com.badlogic.gdx.graphics.Pixmap;
|
||||
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;
|
||||
|
||||
public class GwtBitmap implements Bitmap {
|
||||
Pixmap bitmap;
|
||||
Pixmap pixmap;
|
||||
Image image;
|
||||
|
||||
boolean disposable;
|
||||
public GwtBitmap(Image data) {
|
||||
ImageElement imageElement = ImageElement.as(data.getElement());
|
||||
bitmap = new Pixmap(imageElement);
|
||||
pixmap = new Pixmap(imageElement);
|
||||
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
|
||||
public int getWidth() {
|
||||
return bitmap.getWidth();
|
||||
return pixmap.getWidth();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
return bitmap.getHeight();
|
||||
return pixmap.getHeight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recycle() {
|
||||
bitmap.dispose();
|
||||
pixmap.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -46,14 +59,18 @@ public class GwtBitmap implements Bitmap {
|
||||
@Override
|
||||
public int uploadToTexture(boolean replace) {
|
||||
|
||||
Gdx.gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, bitmap.getGLInternalFormat(), bitmap.getWidth(),
|
||||
bitmap.getHeight(), 0,
|
||||
bitmap.getGLFormat(), bitmap.getGLType(), bitmap.getPixels());
|
||||
Gdx.gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, pixmap.getGLInternalFormat(), pixmap.getWidth(),
|
||||
pixmap.getHeight(), 0,
|
||||
pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels());
|
||||
|
||||
bitmap.dispose();
|
||||
|
||||
if (image != null)
|
||||
RootPanel.get().remove(image);
|
||||
if (disposable || image != null){
|
||||
Log.d("", "dispose pixmap " +getWidth() +"/" + getHeight());
|
||||
pixmap.dispose();
|
||||
|
||||
if (image != null)
|
||||
RootPanel.get().remove(image);
|
||||
}
|
||||
|
||||
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.canvas.Bitmap;
|
||||
import org.oscim.backend.canvas.Canvas;
|
||||
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 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
|
||||
public Bitmap decodeBitmap(InputStream in) {
|
||||
|
||||
//ImageData data = new ImageData();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bitmap loadBitmapAsset(String fileName) {
|
||||
return new GwtBitmap(fileName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColor(Color color) {
|
||||
// TODO Auto-generated method stub
|
||||
@ -23,8 +46,7 @@ public class GwtCanvasAdapter extends CanvasAdapter {
|
||||
|
||||
@Override
|
||||
public Paint getPaint() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return new GwtPaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,14 +57,12 @@ public class GwtCanvasAdapter extends CanvasAdapter {
|
||||
|
||||
@Override
|
||||
public Bitmap getBitmap(int width, int height, int format) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return new GwtBitmap(width, height, format);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Canvas getCanvas() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
public org.oscim.backend.canvas.Canvas getCanvas() {
|
||||
return new GwtCanvas();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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