diff --git a/.gitignore b/.gitignore index cd2dc6cf479f202003ab3969bbba4a9b3062a24a..00eb3958c79939cedf86ea0ec4b79527be0eec8a 100644 --- a/.gitignore +++ b/.gitignore @@ -27,9 +27,8 @@ project.xcworkspace node_modules/ npm-debug.log - # android - +# android/build/ android/.gradle/ android/.idea/ diff --git a/.npmignore b/.npmignore index 5c5952bf978a6a6b6d130dd274b33623ec85c4f5..c38d9c95f623ad46c1e6c297ade76f78d9cb75bb 100644 --- a/.npmignore +++ b/.npmignore @@ -28,3 +28,14 @@ DerivedData # node_modules/ npm-debug.log + +# android +# +android/build/ +android/.gradle/ +android/.idea/ +android/android.iml +android/gradle/ +android/gradlew +android/gradlew.bat +android/local.properties diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 8c7dc862e596504f528495923035c02223950909..c170c5b36e9da8c13c99af572a6cadb4b001924a 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,2 +1,3 @@ + diff --git a/android/src/main/java/com/projectseptember/RNGL/GLCanvasManager.java b/android/src/main/java/com/projectseptember/RNGL/GLCanvasManager.java index 0946910d6edcb79ac010ede38414cd91f321f339..ce0070a5e699a2515c6a86a5b1fb1afc9e32106f 100644 --- a/android/src/main/java/com/projectseptember/RNGL/GLCanvasManager.java +++ b/android/src/main/java/com/projectseptember/RNGL/GLCanvasManager.java @@ -1,17 +1,16 @@ package com.projectseptember.RNGL; -import java.util.Arrays; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import android.opengl.GLSurfaceView; -import com.facebook.react.ReactPackage; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.uimanager.ViewManager; -import com.facebook.react.bridge.JavaScriptModule; +import com.facebook.react.uimanager.CatalystStylesDiffMap; +import com.facebook.react.uimanager.SimpleViewManager; +import com.facebook.react.uimanager.ThemedReactContext; -public class GLCanvasManager extends SimpleViewManager { +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; + + +public class GLCanvasManager extends SimpleViewManager { public static final String REACT_CLASS = "GLCanvas"; @@ -23,14 +22,32 @@ public class GLCanvasManager extends SimpleViewManager { } @Override - public GLCanvasView createViewInstance(ThemedReactContext context) { - return new GLCanvasView(context, Fresco.newDraweeControllerBuilder(), mCallerContext); + public GLSurfaceView createViewInstance(ThemedReactContext context) { + GLSurfaceView view = new GLSurfaceView(context); + view.setRenderer(new GLSurfaceView.Renderer() { + @Override + public void onSurfaceCreated(GL10 gl, EGLConfig config) { + + } + + @Override + public void onSurfaceChanged(GL10 gl, int width, int height) { + gl.glViewport(0, 0, width, height); + } + + @Override + public void onDrawFrame(GL10 gl) { + gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f); + gl.glClear(GL10.GL_COLOR_BUFFER_BIT); + } + }); + return view; } @Override - public void updateView(final ReactImageView view, final CatalystStylesDiffMap props) { + public void updateView(final GLSurfaceView view, final CatalystStylesDiffMap props) { super.updateView(view, props); // TODO... call setters with props - view.maybeUpdateView(); + // view.requestRender(); } } diff --git a/android/src/main/java/com/projectseptember/RNGL/RNGLContext.java b/android/src/main/java/com/projectseptember/RNGL/RNGLContext.java new file mode 100644 index 0000000000000000000000000000000000000000..b29b07a18c1241d1d405391a98780a881fecad45 --- /dev/null +++ b/android/src/main/java/com/projectseptember/RNGL/RNGLContext.java @@ -0,0 +1,25 @@ +package com.projectseptember.RNGL; + +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReadableMap; + +public class RNGLContext extends ReactContextBaseJavaModule { + + public RNGLContext (ReactApplicationContext reactContext) { + super(reactContext); + } + + @Override + public String getName() { + return "RNGLContext"; + } + + @ReactMethod + public void addShader (Integer id, ReadableMap config) { + String frag = config.getString("frag"); + String name = config.getString("name"); + System.out.println("TODO... addShader: "+id+" "+name); + } +} diff --git a/android/src/main/java/com/projectseptember/RNGL/GLCanvas.java b/android/src/main/java/com/projectseptember/RNGL/RNGLPackage.java similarity index 56% rename from android/src/main/java/com/projectseptember/RNGL/GLCanvas.java rename to android/src/main/java/com/projectseptember/RNGL/RNGLPackage.java index 50d55deca9e4538190864f9fc3fa8029fa4f17ee..96784e34af14ad11cbdc733c58aed10055939625 100644 --- a/android/src/main/java/com/projectseptember/RNGL/GLCanvas.java +++ b/android/src/main/java/com/projectseptember/RNGL/RNGLPackage.java @@ -11,9 +11,21 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; import com.facebook.react.bridge.JavaScriptModule; -public class GLCanvas implements ReactPackage { +public class RNGLPackage implements ReactPackage { @Override + public List createNativeModules(ReactApplicationContext reactApplicationContext) { + List modules = new ArrayList<>(); + modules.add(new RNGLContext(reactApplicationContext)); + return modules; + } + + @Override + public List> createJSModules() { + return Collections.emptyList(); + } + + @Override public List createViewManagers(ReactApplicationContext reactContext) { return Arrays.asList( new GLCanvasManager() diff --git a/index.android.js b/index.android.js index c8fb9c15058a45be80a0ff2fe463e95a65e2f27d..101d3174fe2b6fcd98645a4548c6305e6318634a 100644 --- a/index.android.js +++ b/index.android.js @@ -1,2 +1,13 @@ +const Shaders = require("./src/Shaders"); +const View = require("./src/View"); +const Uniform = require("./src/Uniform"); +const Component = require("./src/ComponentDeprecated"); +const createComponent = require("./src/createComponent"); -throw new Error("Android version is not yet implemented"); +module.exports = { + Shaders, + View, + Uniform, + Component, + createComponent +};