--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
+ <classpathentry combineaccessrules="false" kind="src" path="/gdx"/>\r
+ <classpathentry combineaccessrules="false" kind="src" path="/gdx-awesomium"/>\r
+ <classpathentry combineaccessrules="false" kind="src" path="/gdx-backend-jogl"/>\r
+ <classpathentry kind="lib" path="/dependencies/gdx-natives.jar"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>gdx-awesomium-tests</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+\r
+package com.badlogic.gdx.awesomium;\r
+\r
+import com.badlogic.gdx.ApplicationListener;\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.Input.Keys;\r
+import com.badlogic.gdx.InputAdapter;\r
+import com.badlogic.gdx.backends.jogl.JoglApplication;\r
+import com.badlogic.gdx.graphics.GL10;\r
+import com.badlogic.gdx.graphics.GLCommon;\r
+import com.badlogic.gdx.graphics.Mesh;\r
+import com.badlogic.gdx.graphics.PerspectiveCamera;\r
+import com.badlogic.gdx.graphics.Pixmap.Format;\r
+import com.badlogic.gdx.graphics.Texture;\r
+import com.badlogic.gdx.graphics.Texture.TextureFilter;\r
+import com.badlogic.gdx.graphics.Texture.TextureWrap;\r
+import com.badlogic.gdx.graphics.VertexAttribute;\r
+import com.badlogic.gdx.graphics.VertexAttributes.Usage;\r
+import com.badlogic.gdx.math.Intersector;\r
+import com.badlogic.gdx.math.Matrix4;\r
+import com.badlogic.gdx.math.Plane;\r
+import com.badlogic.gdx.math.Vector3;\r
+import com.badlogic.gdx.math.collision.Ray;\r
+\r
+public class GLTest implements ApplicationListener {\r
+ PerspectiveCamera cam;\r
+ Texture texture;\r
+ Mesh mesh;\r
+ WebCore webCore;\r
+ WebView webView;\r
+ Vector3 yAxis = new Vector3(0, 1, 0);\r
+ float[] triangles = { -1, -1, 0, 1, -1, 0, 1, 1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0 };\r
+ Plane plane = new Plane(new Vector3(0,0,1), new Vector3());\r
+ Matrix4 matrix = new Matrix4();\r
+ Matrix4 inv = new Matrix4();\r
+ float angle = 0;\r
+ float angleInc = 1;\r
+\r
+ @Override public void create () {\r
+ cam = new PerspectiveCamera();\r
+ cam.setFov(67);\r
+ cam.setNear(0.1f);\r
+ cam.setFar(100);\r
+ cam.setViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
+ cam.getPosition().z = 2;\r
+\r
+ mesh = new Mesh(true, 4, 6, new VertexAttribute(Usage.Position, 2, "a_pos"), new VertexAttribute(Usage.TextureCoordinates,\r
+ 2, "a_texCoords"));\r
+\r
+ mesh.setVertices(new float[] {-1, -1, 0, 1, 1, -1, 1, 1, 1, 1, 1, 0, -1, 1, 0, 0});\r
+\r
+ mesh.setIndices(new short[] {0, 1, 2, 2, 3, 0});\r
+ texture = Gdx.graphics.newUnmanagedTexture(512, 512, Format.RGBA8888, TextureFilter.Linear, TextureFilter.Linear,\r
+ TextureWrap.ClampToEdge, TextureWrap.ClampToEdge);\r
+\r
+ webCore = new WebCore(".");\r
+ webView = webCore.createWebView(512, 512);\r
+ webView.focus();\r
+ webView.loadURL("http://www.google.at", "", "", "");\r
+\r
+ Gdx.input.setInputProcessor(new InputAdapter() {\r
+ Vector3 point = new Vector3();\r
+ Vector3 tmp = new Vector3();\r
+\r
+ public void calculatePoint (int x, int y) {\r
+ Ray ray = cam.getPickRay(x, y);\r
+ ray.mul(inv);\r
+ if(!Intersector.intersectRayTriangles(ray, triangles, tmp))\r
+ return;\r
+ point.set(tmp);\r
+ point.x = (point.x + 1) / 2 * 512;\r
+ point.y = 512 - (point.y + 1) / 2 * 512;\r
+ if(point.x < 0) point.x = 0;\r
+ if(point.x > 511) point.x = 511;\r
+ if(point.y < 0) point.y = 0;\r
+ if(point.y > 511) point.y = 511; \r
+ }\r
+\r
+ @Override public boolean touchDown (int x, int y, int pointer) {\r
+ calculatePoint(x, y);\r
+ webView.injectMouseMove((int)point.x, (int)point.y);\r
+ webView.injectMouseDown(MouseButton.Left);\r
+ return false;\r
+ }\r
+\r
+ @Override public boolean touchUp (int x, int y, int pointer) {\r
+ calculatePoint(x, y);\r
+ webView.injectMouseMove((int)point.x, (int)point.y);\r
+ webView.injectMouseUp(MouseButton.Left);\r
+ return false;\r
+ }\r
+\r
+ @Override public boolean touchDragged (int x, int y, int pointer) {\r
+ calculatePoint(x, y);\r
+ webView.injectMouseMove((int)point.x, (int)point.y);\r
+ return false;\r
+ }\r
+\r
+ @Override public boolean keyTyped (char key) {\r
+ webView.injectKeyTyped(key);\r
+ return false;\r
+ }\r
+\r
+ public int translateKeycode(int keycode) {\r
+ int virtualKeycode = 0;\r
+ if(keycode == Keys.KEYCODE_DPAD_LEFT)\r
+ virtualKeycode = Awesomium.AWE_AK_LEFT;\r
+ if(keycode == Keys.KEYCODE_DPAD_RIGHT)\r
+ virtualKeycode = Awesomium.AWE_AK_RIGHT;\r
+ if(keycode == Keys.KEYCODE_DPAD_UP)\r
+ virtualKeycode = Awesomium.AWE_AK_UP;\r
+ if(keycode == Keys.KEYCODE_DPAD_DOWN)\r
+ virtualKeycode = Awesomium.AWE_AK_DOWN;\r
+ if(keycode == Keys.KEYCODE_ENTER)\r
+ virtualKeycode = Awesomium.AWE_AK_RETURN;\r
+ if(keycode == Keys.KEYCODE_DEL) \r
+ virtualKeycode = Awesomium.AWE_AK_BACK;\r
+ if(keycode == Keys.KEYCODE_SHIFT_LEFT || keycode == Keys.KEYCODE_SHIFT_RIGHT)\r
+ virtualKeycode = Awesomium.AWE_AK_SHIFT; \r
+ return virtualKeycode;\r
+ }\r
+ \r
+ private int getModifiers() {\r
+ int modifiers = 0;\r
+ if(Gdx.input.isKeyPressed(Keys.KEYCODE_SHIFT_LEFT) ||\r
+ Gdx.input.isKeyPressed(Keys.KEYCODE_SHIFT_RIGHT))\r
+ modifiers |= Awesomium.AWE_MOD_SHIFT_KEY;\r
+ return modifiers;\r
+ }\r
+ \r
+ @Override\r
+ public boolean keyDown(int keycode) {\r
+ int vkey = translateKeycode(keycode);\r
+ int modifiers = getModifiers();\r
+ if(vkey != 0) { \r
+ webView.injectKeyDown(vkey, modifiers, false);\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ @Override\r
+ public boolean keyUp(int keycode) {\r
+ int vkey = translateKeycode(keycode);\r
+ int modifiers = getModifiers();\r
+ if(vkey != 0)\r
+ webView.injectKeyUp(vkey, modifiers, false);\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+\r
+ @Override public void resume () {\r
+\r
+ }\r
+\r
+ private void update () {\r
+ webCore.update();\r
+ if (webView.isDirty()) {\r
+ RenderBuffer renderBuffer = webView.render();\r
+ if (renderBuffer != null) {\r
+ texture.bind();\r
+ Gdx.gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, 512, 512, 0, 0x80E1, GL10.GL_UNSIGNED_BYTE,\r
+ renderBuffer.getBuffer());\r
+ }\r
+ }\r
+\r
+ angle += Gdx.graphics.getDeltaTime() * 20 * angleInc;\r
+ if(angle > 20) {\r
+ angle = 20;\r
+ angleInc = -1;\r
+ }\r
+ if(angle < -20) {\r
+ angle = -20;\r
+ angleInc = 1;\r
+ }\r
+ matrix.setToRotation(yAxis, angle);\r
+ inv.set(matrix).inv();\r
+ }\r
+\r
+ @Override public void render () {\r
+ update();\r
+\r
+ GLCommon gl = Gdx.gl;\r
+ gl.glClearColor(0.6f, 0.6f, 0.6f, 1);\r
+ gl.glClear(GL10.GL_COLOR_BUFFER_BIT);\r
+ gl.glEnable(GL10.GL_TEXTURE_2D);\r
+ texture.bind();\r
+ cam.setMatrices();\r
+ Gdx.gl10.glLoadMatrixf(matrix.getValues(), 0);\r
+ mesh.render(GL10.GL_TRIANGLES);\r
+ }\r
+\r
+ @Override public void resize (int width, int height) {\r
+\r
+ }\r
+\r
+ @Override public void pause () {\r
+\r
+ }\r
+\r
+ @Override public void dispose () {\r
+ webView.destroy();\r
+ webCore.dispose();\r
+ }\r
+\r
+ public static void main (String[] argv) {\r
+ new JoglApplication(new GLTest(), "Awesomium GL Test", 480, 320, false);\r
+ }\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+public class SimpleTest {\r
+ public static void main(String[] argv) {\r
+ WebCore webCore = new WebCore();\r
+ WebView webView = webCore.createWebView(512, 512);\r
+ \r
+ webView.loadURL("http://www.google.at", "", "", "");\r
+ \r
+ while(webView.isLoadingPage()) {\r
+ webCore.update();\r
+ }\r
+ \r
+ RenderBuffer renderBuffer = webView.render();\r
+ if(renderBuffer != null) {\r
+ renderBuffer.saveToPNG("result.png", true);\r
+ }\r
+ \r
+ webView.destroy();\r
+ webCore.dispose();\r
+ }\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
+ <classpathentry exported="true" kind="lib" path="libs/jna.jar"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>gdx-awesomium</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+import java.io.BufferedOutputStream;\r
+import java.io.File;\r
+import java.io.FileNotFoundException;\r
+import java.io.FileOutputStream;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.io.OutputStream;\r
+import java.nio.ByteBuffer;\r
+import java.nio.CharBuffer;\r
+\r
+import com.sun.jna.Library;\r
+import com.sun.jna.Native;\r
+import com.sun.jna.Pointer;\r
+import com.sun.jna.WString;\r
+import com.sun.jna.ptr.PointerByReference;\r
+\r
+public interface Awesomium extends Library {\r
+ Awesomium INSTANCE = AwesomiumFactory.createInstance();\r
+ \r
+ public static final int AWE_AK_ADD = 107;\r
+ public static final int AWE_CURSOR_NORTH_WEST_RESIZE = 9;\r
+ public static final int AWE_AK_MEDIA_STOP = 178;\r
+ public static final int AWE_AK_NUMLOCK = 144;\r
+ public static final int AWE_AK_OEM_1 = 186;\r
+ public static final int AWE_AK_PACKET = 231;\r
+ public static final int AWE_AK_OEM_102 = 226;\r
+ public static final int AWE_AK_OEM_2 = 191;\r
+ public static final int AWE_AK_OEM_3 = 192;\r
+ public static final int AWE_AK_MEDIA_LAUNCH_APP1 = 182;\r
+ public static final int AWE_AK_OEM_4 = 219;\r
+ public static final int AWE_AK_MEDIA_LAUNCH_APP2 = 183;\r
+ public static final int AWE_AK_OEM_PLUS = 187;\r
+ public static final int AWE_CURSOR_HAND = 2;\r
+ public static final int AWE_AK_ZOOM = 251;\r
+ public static final int AWE_AK_OEM_5 = 220;\r
+ public static final int AWE_AK_APPS = 93;\r
+ public static final int AWE_AK_OEM_6 = 221;\r
+ public static final int AWE_AK_MENU = 18;\r
+ public static final int AWE_AK_OEM_7 = 222;\r
+ public static final int AWE_AK_OEM_8 = 223;\r
+ public static final int AWE_UFM_NONE = 0;\r
+ public static final int AWE_CURSOR_NORTH_WEST_SOUTH_EAST_RESIZE = 17;\r
+ public static final int AWE_MOD_SHIFT_KEY = (1 << 0);\r
+ public static final int AWE_AK_INSERT = 45;\r
+ public static final int AWE_AK_MULTIPLY = 106;\r
+ public static final int AWE_CURSOR_VERTICAL_TEXT = 30;\r
+ public static final int AWE_AK_RCONTROL = 163;\r
+ public static final int AWE_CURSOR_EAST_WEST_RESIZE = 15;\r
+ public static final int AWE_AK_OEM_CLEAR = 254;\r
+ public static final int AWE_AK_SPACE = 32;\r
+ public static final int AWE_AK_KANA = 21;\r
+ public static final int AWE_CURSOR_NONE = 37;\r
+ public static final int AWE_CURSOR_POINTER = 0;\r
+ public static final int AWE_AK_CONVERT = 28;\r
+ public static final int AWE_AK_KANJI = 25;\r
+ public static final int AWE_CURSOR_NORTH_EAST_PANNING = 23;\r
+ public static final int AWE_CURSOR_HELP = 5;\r
+ public static final int AWE_AK_CONTROL = 17;\r
+ public static final int AWE_AK_HANJA = 25;\r
+ public static final int AWE_CURSOR_MIDDLE_PANNING = 20;\r
+ public static final int AWE_CURSOR_COLUMN_RESIZE = 18;\r
+ public static final int AWE_CURSOR_COPY = 36;\r
+ public static final int AWE_AK_MEDIA_PREV_TRACK = 177;\r
+ public static final int AWE_CURSOR_CONTEXT_MENU = 32;\r
+ public static final int AWE_AK_MEDIA_LAUNCH_MAIL = 180;\r
+ public static final int AWE_AK_BROWSER_BACK = 166;\r
+ public static final int AWE_CURSOR_ROW_RESIZE = 19;\r
+ public static final int AWE_CURSOR_NORTH_RESIZE = 7;\r
+ public static final int AWE_CURSOR_CUSTOM = 41;\r
+ public static final int AWE_AK_SEPARATOR = 108;\r
+ public static final int AWE_CURSOR_ZOOM_OUT = 40;\r
+ public static final int AWE_AK_OEM_PERIOD = 190;\r
+ public static final int AWE_AK_SNAPSHOT = 44;\r
+ public static final int AWE_CURSOR_SOUTH_EAST_RESIZE = 11;\r
+ public static final int AWE_AK_SHIFT = 16;\r
+ public static final int AWE_AK_OEM_COMMA = 188;\r
+ public static final int AWE_AK_PAUSE = 19;\r
+ public static final int AWE_AK_UNKNOWN = 0;\r
+ public static final int AWE_CURSOR_ZOOM_IN = 39;\r
+ public static final int AWE_RIGHT_BUTTON = 2;\r
+ public static final int AWE_AK_ESCAPE = 27;\r
+ public static final int AWE_TYPE_KEY_UP = 2;\r
+ public static final int AWE_AK_SELECT = 41;\r
+ public static final int AWE_AK_OEM_MINUS = 189;\r
+ public static final int AWE_CURSOR_SOUTH_WEST_RESIZE = 12;\r
+ public static final int AWE_MOD_META_KEY = (1 << 3);\r
+ public static final int AWE_AK_RETURN = 13;\r
+ public static final int AWE_UFM_WHITELIST = 2;\r
+ public static final int AWE_AK_RIGHT = 39;\r
+ public static final int AWE_AK_DIVIDE = 111;\r
+ public static final int AWE_CURSOR_MOVE = 29;\r
+ public static final int AWE_AK_HOME = 36;\r
+ public static final int AWE_AK_EXECUTE = 43;\r
+ public static final int AWE_CURSOR_IBEAM = 3;\r
+ public static final int AWE_CURSOR_SOUTH_PANNIN = 25;\r
+ public static final int AWE_CURSOR_WAIT = 4;\r
+ public static final int AWE_CURSOR_PROGRESS = 34;\r
+ public static final int AWE_AK_MODECHANGE = 31;\r
+ public static final int AWE_AK_MEDIA_NEXT_TRACK = 176;\r
+ public static final int AWE_MOD_CONTROL_KEY = (1 << 1);\r
+ public static final int AWE_CURSOR_WEST_RESIZE = 13;\r
+ public static final int AWE_MIDDLE_BUTTON = 3;\r
+ public static final int AWE_CURSOR_NO_DROP = 35;\r
+ public static final int AWE_AK_PLAY = 250;\r
+ public static final int AWE_AK_BROWSER_HOME = 172;\r
+ public static final int AWE_AK_NONAME = 252;\r
+ public static final int AWE_AK_UP = 38;\r
+ public static final int AWE_AK_LWIN = 91;\r
+ public static final int AWE_AK_CLEAR = 12;\r
+ public static final int AWE_AK_LEFT = 37;\r
+ public static final int AWE_AK_RWIN = 92;\r
+ public static final int AWE_AK_CRSEL = 247;\r
+ public static final int AWE_AK_DELETE = 46;\r
+ public static final int AWE_AK_MEDIA_PLAY_PAUSE = 179;\r
+ public static final int AWE_AK_TAB = 9;\r
+ public static final int AWE_MOD_IS_AUTOREPEAT = (1 << 5);\r
+ public static final int AWE_AK_VOLUME_DOWN = 174;\r
+ public static final int AWE_AK_BROWSER_REFRESH = 168;\r
+ public static final int AWE_CURSOR_CROSS = 1;\r
+ public static final int AWE_AK_LCONTROL = 162;\r
+ public static final int AWE_TYPE_CHAR = 3;\r
+ public static final int AWE_AK_DECIMAL = 110;\r
+ public static final int AWE_AK_CAPITAL = 20;\r
+ public static final int AWE_CURSOR_EAST_PANNING = 21;\r
+ public static final int AWE_AK_BROWSER_SEARCH = 170;\r
+ public static final int AWE_CURSOR_SOUTH_WEST_PANNING = 27;\r
+ public static final int AWE_CURSOR_ALIAS = 33;\r
+ public static final int AWE_AK_PA1 = 253;\r
+ public static final int AWE_AK_RSHIFT = 161;\r
+ public static final int AWE_MOD_ALT_KEY = (1 << 2);\r
+ public static final int AWE_MOD_IS_KEYPAD = (1 << 4);\r
+ public static final int AWE_AK_HANGUL = 21;\r
+ public static final int AWE_AK_BROWSER_FAVORITES = 171;\r
+ public static final int AWE_AK_SUBTRACT = 109;\r
+ public static final int AWE_AK_LMENU = 164;\r
+ public static final int AWE_AK_LSHIFT = 160;\r
+ public static final int AWE_CURSOR_SOUTH_RESIZE = 10;\r
+ public static final int AWE_CURSOR_CELL = 31;\r
+ public static final int AWE_AK_L = 76;\r
+ public static final int AWE_AK_K = 75;\r
+ public static final int AWE_AK_J = 74;\r
+ public static final int AWE_AK_I = 73;\r
+ public static final int AWE_AK_H = 72;\r
+ public static final int AWE_AK_G = 71;\r
+ public static final int AWE_AK_F = 70;\r
+ public static final int AWE_AK_E = 69;\r
+ public static final int AWE_AK_T = 84;\r
+ public static final int AWE_AK_RMENU = 165;\r
+ public static final int AWE_AK_S = 83;\r
+ public static final int AWE_AK_R = 82;\r
+ public static final int AWE_AK_Q = 81;\r
+ public static final int AWE_AK_P = 80;\r
+ public static final int AWE_AK_O = 79;\r
+ public static final int AWE_AK_N = 78;\r
+ public static final int AWE_CURSOR_NORTH_SOUTH_RESIZE = 14;\r
+ public static final int AWE_AK_M = 77;\r
+ public static final int AWE_CURSOR_NORTH_WEST_PANNING = 24;\r
+ public static final int AWE_AK_VOLUME_MUTE = 173;\r
+ public static final int AWE_AK_Y = 89;\r
+ public static final int AWE_AK_Z = 90;\r
+ public static final int AWE_CURSOR_EAST_RESIZE = 6;\r
+ public static final int AWE_AK_W = 87;\r
+ public static final int AWE_AK_X = 88;\r
+ public static final int AWE_AK_U = 85;\r
+ public static final int AWE_AK_V = 86;\r
+ public static final int AWE_CURSOR_SOUTH_EAST_PANNING = 26;\r
+ public static final int AWE_AK_END = 35;\r
+ public static final int AWE_AK_2 = 50;\r
+ public static final int AWE_AK_1 = 49;\r
+ public static final int AWE_AK_JUNJA = 23;\r
+ public static final int AWE_AK_BACK = 8;\r
+ public static final int AWE_AK_4 = 52;\r
+ public static final int AWE_AK_EREOF = 249;\r
+ public static final int AWE_AK_3 = 51;\r
+ public static final int AWE_AK_0 = 48;\r
+ public static final int AWE_AK_9 = 57;\r
+ public static final int AWE_AK_ATTN = 246;\r
+ public static final int AWE_CURSOR_NORTH_EAST_SOUTH_WEST_RESIZE = 16;\r
+ public static final int AWE_AK_PRIOR = 33;\r
+ public static final int AWE_AK_5 = 53;\r
+ public static final int AWE_AK_6 = 54;\r
+ public static final int AWE_AK_DOWN = 40;\r
+ public static final int AWE_AK_7 = 55;\r
+ public static final int AWE_AK_8 = 56;\r
+ public static final int AWE_TYPE_KEY_DOWN = 1;\r
+ public static final int AWE_AK_A = 65;\r
+ public static final int AWE_AK_B = 66;\r
+ public static final int AWE_AK_C = 67;\r
+ public static final int AWE_AK_SCROLL = 145;\r
+ public static final int AWE_AK_D = 68;\r
+ public static final int AWE_CURSOR_NOT_ALLOWED = 38;\r
+ public static final int AWE_UFM_BLACKLIST = 1;\r
+ public static final int AWE_AK_NEXT = 34;\r
+ public static final int AWE_AK_F21 = 132;\r
+ public static final int AWE_AK_BROWSER_FORWARD = 167;\r
+ public static final int AWE_AK_F22 = 133;\r
+ public static final int AWE_AK_F23 = 134;\r
+ public static final int AWE_AK_F24 = 135;\r
+ public static final int AWE_AK_BROWSER_STOP = 169;\r
+ public static final int AWE_AK_NUMPAD2 = 98;\r
+ public static final int AWE_AK_PRINT = 42;\r
+ public static final int AWE_AK_NUMPAD3 = 99;\r
+ public static final int AWE_AK_NUMPAD4 = 100;\r
+ public static final int AWE_AK_NUMPAD5 = 101;\r
+ public static final int AWE_AK_FINAL = 24;\r
+ public static final int AWE_AK_NUMPAD6 = 102;\r
+ public static final int AWE_AK_PROCESSKEY = 229;\r
+ public static final int AWE_CURSOR_NORTH_PANNING = 22;\r
+ public static final int AWE_LEFT_BUTTON = 1;\r
+ public static final int AWE_AK_NUMPAD7 = 103;\r
+ public static final int AWE_AK_NUMPAD8 = 104;\r
+ public static final int AWE_AK_NUMPAD9 = 105;\r
+ public static final int AWE_AK_NUMPAD1 = 97;\r
+ public static final int AWE_AK_VOLUME_UP = 175;\r
+ public static final int AWE_AK_NUMPAD0 = 96;\r
+ public static final int AWE_AK_F20 = 131;\r
+ public static final int AWE_AK_NONCONVERT = 29;\r
+ public static final int AWE_AK_ACCEPT = 30;\r
+ public static final int AWE_CURSOR_WEST_PANNING = 28;\r
+ public static final int AWE_AK_MEDIA_LAUNCH_MEDIA_SELECT = 181;\r
+ public static final int AWE_AK_F2 = 113;\r
+ public static final int AWE_AK_F16 = 127;\r
+ public static final int AWE_AK_F1 = 112;\r
+ public static final int AWE_AK_F17 = 128;\r
+ public static final int AWE_AK_EXSEL = 248;\r
+ public static final int AWE_AK_F4 = 115;\r
+ public static final int AWE_AK_F14 = 125;\r
+ public static final int AWE_AK_F3 = 114;\r
+ public static final int AWE_AK_F15 = 126;\r
+ public static final int AWE_AK_F6 = 117;\r
+ public static final int AWE_AK_F12 = 123;\r
+ public static final int AWE_AK_F5 = 116;\r
+ public static final int AWE_AK_F13 = 124;\r
+ public static final int AWE_AK_F8 = 119;\r
+ public static final int AWE_AK_F10 = 121;\r
+ public static final int AWE_AK_F7 = 118;\r
+ public static final int AWE_AK_F11 = 122;\r
+ public static final int AWE_CURSOR_NORTH_EAST_RESIZE = 8;\r
+ public static final int AWE_AK_F9 = 120;\r
+ public static final int AWE_AK_SLEEP = 95;\r
+ public static final int AWE_AK_F18 = 129;\r
+ public static final int AWE_AK_HELP = 47;\r
+ public static final int AWE_AK_F19 = 130;\r
+ Pointer awe_WebCore_new(); \r
+ Pointer awe_WebCore_newWithPlugins(WString pluginPath);\r
+ void awe_WebCore_delete(Pointer webCore);\r
+ void awe_WebCore_setBaseDirectory(Pointer webCore, String baseDirectory);\r
+ void awe_WebCore_setBaseDirectoryW(Pointer webCore, WString baseDirectory);\r
+ Pointer awe_WebCore_createWebView(Pointer webCore, int width, int height);\r
+ void awe_WebCore_setCustomResponsePage(Pointer webCore, int statusCode, WString filePath);\r
+ void awe_WebCore_update(Pointer webCore);\r
+ WString awe_WebCore_getBaseDirectory(Pointer webCore);\r
+ int awe_WebCore_arePluginsEnabled(Pointer webCore);\r
+ void awe_WebCore_clearCache(Pointer webCore);\r
+ void awe_WebCore_clearCookies(Pointer webCore); \r
+ int awe_WebCore_setCookie(Pointer webCore, String url, String cookieString, int isHTTPOnly, int forceSessionCookie); \r
+ Pointer awe_WebCore_getCookies(Pointer webCore, String url, int excludeHTTPOnly); \r
+ void awe_WebCore_deleteCookie(Pointer webCore, String url, String cookieName);\r
+ void awe_WebView_destroy(Pointer webView);\r
+ void awe_WebView_setListener(Pointer webView, WebViewListenerC webViewListener);\r
+ // FIXME WebViewListenerC awe_WebView_getListener(Pointer webView);\r
+ // FIXME PointerByReference awe_WebView_getResourceInterceptor(Pointer webView); \r
+ void awe_WebView_loadURL(Pointer webView, String url, WString frameName, String username, String password); \r
+ void awe_WebView_loadURLW(Pointer webView, WString url, WString frameName, String username, String password); \r
+ void awe_WebView_loadHTML(Pointer webView, String html, WString frameName); \r
+ void awe_WebView_loadHTMLW(Pointer webView, WString html, WString frameName); \r
+ void awe_WebView_loadFile(Pointer webView, String file, WString frameName);\r
+ void awe_WebView_goToHistoryOffset(Pointer webView, int offset);\r
+ void awe_WebView_stop(Pointer webView);\r
+ void awe_WebView_reload(Pointer webView); \r
+ void awe_WebView_executeJavascript(Pointer webView, String javascript, WString frameName); \r
+ void awe_WebView_executeJavascriptW(Pointer webView, WString javascript, WString frameName); \r
+ Pointer awe_WebView_executeJavascriptWithResult(Pointer webView, String javascript, WString frameName); \r
+ Pointer awe_WebView_executeJavascriptWithResultTimeout(Pointer webView, String javascript, WString frameName, int timeoutMS);\r
+ Pointer awe_WebView_executeJavascriptWithResultW(Pointer webView, WString javascript, WString frameName);\r
+ Pointer awe_WebView_executeJavascriptWithResultTimeoutW(Pointer webView, WString javascript, WString frameName, int timeoutMS);\r
+ void awe_WebView_callJavascriptFunction(Pointer webView, WString object, WString function, Pointer args, WString frameName);\r
+ void awe_WebView_createObject(Pointer webView, WString objectName);\r
+ void awe_WebView_destroyObject(Pointer webView, WString objectName);\r
+ void awe_WebView_setObjectProperty(Pointer webView, WString objectName, WString propName, Pointer value);\r
+ void awe_WebView_setObjectCallback(Pointer webView, WString objectName, WString callbackName);\r
+ int awe_WebView_isLoadingPage(Pointer webView);\r
+ int awe_WebView_isDirty(Pointer webView);\r
+ // FIXME void awe_WebView_getDirtyBounds(Pointer webView, RectC rect);\r
+ Pointer awe_WebView_render(Pointer webView);\r
+ void awe_WebView_pauseRendering(Pointer webView);\r
+ void awe_WebView_resumeRendering(Pointer webView);\r
+ void awe_WebView_injectMouseMove(Pointer webView, int x, int y);\r
+ void awe_WebView_injectMouseDown(Pointer webView, int mouseButton);\r
+ void awe_WebView_injectMouseUp(Pointer webView, int mouseButton);\r
+ void awe_WebView_injectMouseWheel(Pointer webView, int scrollAmount);\r
+ // FIXME void awe_WebView_injectKeyboardEvent(Pointer webView, WebKeyboardEventC keyboardEvent);\r
+ void awe_WebView_injectKeyboardEventArgs(Pointer webView, int type, int modifiers, int virtualKeyCode, int nativeKeyCode, ByteBuffer keyIdentifier, CharBuffer text, CharBuffer unmodifiedText, int isSystemKey);\r
+ void awe_WebView_injectKeyboardEventCharacter(Pointer webView, int character);\r
+ void awe_WebView_cut(Pointer webView);\r
+ void awe_WebView_copy(Pointer webView);\r
+ void awe_WebView_paste(Pointer webView);\r
+ void awe_WebView_selectAll(Pointer webView);\r
+ void awe_WebView_setZoom(Pointer webView, int zoomPercent);\r
+ void awe_WebView_resetZoom(Pointer webView);\r
+ int awe_WebView_resize(Pointer webView, int width, int height, int waitForRepaint, int repaintTimeoutMS);\r
+ int awe_WebView_isResizing(Pointer webView);\r
+ void awe_WebView_unfocus(Pointer webView);\r
+ void awe_WebView_focus(Pointer webView);\r
+ void awe_WebView_setTransparent(Pointer webView, int isTransparent);\r
+ void awe_WebView_setURLFilteringMode(Pointer webView, int mode);\r
+ void awe_WebView_addURLFilter(Pointer webView, WString filter);\r
+ void awe_WebView_clearAllURLFilters(Pointer webView);\r
+ void awe_getKeyIdentifierFromVirtualKeyCode(int keyCode, PointerByReference identifier);\r
+ Pointer awe_RenderBuffer_new(int width, int height); \r
+ Pointer awe_RenderBuffer_newFromBuffer(ByteBuffer buffer, int width, int height, int rowSpan, int autoDeleteBuffer);\r
+ void awe_RenderBuffer_delete(Pointer renderBuffer);\r
+ void awe_RenderBuffer_copyTo(Pointer renderBuffer, ByteBuffer destBuffer, int destRowSpan, int destDepth, int convertToRGBA);\r
+ void awe_RenderBuffer_saveToPNG(Pointer renderBuffer, WString filePath, int preserveTransparency);\r
+ void awe_RenderBuffer_saveToJPEG(Pointer renderBuffer, WString filePath, int quality);\r
+ void awe_RenderBuffer_reserve(Pointer renderBuffer, int width, int height);\r
+ void awe_RenderBuffer_copyFrom(Pointer renderBuffer, ByteBuffer srcBuffer, int srcRowSpan);\r
+ void awe_RenderBuffer_copyArea(Pointer renderBuffer, ByteBuffer srcBuffer, int srcRowSpan, int srcX, int srcY, int srcWidth, int srcHeight, int forceOpaque);\r
+ void awe_RenderBuffer_copyArea2(Pointer renderBuffer, ByteBuffer srcBuffer, int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight);\r
+ void awe_RenderBuffer_scrollArea(Pointer renderBuffer, int dx, int dy, int clipX, int clipY, int clipWidth, int clipHeight);\r
+ Pointer awe_RenderBuffer_buffer(Pointer renderBuffer);\r
+ int awe_RenderBuffer_width(Pointer renderBuffer);\r
+ int awe_RenderBuffer_height(Pointer renderBuffer);\r
+ int awe_RenderBuffer_rowSpan(Pointer renderBuffer);\r
+ int awe_RenderBuffer_ownsBuffer(Pointer renderBuffer);\r
+ Pointer awe_JSValue_newNull();\r
+ Pointer awe_JSValue_newBool(int value);\r
+ Pointer awe_JSValue_newInt(int value);\r
+ Pointer awe_JSValue_newDouble(double value);\r
+ Pointer awe_JSValue_newString(String value);\r
+ Pointer awe_JSValue_newWString(WString value);\r
+ Pointer awe_JSValue_newObject(Pointer value);\r
+ Pointer awe_JSValue_newArray(Pointer value);\r
+ void awe_JSValue_delete(Pointer val);\r
+ int awe_JSValue_isBoolean(Pointer val);\r
+ int awe_JSValue_isInteger(Pointer val);\r
+ int awe_JSValue_isDouble(Pointer val);\r
+ int awe_JSValue_isNumber(Pointer val);\r
+ int awe_JSValue_isString(Pointer val);\r
+ int awe_JSValue_isArray(Pointer val);\r
+ int awe_JSValue_isObject(Pointer val);\r
+ int awe_JSValue_isNull(Pointer val);\r
+ // FIXME CharByReference awe_JSValue_toString(Pointer val);\r
+ int awe_JSValue_toInteger(Pointer val);\r
+ double awe_JSValue_toDouble(Pointer val);\r
+ int awe_JSValue_toBoolean(Pointer val);\r
+ Pointer awe_JSValue_getArray(Pointer val);\r
+ Pointer awe_JSValue_getObject(Pointer val);\r
+ Pointer awe_Object_new();\r
+ void awe_Object_delete(Pointer obj);\r
+ void awe_Object_put(Pointer obj, CharBuffer key, Pointer val);\r
+ Pointer awe_Object_get(Pointer obj, CharBuffer key);\r
+ int awe_Object_contains(Pointer obj, CharBuffer key);\r
+ Pointer awe_Array_new();\r
+ void awe_Array_delete(Pointer arr);\r
+ int awe_Array_size(Pointer arr);\r
+ Pointer awe_Array_get(Pointer arr, int index);\r
+ void awe_Array_add(Pointer arr, Pointer val);\r
+ Pointer awe_JSArguments_new();\r
+ void awe_JSArguments_delete(Pointer args);\r
+ int awe_JSArguments_size(Pointer args);\r
+ Pointer awe_JSArguments_get(Pointer args, int index);\r
+ void awe_JSArguments_add(Pointer args, Pointer val);\r
+ \r
+ public class AwesomiumFactory {\r
+ static Awesomium createInstance() {\r
+ try {\r
+ unpackNatives();\r
+ } catch(FileNotFoundException e) {\r
+ System.out.println( "Couldn't write natives:" + e.getMessage());\r
+ }\r
+ \r
+ return (Awesomium)Native.loadLibrary("awesomiumc", Awesomium.class);\r
+ }\r
+ \r
+ private static void unpackNatives() throws FileNotFoundException {\r
+ unpackFile("Awesomium.dll", ".");\r
+ unpackFile("awesomiumc.dll", ".");\r
+ unpackFile("AwesomiumProcess.exe", ".");\r
+ unpackFile("icudt42.dll", ".");\r
+ if(new File("locales").exists() || new File("locales").mkdirs()) {\r
+ unpackFile("locales/en-US.dll", ".");\r
+ } else {\r
+ System.out.println("couldn't create 'locales' folder");\r
+ }\r
+ }\r
+ \r
+ private static void unpackFile(String source, String dst) throws FileNotFoundException {\r
+ InputStream in = null;\r
+ OutputStream out = null;\r
+ \r
+ try {\r
+ in = Awesomium.class.getResourceAsStream("/com/badlogic/gdx/awesomium/natives/" + source);\r
+ out = new BufferedOutputStream(new FileOutputStream(dst + "/" + source));\r
+ \r
+ byte[] bytes = new byte[1024 * 4];\r
+ while (true) {\r
+ int read_bytes = in.read(bytes);\r
+ if (read_bytes == -1) break;\r
+ out.write(bytes, 0, read_bytes);\r
+ } \r
+ } catch(IOException e) {\r
+ System.out.println( "Couldn't unpack native: " + source + ", " + e.getMessage());\r
+ } finally {\r
+ if(out != null) try { out.close(); } catch (IOException e) {}\r
+ if(in != null) try { in.close(); } catch (IOException e) {} \r
+ }\r
+ } \r
+ } \r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+public class JSArguments {\r
+\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+public class JSValue {\r
+\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+public enum MouseButton {\r
+ Left,\r
+ Middle,\r
+ Right\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+public class Rect {\r
+\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+import java.nio.ByteBuffer;\r
+\r
+import com.sun.jna.Pointer;\r
+import com.sun.jna.WString;\r
+\r
+public class RenderBuffer {\r
+ Pointer renderBuffer;\r
+ \r
+ RenderBuffer(Pointer ptr) {\r
+ this.renderBuffer = ptr;\r
+ }\r
+ \r
+ public RenderBuffer(int width, int height) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_new(width, height);\r
+ }\r
+ \r
+ public void dispose() {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_delete(renderBuffer);\r
+ }\r
+ \r
+ public void copyTo(ByteBuffer destBuffer, int destRowSpan, int destDepth, boolean convertToRGBA) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_copyTo(renderBuffer, destBuffer, destRowSpan, destDepth, convertToRGBA?-1:0);\r
+ }\r
+ \r
+ public void saveToPNG(String filePath, boolean preserveTransparency) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_saveToPNG(renderBuffer, new WString(filePath), preserveTransparency?-1:0);\r
+ }\r
+ \r
+ public void saveToJPEG(String filePath, int quality) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_saveToJPEG(renderBuffer, new WString(filePath), quality);\r
+ }\r
+ \r
+ public void reserve(int width, int height) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_reserve(renderBuffer, width, height);\r
+ }\r
+ \r
+ public void copyFrom(ByteBuffer srcBuffer, int srcRowSpan) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_copyFrom(renderBuffer, srcBuffer, srcRowSpan);\r
+ }\r
+ \r
+ public void copyArea(ByteBuffer srcBuffer, int srcRowSpan, int srcX, int srcY, int srcWidth, int srcHeight, boolean forceOpaque) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_copyArea(renderBuffer, srcBuffer, srcRowSpan, srcX, srcY, srcWidth, srcHeight, forceOpaque?-1:0);\r
+ }\r
+ \r
+ public void copyArea(ByteBuffer srcBuffer, int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_copyArea2(renderBuffer, srcBuffer, srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight);\r
+ }\r
+ \r
+ public void scrollArea(int dx, int dy, int clipX, int clipY, int clipWidth, int clipHeight) {\r
+ Awesomium.INSTANCE.awe_RenderBuffer_scrollArea(renderBuffer, dx, dy, clipX, clipY, clipWidth, clipHeight);\r
+ }\r
+ \r
+ public ByteBuffer getBuffer() { \r
+ int height = Awesomium.INSTANCE.awe_RenderBuffer_height(renderBuffer);\r
+ int rowSpan = Awesomium.INSTANCE.awe_RenderBuffer_rowSpan(renderBuffer);\r
+ return Awesomium.INSTANCE.awe_RenderBuffer_buffer(renderBuffer).getByteBuffer(0, height * rowSpan);\r
+ }\r
+ \r
+ public int getWidth() {\r
+ return Awesomium.INSTANCE.awe_RenderBuffer_width(renderBuffer);\r
+ }\r
+ \r
+ public int getHeight() {\r
+ return Awesomium.INSTANCE.awe_RenderBuffer_height(renderBuffer);\r
+ }\r
+ \r
+ public int getRowSpan() {\r
+ return Awesomium.INSTANCE.awe_RenderBuffer_rowSpan(renderBuffer);\r
+ }\r
+ \r
+ public boolean ownsBuffer() {\r
+ return Awesomium.INSTANCE.awe_RenderBuffer_ownsBuffer(renderBuffer)!=0?true:false;\r
+ }\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+public enum URLFilteringMode {\r
+ None,\r
+ Blacklist,\r
+ Whitelist\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+import com.sun.jna.Pointer;\r
+import com.sun.jna.WString;\r
+\r
+public class WebCore {\r
+ final Pointer webCore;\r
+ \r
+ public WebCore() {\r
+ webCore = Awesomium.INSTANCE.awe_WebCore_new();\r
+ }\r
+ \r
+ public WebCore(String pluginPath) {\r
+ webCore = Awesomium.INSTANCE.awe_WebCore_newWithPlugins(new WString(pluginPath));\r
+ } \r
+ \r
+ public void dispose() {\r
+ Awesomium.INSTANCE.awe_WebCore_delete(webCore);\r
+ }\r
+ \r
+ public void setBaseDirectory(String baseDirectory) {\r
+ Awesomium.INSTANCE.awe_WebCore_setBaseDirectory(webCore, baseDirectory);\r
+ }\r
+ \r
+ public WebView createWebView(int width, int height) {\r
+ Pointer ptr = Awesomium.INSTANCE.awe_WebCore_createWebView(webCore, width, height);\r
+ return new WebView(ptr);\r
+ }\r
+ \r
+ public void setCustomResponsePage(int statusCode, String filePath) {\r
+ Awesomium.INSTANCE.awe_WebCore_setCustomResponsePage(webCore, statusCode, new WString(filePath));\r
+ }\r
+ \r
+ public void update() {\r
+ Awesomium.INSTANCE.awe_WebCore_update(webCore);\r
+ }\r
+ \r
+ public String getBaseDirectory() {\r
+ return new String(Awesomium.INSTANCE.awe_WebCore_getBaseDirectory(webCore).toString());\r
+ }\r
+ \r
+ public boolean arePluginsEnabled() {\r
+ return Awesomium.INSTANCE.awe_WebCore_arePluginsEnabled(webCore) != 0;\r
+ }\r
+ \r
+ public void clearCache() {\r
+ Awesomium.INSTANCE.awe_WebCore_clearCache(webCore);\r
+ }\r
+ \r
+ public void clearCookies() {\r
+ Awesomium.INSTANCE.awe_WebCore_clearCookies(webCore);\r
+ }\r
+ \r
+ public void setCookie(String url, String cookieString, boolean isHTTPOnly, boolean forceSessionCookie) {\r
+ Awesomium.INSTANCE.awe_WebCore_setCookie(webCore, url, cookieString, isHTTPOnly?-1:0, forceSessionCookie?-1:0);\r
+ }\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+import java.nio.ByteBuffer;\r
+import java.nio.ByteOrder;\r
+import java.nio.CharBuffer;\r
+\r
+import com.badlogic.gdx.awesomium.WebViewListenerC.WebViewListenerCStub;\r
+import com.sun.jna.Memory;\r
+import com.sun.jna.Pointer;\r
+import com.sun.jna.WString;\r
+import com.sun.jna.ptr.PointerByReference;\r
+\r
+public class WebView {\r
+ Pointer webView;\r
+ CharBuffer text;\r
+ CharBuffer unmodifiedText;\r
+ PointerByReference identifierPointer;\r
+ Memory identifier;\r
+ ByteBuffer identifierBuffer;\r
+ \r
+ WebView(Pointer ptr) {\r
+ this.webView = ptr;\r
+ ByteBuffer textBuffer = ByteBuffer.allocateDirect(20);\r
+ ByteBuffer unmodifiedTextBuffer = ByteBuffer.allocateDirect(20);\r
+ identifier = new Memory(20); \r
+ identifierPointer = new PointerByReference(identifier);\r
+ identifierBuffer = identifier.getByteBuffer(0, 20);\r
+ \r
+ textBuffer.order(ByteOrder.nativeOrder());\r
+ unmodifiedTextBuffer.order(ByteOrder.nativeOrder()); \r
+ \r
+ text = textBuffer.asCharBuffer();\r
+ unmodifiedText = unmodifiedTextBuffer.asCharBuffer();\r
+ }\r
+ \r
+ public void destroy() {\r
+ Awesomium.INSTANCE.awe_WebView_destroy(webView);\r
+ }\r
+ \r
+ public void setListener(WebViewListener listener) {\r
+ WebViewListenerC listenerC = new WebViewListenerC(new WebViewListenerCStub(listener));\r
+ Awesomium.INSTANCE.awe_WebView_setListener(webView, listenerC);\r
+ }\r
+ \r
+ public void loadURL(String url, String frameName, String username, String password) {\r
+ Awesomium.INSTANCE.awe_WebView_loadURLW(webView, new WString(url), new WString(frameName), username, password);\r
+ }\r
+ \r
+ public void loadHTML(String html, String frameName) {\r
+ Awesomium.INSTANCE.awe_WebView_loadHTMLW(webView, new WString(html), new WString(frameName));\r
+ }\r
+ \r
+ public void loadFile(String file, String frameName) {\r
+ Awesomium.INSTANCE.awe_WebView_loadFile(webView, file, new WString(frameName));\r
+ }\r
+ \r
+ public void goToHistoryOffset(int offset) {\r
+ Awesomium.INSTANCE.awe_WebView_goToHistoryOffset(webView, offset);\r
+ }\r
+ \r
+ public void stop() {\r
+ Awesomium.INSTANCE.awe_WebView_stop(webView);\r
+ }\r
+ \r
+ public void reload() {\r
+ Awesomium.INSTANCE.awe_WebView_reload(webView);\r
+ }\r
+ \r
+ public void executeJavascript(String javascript, String frameName) {\r
+ Awesomium.INSTANCE.awe_WebView_executeJavascriptW(webView, new WString(javascript), new WString(frameName));\r
+ }\r
+ \r
+ public JSValue executeJavascriptWithResult(String javascript, String frameName) {\r
+ // FIXME\r
+ throw new UnsupportedOperationException("not implemented yet");\r
+ }\r
+ \r
+ public JSValue executeJavascriptWithResult(String javascript, String frameName, int timeoutMS) {\r
+ // FIXME\r
+ throw new UnsupportedOperationException("not implemented yet"); \r
+ }\r
+ \r
+ public void callJavascriptFunction(String object, String function, JSArguments args, String frameName) {\r
+ // FIXME\r
+ throw new UnsupportedOperationException("not implemented yet"); \r
+ }\r
+ \r
+ public void createObject(String objectName) {\r
+ Awesomium.INSTANCE.awe_WebView_createObject(webView, new WString(objectName));\r
+ }\r
+ \r
+ public void destroyObject(String objectName) {\r
+ Awesomium.INSTANCE.awe_WebView_destroyObject(webView, new WString(objectName));\r
+ }\r
+ \r
+ public void setObjectProperty(String objectName, String propName, JSValue value) {\r
+ // FIXME\r
+ throw new UnsupportedOperationException("not implemented yet"); \r
+ }\r
+ \r
+ public void setObjectCallback(String objectName, String callbackName) {\r
+ Awesomium.INSTANCE.awe_WebView_setObjectCallback(webView, new WString(objectName), new WString(callbackName));\r
+ }\r
+ \r
+ public boolean isLoadingPage() {\r
+ return Awesomium.INSTANCE.awe_WebView_isLoadingPage(webView)!=0?true:false;\r
+ }\r
+ \r
+ public boolean isDirty() {\r
+ return Awesomium.INSTANCE.awe_WebView_isDirty(webView)!=0?true:false;\r
+ }\r
+ \r
+ public Rect getDirtyBounds() {\r
+ // FIXME\r
+ throw new UnsupportedOperationException("not implemented yet"); \r
+ }\r
+ \r
+ public RenderBuffer render() {\r
+ Pointer renderBuffer = Awesomium.INSTANCE.awe_WebView_render(webView);\r
+ if(Pointer.nativeValue(renderBuffer) == 0)\r
+ return null;\r
+ \r
+ return new RenderBuffer(renderBuffer);\r
+ }\r
+ \r
+ public void pauseRendering() {\r
+ Awesomium.INSTANCE.awe_WebView_pauseRendering(webView);\r
+ }\r
+ \r
+ public void resumeRendering() {\r
+ Awesomium.INSTANCE.awe_WebView_resumeRendering(webView);\r
+ }\r
+ \r
+ public void injectMouseMove(int x, int y) {\r
+ Awesomium.INSTANCE.awe_WebView_injectMouseMove(webView, x, y);\r
+ }\r
+ \r
+ public void injectMouseDown(MouseButton button) {\r
+ int buttonValue = Awesomium.AWE_LEFT_BUTTON;\r
+ if(button == MouseButton.Right)\r
+ buttonValue = Awesomium.AWE_RIGHT_BUTTON;\r
+ if(button == MouseButton.Middle)\r
+ buttonValue = Awesomium.AWE_MIDDLE_BUTTON;\r
+ \r
+ Awesomium.INSTANCE.awe_WebView_injectMouseDown(webView, buttonValue);\r
+ }\r
+ \r
+ public void injectMouseUp(MouseButton button) {\r
+ int buttonValue = Awesomium.AWE_LEFT_BUTTON;\r
+ if(button == MouseButton.Right)\r
+ buttonValue = Awesomium.AWE_RIGHT_BUTTON;\r
+ if(button == MouseButton.Middle)\r
+ buttonValue = Awesomium.AWE_MIDDLE_BUTTON;\r
+ \r
+ Awesomium.INSTANCE.awe_WebView_injectMouseUp(webView, buttonValue);\r
+ }\r
+ \r
+ public void injectMouseWheel(int scrollAmount) {\r
+ Awesomium.INSTANCE.awe_WebView_injectMouseWheel(webView, scrollAmount);\r
+ }\r
+ \r
+ public void injectKeyDown(int virtualKeyCode, int modifiers, boolean isSystemKey) {\r
+ Awesomium.INSTANCE.awe_getKeyIdentifierFromVirtualKeyCode(virtualKeyCode, identifierPointer);\r
+ Awesomium.INSTANCE.awe_WebView_injectKeyboardEventArgs(webView, Awesomium.AWE_TYPE_KEY_DOWN, modifiers, virtualKeyCode, virtualKeyCode, identifierBuffer, text, unmodifiedText, isSystemKey?-1:0);\r
+ }\r
+ \r
+ public void injectKeyUp(int virtualKeyCode, int modifiers, boolean isSystemKey) {\r
+ Awesomium.INSTANCE.awe_getKeyIdentifierFromVirtualKeyCode(virtualKeyCode, identifierPointer);\r
+ Awesomium.INSTANCE.awe_WebView_injectKeyboardEventArgs(webView, Awesomium.AWE_TYPE_KEY_UP, modifiers, virtualKeyCode, virtualKeyCode, identifierBuffer, text, unmodifiedText, isSystemKey?-1:0);\r
+ }\r
+ \r
+ public void injectKeyTyped(char character) {\r
+ Awesomium.INSTANCE.awe_WebView_injectKeyboardEventCharacter(webView, character);\r
+ }\r
+ \r
+ public void cut() {\r
+ Awesomium.INSTANCE.awe_WebView_cut(webView);\r
+ }\r
+ \r
+ public void copy() {\r
+ Awesomium.INSTANCE.awe_WebView_copy(webView);\r
+ }\r
+ \r
+ public void paste() {\r
+ Awesomium.INSTANCE.awe_WebView_paste(webView);\r
+ }\r
+ \r
+ public void selectAll() {\r
+ Awesomium.INSTANCE.awe_WebView_selectAll(webView);\r
+ }\r
+ \r
+ public void setZoom(int zoomPercent) {\r
+ Awesomium.INSTANCE.awe_WebView_setZoom(webView, zoomPercent);\r
+ }\r
+ \r
+ public void resetZoom() {\r
+ Awesomium.INSTANCE.awe_WebView_resetZoom(webView);\r
+ }\r
+ \r
+ public void resize(int width, int height, boolean waitForRepaint, int repaintTimeoutMS) {\r
+ Awesomium.INSTANCE.awe_WebView_resize(webView, width, height, waitForRepaint?-1:0, repaintTimeoutMS);\r
+ }\r
+ \r
+ public boolean isResizing() {\r
+ return Awesomium.INSTANCE.awe_WebView_isResizing(webView)!=0?true:false;\r
+ }\r
+ \r
+ public void unfocus() {\r
+ Awesomium.INSTANCE.awe_WebView_unfocus(webView);\r
+ }\r
+ \r
+ public void focus() {\r
+ Awesomium.INSTANCE.awe_WebView_focus(webView);\r
+ }\r
+ \r
+ public void setTransparent(boolean isTransparent) {\r
+ Awesomium.INSTANCE.awe_WebView_setTransparent(webView, isTransparent?-1:0);\r
+ }\r
+ \r
+ public void setURLFilteringMode(URLFilteringMode mode) {\r
+ int modeValue = 0;\r
+ if(mode == URLFilteringMode.Blacklist)\r
+ modeValue = 1;\r
+ if(mode == URLFilteringMode.Whitelist)\r
+ modeValue = 2;\r
+ Awesomium.INSTANCE.awe_WebView_setURLFilteringMode(webView, modeValue);\r
+ }\r
+ \r
+ public void addURLFilter(String filter) {\r
+ Awesomium.INSTANCE.awe_WebView_addURLFilter(webView, new WString(filter));\r
+ }\r
+ \r
+ public void clearAllURLFilters() {\r
+ Awesomium.INSTANCE.awe_WebView_clearAllURLFilters(webView);\r
+ } \r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+\r
+public interface WebViewListener {\r
+ public void onBeginNavigation(String url, String frameName);\r
+ public void onBeginLoading(String url, String frameName, int statusCode, String mimeType);\r
+ public void onFinishLoading();\r
+ public void onCallback(String objectName, String callbackName, JSArguments args);\r
+ public void onReceiveTitle(String title, String frameName);\r
+ public void onChangeTooltip(String tooltip);\r
+ public void onChangeCursor(int cursor);\r
+ public void onChangeKeyboardFocus(boolean isFocused);\r
+ public void onChangeTargetURL(String url);\r
+ public void onOpenExternalLink(String url, String source);\r
+ public void onRequestDownload(String url);\r
+ public void onWebViewCrashed();\r
+ public void onPluginCrashed(String pluginName);\r
+ public void onRequestMove(int x, int y);\r
+ public void onGetPageContents(String url, String contents);\r
+ public void onDOMReady();\r
+}\r
--- /dev/null
+package com.badlogic.gdx.awesomium;\r
+import com.sun.jna.Callback;\r
+import com.sun.jna.Pointer;\r
+import com.sun.jna.Structure;\r
+import com.sun.jna.WString;\r
+/**\r
+ * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>\r
+ * a tool written by <a href="http://ochafik.free.fr/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br>\r
+ * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> , <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>.\r
+ */\r
+public class WebViewListenerC extends Structure {\r
+ public WebViewListenerC.onBeginNavigation_callback onBeginNavigation;\r
+ public WebViewListenerC.onBeginLoading_callback onBeginLoading;\r
+ public WebViewListenerC.onFinishLoading_callback onFinishLoading;\r
+ public WebViewListenerC.onCallback_callback onCallback;\r
+ public WebViewListenerC.onReceiveTitle_callback onReceiveTitle;\r
+ public WebViewListenerC.onChangeTooltip_callback onChangeTooltip;\r
+ public WebViewListenerC.onChangeCursor_callback onChangeCursor;\r
+ public WebViewListenerC.onChangeKeyboardFocus_callback onChangeKeyboardFocus;\r
+ public WebViewListenerC.onChangeTargetURL_callback onChangeTargetURL;\r
+ public WebViewListenerC.onOpenExternalLink_callback onOpenExternalLink;\r
+ public WebViewListenerC.onRequestDownload_callback onRequestDownload;\r
+ public WebViewListenerC.onWebViewCrashed_callback onWebViewCrashed;\r
+ public WebViewListenerC.onPluginCrashed_callback onPluginCrashed;\r
+ public WebViewListenerC.onRequestMove_callback onRequestMove;\r
+ public WebViewListenerC.onGetPageContents_callback onGetPageContents;\r
+ public WebViewListenerC.onDOMReady_callback onDOMReady;\r
+ public interface onBeginNavigation_callback extends Callback {\r
+ void apply(Pointer webView, String url, WString frameName);\r
+ };\r
+ public interface onBeginLoading_callback extends Callback {\r
+ void apply(Pointer webView, String url, WString frameName, int statusCode, WString mimeType);\r
+ };\r
+ public interface onFinishLoading_callback extends Callback {\r
+ void apply(Pointer webView);\r
+ };\r
+ public interface onCallback_callback extends Callback {\r
+ void apply(Pointer webView, WString objectName, WString callbackName, Pointer args);\r
+ };\r
+ public interface onReceiveTitle_callback extends Callback {\r
+ void apply(Pointer webView, WString title, WString frameName);\r
+ };\r
+ public interface onChangeTooltip_callback extends Callback {\r
+ void apply(Pointer webView, WString toolTip);\r
+ };\r
+ public interface onChangeCursor_callback extends Callback {\r
+ void apply(Pointer webView, int cursor);\r
+ };\r
+ public interface onChangeKeyboardFocus_callback extends Callback {\r
+ void apply(Pointer webView, int isFocused);\r
+ };\r
+ public interface onChangeTargetURL_callback extends Callback {\r
+ void apply(Pointer webView, String url);\r
+ };\r
+ public interface onOpenExternalLink_callback extends Callback {\r
+ void apply(Pointer webView, String url, WString source);\r
+ };\r
+ public interface onRequestDownload_callback extends Callback {\r
+ void apply(Pointer webView, String url);\r
+ };\r
+ public interface onWebViewCrashed_callback extends Callback {\r
+ void apply(Pointer webView);\r
+ };\r
+ public interface onPluginCrashed_callback extends Callback {\r
+ void apply(Pointer webView, WString pluginName);\r
+ };\r
+ public interface onRequestMove_callback extends Callback {\r
+ void apply(Pointer webView, int x, int y);\r
+ };\r
+ public interface onGetPageContents_callback extends Callback {\r
+ void apply(Pointer webView, String url, WString contents);\r
+ };\r
+ public interface onDOMReady_callback extends Callback {\r
+ void apply(Pointer webView);\r
+ };\r
+ public WebViewListenerC() {\r
+ super();\r
+ initFieldOrder();\r
+ }\r
+ \r
+ public WebViewListenerC(WebViewListenerCStub stub) {\r
+ super();\r
+ initFieldOrder();\r
+ this.onBeginLoading = stub.onBeginLoading;\r
+ this.onBeginNavigation = stub.onBeginNavigation;\r
+ this.onCallback = stub.onCallback;\r
+ this.onChangeCursor = stub.onChangeCursor;\r
+ this.onChangeKeyboardFocus = stub.onChangeKeyboardFocus;\r
+ this.onChangeTargetURL = stub.onChangeTargetURL;\r
+ this.onChangeTargetURL = stub.onChangeTargetURL;\r
+ this.onChangeTooltip = stub.onChangeTooltip;\r
+ this.onDOMReady = stub.onDOMReady;\r
+ this.onFinishLoading = stub.onFinishLoading;\r
+ this.onGetPageContents = stub.onGetPageContents;\r
+ this.onOpenExternalLink = stub.onOpenExternalLink;\r
+ this.onOpenExternalLink = stub.onOpenExternalLink;\r
+ this.onPluginCrashed = stub.onPluginCrashed;\r
+ this.onReceiveTitle = stub.onReceiveTitle;\r
+ this.onRequestDownload = stub.onRequestDownload;\r
+ this.onRequestMove = stub.onRequestMove;\r
+ this.onWebViewCrashed = stub.onWebViewCrashed;\r
+ }\r
+ \r
+ protected void initFieldOrder() {\r
+ setFieldOrder(new java.lang.String[]{"onBeginNavigation", "onBeginLoading", "onFinishLoading", "onCallback", "onReceiveTitle", "onChangeTooltip", "onChangeCursor", "onChangeKeyboardFocus", "onChangeTargetURL", "onOpenExternalLink", "onRequestDownload", "onWebViewCrashed", "onPluginCrashed", "onRequestMove", "onGetPageContents", "onDOMReady"});\r
+ }\r
+ public static class ByReference extends WebViewListenerC implements Structure.ByReference {\r
+ \r
+ };\r
+ public static class ByValue extends WebViewListenerC implements Structure.ByValue {\r
+ \r
+ };\r
+ \r
+ public static class WebViewListenerCStub {\r
+ WebViewListener listener;\r
+ \r
+ public WebViewListenerCStub (WebViewListener listener) {\r
+ this.listener = listener;\r
+ }\r
+ public WebViewListenerC.onBeginNavigation_callback onBeginNavigation = new onBeginNavigation_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, String url, WString frameName) {\r
+ listener.onBeginNavigation(new String(url), frameName.toString());\r
+ }\r
+ };\r
+ public WebViewListenerC.onBeginLoading_callback onBeginLoading = new onBeginLoading_callback() { \r
+ @Override public void apply (Pointer webView, String url, WString frameName, int statusCode, WString mimeType) {\r
+ listener.onBeginLoading(new String(url), frameName.toString(), statusCode, mimeType.toString());\r
+ }\r
+ };\r
+ public WebViewListenerC.onFinishLoading_callback onFinishLoading = new onFinishLoading_callback() {\r
+ \r
+ @Override public void apply (Pointer webView) {\r
+ listener.onFinishLoading();\r
+ }\r
+ };\r
+ public WebViewListenerC.onCallback_callback onCallback = new onCallback_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, WString objectName, WString callbackName, Pointer args) {\r
+ // FIXME\r
+ listener.onCallback(objectName.toString(), callbackName.toString(), new JSArguments());\r
+ }\r
+ };\r
+ public WebViewListenerC.onReceiveTitle_callback onReceiveTitle = new onReceiveTitle_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, WString title, WString frameName) {\r
+ listener.onReceiveTitle(title.toString(), frameName.toString());\r
+ }\r
+ };\r
+ public WebViewListenerC.onChangeTooltip_callback onChangeTooltip = new onChangeTooltip_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, WString toolTip) {\r
+ listener.onChangeTooltip(toolTip.toString());\r
+ }\r
+ };\r
+ public WebViewListenerC.onChangeCursor_callback onChangeCursor = new onChangeCursor_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, int cursor) {\r
+ listener.onChangeCursor(cursor);\r
+ }\r
+ };\r
+ public WebViewListenerC.onChangeKeyboardFocus_callback onChangeKeyboardFocus = new onChangeKeyboardFocus_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, int isFocused) {\r
+ listener.onChangeKeyboardFocus(isFocused!=0?true:false);\r
+ }\r
+ };\r
+ public WebViewListenerC.onChangeTargetURL_callback onChangeTargetURL = new onChangeTargetURL_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, String url) {\r
+ listener.onChangeTargetURL(new String(url));\r
+ }\r
+ };\r
+ public WebViewListenerC.onOpenExternalLink_callback onOpenExternalLink = new onOpenExternalLink_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, String url, WString source) {\r
+ listener.onOpenExternalLink(new String(url), source.toString());\r
+ }\r
+ };\r
+ public WebViewListenerC.onRequestDownload_callback onRequestDownload = new onRequestDownload_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, String url) {\r
+ listener.onRequestDownload(new String(url));\r
+ }\r
+ };\r
+ public WebViewListenerC.onWebViewCrashed_callback onWebViewCrashed = new onWebViewCrashed_callback() {\r
+ \r
+ @Override public void apply (Pointer webView) {\r
+ listener.onWebViewCrashed();\r
+ }\r
+ };\r
+ public WebViewListenerC.onPluginCrashed_callback onPluginCrashed = new onPluginCrashed_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, WString pluginName) {\r
+ listener.onPluginCrashed(pluginName.toString());\r
+ }\r
+ };\r
+ public WebViewListenerC.onRequestMove_callback onRequestMove = new onRequestMove_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, int x, int y) {\r
+ listener.onRequestMove(x, y);\r
+ }\r
+ };\r
+ public WebViewListenerC.onGetPageContents_callback onGetPageContents = new onGetPageContents_callback() {\r
+ \r
+ @Override public void apply (Pointer webView, String url, WString contents) {\r
+ listener.onGetPageContents(new String(url), contents.toString());\r
+ }\r
+ };\r
+ public WebViewListenerC.onDOMReady_callback onDOMReady = new onDOMReady_callback() {\r
+ \r
+ @Override public void apply (Pointer webView) {\r
+ listener.onDOMReady();\r
+ }\r
+ };\r
+ }\r
+}\r