From 76f6b237ace806a6daa2b6994d33312daffb3d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Renaudeau?= Date: Sun, 8 Nov 2015 23:54:51 +0100 Subject: [PATCH] make it working with glClearColor(red) --- .gitignore | 3 +- .npmignore | 11 +++++ android/src/main/AndroidManifest.xml | 1 + .../RNGL/GLCanvasManager.java | 45 +++++++++++++------ .../projectseptember/RNGL/RNGLContext.java | 25 +++++++++++ .../RNGL/{GLCanvas.java => RNGLPackage.java} | 14 +++++- index.android.js | 13 +++++- 7 files changed, 94 insertions(+), 18 deletions(-) create mode 100644 android/src/main/java/com/projectseptember/RNGL/RNGLContext.java rename android/src/main/java/com/projectseptember/RNGL/{GLCanvas.java => RNGLPackage.java} (56%) diff --git a/.gitignore b/.gitignore index cd2dc6c..00eb395 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 5c5952b..c38d9c9 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 8c7dc86..c170c5b 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 0946910..ce0070a 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 0000000..b29b07a --- /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 50d55de..96784e3 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 c8fb9c1..101d317 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 +}; -- 2.26.2