diff --git a/.gitignore b/.gitignore
index 0dae35b4d..073f9ee0d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,20 +1,5 @@
-mode/processing-core.zip
-mode/mode/AndroidMode.jar
-mode/mode/gradle-tooling-api*
-mode/mode/slf4j*
-
-mode/mode/percent.jar
-mode/mode/recyclerview-v7.jar
-mode/mode/support-*
-mode/mode/wearable.jar
-
-mode/libraries/vr/library
-mode/libraries/ar/library
-mode/tools/SDKUpdater/tool
-mode/tools/SDKUpdater/lib
-
-debug/.gradle
-debug/.idea
+.gradle
+.idea
**/examples/**/AndroidManifest.xml
diff --git a/apps/armarkers/build.gradle b/apps/armarkers/build.gradle
new file mode 100644
index 000000000..bd89203e2
--- /dev/null
+++ b/apps/armarkers/build.gradle
@@ -0,0 +1,36 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 33
+ defaultConfig {
+ applicationId "processing.tests.armarkers"
+ minSdkVersion 23
+ targetSdkVersion 33
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ productFlavors {
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
+ }
+ namespace 'armarkers'
+}
+
+dependencies {
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
+ testImplementation 'junit:junit:4.13.2'
+ implementation project(':libs:processing-core')
+ implementation project(':libs:processing-ar')
+ implementation 'androidx.appcompat:appcompat:1.6.0'
+ implementation 'com.google.ar:core:1.35.0'
+}
\ No newline at end of file
diff --git a/debug/apps/arscene/gradle.properties b/apps/armarkers/gradle.properties
similarity index 100%
rename from debug/apps/arscene/gradle.properties
rename to apps/armarkers/gradle.properties
diff --git a/debug/apps/arscene/src/main/AndroidManifest.xml b/apps/armarkers/src/main/AndroidManifest.xml
similarity index 94%
rename from debug/apps/arscene/src/main/AndroidManifest.xml
rename to apps/armarkers/src/main/AndroidManifest.xml
index a4adeca84..fcf1ffe6b 100644
--- a/debug/apps/arscene/src/main/AndroidManifest.xml
+++ b/apps/armarkers/src/main/AndroidManifest.xml
@@ -4,6 +4,7 @@
android:versionCode="1"
android:versionName="1.0">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/debug/apps/arscene/src/main/java/arscene/MainActivity.java b/apps/arscene/src/main/java/arscene/MainActivity.java
similarity index 91%
rename from debug/apps/arscene/src/main/java/arscene/MainActivity.java
rename to apps/arscene/src/main/java/arscene/MainActivity.java
index 3ad989d87..8e1837290 100644
--- a/debug/apps/arscene/src/main/java/arscene/MainActivity.java
+++ b/apps/arscene/src/main/java/arscene/MainActivity.java
@@ -20,6 +20,7 @@
public class MainActivity extends AppCompatActivity {
private static final int CAMERA_PERMISSION_CODE = 0;
+ private static boolean CAMERA_PERMISSION_REQUESTED = false;
private static final String CAMERA_PERMISSION = Manifest.permission.CAMERA;
private static final String CAMERA_PERMISSION_MESSAGE = "Camera permission is needed to use AR";
@@ -58,6 +59,8 @@ public void onRequestPermissionsResult(int requestCode, String permissions[], in
if (sketch != null) {
sketch.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
+
+ CAMERA_PERMISSION_REQUESTED = false;
}
@Override
@@ -89,7 +92,10 @@ private boolean hasCameraPermission() {
}
private void requestCameraPermission() {
- ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_CODE);
+ if (!CAMERA_PERMISSION_REQUESTED) {
+ CAMERA_PERMISSION_REQUESTED = true;
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_CODE);
+ }
}
private boolean shouldShowRequestPermissionRationale() {
diff --git a/debug/apps/arscene/src/main/java/arscene/Sketch.java b/apps/arscene/src/main/java/arscene/Sketch.java
similarity index 100%
rename from debug/apps/arscene/src/main/java/arscene/Sketch.java
rename to apps/arscene/src/main/java/arscene/Sketch.java
diff --git a/debug/apps/vrcube/src/main/res/layout/main.xml b/apps/arscene/src/main/res/layout/main.xml
similarity index 100%
rename from debug/apps/vrcube/src/main/res/layout/main.xml
rename to apps/arscene/src/main/res/layout/main.xml
diff --git a/debug/apps/fast2d/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/arscene/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/fast2d/src/main/res/mipmap-hdpi/ic_launcher.png
rename to apps/arscene/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/debug/apps/fast2d/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/arscene/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/fast2d/src/main/res/mipmap-mdpi/ic_launcher.png
rename to apps/arscene/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/debug/apps/fast2d/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/arscene/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/fast2d/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to apps/arscene/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/debug/apps/fast2d/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/arscene/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/fast2d/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to apps/arscene/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/debug/apps/fast2d/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/arscene/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/fast2d/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to apps/arscene/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/apps/arscene/src/main/res/values/strings.xml b/apps/arscene/src/main/res/values/strings.xml
new file mode 100644
index 000000000..f57f444bd
--- /dev/null
+++ b/apps/arscene/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ AR Test
+
diff --git a/apps/arscene/src/main/res/values/styles.xml b/apps/arscene/src/main/res/values/styles.xml
new file mode 100644
index 000000000..375954d4a
--- /dev/null
+++ b/apps/arscene/src/main/res/values/styles.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/debug/apps/fast2d/build.gradle b/apps/fast2d/build.gradle
similarity index 92%
rename from debug/apps/fast2d/build.gradle
rename to apps/fast2d/build.gradle
index e9a8b3cde..9a69129be 100644
--- a/debug/apps/fast2d/build.gradle
+++ b/apps/fast2d/build.gradle
@@ -1,7 +1,8 @@
-apply plugin: 'com.android.application'
+plugins {
+ id 'com.android.application'
+}
android {
- compileSdkVersion 33
defaultConfig {
applicationId "processing.tests.fast2d"
minSdkVersion 17
diff --git a/debug/apps/simple/gradle.properties b/apps/fast2d/gradle.properties
similarity index 100%
rename from debug/apps/simple/gradle.properties
rename to apps/fast2d/gradle.properties
diff --git a/debug/apps/fast2d/src/main/AndroidManifest.xml b/apps/fast2d/src/main/AndroidManifest.xml
similarity index 100%
rename from debug/apps/fast2d/src/main/AndroidManifest.xml
rename to apps/fast2d/src/main/AndroidManifest.xml
diff --git a/debug/apps/fast2d/src/main/assets/blur.glsl b/apps/fast2d/src/main/assets/blur.glsl
similarity index 100%
rename from debug/apps/fast2d/src/main/assets/blur.glsl
rename to apps/fast2d/src/main/assets/blur.glsl
diff --git a/debug/apps/fast2d/src/main/assets/bot1.svg b/apps/fast2d/src/main/assets/bot1.svg
similarity index 100%
rename from debug/apps/fast2d/src/main/assets/bot1.svg
rename to apps/fast2d/src/main/assets/bot1.svg
diff --git a/debug/apps/fast2d/src/main/assets/edges.glsl b/apps/fast2d/src/main/assets/edges.glsl
similarity index 100%
rename from debug/apps/fast2d/src/main/assets/edges.glsl
rename to apps/fast2d/src/main/assets/edges.glsl
diff --git a/debug/apps/fast2d/src/main/assets/frag.glsl b/apps/fast2d/src/main/assets/frag.glsl
similarity index 100%
rename from debug/apps/fast2d/src/main/assets/frag.glsl
rename to apps/fast2d/src/main/assets/frag.glsl
diff --git a/debug/apps/fast2d/src/main/assets/img.png b/apps/fast2d/src/main/assets/img.png
similarity index 100%
rename from debug/apps/fast2d/src/main/assets/img.png
rename to apps/fast2d/src/main/assets/img.png
diff --git a/debug/apps/fast2d/src/main/assets/leaves.jpg b/apps/fast2d/src/main/assets/leaves.jpg
similarity index 100%
rename from debug/apps/fast2d/src/main/assets/leaves.jpg
rename to apps/fast2d/src/main/assets/leaves.jpg
diff --git a/debug/apps/fast2d/src/main/assets/vert.glsl b/apps/fast2d/src/main/assets/vert.glsl
similarity index 100%
rename from debug/apps/fast2d/src/main/assets/vert.glsl
rename to apps/fast2d/src/main/assets/vert.glsl
diff --git a/debug/apps/fast2d/src/main/java/fast2d/MainActivity.java b/apps/fast2d/src/main/java/fast2d/MainActivity.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/MainActivity.java
rename to apps/fast2d/src/main/java/fast2d/MainActivity.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/Sketch.java b/apps/fast2d/src/main/java/fast2d/Sketch.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/Sketch.java
rename to apps/fast2d/src/main/java/fast2d/Sketch.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchArcTest.java b/apps/fast2d/src/main/java/fast2d/SketchArcTest.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchArcTest.java
rename to apps/fast2d/src/main/java/fast2d/SketchArcTest.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchBasicPoly.java b/apps/fast2d/src/main/java/fast2d/SketchBasicPoly.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchBasicPoly.java
rename to apps/fast2d/src/main/java/fast2d/SketchBasicPoly.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchCurveTest.java b/apps/fast2d/src/main/java/fast2d/SketchCurveTest.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchCurveTest.java
rename to apps/fast2d/src/main/java/fast2d/SketchCurveTest.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchCustomShader.java b/apps/fast2d/src/main/java/fast2d/SketchCustomShader.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchCustomShader.java
rename to apps/fast2d/src/main/java/fast2d/SketchCustomShader.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchDisplayText.java b/apps/fast2d/src/main/java/fast2d/SketchDisplayText.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchDisplayText.java
rename to apps/fast2d/src/main/java/fast2d/SketchDisplayText.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchDuplicatedVert.java b/apps/fast2d/src/main/java/fast2d/SketchDuplicatedVert.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchDuplicatedVert.java
rename to apps/fast2d/src/main/java/fast2d/SketchDuplicatedVert.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchFilterTest.java b/apps/fast2d/src/main/java/fast2d/SketchFilterTest.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchFilterTest.java
rename to apps/fast2d/src/main/java/fast2d/SketchFilterTest.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchLoadDisplaySVG.java b/apps/fast2d/src/main/java/fast2d/SketchLoadDisplaySVG.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchLoadDisplaySVG.java
rename to apps/fast2d/src/main/java/fast2d/SketchLoadDisplaySVG.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchMousePoly.java b/apps/fast2d/src/main/java/fast2d/SketchMousePoly.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchMousePoly.java
rename to apps/fast2d/src/main/java/fast2d/SketchMousePoly.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchPrimitiveTypes.java b/apps/fast2d/src/main/java/fast2d/SketchPrimitiveTypes.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchPrimitiveTypes.java
rename to apps/fast2d/src/main/java/fast2d/SketchPrimitiveTypes.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchShaderNoTex.java b/apps/fast2d/src/main/java/fast2d/SketchShaderNoTex.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchShaderNoTex.java
rename to apps/fast2d/src/main/java/fast2d/SketchShaderNoTex.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchShapeBenchmark.java b/apps/fast2d/src/main/java/fast2d/SketchShapeBenchmark.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchShapeBenchmark.java
rename to apps/fast2d/src/main/java/fast2d/SketchShapeBenchmark.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchTexturedPoly.java b/apps/fast2d/src/main/java/fast2d/SketchTexturedPoly.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchTexturedPoly.java
rename to apps/fast2d/src/main/java/fast2d/SketchTexturedPoly.java
diff --git a/debug/apps/fast2d/src/main/java/fast2d/SketchUserDefinedContours.java b/apps/fast2d/src/main/java/fast2d/SketchUserDefinedContours.java
similarity index 100%
rename from debug/apps/fast2d/src/main/java/fast2d/SketchUserDefinedContours.java
rename to apps/fast2d/src/main/java/fast2d/SketchUserDefinedContours.java
diff --git a/debug/apps/fast2d/src/main/res/layout/activity_main.xml b/apps/fast2d/src/main/res/layout/activity_main.xml
similarity index 100%
rename from debug/apps/fast2d/src/main/res/layout/activity_main.xml
rename to apps/fast2d/src/main/res/layout/activity_main.xml
diff --git a/debug/apps/simple/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/fast2d/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/simple/src/main/res/mipmap-hdpi/ic_launcher.png
rename to apps/fast2d/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/debug/apps/simple/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/fast2d/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/simple/src/main/res/mipmap-mdpi/ic_launcher.png
rename to apps/fast2d/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/debug/apps/simple/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/fast2d/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/simple/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to apps/fast2d/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/debug/apps/simple/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/fast2d/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/simple/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to apps/fast2d/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/debug/apps/simple/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/fast2d/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/simple/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to apps/fast2d/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/debug/apps/fast2d/src/main/res/values-w820dp/dimens.xml b/apps/fast2d/src/main/res/values-w820dp/dimens.xml
similarity index 100%
rename from debug/apps/fast2d/src/main/res/values-w820dp/dimens.xml
rename to apps/fast2d/src/main/res/values-w820dp/dimens.xml
diff --git a/debug/apps/fast2d/src/main/res/values/colors.xml b/apps/fast2d/src/main/res/values/colors.xml
similarity index 100%
rename from debug/apps/fast2d/src/main/res/values/colors.xml
rename to apps/fast2d/src/main/res/values/colors.xml
diff --git a/debug/apps/fast2d/src/main/res/values/dimens.xml b/apps/fast2d/src/main/res/values/dimens.xml
similarity index 100%
rename from debug/apps/fast2d/src/main/res/values/dimens.xml
rename to apps/fast2d/src/main/res/values/dimens.xml
diff --git a/debug/apps/fast2d/src/main/res/values/strings.xml b/apps/fast2d/src/main/res/values/strings.xml
similarity index 100%
rename from debug/apps/fast2d/src/main/res/values/strings.xml
rename to apps/fast2d/src/main/res/values/strings.xml
diff --git a/debug/apps/fast2d/src/main/res/values/styles.xml b/apps/fast2d/src/main/res/values/styles.xml
similarity index 100%
rename from debug/apps/fast2d/src/main/res/values/styles.xml
rename to apps/fast2d/src/main/res/values/styles.xml
diff --git a/debug/apps/simple/build.gradle b/apps/simple/build.gradle
similarity index 71%
rename from debug/apps/simple/build.gradle
rename to apps/simple/build.gradle
index 749a0801b..6310d85d3 100644
--- a/debug/apps/simple/build.gradle
+++ b/apps/simple/build.gradle
@@ -1,7 +1,11 @@
-apply plugin: 'com.android.application'
+plugins {
+ id 'com.android.application'
+}
android {
+ namespace 'processing.tests.simple'
compileSdkVersion 33
+
defaultConfig {
applicationId "processing.tests.simple"
minSdkVersion 17
@@ -9,24 +13,23 @@ android {
versionCode 1
versionName "1.0"
}
+
buildTypes {
release {
minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
- productFlavors {
- }
+
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- namespace 'simple'
}
dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.13.2'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+
implementation project(':libs:processing-core')
- implementation 'androidx.appcompat:appcompat:1.6.0'
}
diff --git a/apps/simple/proguard-rules.pro b/apps/simple/proguard-rules.pro
new file mode 100644
index 000000000..f1b424510
--- /dev/null
+++ b/apps/simple/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/debug/apps/simple/src/main/AndroidManifest.xml b/apps/simple/src/main/AndroidManifest.xml
similarity index 93%
rename from debug/apps/simple/src/main/AndroidManifest.xml
rename to apps/simple/src/main/AndroidManifest.xml
index 5204a615a..f4ca7c1cd 100644
--- a/debug/apps/simple/src/main/AndroidManifest.xml
+++ b/apps/simple/src/main/AndroidManifest.xml
@@ -8,7 +8,7 @@
android:theme="@style/AppTheme"
android:hardwareAccelerated="true"
android:largeHeap="true">
-
diff --git a/debug/apps/simple/src/main/assets/leaf.png b/apps/simple/src/main/assets/leaf.png
similarity index 100%
rename from debug/apps/simple/src/main/assets/leaf.png
rename to apps/simple/src/main/assets/leaf.png
diff --git a/debug/apps/simple/src/main/java/simple/MainActivity.java b/apps/simple/src/main/java/simple/MainActivity.java
similarity index 100%
rename from debug/apps/simple/src/main/java/simple/MainActivity.java
rename to apps/simple/src/main/java/simple/MainActivity.java
diff --git a/debug/apps/simple/src/main/java/simple/Sketch.java b/apps/simple/src/main/java/simple/Sketch.java
similarity index 100%
rename from debug/apps/simple/src/main/java/simple/Sketch.java
rename to apps/simple/src/main/java/simple/Sketch.java
diff --git a/debug/apps/simple/src/main/res/layout/activity_main.xml b/apps/simple/src/main/res/layout/activity_main.xml
similarity index 100%
rename from debug/apps/simple/src/main/res/layout/activity_main.xml
rename to apps/simple/src/main/res/layout/activity_main.xml
diff --git a/debug/apps/vrcube/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/simple/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/vrcube/src/main/res/mipmap-hdpi/ic_launcher.png
rename to apps/simple/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/debug/apps/vrcube/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/simple/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/vrcube/src/main/res/mipmap-mdpi/ic_launcher.png
rename to apps/simple/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/debug/apps/vrcube/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/simple/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/vrcube/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to apps/simple/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/debug/apps/vrcube/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/simple/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/vrcube/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to apps/simple/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/debug/apps/vrcube/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/simple/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/vrcube/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to apps/simple/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/debug/apps/simple/src/main/res/values-w820dp/dimens.xml b/apps/simple/src/main/res/values-w820dp/dimens.xml
similarity index 100%
rename from debug/apps/simple/src/main/res/values-w820dp/dimens.xml
rename to apps/simple/src/main/res/values-w820dp/dimens.xml
diff --git a/debug/apps/simple/src/main/res/values/colors.xml b/apps/simple/src/main/res/values/colors.xml
similarity index 100%
rename from debug/apps/simple/src/main/res/values/colors.xml
rename to apps/simple/src/main/res/values/colors.xml
diff --git a/debug/apps/simple/src/main/res/values/dimens.xml b/apps/simple/src/main/res/values/dimens.xml
similarity index 100%
rename from debug/apps/simple/src/main/res/values/dimens.xml
rename to apps/simple/src/main/res/values/dimens.xml
diff --git a/debug/apps/simple/src/main/res/values/strings.xml b/apps/simple/src/main/res/values/strings.xml
similarity index 100%
rename from debug/apps/simple/src/main/res/values/strings.xml
rename to apps/simple/src/main/res/values/strings.xml
diff --git a/debug/apps/simple/src/main/res/values/styles.xml b/apps/simple/src/main/res/values/styles.xml
similarity index 100%
rename from debug/apps/simple/src/main/res/values/styles.xml
rename to apps/simple/src/main/res/values/styles.xml
diff --git a/debug/apps/vrcube/build.gradle b/apps/vrcube/build.gradle
similarity index 88%
rename from debug/apps/vrcube/build.gradle
rename to apps/vrcube/build.gradle
index 3c02e6788..b062a918f 100644
--- a/debug/apps/vrcube/build.gradle
+++ b/apps/vrcube/build.gradle
@@ -1,7 +1,8 @@
-apply plugin: 'com.android.application'
+plugins {
+ id 'com.android.application'
+}
android {
- compileSdkVersion 33
defaultConfig {
applicationId "processing.tests.vrcube"
minSdkVersion 19
@@ -30,5 +31,6 @@ dependencies {
implementation project(':libs:processing-core')
implementation project(':libs:google-vr')
implementation project(':libs:processing-vr')
+ implementation 'com.google.protobuf.nano:protobuf-javanano:3.1.0'
implementation 'androidx.appcompat:appcompat:1.6.0'
}
diff --git a/debug/apps/vrcube/gradle.properties b/apps/vrcube/gradle.properties
similarity index 100%
rename from debug/apps/vrcube/gradle.properties
rename to apps/vrcube/gradle.properties
diff --git a/debug/apps/vrcube/src/main/AndroidManifest.xml b/apps/vrcube/src/main/AndroidManifest.xml
similarity index 96%
rename from debug/apps/vrcube/src/main/AndroidManifest.xml
rename to apps/vrcube/src/main/AndroidManifest.xml
index 152a3c5cc..03513aece 100644
--- a/debug/apps/vrcube/src/main/AndroidManifest.xml
+++ b/apps/vrcube/src/main/AndroidManifest.xml
@@ -12,7 +12,7 @@
android:label="@string/app_name"
android:theme="@style/VrActivityTheme">
diff --git a/apps/vrcube/src/main/java/vrcube/MainActivity.java b/apps/vrcube/src/main/java/vrcube/MainActivity.java
new file mode 100644
index 000000000..22ef6a835
--- /dev/null
+++ b/apps/vrcube/src/main/java/vrcube/MainActivity.java
@@ -0,0 +1,23 @@
+package vrcube;
+
+import android.os.Build;
+import android.os.Bundle;
+import android.view.WindowManager;
+
+import processing.vr.VRActivity;
+import processing.core.PApplet;
+
+public class MainActivity extends VRActivity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
+ getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+ }
+
+ PApplet sketch = new Sketch();
+ setSketch(sketch);
+ }
+}
\ No newline at end of file
diff --git a/debug/apps/vrcube/src/main/java/vrcube/Sketch.java b/apps/vrcube/src/main/java/vrcube/Sketch.java
similarity index 100%
rename from debug/apps/vrcube/src/main/java/vrcube/Sketch.java
rename to apps/vrcube/src/main/java/vrcube/Sketch.java
diff --git a/apps/vrcube/src/main/res/layout/main.xml b/apps/vrcube/src/main/res/layout/main.xml
new file mode 100644
index 000000000..4b602d5f6
--- /dev/null
+++ b/apps/vrcube/src/main/res/layout/main.xml
@@ -0,0 +1,7 @@
+
diff --git a/debug/apps/wallpaper/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/vrcube/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/mipmap-hdpi/ic_launcher.png
rename to apps/vrcube/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/debug/apps/wallpaper/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/vrcube/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/mipmap-mdpi/ic_launcher.png
rename to apps/vrcube/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/debug/apps/wallpaper/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/vrcube/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to apps/vrcube/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/debug/apps/wallpaper/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/vrcube/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to apps/vrcube/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/debug/apps/wallpaper/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/vrcube/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to apps/vrcube/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/debug/apps/vrcube/src/main/res/values/strings.xml b/apps/vrcube/src/main/res/values/strings.xml
similarity index 100%
rename from debug/apps/vrcube/src/main/res/values/strings.xml
rename to apps/vrcube/src/main/res/values/strings.xml
diff --git a/debug/apps/vrcube/src/main/res/values/styles.xml b/apps/vrcube/src/main/res/values/styles.xml
similarity index 100%
rename from debug/apps/vrcube/src/main/res/values/styles.xml
rename to apps/vrcube/src/main/res/values/styles.xml
diff --git a/debug/apps/wallpaper/build.gradle b/apps/wallpaper/build.gradle
similarity index 92%
rename from debug/apps/wallpaper/build.gradle
rename to apps/wallpaper/build.gradle
index 7870d99b1..aec131e52 100644
--- a/debug/apps/wallpaper/build.gradle
+++ b/apps/wallpaper/build.gradle
@@ -1,7 +1,8 @@
-apply plugin: 'com.android.application'
+plugins {
+ id 'com.android.application'
+}
android {
- compileSdkVersion 33
defaultConfig {
applicationId "processing.tests.wallpaper"
minSdkVersion 17
diff --git a/debug/apps/wallpaper/gradle.properties b/apps/wallpaper/gradle.properties
similarity index 100%
rename from debug/apps/wallpaper/gradle.properties
rename to apps/wallpaper/gradle.properties
diff --git a/debug/apps/wallpaper/src/main/AndroidManifest.xml b/apps/wallpaper/src/main/AndroidManifest.xml
similarity index 100%
rename from debug/apps/wallpaper/src/main/AndroidManifest.xml
rename to apps/wallpaper/src/main/AndroidManifest.xml
diff --git a/debug/apps/wallpaper/src/main/java/wallpaper/DebuggerEntryPointActivity.java b/apps/wallpaper/src/main/java/wallpaper/DebuggerEntryPointActivity.java
similarity index 100%
rename from debug/apps/wallpaper/src/main/java/wallpaper/DebuggerEntryPointActivity.java
rename to apps/wallpaper/src/main/java/wallpaper/DebuggerEntryPointActivity.java
diff --git a/debug/apps/wallpaper/src/main/java/wallpaper/MainService.java b/apps/wallpaper/src/main/java/wallpaper/MainService.java
similarity index 100%
rename from debug/apps/wallpaper/src/main/java/wallpaper/MainService.java
rename to apps/wallpaper/src/main/java/wallpaper/MainService.java
diff --git a/debug/apps/wallpaper/src/main/java/wallpaper/Sketch.java b/apps/wallpaper/src/main/java/wallpaper/Sketch.java
similarity index 100%
rename from debug/apps/wallpaper/src/main/java/wallpaper/Sketch.java
rename to apps/wallpaper/src/main/java/wallpaper/Sketch.java
diff --git a/debug/apps/wallpaper/src/main/res/layout/main.xml b/apps/wallpaper/src/main/res/layout/main.xml
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/layout/main.xml
rename to apps/wallpaper/src/main/res/layout/main.xml
diff --git a/debug/apps/watchface/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/wallpaper/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/watchface/src/main/res/mipmap-hdpi/ic_launcher.png
rename to apps/wallpaper/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/debug/apps/watchface/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/wallpaper/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/watchface/src/main/res/mipmap-mdpi/ic_launcher.png
rename to apps/wallpaper/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/debug/apps/watchface/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/wallpaper/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/watchface/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to apps/wallpaper/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/debug/apps/watchface/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/wallpaper/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from debug/apps/watchface/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to apps/wallpaper/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/apps/wallpaper/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/wallpaper/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..aee44e138
Binary files /dev/null and b/apps/wallpaper/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/debug/apps/wallpaper/src/main/res/values-w820dp/dimens.xml b/apps/wallpaper/src/main/res/values-w820dp/dimens.xml
similarity index 78%
rename from debug/apps/wallpaper/src/main/res/values-w820dp/dimens.xml
rename to apps/wallpaper/src/main/res/values-w820dp/dimens.xml
index 63fc81644..a2d24bc10 100644
--- a/debug/apps/wallpaper/src/main/res/values-w820dp/dimens.xml
+++ b/apps/wallpaper/src/main/res/values-w820dp/dimens.xml
@@ -2,5 +2,5 @@
- 64dp
-
+
+
\ No newline at end of file
diff --git a/apps/wallpaper/src/main/res/values/dimens.xml b/apps/wallpaper/src/main/res/values/dimens.xml
new file mode 100644
index 000000000..9cfe70043
--- /dev/null
+++ b/apps/wallpaper/src/main/res/values/dimens.xml
@@ -0,0 +1,3 @@
+
+ 16dp
+
\ No newline at end of file
diff --git a/debug/apps/wallpaper/src/main/res/values/strings.xml b/apps/wallpaper/src/main/res/values/strings.xml
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/values/strings.xml
rename to apps/wallpaper/src/main/res/values/strings.xml
diff --git a/debug/apps/wallpaper/src/main/res/xml/wallpaper.xml b/apps/wallpaper/src/main/res/xml/wallpaper.xml
similarity index 100%
rename from debug/apps/wallpaper/src/main/res/xml/wallpaper.xml
rename to apps/wallpaper/src/main/res/xml/wallpaper.xml
diff --git a/debug/apps/watchface/build.gradle b/apps/watchface/build.gradle
similarity index 93%
rename from debug/apps/watchface/build.gradle
rename to apps/watchface/build.gradle
index 215878d49..212b286f8 100644
--- a/debug/apps/watchface/build.gradle
+++ b/apps/watchface/build.gradle
@@ -1,7 +1,8 @@
-apply plugin: 'com.android.application'
+plugins {
+ id 'com.android.application'
+}
android {
- compileSdkVersion 33
defaultConfig {
applicationId "processing.tests.watchface"
minSdkVersion 25
diff --git a/debug/apps/watchface/gradle.properties b/apps/watchface/gradle.properties
similarity index 100%
rename from debug/apps/watchface/gradle.properties
rename to apps/watchface/gradle.properties
diff --git a/debug/apps/watchface/src/main/AndroidManifest.xml b/apps/watchface/src/main/AndroidManifest.xml
similarity index 100%
rename from debug/apps/watchface/src/main/AndroidManifest.xml
rename to apps/watchface/src/main/AndroidManifest.xml
diff --git a/debug/apps/watchface/src/main/java/watchface/MainService.java b/apps/watchface/src/main/java/watchface/MainService.java
similarity index 100%
rename from debug/apps/watchface/src/main/java/watchface/MainService.java
rename to apps/watchface/src/main/java/watchface/MainService.java
diff --git a/debug/apps/watchface/src/main/java/watchface/Sketch.java b/apps/watchface/src/main/java/watchface/Sketch.java
similarity index 100%
rename from debug/apps/watchface/src/main/java/watchface/Sketch.java
rename to apps/watchface/src/main/java/watchface/Sketch.java
diff --git a/debug/apps/watchface/src/main/res/drawable-nodpi/bg.png b/apps/watchface/src/main/res/drawable-nodpi/bg.png
similarity index 100%
rename from debug/apps/watchface/src/main/res/drawable-nodpi/bg.png
rename to apps/watchface/src/main/res/drawable-nodpi/bg.png
diff --git a/debug/apps/watchface/src/main/res/drawable-nodpi/preview_analog.png b/apps/watchface/src/main/res/drawable-nodpi/preview_analog.png
similarity index 100%
rename from debug/apps/watchface/src/main/res/drawable-nodpi/preview_analog.png
rename to apps/watchface/src/main/res/drawable-nodpi/preview_analog.png
diff --git a/debug/apps/watchface/src/main/res/layout/main.xml b/apps/watchface/src/main/res/layout/main.xml
similarity index 100%
rename from debug/apps/watchface/src/main/res/layout/main.xml
rename to apps/watchface/src/main/res/layout/main.xml
diff --git a/apps/watchface/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/watchface/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..cde69bccc
Binary files /dev/null and b/apps/watchface/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/apps/watchface/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/watchface/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..c133a0cbd
Binary files /dev/null and b/apps/watchface/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/apps/watchface/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/watchface/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..bfa42f0e7
Binary files /dev/null and b/apps/watchface/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/apps/watchface/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/watchface/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..324e72cdd
Binary files /dev/null and b/apps/watchface/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/debug/apps/watchface/src/main/res/values/strings.xml b/apps/watchface/src/main/res/values/strings.xml
similarity index 100%
rename from debug/apps/watchface/src/main/res/values/strings.xml
rename to apps/watchface/src/main/res/values/strings.xml
diff --git a/debug/apps/watchface/src/main/res/xml/watch_face.xml b/apps/watchface/src/main/res/xml/watch_face.xml
similarity index 100%
rename from debug/apps/watchface/src/main/res/xml/watch_face.xml
rename to apps/watchface/src/main/res/xml/watch_face.xml
diff --git a/build.gradle b/build.gradle
index a957961c0..5bb77278f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,173 +1,55 @@
-import java.nio.file.Files
-import org.zeroturnaround.zip.ZipUtil
-import org.apache.commons.io.FileUtils
-import java.util.regex.Pattern
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
- dependencies {
- classpath 'com.android.tools.build:gradle:4.1.3'
- classpath group: 'commons-io', name: 'commons-io', version: '2.8.0'
- classpath group: 'org.zeroturnaround', name: 'zt-zip', version: '1.14'
- }
-}
+ dependencies {
+ classpath 'com.android.tools.build:gradle:8.0.2'
-plugins {
- id 'java'
- id('io.github.gradle-nexus.publish-plugin') version '1.1.0'
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
}
-apply from: "${rootDir}/scripts/publish-root.gradle"
-
allprojects {
- apply plugin: 'java'
- apply plugin: 'java-library'
-
- Properties versions = new Properties()
- versions.load(project.rootProject.file("mode/version.properties").newDataInputStream())
- ext.targetSdkVersion = versions.getProperty("android-platform")
- ext.appcompatVersion = versions.getProperty("androidx.appcompat%appcompat")
- ext.v4legacyVersion = versions.getProperty("androidx.legacy%legacy-support-v4")
- ext.wearVersion = versions.getProperty("com.google.android.support%wearable")
- ext.gvrVersion = versions.getProperty("com.google.vr")
- ext.garVersion = versions.getProperty("com.google.ar")
- ext.processingVersion = versions.getProperty("org.processing")
- ext.toolingVersion = versions.getProperty("org.gradle%gradle-tooling-api")
- ext.slf4jVersion = versions.getProperty("org.slf4j")
- ext.gradlewVersion = versions.getProperty("gradle-wrapper")
- ext.toolsLibVersion = versions.getProperty("android-toolslib")
- ext.jdtVersion = versions.getProperty("org.eclipse.jdt")
-
- Properties modeProperties = new Properties()
- modeProperties.load(project.rootProject.file("mode/mode.properties").newDataInputStream())
- ext.modeVersion = modeProperties.getProperty("prettyVersion")
+ repositories {
+ // This was was added to address an issue in JCenter with some Android packages (https://stackoverflow.com/questions/50563338/could-not-find-runtime-jar-android-arch-lifecycleruntime1-0-0/50564224).
+ // JCenter is no longer used but keep it just in case.
+ maven { url "https://maven.google.com" }
- Properties vrProperties = new Properties()
- vrProperties.load(project.rootProject.file("mode/libraries/vr/library.properties").newDataInputStream())
- ext.vrLibVersion = vrProperties.getProperty("prettyVersion")
+ // Apparently needed by AndroidX dependencies
+ maven { url "https://jitpack.io" }
- Properties arProperties = new Properties()
- arProperties.load(project.rootProject.file("mode/libraries/ar/library.properties").newDataInputStream())
- ext.arLibVersion = arProperties.getProperty("prettyVersion")
+ // Needed to get google-vr dependencies
+ maven { url 'https://repo.gradle.org/gradle/libs-releases' }
+ mavenCentral()
+ google()
+ }
- def fn = project.rootProject.file("local.properties")
- if (!fn.exists()) {
- if (System.env["ANDROID_SDK"] != null) {
- def syspath = System.env["ANDROID_SDK"]
- def parts = syspath.split(Pattern.quote(File.separator))
- def path = String.join("/", parts)
- fn.withWriterAppend { w ->
- w << "sdk.dir=${path}\n"
+ // Set Java compatibility for all projects
+ plugins.withType(JavaPlugin).configureEach {
+ java {
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(17)
}
- } else {
- throw new GradleException(
- "The file local.properties does not exist, and there is no ANDROID_SDK environmental variable defined in the system.\n" +
- "Define ANDROID_SDK so it points to the location of the Android SDK, or create the local.properties file manually\n" +
- "and add the following line to it:\n" +
- "sdk.dir=")
}
}
-
- Properties localProperties = new Properties()
- localProperties.load(project.rootProject.file("local.properties").newDataInputStream())
- def sdkDir = localProperties.getProperty("sdk.dir")
- ext.androidPlatformPath = "${sdkDir}/platforms/android-${targetSdkVersion}"
- ext.coreZipPath = "${rootDir}/mode/processing-core.zip"
-
- repositories {
- google()
- mavenCentral()
- maven { url "https://maven.google.com" }
- maven { url "https://jitpack.io" }
- maven { url 'https://repo.gradle.org/gradle/libs-releases' }
- flatDir dirs: androidPlatformPath
- flatDir dirs: "${rootDir}/core/build/libs"
- }
-
- compileJava {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
-
- // Uncomment this option when building with Java 11+
- // https://github.com/processing/processing-android/issues/625
- // options.release = 8
+ // Set Android compatibility for all Android projects
+ plugins.withType(com.android.build.gradle.BasePlugin).configureEach {
+ android {
+ compileSdkVersion 33
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
+ }
+ }
}
}
-clean.doFirst {
- delete "dist"
-}
-
-task dist {
- dependsOn subprojects.build
- doLast {
- def root = "${buildDir}/zip/AndroidMode"
-
- // Copy assets to build dir
- FileUtils.copyDirectory(file("mode/templates"), file("${root}/templates"))
- FileUtils.copyDirectory(file("mode/examples"), file("${root}/examples"))
- FileUtils.copyDirectory(file("mode/icons"), file("${root}/icons"))
- FileUtils.copyDirectory(file("mode/theme"), file("${root}/theme"))
- FileUtils.copyDirectory(file("mode/mode"), file("${root}/mode"))
- delete "${root}/mode/core.jar"
- delete "${root}/mode/pde.jar"
- delete "${root}/mode/JavaMode.jar"
- // delete "${root}/mode/jdi.jar"
- // delete "${root}/mode/jdimodel.jar"
-
- Files.copy(file("mode/processing-core.zip").toPath(),
- file("${root}/processing-core.zip").toPath(), REPLACE_EXISTING)
-
- Files.copy(file("mode/keywords.txt").toPath(),
- file("${root}/keywords.txt").toPath(), REPLACE_EXISTING)
-
- Files.copy(file("mode/version.properties").toPath(),
- file("${root}/version.properties").toPath(), REPLACE_EXISTING)
-
- Files.copy(file("mode/mode.properties").toPath(),
- file("${root}/mode.properties").toPath(), REPLACE_EXISTING)
-
- FileUtils.copyDirectory(file("mode/languages"),
- file("${root}/languages"))
-
- FileUtils.copyDirectory(file("mode/resources"),
- file("${root}/resources"))
-
- FileUtils.copyDirectory(file("mode/tools/SDKUpdater/tool"),
- file("${root}/tools/SDKUpdater/tool"))
- FileUtils.copyDirectory(file("mode/tools/SDKUpdater/lib"),
- file("${root}/tools/SDKUpdater/lib"))
- FileUtils.copyDirectory(file("mode/tools/SDKUpdater/src"),
- file("${root}/tools/SDKUpdater/src"))
-
- FileUtils.copyDirectory(file("mode/libraries/vr/examples"),
- file("${root}/libraries/vr/examples"))
- FileUtils.copyDirectory(file("mode/libraries/vr/library"),
- file("${root}/libraries/vr/library"))
- FileUtils.copyDirectory(file("mode/libraries/vr/src"),
- file("${root}/libraries/vr/src"))
- Files.copy(file("mode/libraries/vr/library.properties").toPath(),
- file("${root}/libraries/vr/library.properties").toPath(), REPLACE_EXISTING)
-
- FileUtils.copyDirectory(file("mode/libraries/ar/examples"),
- file("${root}/libraries/ar/examples"))
- FileUtils.copyDirectory(file("mode/libraries/ar/library"),
- file("${root}/libraries/ar/library"))
- FileUtils.copyDirectory(file("mode/libraries/ar/src"),
- file("${root}/libraries/ar/src"))
- Files.copy(file("mode/libraries/ar/library.properties").toPath(),
- file("${root}/libraries/ar/library.properties").toPath(), REPLACE_EXISTING)
-
- File distFolder = file("dist")
- distFolder.mkdirs()
- ZipUtil.pack(file("${buildDir}/zip"), new File("dist/AndroidMode.zip"))
- Files.copy(file("mode/mode.properties").toPath(),
- file("dist/AndroidMode.txt").toPath(), REPLACE_EXISTING)
- }
-}
+tasks.register('clean', Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/buildSrc/src/main/groovy/processing/android/ImportAar.groovy b/buildSrc/src/main/groovy/processing/android/ImportAar.groovy
deleted file mode 100644
index 8880ff931..000000000
--- a/buildSrc/src/main/groovy/processing/android/ImportAar.groovy
+++ /dev/null
@@ -1,125 +0,0 @@
-package processing.android
-
-import org.gradle.api.Plugin
-import org.gradle.api.Project
-import org.gradle.api.plugins.PluginManager
-import org.gradle.api.plugins.ExtensionContainer
-import org.gradle.plugins.ide.idea.IdeaPlugin
-import org.gradle.plugins.ide.idea.model.IdeaModel
-import org.gradle.plugins.ide.idea.model.IdeaModule
-import org.gradle.api.artifacts.Configuration
-import org.gradle.api.artifacts.transform.ArtifactTransform
-
-import static org.gradle.api.internal.artifacts.ArtifactAttributes.ARTIFACT_FORMAT
-import com.android.build.gradle.internal.dependency.AarTransform
-import com.android.build.gradle.internal.dependency.ExtractAarTransform
-import com.android.build.gradle.internal.publishing.AndroidArtifacts
-import com.android.builder.aar.AarExtractor
-import com.google.common.collect.ImmutableList
-import java.util.regex.Pattern
-import static com.android.SdkConstants.FD_JARS
-import static com.android.SdkConstants.FN_CLASSES_JAR
-
-import java.io.File
-import java.nio.file.Files
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING
-
-/**
- * Build Gradle plgin needed to use aar files as dependencies in a pure java library project.
- * Adapted from the following plugin by nekocode
- * https://github.com/nekocode/Gradle-Import-Aar
- * Ported to Groovy, and made specific to the needs of the Android mode build process (i.e.: this plugin
- * is not meant to be used with other projects).
- */
-class ImportAar implements Plugin {
-
- final String CONFIG_NAME_POSTFIX = "Aar"
-
- void apply(Project project) {
- def aar = AndroidArtifacts.TYPE_AAR
- def jar = AndroidArtifacts.TYPE_JAR
- def exp = AndroidArtifacts.TYPE_EXPLODED_AAR
-
- // // Create aar configurations
- Collection allConfigs = project.getConfigurations().toList()
- for (Configuration config: allConfigs) {
- Configuration aarConfig = project.configurations.maybeCreate(config.name + CONFIG_NAME_POSTFIX)
-
- // Add extracted jars to original configuration after project evaluating
- aarConfig.getAttributes().attribute(ARTIFACT_FORMAT, jar)
- project.afterEvaluate {
- for (File jarFile: aarConfig) {
- // print "================================================> FILE "
- // println jarFile
- // println jarFile.getName()
- // for (String s: project.sourceSets.main.compileClasspath) {
- // println s
- // }
- // project.getDependencies().add(config.name, project.files(jarFile))
-
- // Add jar file to classpath
- project.sourceSets.main.compileClasspath += project.files(jarFile)
-
- File libraryFolder = new File(System.getProperty("user.dir"), "build/libs")
- libraryFolder.mkdirs()
-
- // Strip version number when copying
- String name = jarFile.getName()
- int p = name.lastIndexOf("-")
- String libName = name.substring(0, p) + ".jar"
- File libraryJar = new File(libraryFolder, libName)
- Files.copy(jarFile.toPath(), libraryJar.toPath(), REPLACE_EXISTING)
- }
-
- }
-
- // Tell Idea about our aar configuration
- PluginManager pluginManager = project.getPluginManager()
- pluginManager.apply(IdeaPlugin.class)
- ExtensionContainer extensions = project.getExtensions()
- // IdeaModel model = extensions.getByType(IdeaModel.class)
- IdeaModel model = extensions.getByName("idea")
- IdeaModule module = model.getModule()
- module.scopes.PROVIDED.plus += [aarConfig]
- }
-
- // Register aar transform
- project.dependencies {
- registerTransform {
- from.attribute(ARTIFACT_FORMAT, aar)
- to.attribute(ARTIFACT_FORMAT, jar)
- artifactTransform(AarJarArtifactTransform.class)
- }
- }
- }
-
- static class AarJarArtifactTransform extends ArtifactTransform {
- @Override
- List transform(File file) {
- // println "Transforming---------------------------------"
- // println outputDirectory
- // println file
- File explodedDir = new File(getOutputDirectory(), "exploded")
- // println explodedDir
-
- AarExtractor aarExtractor = new AarExtractor()
- aarExtractor.extract(file, explodedDir)
- File classesJar = new File(new File(explodedDir, FD_JARS), FN_CLASSES_JAR)
- // println classesJar
-
- // String[] names = file.getPath().split(Pattern.quote(File.separator))
- // print "NAMES "
- // println names
- // print "NAME "
- // println file.getName()
- // String aarName = names[names.length - 4].replace(".aar", "")
- String aarName = file.getName().replace(".aar", "")
- // print "AAR NAME "
- // println aarName
- File renamedJar = new File(getOutputDirectory(), aarName + ".jar")
- renamedJar << classesJar.bytes
-
- return ImmutableList.of(renamedJar)
- }
- }
-}
\ No newline at end of file
diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/aar.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/aar.properties
deleted file mode 100644
index 42d81af01..000000000
--- a/buildSrc/src/main/resources/META-INF/gradle-plugins/aar.properties
+++ /dev/null
@@ -1 +0,0 @@
-implementation-class=processing.android.ImportAar
\ No newline at end of file
diff --git a/core/build.gradle b/core/build.gradle
deleted file mode 100644
index 4aadfdd44..000000000
--- a/core/build.gradle
+++ /dev/null
@@ -1,96 +0,0 @@
-import org.apache.tools.ant.Project
-import java.nio.file.Files
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-
-plugins {
- id 'aar'
-}
-
-dependencies {
- implementation name: "android"
- implementationAar "androidx.legacy:legacy-support-v4:${v4legacyVersion}"
- implementationAar "com.google.android.support:wearable:${wearVersion}"
-}
-
-sourceSets {
- main {
- java {
- srcDirs = ["src/"]
- }
- resources {
- srcDirs = ["src/"]
- }
- }
-}
-
-task sourceJar(type: Jar, dependsOn: classes) {
- duplicatesStrategy = DuplicatesStrategy.INCLUDE
- classifier = "sources"
- from sourceSets.main.allSource
-}
-
-// Does not work because of Processing-specific tags in source code, such as @webref
-task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = "javadoc"
- from javadoc.destinationDir
-}
-
-artifacts {
-// archives javadocJar
- archives sourceJar
-}
-
-jar.doLast { task ->
- ant.checksum file: task.archivePath
-}
-
-clean.doFirst {
- delete "dist"
- delete "${coreZipPath}"
-}
-
-compileJava.doFirst {
- String[] deps = ["wearable.jar"]
- for (String fn : deps) {
- Files.copy(file("${rootDir}/build/libs/" + fn).toPath(),
- file("${rootDir}/mode/mode/" + fn).toPath(), REPLACE_EXISTING)
- }
-}
-
-build.doLast {
-
- // Need to check the existance of the files before using as the files
- // will get generated only if Task :core:jar is not being skipped
- // Task :core:jar will be skipped if source files are unchanged or jar task is UP-TO-DATE
-
- if (file("${buildDir}/libs/core.jar").exists()) {
- // Copying core jar as zip inside the mode folder
- Files.copy(file("${buildDir}/libs/core.jar").toPath(),
- file("${coreZipPath}").toPath(), REPLACE_EXISTING)
- }
- // Renaming artifacts for maven publishing
- if (file("${buildDir}/libs/core.jar").exists()) {
- Files.move(file("${buildDir}/libs/core.jar").toPath(),
- file("$buildDir/libs/processing-core-${modeVersion}.jar").toPath(), REPLACE_EXISTING);
- }
- if (file("${buildDir}/libs/core-sources.jar").exists()) {
- Files.move(file("${buildDir}/libs/core-sources.jar").toPath(),
- file("$buildDir/libs/processing-core-${modeVersion}-sources.jar").toPath(), REPLACE_EXISTING);
- }
- if (file("${buildDir}/libs/core.jar.MD5").exists()) {
- Files.move(file("${buildDir}/libs/core.jar.MD5").toPath(),
- file("$buildDir/libs/processing-core-${modeVersion}.jar.md5").toPath(), REPLACE_EXISTING);
- }
-}
-
-ext {
- libName = 'processing-core'
- libVersion = modeVersion
- libJar = "${buildDir}/libs/${libName}-${libVersion}.jar"
- libSrc = "${buildDir}/libs/${libName}-${libVersion}-sources.jar"
- libMd5 = "${buildDir}/libs/${libName}-${libVersion}-sources.jar.md5"
- libDependencies = [[name: 'legacy-support-v4', group: 'androidx.legacy', version: v4legacyVersion],
- [name: 'wearable', group: 'com.google.android.support', version: wearVersion],
- [name: 'android']]
-}
-apply from: "${rootProject.projectDir}/scripts/publish-module.gradle"
diff --git a/debug/apps/vrcube/src/main/java/vrcube/MainActivity.java b/debug/apps/vrcube/src/main/java/vrcube/MainActivity.java
deleted file mode 100644
index 073189db3..000000000
--- a/debug/apps/vrcube/src/main/java/vrcube/MainActivity.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package vrcube;
-
-import android.os.Bundle;
-
-import processing.vr.VRActivity;
-import processing.core.PApplet;
-
-public class MainActivity extends VRActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- PApplet sketch = new Sketch();
- setSketch(sketch);
- }
-}
\ No newline at end of file
diff --git a/debug/build.gradle b/debug/build.gradle
deleted file mode 100644
index 78b7a12c1..000000000
--- a/debug/build.gradle
+++ /dev/null
@@ -1,44 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:7.3.1'
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- // This was was added to address an issue in JCenter with some Android packages (https://stackoverflow.com/questions/50563338/could-not-find-runtime-jar-android-arch-lifecycleruntime1-0-0/50564224).
- // JCenter is no longer used but keep it just in case.
- maven { url "https://maven.google.com" }
-
- // Apparently needed by AndroidX dependencies
- maven { url "https://jitpack.io" }
-
- // Needed to get google-vr dependencies
- maven { url 'https://repo.gradle.org/gradle/libs-releases' }
-
- // Using the legacy Google VR libs included in the mode's VR library, since they are no
- // longer available online
-// flatDir {
-// dirs '../mode/libraries/vr/libs'
-// }
-
- mavenCentral()
- google()
-
- google()
- mavenCentral()
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/debug/gradle.properties b/debug/gradle.properties
deleted file mode 100644
index 278e9e7db..000000000
--- a/debug/gradle.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-## For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-#
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx1024m -XX:MaxPermSize=256m
-# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-#
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-#Wed Dec 30 11:02:34 EST 2020
-android.enableJetifier=true
-android.useAndroidX=true
-
-# Line to fix the ''module java.base does not "opens java.io" to unnamed module '' error in Android Studio:
-# https://stackoverflow.com/questions/67782975/how-to-fix-the-module-java-base-does-not-opens-java-io-to-unnamed-module
-# Probably not needed if using a version of the Android Gradle Plugin compatible with the JDK:
-# https://docs.gradle.org/current/userguide/compatibility.html
-org.gradle.jvmargs=-Xmx1536M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
\ No newline at end of file
diff --git a/debug/libs/google-vr/protobuf-javanano-3.1.0.jar b/debug/libs/google-vr/protobuf-javanano-3.1.0.jar
deleted file mode 100644
index 8aac9068d..000000000
Binary files a/debug/libs/google-vr/protobuf-javanano-3.1.0.jar and /dev/null differ
diff --git a/debug/libs/processing-ar/AndroidManifest.xml b/debug/libs/processing-ar/AndroidManifest.xml
deleted file mode 100755
index 8c707a40f..000000000
--- a/debug/libs/processing-ar/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/debug/libs/processing-ar/gradle.properties b/debug/libs/processing-ar/gradle.properties
deleted file mode 100755
index 0b8af424f..000000000
--- a/debug/libs/processing-ar/gradle.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-POM_NAME=Processing for Android AR Library
-POM_ARTIFACT_ID=processing-ar
-POM_PACKAGING=aar
-android.enableJetifier=true
-android.useAndroidX=true
\ No newline at end of file
diff --git a/debug/libs/processing-ar/project.properties b/debug/libs/processing-ar/project.properties
deleted file mode 100755
index 91d2b0246..000000000
--- a/debug/libs/processing-ar/project.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-19
-android.library=true
diff --git a/debug/libs/processing-core/AndroidManifest.xml b/debug/libs/processing-core/AndroidManifest.xml
deleted file mode 100755
index 5587f2ed2..000000000
--- a/debug/libs/processing-core/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/debug/libs/processing-core/gradle.properties b/debug/libs/processing-core/gradle.properties
deleted file mode 100755
index 7420d96aa..000000000
--- a/debug/libs/processing-core/gradle.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-POM_NAME=Processing for Android Core Library
-POM_ARTIFACT_ID=processing-core
-POM_PACKAGING=aar
-android.enableJetifier=true
-android.useAndroidX=true
\ No newline at end of file
diff --git a/debug/libs/processing-core/project.properties b/debug/libs/processing-core/project.properties
deleted file mode 100755
index 36f15941e..000000000
--- a/debug/libs/processing-core/project.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-15
-android.library=true
diff --git a/debug/libs/processing-vr/AndroidManifest.xml b/debug/libs/processing-vr/AndroidManifest.xml
deleted file mode 100755
index bd9f8c46f..000000000
--- a/debug/libs/processing-vr/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/debug/libs/processing-vr/gradle.properties b/debug/libs/processing-vr/gradle.properties
deleted file mode 100755
index 66fa090a2..000000000
--- a/debug/libs/processing-vr/gradle.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-POM_NAME=Processing for Android VR Library
-POM_ARTIFACT_ID=processing-vr
-POM_PACKAGING=aar
-android.enableJetifier=true
-android.useAndroidX=true
\ No newline at end of file
diff --git a/debug/libs/processing-vr/project.properties b/debug/libs/processing-vr/project.properties
deleted file mode 100755
index 91d2b0246..000000000
--- a/debug/libs/processing-vr/project.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-19
-android.library=true
diff --git a/debug/settings.gradle b/debug/settings.gradle
deleted file mode 100644
index 649bcc56e..000000000
--- a/debug/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-include ':apps:simple', ':apps:wallpaper', ':apps:vrcube', ':apps:arscene', ':apps:watchface', ':apps:fast2d', ':libs:processing-core', 'libs:google-vr',':libs:processing-vr', ':libs:processing-ar'
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index aa991fcea..d6e308a63 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 1b6c78733..f5feea6d6 100755
--- a/gradlew
+++ b/gradlew
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +82,12 @@ do
esac
done
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -133,22 +134,29 @@ location of your Java installation."
fi
else
JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then
done
fi
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
@@ -205,6 +217,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
diff --git a/debug/libs/google-vr/build.gradle b/libs/google-vr/build.gradle
similarity index 67%
rename from debug/libs/google-vr/build.gradle
rename to libs/google-vr/build.gradle
index ad6fe686d..9d7c8f77b 100644
--- a/debug/libs/google-vr/build.gradle
+++ b/libs/google-vr/build.gradle
@@ -2,9 +2,6 @@
// https://stackoverflow.com/a/60888941
configurations.maybeCreate("default")
-artifacts.add("default", file('sdk-audio-1.180.0.aar'))
artifacts.add("default", file('sdk-base-1.180.0.aar'))
artifacts.add("default", file('sdk-common-1.180.0.aar'))
-
-// https://mvnrepository.com/artifact/com.google.protobuf.nano/protobuf-javanano/3.1.0
-//artifacts.add("default", file('protobuf-javanano-3.1.0.jar'))
+artifacts.add("default", file('sdk-audio-1.180.0.aar'))
diff --git a/debug/libs/google-vr/sdk-audio-1.180.0.aar b/libs/google-vr/sdk-audio-1.180.0.aar
similarity index 100%
rename from debug/libs/google-vr/sdk-audio-1.180.0.aar
rename to libs/google-vr/sdk-audio-1.180.0.aar
diff --git a/debug/libs/google-vr/sdk-base-1.180.0.aar b/libs/google-vr/sdk-base-1.180.0.aar
similarity index 100%
rename from debug/libs/google-vr/sdk-base-1.180.0.aar
rename to libs/google-vr/sdk-base-1.180.0.aar
diff --git a/debug/libs/google-vr/sdk-common-1.180.0.aar b/libs/google-vr/sdk-common-1.180.0.aar
similarity index 100%
rename from debug/libs/google-vr/sdk-common-1.180.0.aar
rename to libs/google-vr/sdk-common-1.180.0.aar
diff --git a/debug/libs/processing-ar/build.gradle b/libs/processing-ar/build.gradle
similarity index 53%
rename from debug/libs/processing-ar/build.gradle
rename to libs/processing-ar/build.gradle
index fab391e4d..f0681e6de 100755
--- a/debug/libs/processing-ar/build.gradle
+++ b/libs/processing-ar/build.gradle
@@ -1,23 +1,25 @@
-apply plugin: 'com.android.library'
+plugins {
+ id 'com.android.library'
+}
android {
- compileSdkVersion 33
+ namespace "processing.ar"
+
defaultConfig {
minSdkVersion 19
targetSdkVersion 33
}
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['../../../mode/libraries/ar/src']
- assets.srcDirs = ['../../../mode/libraries/ar/src/assets']
- }
- }
+
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- productFlavors {
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
}
}
diff --git a/libs/processing-ar/proguard-rules.pro b/libs/processing-ar/proguard-rules.pro
new file mode 100644
index 000000000..f1b424510
--- /dev/null
+++ b/libs/processing-ar/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/libs/processing-ar/src/main/AndroidManifest.xml b/libs/processing-ar/src/main/AndroidManifest.xml
new file mode 100755
index 000000000..97330b776
--- /dev/null
+++ b/libs/processing-ar/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mode/libraries/ar/src/assets/shaders/ARLightFrag.glsl b/libs/processing-ar/src/main/assets/shaders/ARLightFrag.glsl
similarity index 100%
rename from mode/libraries/ar/src/assets/shaders/ARLightFrag.glsl
rename to libs/processing-ar/src/main/assets/shaders/ARLightFrag.glsl
diff --git a/mode/libraries/ar/src/assets/shaders/ARLightVert.glsl b/libs/processing-ar/src/main/assets/shaders/ARLightVert.glsl
similarity index 100%
rename from mode/libraries/ar/src/assets/shaders/ARLightVert.glsl
rename to libs/processing-ar/src/main/assets/shaders/ARLightVert.glsl
diff --git a/mode/libraries/ar/src/assets/shaders/ARTexLightFrag.glsl b/libs/processing-ar/src/main/assets/shaders/ARTexLightFrag.glsl
similarity index 100%
rename from mode/libraries/ar/src/assets/shaders/ARTexLightFrag.glsl
rename to libs/processing-ar/src/main/assets/shaders/ARTexLightFrag.glsl
diff --git a/mode/libraries/ar/src/assets/shaders/ARTexLightVert.glsl b/libs/processing-ar/src/main/assets/shaders/ARTexLightVert.glsl
similarity index 100%
rename from mode/libraries/ar/src/assets/shaders/ARTexLightVert.glsl
rename to libs/processing-ar/src/main/assets/shaders/ARTexLightVert.glsl
diff --git a/mode/libraries/ar/src/assets/shaders/BackgroundFrag.glsl b/libs/processing-ar/src/main/assets/shaders/BackgroundFrag.glsl
similarity index 100%
rename from mode/libraries/ar/src/assets/shaders/BackgroundFrag.glsl
rename to libs/processing-ar/src/main/assets/shaders/BackgroundFrag.glsl
diff --git a/mode/libraries/ar/src/assets/shaders/BackgroundVert.glsl b/libs/processing-ar/src/main/assets/shaders/BackgroundVert.glsl
similarity index 100%
rename from mode/libraries/ar/src/assets/shaders/BackgroundVert.glsl
rename to libs/processing-ar/src/main/assets/shaders/BackgroundVert.glsl
diff --git a/mode/libraries/ar/src/processing/ar/ARAnchor.java b/libs/processing-ar/src/main/java/processing/ar/ARAnchor.java
similarity index 100%
rename from mode/libraries/ar/src/processing/ar/ARAnchor.java
rename to libs/processing-ar/src/main/java/processing/ar/ARAnchor.java
diff --git a/mode/libraries/ar/src/processing/ar/ARGraphics.java b/libs/processing-ar/src/main/java/processing/ar/ARGraphics.java
similarity index 60%
rename from mode/libraries/ar/src/processing/ar/ARGraphics.java
rename to libs/processing-ar/src/main/java/processing/ar/ARGraphics.java
index fc31e12ae..3cdfba0b9 100644
--- a/mode/libraries/ar/src/processing/ar/ARGraphics.java
+++ b/libs/processing-ar/src/main/java/processing/ar/ARGraphics.java
@@ -3,7 +3,7 @@
/*
Part of the Processing project - http://processing.org
- Copyright (c) 2019 The Processing Foundation
+ Copyright (c) 2019-23 The Processing Foundation
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -25,11 +25,14 @@
import android.view.SurfaceHolder;
import com.google.ar.core.Anchor;
+import com.google.ar.core.AugmentedImage;
import com.google.ar.core.HitResult;
import com.google.ar.core.Plane;
import com.google.ar.core.Pose;
import com.google.ar.core.Trackable;
import com.google.ar.core.TrackingState;
+import com.google.ar.core.Config;
+import com.google.ar.core.Session;
import java.net.URL;
import java.nio.FloatBuffer;
@@ -54,6 +57,7 @@ public class ARGraphics extends PGraphics3D {
static protected final int PLANE_CEILING = 1;
static protected final int PLANE_WALL = 2;
static protected final int POINT = 3;
+ static protected final int IMAGE = 4;
static protected final int TRACKING = 0;
static protected final int PAUSED = 1;
@@ -70,12 +74,12 @@ public class ARGraphics extends PGraphics3D {
protected float[] colorCorrection = new float[4];
protected ArrayList trackers = new ArrayList();
- protected ArrayList trackPlanes = new ArrayList();
- protected HashMap trackMatrices = new HashMap();
- protected HashMap trackIds = new HashMap();
+ protected ArrayList trackObjects = new ArrayList();
+ protected HashMap trackMatrices = new HashMap();
+ protected HashMap trackIds = new HashMap();
protected HashMap trackIdx = new HashMap();
- protected ArrayList newPlanes = new ArrayList();
+ protected ArrayList newObjects = new ArrayList();
protected ArrayList delAnchors = new ArrayList();
protected HashMap anchors = new HashMap();
@@ -98,6 +102,7 @@ public class ARGraphics extends PGraphics3D {
protected PShader arLightShader;
protected PShader arTexlightShader;
+
public ARGraphics() {
}
@@ -120,6 +125,14 @@ protected PGL createPGL(PGraphicsOpenGL pGraphicsOpenGL) {
}
+ @Override
+ public void eye() {
+ super.ortho(0, width, -height, 0, -1, +1);
+
+ eyeDist = 1;
+ resetMatrix();
+ }
+
@Override
public void beginDraw() {
super.beginDraw();
@@ -210,13 +223,12 @@ public void removeTracker(ARTracker tracker) {
public int trackableCount() {
- return trackPlanes.size();
+ return trackObjects.size();
}
-
public int trackableId(int i) {
- return trackIds.get(trackPlanes.get(i));
+ return trackIds.get(trackObjects.get(i));
}
@@ -224,45 +236,72 @@ public int trackableIndex(int id) {
return trackIdx.get(id);
}
+
+ public String trackableName(int i) {
+ Trackable track = trackObjects.get(i);
+ if (track instanceof AugmentedImage) {
+ AugmentedImage img = ((AugmentedImage)track);
+ return img.getName();
+ }
+ return null;
+ }
+
+
public int trackableType(int i) {
- Plane plane = trackPlanes.get(i);
- if (plane.getType() == Plane.Type.HORIZONTAL_UPWARD_FACING) {
- return PLANE_FLOOR;
- } else if (plane.getType() == Plane.Type.HORIZONTAL_DOWNWARD_FACING) {
- return PLANE_CEILING;
- } else if (plane.getType() == Plane.Type.VERTICAL) {
- return PLANE_WALL;
+ Trackable track = trackObjects.get(i);
+ if (track instanceof Plane) {
+ Plane plane = (Plane)track;
+ if (plane.getType() == Plane.Type.HORIZONTAL_UPWARD_FACING) {
+ return PLANE_FLOOR;
+ } else if (plane.getType() == Plane.Type.HORIZONTAL_DOWNWARD_FACING) {
+ return PLANE_CEILING;
+ } else if (plane.getType() == Plane.Type.VERTICAL) {
+ return PLANE_WALL;
+ }
+ } else if (track instanceof AugmentedImage) {
+ return IMAGE;
}
return UNKNOWN;
}
+
public int trackableStatus(int i) {
- Plane plane = trackPlanes.get(i);
- if (plane.getTrackingState() == TrackingState.PAUSED) {
+ Trackable track = trackObjects.get(i);
+ if (track.getTrackingState() == TrackingState.PAUSED) {
return PAUSED;
- } else if (plane.getTrackingState() == TrackingState.TRACKING) {
+ } else if (track.getTrackingState() == TrackingState.TRACKING) {
return TRACKING;
- } else if (plane.getTrackingState() == TrackingState.STOPPED) {
+ } else if (track.getTrackingState() == TrackingState.STOPPED) {
return STOPPED;
}
return UNKNOWN;
}
+
public boolean trackableNew(int i) {
- Plane plane = trackPlanes.get(i);
- return newPlanes.contains(plane);
+ Trackable track = trackObjects.get(i);
+ return newObjects.contains(track);
}
+
public boolean trackableSelected(int i, int mx, int my) {
- Plane planei = trackPlanes.get(i);
+ Trackable tracki = trackObjects.get(i);
for (HitResult hit : surfar.frame.hitTest(mx, my)) {
Trackable trackable = hit.getTrackable();
+ Pose hitPose = hit.getHitPose();
if (trackable instanceof Plane) {
Plane plane = (Plane)trackable;
- if (planei.equals(plane) && plane.isPoseInPolygon(hit.getHitPose())) {
+ if (tracki.equals(plane) && plane.isPoseInPolygon(hitPose)) {
return true;
}
- }
+ } else if (trackable instanceof AugmentedImage) {
+ AugmentedImage image = (AugmentedImage)trackable;
+ Pose anchorPose = image.getCenterPose();
+ Pose localHitPose = anchorPose.compose(hitPose);
+ if (tracki.equals(image) && isPoseInsideAugmentedImage(localHitPose, image)) {
+ return true;
+ }
+ }
}
return false;
}
@@ -271,49 +310,114 @@ public boolean trackableSelected(int i, int mx, int my) {
protected HitResult getHitResult(int mx, int my) {
for (HitResult hit : surfar.frame.hitTest(mx, my)) {
Trackable trackable = hit.getTrackable();
+ Pose hitPose = hit.getHitPose();
if (trackable instanceof Plane) {
Plane plane = (Plane)trackable;
- if (trackPlanes.contains(plane) && plane.isPoseInPolygon(hit.getHitPose())) {
+ if (trackObjects.contains(plane) && plane.isPoseInPolygon(hitPose)) {
return hit;
}
+ } else if (trackable instanceof AugmentedImage) {
+ AugmentedImage image = (AugmentedImage)trackable;
+ Pose anchorPose = image.getCenterPose();
+ Pose localHitPose = anchorPose.compose(hitPose);
+ if (trackObjects.contains(image) && isPoseInsideAugmentedImage(localHitPose, image)) {
+ return hit;
+ }
}
}
return null;
}
+
+ private boolean isPoseInsideAugmentedImage(Pose pose, AugmentedImage image) {
+ // Get the four corners of the AugmentedImage's defining rectangle
+ float[] corners = new float[16];
+ image.getCenterPose().toMatrix(corners, 0);
+
+ // Define the vertices of the rectangle in 2D (assuming the image is flat on the XZ plane)
+ float imageMinX = Float.POSITIVE_INFINITY;
+ float imageMaxX = Float.NEGATIVE_INFINITY;
+ float imageMinZ = Float.POSITIVE_INFINITY;
+ float imageMaxZ = Float.NEGATIVE_INFINITY;
+
+ // Extract the X and Z coordinates of the corners
+ for (int i = 0; i < 8; i += 2) {
+ float cornerX = corners[i];
+ float cornerZ = corners[i + 2];
+
+ if (cornerX < imageMinX) {
+ imageMinX = cornerX;
+ }
+ if (cornerX > imageMaxX) {
+ imageMaxX = cornerX;
+ }
+ if (cornerZ < imageMinZ) {
+ imageMinZ = cornerZ;
+ }
+ if (cornerZ > imageMaxZ) {
+ imageMaxZ = cornerZ;
+ }
+ }
+
+ // Check if the Pose's position (X, Z) is within the bounds of the AugmentedImage's rectangle
+ float poseX = pose.tx();
+ float poseZ = pose.tz();
+ return (imageMinX <= poseX && poseX <= imageMaxX && imageMinZ <= poseZ && poseZ <= imageMaxZ);
+ }
+
+
protected int getTrackable(HitResult hit) {
- Plane plane = (Plane) hit.getTrackable();
- return trackPlanes.indexOf(plane);
+ Trackable track = hit.getTrackable();
+ return trackObjects.indexOf(track);
}
+
public float[] getTrackablePolygon(int i) {
return getTrackablePolygon(i, null);
}
public float[] getTrackablePolygon(int i, float[] points) {
- Plane plane = trackPlanes.get(i);
- FloatBuffer buffer = plane.getPolygon();
- buffer.rewind();
- if (points == null || points.length < buffer.capacity()) {
- points = new float[buffer.capacity()];
+ Trackable track = trackObjects.get(i);
+ if (track instanceof Plane) {
+ Plane plane = (Plane)track;
+ FloatBuffer buffer = plane.getPolygon();
+ buffer.rewind();
+ if (points == null || points.length < buffer.capacity()) {
+ points = new float[buffer.capacity()];
+ }
+ buffer.get(points, 0, buffer.capacity());
+ } else if (track instanceof AugmentedImage) {
+ AugmentedImage image = (AugmentedImage)track;
+ points = new float[8];
+ image.getCenterPose().toMatrix(points, 0);
}
- buffer.get(points, 0, buffer.capacity());
return points;
}
public float getTrackableExtentX(int i) {
- Plane plane = trackPlanes.get(i);
- return plane.getExtentX();
+ Trackable track = trackObjects.get(i);
+ if (track instanceof Plane) {
+ return ((Plane)track).getExtentX();
+ } else if (track instanceof AugmentedImage) {
+ return ((AugmentedImage)track).getExtentX();
+ }
+ return -1;
}
public float getTrackableExtentZ(int i) {
- Plane plane = trackPlanes.get(i);
- return plane.getExtentZ();
+ Trackable track = trackObjects.get(i);
+ if (track instanceof Plane) {
+ return ((Plane)track).getExtentZ();
+ } else if (track instanceof AugmentedImage) {
+ return ((AugmentedImage)track).getExtentZ();
+ }
+ return -1;
}
+
public PMatrix3D getTrackableMatrix(int i) {
return getTrackableMatrix(i, null);
}
@@ -324,7 +428,7 @@ public PMatrix3D getTrackableMatrix(int i, PMatrix3D target) {
target = new PMatrix3D();
}
- Plane plane = trackPlanes.get(i);
+ Plane plane = (Plane)trackObjects.get(i);
float[] mat = trackMatrices.get(plane);
target.set(mat[0], mat[4], mat[8], mat[12],
mat[1], mat[5], mat[9], mat[13],
@@ -336,27 +440,45 @@ public PMatrix3D getTrackableMatrix(int i, PMatrix3D target) {
public int createAnchor(int i, float x, float y, float z) {
- Plane plane = trackPlanes.get(i);
- Pose planePose = plane.getCenterPose();
- pointIn[0] = x;
- pointIn[1] = y;
- pointIn[2] = z;
- planePose.transformPoint(pointIn, 0, pointOut, 0);
- Pose anchorPose = Pose.makeTranslation(pointOut);
- Anchor anchor = plane.createAnchor(anchorPose);
- anchors.put(++lastAnchorId, anchor);
- return lastAnchorId;
+ Trackable track = trackObjects.get(i);
+ Pose centerPose = null;
+ if (track instanceof Plane) {
+ Plane plane = (Plane)track;
+ centerPose = plane.getCenterPose();
+ } else if (track instanceof AugmentedImage) {
+ AugmentedImage img = (AugmentedImage)track;
+ centerPose = img.getCenterPose();
+ }
+ if (centerPose != null) {
+ pointIn[0] = x;
+ pointIn[1] = y;
+ pointIn[2] = z;
+ centerPose.transformPoint(pointIn, 0, pointOut, 0);
+ Pose anchorPose = Pose.makeTranslation(pointOut);
+ Anchor anchor = track.createAnchor(anchorPose);
+ anchors.put(++lastAnchorId, anchor);
+ return lastAnchorId;
+ }
+ return -1;
}
public int createAnchor(int mx, int my) {
for (HitResult hit : surfar.frame.hitTest(mx, my)) {
Trackable trackable = hit.getTrackable();
+ Pose hitPose = hit.getHitPose();
if (trackable instanceof Plane) {
Plane plane = (Plane)trackable;
- if (trackPlanes.contains(plane) && plane.isPoseInPolygon(hit.getHitPose())) {
+ if (trackObjects.contains(plane) && plane.isPoseInPolygon(hitPose)) {
return createAnchor(hit);
}
+ } else if (trackable instanceof AugmentedImage) {
+ AugmentedImage image = (AugmentedImage)trackable;
+ Pose anchorPose = image.getCenterPose();
+ Pose localHitPose = anchorPose.compose(hitPose);
+ if (trackObjects.contains(image) && isPoseInsideAugmentedImage(localHitPose, image)) {
+ return createAnchor(hit);
+ }
}
}
return 0;
@@ -428,10 +550,12 @@ protected void createBackgroundRenderer() {
backgroundRenderer = new BackgroundRenderer(surfar.getActivity());
}
+
protected void setCameraTexture() {
surfar.session.setCameraTextureName(backgroundRenderer.getTextureId());
}
+
protected void updateMatrices() {
surfar.camera.getProjectionMatrix(projMatrix, 0, 0.1f, 100.0f);
surfar.camera.getViewMatrix(viewMatrix, 0);
@@ -442,48 +566,73 @@ protected void updateMatrices() {
protected void updateTrackables() {
Collection planes = surfar.frame.getUpdatedTrackables(Plane.class);
for (Plane plane: planes) {
- if (plane.getSubsumedBy() != null) continue;
- float[] mat;
- if (trackMatrices.containsKey(plane)) {
- mat = trackMatrices.get(plane);
- } else {
- mat = new float[16];
- trackMatrices.put(plane, mat);
- trackPlanes.add(plane);
- trackIds.put(plane, ++lastTrackableId);
- newPlanes.add(plane);
- }
- Pose pose = plane.getCenterPose();
- pose.toMatrix(mat, 0);
+ addNewPlane(plane);
+ }
+
+ Collection images = surfar.frame.getUpdatedTrackables(AugmentedImage.class);
+ for (AugmentedImage image: images) {
+ addNewImage(image);
}
// Remove stopped and subsummed trackables
- for (int i = trackPlanes.size() - 1; i >= 0; i--) {
- Plane plane = trackPlanes.get(i);
- if (plane.getTrackingState() == TrackingState.STOPPED || plane.getSubsumedBy() != null) {
- trackPlanes.remove(i);
- trackMatrices.remove(plane);
- int pid = trackIds.remove(plane);
- trackIdx.remove(pid);
- for (ARTracker t: trackers) t.remove(pid);
+ for (int i = trackObjects.size() - 1; i >= 0; i--) {
+ Trackable track = trackObjects.get(i);
+ if (track instanceof Plane) {
+ Plane plane = (Plane)track;
+ if (plane.getTrackingState() == TrackingState.STOPPED || plane.getSubsumedBy() != null) {
+ trackObjects.remove(i);
+ trackMatrices.remove(plane);
+ int pid = trackIds.remove(plane);
+ trackIdx.remove(pid);
+ for (ARTracker t: trackers) t.remove(pid);
+ }
}
}
// Update indices
- for (int i = 0; i < trackPlanes.size(); i++) {
- Plane plane = trackPlanes.get(i);
- int pid = trackIds.get(plane);
+ for (int i = 0; i < trackObjects.size(); i++) {
+ Trackable track = trackObjects.get(i);
+ int pid = trackIds.get(track);
trackIdx.put(pid, i);
- if (newPlanes.contains(plane)) {
+ if (newObjects.contains(track)) {
for (ARTracker t: trackers) t.create(i);
}
}
}
- protected void cleanup() {
- newPlanes.clear();
+ protected void addNewPlane(Plane plane) {
+ if (plane.getSubsumedBy() != null) return;
+ float[] mat = addNewMatrix(plane);
+ Pose pose = plane.getCenterPose();
+ if (pose != null) pose.toMatrix(mat, 0);
+ }
+
+
+ protected void addNewImage(AugmentedImage image) {
+ float[] mat = addNewMatrix(image);
+ Pose pose = image.getCenterPose();
+ if (pose != null) pose.toMatrix(mat, 0);
+ }
+
+ protected float[] addNewMatrix(Trackable obj) {
+ float[] mat;
+ if (trackMatrices.containsKey(obj)) {
+ mat = trackMatrices.get(obj);
+ } else {
+ mat = new float[16];
+ trackMatrices.put(obj, mat);
+ trackObjects.add(obj);
+ trackIds.put(obj, ++lastTrackableId);
+ newObjects.add(obj);
+ }
+ return mat;
+ }
+
+
+ protected void cleanup() {
+ newObjects.clear();
for (int id: delAnchors) {
Anchor anchor = anchors.remove(id);
anchor.detach();
diff --git a/mode/libraries/ar/src/processing/ar/ARSurface.java b/libs/processing-ar/src/main/java/processing/ar/ARSurface.java
similarity index 100%
rename from mode/libraries/ar/src/processing/ar/ARSurface.java
rename to libs/processing-ar/src/main/java/processing/ar/ARSurface.java
diff --git a/mode/libraries/ar/src/processing/ar/ARTrackable.java b/libs/processing-ar/src/main/java/processing/ar/ARTrackable.java
similarity index 91%
rename from mode/libraries/ar/src/processing/ar/ARTrackable.java
rename to libs/processing-ar/src/main/java/processing/ar/ARTrackable.java
index cddf64147..c939b95d8 100644
--- a/mode/libraries/ar/src/processing/ar/ARTrackable.java
+++ b/libs/processing-ar/src/main/java/processing/ar/ARTrackable.java
@@ -30,15 +30,17 @@ public class ARTrackable {
protected ARGraphics g;
protected HitResult hit;
+ private String name;
private int id;
private PMatrix3D m;
private float[] points;
- public ARTrackable(ARGraphics g, int id) {
+ public ARTrackable(ARGraphics g, int id, String name) {
this.g = g;
this.id = id;
+ this.name = name;
}
-
+
public String id() {
return String.valueOf(id);
}
@@ -48,7 +50,7 @@ public PMatrix3D matrix() {
m = g.getTrackableMatrix(idx, m);
return m;
}
-
+
public void transform() {
g.applyMatrix(matrix());
}
@@ -59,23 +61,23 @@ public float[] getPolygon() {
return points;
}
-
public float lengthX() {
int idx = g.trackableIndex(id);
return g.getTrackableExtentX(idx);
}
-
public float lengthY() {
return 0;
}
-
public float lengthZ() {
int idx = g.trackableIndex(id);
return g.getTrackableExtentZ(idx);
}
+ public String getName() {
+ return name;
+ }
public boolean isSelected(int mx, int my) {
int idx = g.trackableIndex(id);
@@ -115,6 +117,11 @@ public boolean isFloorPlane() {
return g.trackableType(idx) == ARGraphics.PLANE_FLOOR;
}
+ public boolean isImage(){
+ int idx = g.trackableIndex(id);
+ return g.trackableType(idx)== ARGraphics.IMAGE;
+ }
+
public boolean isCeilingPlane() {
int idx = g.trackableIndex(id);
return g.trackableType(idx) == ARGraphics.PLANE_CEILING;
diff --git a/mode/libraries/ar/src/processing/ar/ARTracker.java b/libs/processing-ar/src/main/java/processing/ar/ARTracker.java
similarity index 77%
rename from mode/libraries/ar/src/processing/ar/ARTracker.java
rename to libs/processing-ar/src/main/java/processing/ar/ARTracker.java
index 9a27fdfda..9beb70bd7 100644
--- a/mode/libraries/ar/src/processing/ar/ARTracker.java
+++ b/libs/processing-ar/src/main/java/processing/ar/ARTracker.java
@@ -22,7 +22,12 @@
package processing.ar;
+import android.graphics.Bitmap;
+
import com.google.ar.core.HitResult;
+import com.google.ar.core.AugmentedImageDatabase;
+import com.google.ar.core.Config;
+import com.google.ar.core.Session;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -31,10 +36,12 @@
import java.util.Set;
import processing.core.PApplet;
+import processing.core.PImage;
public class ARTracker {
protected PApplet p;
protected ARGraphics g;
+ protected AugmentedImageDatabase db;
private HashMap trackables = new HashMap();
private ArrayList toRemove = new ArrayList();
@@ -42,10 +49,37 @@ public class ARTracker {
public ARTracker(PApplet parent) {
this.p = parent;
- this.g = (ARGraphics) p.g;
+ this.g = (ARGraphics)p.g;
setEventHandler();
}
+ public void addImage(String name, PImage img) {
+ addImageImp(name, img, null);
+ }
+
+ public void addImage(String name, PImage img, float size) {
+ addImageImp(name, img, size);
+ }
+
+ private void addImageImp(String name, PImage img, Float size) {
+ if (db == null) {
+ // Creating a new database of augmented images.
+ db = new AugmentedImageDatabase(g.surfar.session);
+ }
+
+ Bitmap bitmap = (Bitmap)img.getNative();
+ if (size != null) {
+ db.addImage(name, bitmap, size);
+ } else {
+ db.addImage(name, bitmap);
+ }
+
+ // Reset the session config with the updated image database
+ Config config = new Config(g.surfar.session);
+ config.setAugmentedImageDatabase(db);
+ g.surfar.session.configure(config);
+ }
+
public void start() {
cleanup();
g.addTracker(this);
@@ -61,9 +95,10 @@ public int count() {
public ARTrackable get(int idx) {
int id = g.trackableId(idx);
+ String name = g.trackableName(idx);
String sid = String.valueOf(id);
if (!trackables.containsKey(sid)) {
- ARTrackable t = new ARTrackable(g, id);
+ ARTrackable t = new ARTrackable(g, id, name);
trackables.put(sid, t);
}
return get(sid);
@@ -128,7 +163,6 @@ protected void remove(String id) {
trackables.remove(id);
}
-
protected void setEventHandler() {
try {
trackableEventMethod = p.getClass().getMethod("trackableEvent", ARTrackable.class);
diff --git a/mode/libraries/ar/src/processing/ar/BackgroundRenderer.java b/libs/processing-ar/src/main/java/processing/ar/BackgroundRenderer.java
similarity index 100%
rename from mode/libraries/ar/src/processing/ar/BackgroundRenderer.java
rename to libs/processing-ar/src/main/java/processing/ar/BackgroundRenderer.java
diff --git a/mode/libraries/ar/src/processing/ar/RotationHandler.java b/libs/processing-ar/src/main/java/processing/ar/RotationHandler.java
similarity index 77%
rename from mode/libraries/ar/src/processing/ar/RotationHandler.java
rename to libs/processing-ar/src/main/java/processing/ar/RotationHandler.java
index cece970cc..e11c4b8e3 100644
--- a/mode/libraries/ar/src/processing/ar/RotationHandler.java
+++ b/libs/processing-ar/src/main/java/processing/ar/RotationHandler.java
@@ -18,15 +18,16 @@ public class RotationHandler implements DisplayManager.DisplayListener {
public RotationHandler(Context context) {
this.context = context;
- display = context.getSystemService(WindowManager.class).getDefaultDisplay();
+ WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ display = windowManager.getDefaultDisplay();
}
public void onResume() {
- context.getSystemService(DisplayManager.class).registerDisplayListener(this, null);
+ ((DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE)).registerDisplayListener(this, null);
}
public void onPause() {
- context.getSystemService(DisplayManager.class).unregisterDisplayListener(this);
+ ((DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE)).unregisterDisplayListener(this);
}
public void onSurfaceChanged(int width, int height) {
@@ -59,4 +60,4 @@ public void onDisplayRemoved(int displayId) {
public void onDisplayChanged(int displayId) {
viewportChanged = true;
}
-}
+}
\ No newline at end of file
diff --git a/mode/libraries/ar/src/processing/ar/ShaderUtils.java b/libs/processing-ar/src/main/java/processing/ar/ShaderUtils.java
similarity index 100%
rename from mode/libraries/ar/src/processing/ar/ShaderUtils.java
rename to libs/processing-ar/src/main/java/processing/ar/ShaderUtils.java
diff --git a/debug/libs/processing-core/build.gradle b/libs/processing-core/build.gradle
similarity index 59%
rename from debug/libs/processing-core/build.gradle
rename to libs/processing-core/build.gradle
index 89fd0764e..b7952ec4d 100644
--- a/debug/libs/processing-core/build.gradle
+++ b/libs/processing-core/build.gradle
@@ -1,27 +1,32 @@
-apply plugin: 'com.android.library'
+plugins {
+ id 'com.android.library'
+}
android {
- compileSdkVersion 33
+
+ namespace "processing.core"
+
defaultConfig {
minSdkVersion 17
targetSdkVersion 33
}
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['../../../core/src']
- assets.srcDirs = ['../../../core/src/assets']
- }
- }
+
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- productFlavors {
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
}
}
dependencies {
+ testImplementation 'junit:junit:4.13.2'
+
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.support:wearable:2.9.0'
compileOnly 'com.google.android.wearable:wearable:2.9.0'
diff --git a/libs/processing-core/proguard-rules.pro b/libs/processing-core/proguard-rules.pro
new file mode 100644
index 000000000..f1b424510
--- /dev/null
+++ b/libs/processing-core/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/libs/processing-core/src/main/AndroidManifest.xml b/libs/processing-core/src/main/AndroidManifest.xml
new file mode 100755
index 000000000..97330b776
--- /dev/null
+++ b/libs/processing-core/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/core/src/assets/shaders/ColorFrag.glsl b/libs/processing-core/src/main/assets/shaders/ColorFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/ColorFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/ColorFrag.glsl
diff --git a/core/src/assets/shaders/ColorVert.glsl b/libs/processing-core/src/main/assets/shaders/ColorVert.glsl
similarity index 100%
rename from core/src/assets/shaders/ColorVert.glsl
rename to libs/processing-core/src/main/assets/shaders/ColorVert.glsl
diff --git a/core/src/assets/shaders/LightFrag.glsl b/libs/processing-core/src/main/assets/shaders/LightFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/LightFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/LightFrag.glsl
diff --git a/core/src/assets/shaders/LightVert.glsl b/libs/processing-core/src/main/assets/shaders/LightVert.glsl
similarity index 100%
rename from core/src/assets/shaders/LightVert.glsl
rename to libs/processing-core/src/main/assets/shaders/LightVert.glsl
diff --git a/core/src/assets/shaders/LineFrag.glsl b/libs/processing-core/src/main/assets/shaders/LineFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/LineFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/LineFrag.glsl
diff --git a/core/src/assets/shaders/LineVert.glsl b/libs/processing-core/src/main/assets/shaders/LineVert.glsl
similarity index 100%
rename from core/src/assets/shaders/LineVert.glsl
rename to libs/processing-core/src/main/assets/shaders/LineVert.glsl
diff --git a/core/src/assets/shaders/MaskFrag.glsl b/libs/processing-core/src/main/assets/shaders/MaskFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/MaskFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/MaskFrag.glsl
diff --git a/core/src/assets/shaders/P2DFrag.glsl b/libs/processing-core/src/main/assets/shaders/P2DFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/P2DFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/P2DFrag.glsl
diff --git a/core/src/assets/shaders/P2DVert.glsl b/libs/processing-core/src/main/assets/shaders/P2DVert.glsl
similarity index 100%
rename from core/src/assets/shaders/P2DVert.glsl
rename to libs/processing-core/src/main/assets/shaders/P2DVert.glsl
diff --git a/core/src/assets/shaders/PointFrag.glsl b/libs/processing-core/src/main/assets/shaders/PointFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/PointFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/PointFrag.glsl
diff --git a/core/src/assets/shaders/PointVert.glsl b/libs/processing-core/src/main/assets/shaders/PointVert.glsl
similarity index 100%
rename from core/src/assets/shaders/PointVert.glsl
rename to libs/processing-core/src/main/assets/shaders/PointVert.glsl
diff --git a/core/src/assets/shaders/TexFrag.glsl b/libs/processing-core/src/main/assets/shaders/TexFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/TexFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/TexFrag.glsl
diff --git a/core/src/assets/shaders/TexLightFrag.glsl b/libs/processing-core/src/main/assets/shaders/TexLightFrag.glsl
similarity index 100%
rename from core/src/assets/shaders/TexLightFrag.glsl
rename to libs/processing-core/src/main/assets/shaders/TexLightFrag.glsl
diff --git a/core/src/assets/shaders/TexLightVert.glsl b/libs/processing-core/src/main/assets/shaders/TexLightVert.glsl
similarity index 100%
rename from core/src/assets/shaders/TexLightVert.glsl
rename to libs/processing-core/src/main/assets/shaders/TexLightVert.glsl
diff --git a/core/src/assets/shaders/TexVert.glsl b/libs/processing-core/src/main/assets/shaders/TexVert.glsl
similarity index 100%
rename from core/src/assets/shaders/TexVert.glsl
rename to libs/processing-core/src/main/assets/shaders/TexVert.glsl
diff --git a/core/src/processing/a2d/PGraphicsAndroid2D.java b/libs/processing-core/src/main/java/processing/a2d/PGraphicsAndroid2D.java
similarity index 100%
rename from core/src/processing/a2d/PGraphicsAndroid2D.java
rename to libs/processing-core/src/main/java/processing/a2d/PGraphicsAndroid2D.java
diff --git a/core/src/processing/a2d/PShapeAndroid2D.java b/libs/processing-core/src/main/java/processing/a2d/PShapeAndroid2D.java
similarity index 100%
rename from core/src/processing/a2d/PShapeAndroid2D.java
rename to libs/processing-core/src/main/java/processing/a2d/PShapeAndroid2D.java
diff --git a/core/src/processing/a2d/PSurfaceAndroid2D.java b/libs/processing-core/src/main/java/processing/a2d/PSurfaceAndroid2D.java
similarity index 100%
rename from core/src/processing/a2d/PSurfaceAndroid2D.java
rename to libs/processing-core/src/main/java/processing/a2d/PSurfaceAndroid2D.java
diff --git a/core/src/processing/android/ActivityAPI.java b/libs/processing-core/src/main/java/processing/android/ActivityAPI.java
similarity index 100%
rename from core/src/processing/android/ActivityAPI.java
rename to libs/processing-core/src/main/java/processing/android/ActivityAPI.java
diff --git a/core/src/processing/android/AppComponent.java b/libs/processing-core/src/main/java/processing/android/AppComponent.java
similarity index 100%
rename from core/src/processing/android/AppComponent.java
rename to libs/processing-core/src/main/java/processing/android/AppComponent.java
diff --git a/core/src/processing/android/CompatUtils.java b/libs/processing-core/src/main/java/processing/android/CompatUtils.java
similarity index 100%
rename from core/src/processing/android/CompatUtils.java
rename to libs/processing-core/src/main/java/processing/android/CompatUtils.java
diff --git a/core/src/processing/android/PFragment.java b/libs/processing-core/src/main/java/processing/android/PFragment.java
similarity index 100%
rename from core/src/processing/android/PFragment.java
rename to libs/processing-core/src/main/java/processing/android/PFragment.java
diff --git a/core/src/processing/android/PWallpaper.java b/libs/processing-core/src/main/java/processing/android/PWallpaper.java
similarity index 100%
rename from core/src/processing/android/PWallpaper.java
rename to libs/processing-core/src/main/java/processing/android/PWallpaper.java
diff --git a/core/src/processing/android/PWatchFaceCanvas.java b/libs/processing-core/src/main/java/processing/android/PWatchFaceCanvas.java
similarity index 100%
rename from core/src/processing/android/PWatchFaceCanvas.java
rename to libs/processing-core/src/main/java/processing/android/PWatchFaceCanvas.java
diff --git a/core/src/processing/android/PWatchFaceGLES.java b/libs/processing-core/src/main/java/processing/android/PWatchFaceGLES.java
similarity index 100%
rename from core/src/processing/android/PWatchFaceGLES.java
rename to libs/processing-core/src/main/java/processing/android/PWatchFaceGLES.java
diff --git a/core/src/processing/android/PermissionRequestor.java b/libs/processing-core/src/main/java/processing/android/PermissionRequestor.java
similarity index 96%
rename from core/src/processing/android/PermissionRequestor.java
rename to libs/processing-core/src/main/java/processing/android/PermissionRequestor.java
index 0754badc3..deac0d852 100644
--- a/core/src/processing/android/PermissionRequestor.java
+++ b/libs/processing-core/src/main/java/processing/android/PermissionRequestor.java
@@ -27,6 +27,7 @@
import android.support.v4.os.ResultReceiver;
import androidx.core.app.ActivityCompat;
+import androidx.annotation.RestrictTo;
// A simple utility activity to request permissions in a service.
public class PermissionRequestor extends Activity {
@@ -49,6 +50,7 @@ protected void onStart() {
}
@Override
+ @SuppressWarnings("RestrictedApi")
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
Bundle resultData = new Bundle();
resultData.putStringArray(KEY_PERMISSIONS, permissions);
diff --git a/core/src/processing/android/ServiceEngine.java b/libs/processing-core/src/main/java/processing/android/ServiceEngine.java
similarity index 100%
rename from core/src/processing/android/ServiceEngine.java
rename to libs/processing-core/src/main/java/processing/android/ServiceEngine.java
diff --git a/core/src/processing/core/PApplet.java b/libs/processing-core/src/main/java/processing/core/PApplet.java
similarity index 100%
rename from core/src/processing/core/PApplet.java
rename to libs/processing-core/src/main/java/processing/core/PApplet.java
diff --git a/core/src/processing/core/PConstants.java b/libs/processing-core/src/main/java/processing/core/PConstants.java
similarity index 100%
rename from core/src/processing/core/PConstants.java
rename to libs/processing-core/src/main/java/processing/core/PConstants.java
diff --git a/core/src/processing/core/PFont.java b/libs/processing-core/src/main/java/processing/core/PFont.java
similarity index 100%
rename from core/src/processing/core/PFont.java
rename to libs/processing-core/src/main/java/processing/core/PFont.java
diff --git a/core/src/processing/core/PGraphics.java b/libs/processing-core/src/main/java/processing/core/PGraphics.java
similarity index 100%
rename from core/src/processing/core/PGraphics.java
rename to libs/processing-core/src/main/java/processing/core/PGraphics.java
diff --git a/core/src/processing/core/PImage.java b/libs/processing-core/src/main/java/processing/core/PImage.java
similarity index 100%
rename from core/src/processing/core/PImage.java
rename to libs/processing-core/src/main/java/processing/core/PImage.java
diff --git a/core/src/processing/core/PMatrix.java b/libs/processing-core/src/main/java/processing/core/PMatrix.java
similarity index 100%
rename from core/src/processing/core/PMatrix.java
rename to libs/processing-core/src/main/java/processing/core/PMatrix.java
diff --git a/core/src/processing/core/PMatrix2D.java b/libs/processing-core/src/main/java/processing/core/PMatrix2D.java
similarity index 100%
rename from core/src/processing/core/PMatrix2D.java
rename to libs/processing-core/src/main/java/processing/core/PMatrix2D.java
diff --git a/core/src/processing/core/PMatrix3D.java b/libs/processing-core/src/main/java/processing/core/PMatrix3D.java
similarity index 100%
rename from core/src/processing/core/PMatrix3D.java
rename to libs/processing-core/src/main/java/processing/core/PMatrix3D.java
diff --git a/core/src/processing/core/PShape.java b/libs/processing-core/src/main/java/processing/core/PShape.java
similarity index 100%
rename from core/src/processing/core/PShape.java
rename to libs/processing-core/src/main/java/processing/core/PShape.java
diff --git a/core/src/processing/core/PShapeOBJ.java b/libs/processing-core/src/main/java/processing/core/PShapeOBJ.java
similarity index 100%
rename from core/src/processing/core/PShapeOBJ.java
rename to libs/processing-core/src/main/java/processing/core/PShapeOBJ.java
diff --git a/core/src/processing/core/PShapeSVG.java b/libs/processing-core/src/main/java/processing/core/PShapeSVG.java
similarity index 100%
rename from core/src/processing/core/PShapeSVG.java
rename to libs/processing-core/src/main/java/processing/core/PShapeSVG.java
diff --git a/core/src/processing/core/PStyle.java b/libs/processing-core/src/main/java/processing/core/PStyle.java
similarity index 100%
rename from core/src/processing/core/PStyle.java
rename to libs/processing-core/src/main/java/processing/core/PStyle.java
diff --git a/core/src/processing/core/PSurface.java b/libs/processing-core/src/main/java/processing/core/PSurface.java
similarity index 100%
rename from core/src/processing/core/PSurface.java
rename to libs/processing-core/src/main/java/processing/core/PSurface.java
diff --git a/core/src/processing/core/PSurfaceNone.java b/libs/processing-core/src/main/java/processing/core/PSurfaceNone.java
similarity index 98%
rename from core/src/processing/core/PSurfaceNone.java
rename to libs/processing-core/src/main/java/processing/core/PSurfaceNone.java
index d6b3ebc70..5858ed1f7 100644
--- a/core/src/processing/core/PSurfaceNone.java
+++ b/libs/processing-core/src/main/java/processing/core/PSurfaceNone.java
@@ -40,7 +40,7 @@
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
-import android.support.v4.os.ResultReceiver;
+import android.os.ResultReceiver;
import android.service.wallpaper.WallpaperService;
import android.support.wearable.watchface.WatchFaceService;
@@ -77,7 +77,7 @@ public class PSurfaceNone implements PSurface, PConstants {
protected boolean requestedThreadStart = false;
protected Thread thread;
protected boolean paused;
- protected Object pauseObject = new Object();
+ protected final Object pauseObject = new Object();
protected float frameRateTarget = 60;
protected long frameRatePeriod = 1000000000L / 60L;
@@ -332,8 +332,7 @@ public InputStream openFileInput(String filename) {
try {
return activity.openFileInput(filename);
} catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ System.err.println("Cannot open file " + filename);
}
}
return null;
@@ -531,7 +530,9 @@ public void run() { // not good to make this synchronized, locks things up
try {
Thread.sleep(sleepTime / 1000000L, (int) (sleepTime % 1000000L));
noDelays = 0; // Got some sleep, not delaying anymore
- } catch (InterruptedException ex) { }
+ } catch (InterruptedException ex) {
+ System.err.println("Cannot properly set the timing for the draw animation.");
+ }
overSleepTime = (System.nanoTime() - afterTime) - sleepTime;
diff --git a/core/src/processing/core/PVector.java b/libs/processing-core/src/main/java/processing/core/PVector.java
similarity index 100%
rename from core/src/processing/core/PVector.java
rename to libs/processing-core/src/main/java/processing/core/PVector.java
diff --git a/core/src/processing/data/DoubleDict.java b/libs/processing-core/src/main/java/processing/data/DoubleDict.java
similarity index 100%
rename from core/src/processing/data/DoubleDict.java
rename to libs/processing-core/src/main/java/processing/data/DoubleDict.java
diff --git a/core/src/processing/data/DoubleList.java b/libs/processing-core/src/main/java/processing/data/DoubleList.java
similarity index 100%
rename from core/src/processing/data/DoubleList.java
rename to libs/processing-core/src/main/java/processing/data/DoubleList.java
diff --git a/core/src/processing/data/FloatDict.java b/libs/processing-core/src/main/java/processing/data/FloatDict.java
similarity index 100%
rename from core/src/processing/data/FloatDict.java
rename to libs/processing-core/src/main/java/processing/data/FloatDict.java
diff --git a/core/src/processing/data/FloatList.java b/libs/processing-core/src/main/java/processing/data/FloatList.java
similarity index 100%
rename from core/src/processing/data/FloatList.java
rename to libs/processing-core/src/main/java/processing/data/FloatList.java
diff --git a/core/src/processing/data/IntDict.java b/libs/processing-core/src/main/java/processing/data/IntDict.java
similarity index 100%
rename from core/src/processing/data/IntDict.java
rename to libs/processing-core/src/main/java/processing/data/IntDict.java
diff --git a/core/src/processing/data/IntList.java b/libs/processing-core/src/main/java/processing/data/IntList.java
similarity index 100%
rename from core/src/processing/data/IntList.java
rename to libs/processing-core/src/main/java/processing/data/IntList.java
diff --git a/core/src/processing/data/JSONArray.java b/libs/processing-core/src/main/java/processing/data/JSONArray.java
similarity index 100%
rename from core/src/processing/data/JSONArray.java
rename to libs/processing-core/src/main/java/processing/data/JSONArray.java
diff --git a/core/src/processing/data/JSONObject.java b/libs/processing-core/src/main/java/processing/data/JSONObject.java
similarity index 100%
rename from core/src/processing/data/JSONObject.java
rename to libs/processing-core/src/main/java/processing/data/JSONObject.java
diff --git a/core/src/processing/data/JSONTokener.java b/libs/processing-core/src/main/java/processing/data/JSONTokener.java
similarity index 100%
rename from core/src/processing/data/JSONTokener.java
rename to libs/processing-core/src/main/java/processing/data/JSONTokener.java
diff --git a/core/src/processing/data/LongDict.java b/libs/processing-core/src/main/java/processing/data/LongDict.java
similarity index 100%
rename from core/src/processing/data/LongDict.java
rename to libs/processing-core/src/main/java/processing/data/LongDict.java
diff --git a/core/src/processing/data/LongList.java b/libs/processing-core/src/main/java/processing/data/LongList.java
similarity index 100%
rename from core/src/processing/data/LongList.java
rename to libs/processing-core/src/main/java/processing/data/LongList.java
diff --git a/core/src/processing/data/Sort.java b/libs/processing-core/src/main/java/processing/data/Sort.java
similarity index 100%
rename from core/src/processing/data/Sort.java
rename to libs/processing-core/src/main/java/processing/data/Sort.java
diff --git a/core/src/processing/data/StringDict.java b/libs/processing-core/src/main/java/processing/data/StringDict.java
similarity index 100%
rename from core/src/processing/data/StringDict.java
rename to libs/processing-core/src/main/java/processing/data/StringDict.java
diff --git a/core/src/processing/data/StringList.java b/libs/processing-core/src/main/java/processing/data/StringList.java
similarity index 100%
rename from core/src/processing/data/StringList.java
rename to libs/processing-core/src/main/java/processing/data/StringList.java
diff --git a/core/src/processing/data/Table.java b/libs/processing-core/src/main/java/processing/data/Table.java
similarity index 100%
rename from core/src/processing/data/Table.java
rename to libs/processing-core/src/main/java/processing/data/Table.java
diff --git a/core/src/processing/data/TableRow.java b/libs/processing-core/src/main/java/processing/data/TableRow.java
similarity index 100%
rename from core/src/processing/data/TableRow.java
rename to libs/processing-core/src/main/java/processing/data/TableRow.java
diff --git a/core/src/processing/data/XML.java b/libs/processing-core/src/main/java/processing/data/XML.java
similarity index 100%
rename from core/src/processing/data/XML.java
rename to libs/processing-core/src/main/java/processing/data/XML.java
diff --git a/core/src/processing/event/Event.java b/libs/processing-core/src/main/java/processing/event/Event.java
similarity index 100%
rename from core/src/processing/event/Event.java
rename to libs/processing-core/src/main/java/processing/event/Event.java
diff --git a/core/src/processing/event/KeyEvent.java b/libs/processing-core/src/main/java/processing/event/KeyEvent.java
similarity index 100%
rename from core/src/processing/event/KeyEvent.java
rename to libs/processing-core/src/main/java/processing/event/KeyEvent.java
diff --git a/core/src/processing/event/MouseEvent.java b/libs/processing-core/src/main/java/processing/event/MouseEvent.java
similarity index 100%
rename from core/src/processing/event/MouseEvent.java
rename to libs/processing-core/src/main/java/processing/event/MouseEvent.java
diff --git a/core/src/processing/event/TouchEvent.java b/libs/processing-core/src/main/java/processing/event/TouchEvent.java
similarity index 100%
rename from core/src/processing/event/TouchEvent.java
rename to libs/processing-core/src/main/java/processing/event/TouchEvent.java
diff --git a/core/src/processing/opengl/FontTexture.java b/libs/processing-core/src/main/java/processing/opengl/FontTexture.java
similarity index 100%
rename from core/src/processing/opengl/FontTexture.java
rename to libs/processing-core/src/main/java/processing/opengl/FontTexture.java
diff --git a/core/src/processing/opengl/FrameBuffer.java b/libs/processing-core/src/main/java/processing/opengl/FrameBuffer.java
similarity index 100%
rename from core/src/processing/opengl/FrameBuffer.java
rename to libs/processing-core/src/main/java/processing/opengl/FrameBuffer.java
diff --git a/core/src/processing/opengl/LinePath.java b/libs/processing-core/src/main/java/processing/opengl/LinePath.java
similarity index 100%
rename from core/src/processing/opengl/LinePath.java
rename to libs/processing-core/src/main/java/processing/opengl/LinePath.java
diff --git a/core/src/processing/opengl/LineStroker.java b/libs/processing-core/src/main/java/processing/opengl/LineStroker.java
similarity index 100%
rename from core/src/processing/opengl/LineStroker.java
rename to libs/processing-core/src/main/java/processing/opengl/LineStroker.java
diff --git a/core/src/processing/opengl/PGL.java b/libs/processing-core/src/main/java/processing/opengl/PGL.java
similarity index 100%
rename from core/src/processing/opengl/PGL.java
rename to libs/processing-core/src/main/java/processing/opengl/PGL.java
diff --git a/core/src/processing/opengl/PGLES.java b/libs/processing-core/src/main/java/processing/opengl/PGLES.java
similarity index 100%
rename from core/src/processing/opengl/PGLES.java
rename to libs/processing-core/src/main/java/processing/opengl/PGLES.java
diff --git a/core/src/processing/opengl/PGraphics2D.java b/libs/processing-core/src/main/java/processing/opengl/PGraphics2D.java
similarity index 100%
rename from core/src/processing/opengl/PGraphics2D.java
rename to libs/processing-core/src/main/java/processing/opengl/PGraphics2D.java
diff --git a/core/src/processing/opengl/PGraphics2DX.java b/libs/processing-core/src/main/java/processing/opengl/PGraphics2DX.java
similarity index 100%
rename from core/src/processing/opengl/PGraphics2DX.java
rename to libs/processing-core/src/main/java/processing/opengl/PGraphics2DX.java
diff --git a/core/src/processing/opengl/PGraphics3D.java b/libs/processing-core/src/main/java/processing/opengl/PGraphics3D.java
similarity index 100%
rename from core/src/processing/opengl/PGraphics3D.java
rename to libs/processing-core/src/main/java/processing/opengl/PGraphics3D.java
diff --git a/core/src/processing/opengl/PGraphicsOpenGL.java b/libs/processing-core/src/main/java/processing/opengl/PGraphicsOpenGL.java
similarity index 100%
rename from core/src/processing/opengl/PGraphicsOpenGL.java
rename to libs/processing-core/src/main/java/processing/opengl/PGraphicsOpenGL.java
diff --git a/core/src/processing/opengl/PShader.java b/libs/processing-core/src/main/java/processing/opengl/PShader.java
similarity index 100%
rename from core/src/processing/opengl/PShader.java
rename to libs/processing-core/src/main/java/processing/opengl/PShader.java
diff --git a/core/src/processing/opengl/PShapeOpenGL.java b/libs/processing-core/src/main/java/processing/opengl/PShapeOpenGL.java
similarity index 100%
rename from core/src/processing/opengl/PShapeOpenGL.java
rename to libs/processing-core/src/main/java/processing/opengl/PShapeOpenGL.java
diff --git a/core/src/processing/opengl/PSurfaceGLES.java b/libs/processing-core/src/main/java/processing/opengl/PSurfaceGLES.java
similarity index 100%
rename from core/src/processing/opengl/PSurfaceGLES.java
rename to libs/processing-core/src/main/java/processing/opengl/PSurfaceGLES.java
diff --git a/core/src/processing/opengl/Texture.java b/libs/processing-core/src/main/java/processing/opengl/Texture.java
similarity index 100%
rename from core/src/processing/opengl/Texture.java
rename to libs/processing-core/src/main/java/processing/opengl/Texture.java
diff --git a/core/src/processing/opengl/VertexBuffer.java b/libs/processing-core/src/main/java/processing/opengl/VertexBuffer.java
similarity index 100%
rename from core/src/processing/opengl/VertexBuffer.java
rename to libs/processing-core/src/main/java/processing/opengl/VertexBuffer.java
diff --git a/core/src/processing/opengl/tess/ActiveRegion.java b/libs/processing-core/src/main/java/processing/opengl/tess/ActiveRegion.java
similarity index 100%
rename from core/src/processing/opengl/tess/ActiveRegion.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/ActiveRegion.java
diff --git a/core/src/processing/opengl/tess/CachedVertex.java b/libs/processing-core/src/main/java/processing/opengl/tess/CachedVertex.java
similarity index 100%
rename from core/src/processing/opengl/tess/CachedVertex.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/CachedVertex.java
diff --git a/core/src/processing/opengl/tess/Dict.java b/libs/processing-core/src/main/java/processing/opengl/tess/Dict.java
similarity index 100%
rename from core/src/processing/opengl/tess/Dict.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/Dict.java
diff --git a/core/src/processing/opengl/tess/DictNode.java b/libs/processing-core/src/main/java/processing/opengl/tess/DictNode.java
similarity index 100%
rename from core/src/processing/opengl/tess/DictNode.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/DictNode.java
diff --git a/core/src/processing/opengl/tess/GLUface.java b/libs/processing-core/src/main/java/processing/opengl/tess/GLUface.java
similarity index 100%
rename from core/src/processing/opengl/tess/GLUface.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/GLUface.java
diff --git a/core/src/processing/opengl/tess/GLUhalfEdge.java b/libs/processing-core/src/main/java/processing/opengl/tess/GLUhalfEdge.java
similarity index 100%
rename from core/src/processing/opengl/tess/GLUhalfEdge.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/GLUhalfEdge.java
diff --git a/core/src/processing/opengl/tess/GLUmesh.java b/libs/processing-core/src/main/java/processing/opengl/tess/GLUmesh.java
similarity index 100%
rename from core/src/processing/opengl/tess/GLUmesh.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/GLUmesh.java
diff --git a/core/src/processing/opengl/tess/GLUtessellatorImpl.java b/libs/processing-core/src/main/java/processing/opengl/tess/GLUtessellatorImpl.java
similarity index 100%
rename from core/src/processing/opengl/tess/GLUtessellatorImpl.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/GLUtessellatorImpl.java
diff --git a/core/src/processing/opengl/tess/GLUvertex.java b/libs/processing-core/src/main/java/processing/opengl/tess/GLUvertex.java
similarity index 100%
rename from core/src/processing/opengl/tess/GLUvertex.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/GLUvertex.java
diff --git a/core/src/processing/opengl/tess/Geom.java b/libs/processing-core/src/main/java/processing/opengl/tess/Geom.java
similarity index 100%
rename from core/src/processing/opengl/tess/Geom.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/Geom.java
diff --git a/core/src/processing/opengl/tess/Mesh.java b/libs/processing-core/src/main/java/processing/opengl/tess/Mesh.java
similarity index 100%
rename from core/src/processing/opengl/tess/Mesh.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/Mesh.java
diff --git a/core/src/processing/opengl/tess/Normal.java b/libs/processing-core/src/main/java/processing/opengl/tess/Normal.java
similarity index 100%
rename from core/src/processing/opengl/tess/Normal.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/Normal.java
diff --git a/core/src/processing/opengl/tess/PGLU.java b/libs/processing-core/src/main/java/processing/opengl/tess/PGLU.java
similarity index 100%
rename from core/src/processing/opengl/tess/PGLU.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/PGLU.java
diff --git a/core/src/processing/opengl/tess/PGLUtessellator.java b/libs/processing-core/src/main/java/processing/opengl/tess/PGLUtessellator.java
similarity index 100%
rename from core/src/processing/opengl/tess/PGLUtessellator.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/PGLUtessellator.java
diff --git a/core/src/processing/opengl/tess/PGLUtessellatorCallback.java b/libs/processing-core/src/main/java/processing/opengl/tess/PGLUtessellatorCallback.java
similarity index 100%
rename from core/src/processing/opengl/tess/PGLUtessellatorCallback.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/PGLUtessellatorCallback.java
diff --git a/core/src/processing/opengl/tess/PGLUtessellatorCallbackAdapter.java b/libs/processing-core/src/main/java/processing/opengl/tess/PGLUtessellatorCallbackAdapter.java
similarity index 100%
rename from core/src/processing/opengl/tess/PGLUtessellatorCallbackAdapter.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/PGLUtessellatorCallbackAdapter.java
diff --git a/core/src/processing/opengl/tess/PriorityQ.java b/libs/processing-core/src/main/java/processing/opengl/tess/PriorityQ.java
similarity index 100%
rename from core/src/processing/opengl/tess/PriorityQ.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/PriorityQ.java
diff --git a/core/src/processing/opengl/tess/PriorityQHeap.java b/libs/processing-core/src/main/java/processing/opengl/tess/PriorityQHeap.java
similarity index 100%
rename from core/src/processing/opengl/tess/PriorityQHeap.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/PriorityQHeap.java
diff --git a/core/src/processing/opengl/tess/PriorityQSort.java b/libs/processing-core/src/main/java/processing/opengl/tess/PriorityQSort.java
similarity index 100%
rename from core/src/processing/opengl/tess/PriorityQSort.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/PriorityQSort.java
diff --git a/core/src/processing/opengl/tess/Render.java b/libs/processing-core/src/main/java/processing/opengl/tess/Render.java
similarity index 100%
rename from core/src/processing/opengl/tess/Render.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/Render.java
diff --git a/core/src/processing/opengl/tess/Sweep.java b/libs/processing-core/src/main/java/processing/opengl/tess/Sweep.java
similarity index 100%
rename from core/src/processing/opengl/tess/Sweep.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/Sweep.java
diff --git a/core/src/processing/opengl/tess/TessMono.java b/libs/processing-core/src/main/java/processing/opengl/tess/TessMono.java
similarity index 100%
rename from core/src/processing/opengl/tess/TessMono.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/TessMono.java
diff --git a/core/src/processing/opengl/tess/TessState.java b/libs/processing-core/src/main/java/processing/opengl/tess/TessState.java
similarity index 100%
rename from core/src/processing/opengl/tess/TessState.java
rename to libs/processing-core/src/main/java/processing/opengl/tess/TessState.java
diff --git a/debug/libs/processing-vr/build.gradle b/libs/processing-vr/build.gradle
similarity index 62%
rename from debug/libs/processing-vr/build.gradle
rename to libs/processing-vr/build.gradle
index 82ef75198..06328948e 100644
--- a/debug/libs/processing-vr/build.gradle
+++ b/libs/processing-vr/build.gradle
@@ -1,17 +1,15 @@
-apply plugin: 'com.android.library'
+plugins {
+ id 'com.android.library'
+}
android {
- compileSdkVersion 33
+ namespace "processing.vr"
+
defaultConfig {
minSdkVersion 19
targetSdkVersion 33
}
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['../../../mode/libraries/vr/src']
- }
- }
+
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
diff --git a/libs/processing-vr/proguard-rules.pro b/libs/processing-vr/proguard-rules.pro
new file mode 100644
index 000000000..f1b424510
--- /dev/null
+++ b/libs/processing-vr/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/libs/processing-vr/src/main/AndroidManifest.xml b/libs/processing-vr/src/main/AndroidManifest.xml
new file mode 100755
index 000000000..97330b776
--- /dev/null
+++ b/libs/processing-vr/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mode/libraries/vr/src/processing/vr/VRActivity.java b/libs/processing-vr/src/main/java/processing/vr/VRActivity.java
similarity index 94%
rename from mode/libraries/vr/src/processing/vr/VRActivity.java
rename to libs/processing-vr/src/main/java/processing/vr/VRActivity.java
index d3433bfba..28e199585 100644
--- a/mode/libraries/vr/src/processing/vr/VRActivity.java
+++ b/libs/processing-vr/src/main/java/processing/vr/VRActivity.java
@@ -22,10 +22,13 @@
package processing.vr;
-import com.google.vr.sdk.base.GvrActivity;
-
import android.content.Intent;
import android.util.DisplayMetrics;
+
+// This will give a "Cannot resolve symbol 'base'" error in Android Studio because it cannot get
+// the classes from inside the local .aar files for google-vr. But any VR app runs and can also be debugged.
+import com.google.vr.sdk.base.GvrActivity;
+
import processing.android.AppComponent;
import processing.android.ServiceEngine;
import processing.core.PApplet;
diff --git a/mode/libraries/vr/src/processing/vr/VRCamera.java b/libs/processing-vr/src/main/java/processing/vr/VRCamera.java
similarity index 100%
rename from mode/libraries/vr/src/processing/vr/VRCamera.java
rename to libs/processing-vr/src/main/java/processing/vr/VRCamera.java
diff --git a/mode/libraries/vr/src/processing/vr/VRGraphics.java b/libs/processing-vr/src/main/java/processing/vr/VRGraphics.java
similarity index 100%
rename from mode/libraries/vr/src/processing/vr/VRGraphics.java
rename to libs/processing-vr/src/main/java/processing/vr/VRGraphics.java
diff --git a/mode/libraries/vr/src/processing/vr/VRGraphicsMono.java b/libs/processing-vr/src/main/java/processing/vr/VRGraphicsMono.java
similarity index 100%
rename from mode/libraries/vr/src/processing/vr/VRGraphicsMono.java
rename to libs/processing-vr/src/main/java/processing/vr/VRGraphicsMono.java
diff --git a/mode/libraries/vr/src/processing/vr/VRGraphicsStereo.java b/libs/processing-vr/src/main/java/processing/vr/VRGraphicsStereo.java
similarity index 100%
rename from mode/libraries/vr/src/processing/vr/VRGraphicsStereo.java
rename to libs/processing-vr/src/main/java/processing/vr/VRGraphicsStereo.java
diff --git a/mode/libraries/vr/src/processing/vr/VRSurface.java b/libs/processing-vr/src/main/java/processing/vr/VRSurface.java
similarity index 100%
rename from mode/libraries/vr/src/processing/vr/VRSurface.java
rename to libs/processing-vr/src/main/java/processing/vr/VRSurface.java
diff --git a/mode/build.gradle b/mode/build.gradle
deleted file mode 100644
index fefd9c866..000000000
--- a/mode/build.gradle
+++ /dev/null
@@ -1,106 +0,0 @@
-import java.nio.file.Files
-import org.zeroturnaround.zip.ZipUtil
-import org.apache.commons.io.FileUtils
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-
-
-// Extend compile to copy the jars from gradle-tooling and slf4j:
-// https://stackoverflow.com/a/43602463
-configurations {
- implementation.extendsFrom implementationCopy
- implementation.extendsFrom implementationExtract
-}
-
-dependencies {
- // implementation group: "org.processing", name: "core", version: "${processingVersion}"
- // implementation group: "org.processing", name: "pde", version: "${processingVersion}"
- // implementation group: "org.processing", name: "java-mode", version: "${processingVersion}"
-
- implementationExtract "org.eclipse.jdt:org.eclipse.jdt.debug:${jdtVersion}"
-
- implementationCopy "org.gradle:gradle-tooling-api:${toolingVersion}"
- implementationCopy "org.slf4j:slf4j-api:${slf4jVersion}"
- implementationCopy "org.slf4j:slf4j-simple:${slf4jVersion}"
-
- implementation fileTree(include: ["jdi.jar", "jdimodel.jar", "core.jar", "pde.jar", "JavaMode.jar"], dir: 'mode')
-}
-
-// This task copies the gradle tooling jar into the mode folder
-task copyToLib(type: Copy) {
- from configurations.implementationCopy.files
- into "mode"
-}
-build.dependsOn(copyToLib)
-compileJava.dependsOn(copyToLib)
-
-sourceSets {
- main {
- java {
- srcDirs = ["src/"]
- }
- }
-}
-
-task getjdi(type: Copy) {
- // This task extracts the jar files inside org.eclipse.jdt.debug, which are
- // jdi.jar and jdimodel.jar and needed to build the debugger.
- from(zipTree(configurations.implementationExtract.files[0])) {
- include '**/*.jar'
- exclude 'META-INF'
- }
- into "mode"
-}
-
-task permissions(type:Exec) {
- // This task retrieves the latest list of Android permissions and adds them
- // to the Permissions.java file. The python scripts requries BeautifulSoup
- workingDir "scripts"
- commandLine "python", "permissions.py"
-}
-
-task wrapper(type: Wrapper) {
- gradleVersion = "${gradlewVersion}" // version required for gradle wrapper
-}
-
-wrapper.doLast {
- File wrapperFolder = file("mode/gradlew");
- wrapperFolder.mkdirs();
- file("gradle").renameTo(file("mode/gradlew/gradle"))
- file("gradlew").renameTo(file("mode/gradlew/gradlew"))
- file("gradlew.bat").renameTo(file("mode/gradlew/gradlew.bat"))
- FileUtils.copyDirectory(file("gradle"), file("../debug/gradle"))
- delete "gradle"
- ZipUtil.pack(file("mode/gradlew"), new File("mode/mode/gradlew.zip"));
- delete "mode/gradlew"
-}
-
-clean.doFirst {
- delete fileTree("mode") {
- include "**/*.jar"
- exclude "jdi.jar"
- exclude "jdimodel.jar"
- exclude "istack-commons-runtime.jar"
- exclude "javax.activation-api.jar"
- exclude "jaxb-api.jar"
- exclude "jaxb-jxc.jar"
- exclude "jaxb-runtime.jar"
- exclude "jaxb-xjc.jar"
- exclude "core.jar"
- exclude "pde.jar"
- exclude "JavaMode.jar"
- exclude "org.eclipse.core.contenttype.jar"
- exclude "org.eclipse.core.jobs.jar"
- exclude "org.eclipse.core.resources.jar"
- exclude "org.eclipse.core.runtime.jar"
- exclude "org.eclipse.equinox.common.jar"
- exclude "org.eclipse.equinox.preferences.jar"
- exclude "org.eclipse.jdt.core.jar"
- exclude "org.eclipse.osgi.jar"
- exclude "org.eclipse.text.jar"
- }
-}
-
-build.doLast {
- Files.copy(file("$buildDir/libs/mode.jar").toPath(),
- file("mode/AndroidMode.jar").toPath(), REPLACE_EXISTING);
-}
diff --git a/mode/icons/launcher_144.png b/mode/icons/launcher_144.png
deleted file mode 100644
index ebc41bc8d..000000000
Binary files a/mode/icons/launcher_144.png and /dev/null differ
diff --git a/mode/icons/launcher_192.png b/mode/icons/launcher_192.png
deleted file mode 100644
index 40932779b..000000000
Binary files a/mode/icons/launcher_192.png and /dev/null differ
diff --git a/mode/icons/launcher_36.png b/mode/icons/launcher_36.png
deleted file mode 100644
index 4412d4f69..000000000
Binary files a/mode/icons/launcher_36.png and /dev/null differ
diff --git a/mode/icons/launcher_48.png b/mode/icons/launcher_48.png
deleted file mode 100644
index 0359b7c88..000000000
Binary files a/mode/icons/launcher_48.png and /dev/null differ
diff --git a/mode/icons/launcher_72.png b/mode/icons/launcher_72.png
deleted file mode 100644
index 8f19510ff..000000000
Binary files a/mode/icons/launcher_72.png and /dev/null differ
diff --git a/mode/icons/launcher_96.png b/mode/icons/launcher_96.png
deleted file mode 100644
index c9016cf0c..000000000
Binary files a/mode/icons/launcher_96.png and /dev/null differ
diff --git a/mode/icons/preview_circular.png b/mode/icons/preview_circular.png
deleted file mode 100644
index 940afd811..000000000
Binary files a/mode/icons/preview_circular.png and /dev/null differ
diff --git a/mode/icons/preview_rectangular.png b/mode/icons/preview_rectangular.png
deleted file mode 100644
index 277a466e4..000000000
Binary files a/mode/icons/preview_rectangular.png and /dev/null differ
diff --git a/mode/libraries/ar/build.gradle b/mode/libraries/ar/build.gradle
deleted file mode 100644
index bbc2c2a72..000000000
--- a/mode/libraries/ar/build.gradle
+++ /dev/null
@@ -1,97 +0,0 @@
-import java.nio.file.Files
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-
-plugins {
- id 'aar'
-}
-
-dependencies {
- compileOnly name: "android"
- compileOnly "org.p5android:processing-core:${modeVersion}"
- implementationAar "com.google.ar:core:${garVersion}"
-}
-
-task sourceJar(type: Jar) {
- from sourceSets.main.allJava
- archiveClassifier = "sources"
-}
-
-sourceSets {
- main {
- java {
- srcDirs = ["src/"]
- }
- resources {
- srcDirs = ["src/"]
- }
- }
-}
-
-// Does not work because of Processing-specific tags in source code, such as @webref
-task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = "javadoc"
- from javadoc.destinationDir
-}
-
-artifacts {
-// archives javadocJar
- archives sourceJar
-}
-
-jar.doLast { task ->
- ant.checksum file: task.archivePath
-}
-
-clean.doFirst {
- delete "dist"
- delete "library/ar.jar"
-}
-
-compileJava.doFirst {
- String[] deps = ["core.jar"]
- File libFolder = file("library")
- libFolder.mkdirs()
- for (String fn : deps) {
- Files.copy(file("${rootDir}/build/libs/" + fn).toPath(),
- file("library/" + fn).toPath(), REPLACE_EXISTING);
- }
-}
-
-build.doLast {
- // Copying ar jar to library folder
- File arJar = file("library/ar.jar")
- arJar.mkdirs();
-
- // Need to check the existance of the files before using as the files
- // will get generated only if Task ':mode:libraries:ar:jar' is not being skipped
- // Task ':mode:libraries:ar:jar' will be skipped if source files are unchanged or jar task is UP-TO-DATE
-
- if (file("$buildDir/libs/ar.jar").exists()) {
- Files.copy(file("$buildDir/libs/ar.jar").toPath(),
- arJar.toPath(), REPLACE_EXISTING);
- }
- // Renaming artifacts for maven publishing
- if (file("$buildDir/libs/ar.jar").exists()) {
- Files.move(file("$buildDir/libs/ar.jar").toPath(),
- file("$buildDir/libs/processing-ar-${arLibVersion}.jar").toPath(), REPLACE_EXISTING);
- }
- if (file("$buildDir/libs/ar-sources.jar").exists()) {
- Files.move(file("$buildDir/libs/ar-sources.jar").toPath(),
- file("$buildDir/libs/processing-ar-${arLibVersion}-sources.jar").toPath(), REPLACE_EXISTING);
- }
- if (file("$buildDir/libs/ar.jar.MD5").exists()) {
- Files.move(file("$buildDir/libs/ar.jar.MD5").toPath(),
- file("$buildDir/libs/processing-ar-${arLibVersion}.jar.md5").toPath(), REPLACE_EXISTING);
- }
-}
-
-ext {
- libName = 'processing-ar'
- libVersion = arLibVersion
- libJar = "${buildDir}/libs/${libName}-${libVersion}.jar"
- libSrc = "${buildDir}/libs/${libName}-${libVersion}-sources.jar"
- libMd5 = "${buildDir}/libs/${libName}-${libVersion}-sources.jar.md5"
- libDependencies = [[group: 'org.p5android', name: 'processing-core', version: modeVersion],
- [group: 'com.google.ar', name: 'core', version: garVersion]]
-}
-apply from: "${rootProject.projectDir}/scripts/publish-module.gradle"
diff --git a/mode/libraries/vr/build.gradle b/mode/libraries/vr/build.gradle
deleted file mode 100644
index 55a20e0ae..000000000
--- a/mode/libraries/vr/build.gradle
+++ /dev/null
@@ -1,103 +0,0 @@
-import java.nio.file.Files
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING
-
-plugins {
- id 'aar'
-}
-
-dependencies {
- compileOnly name: "android"
- compileOnly "org.p5android:processing-core:${modeVersion}"
-
-// commenting due to issue #718
-// implementationAar "com.google.vr:sdk-audio:${gvrVersion}"
-// implementationAar "com.google.vr:sdk-base:${gvrVersion}"
-
-// fix for Issue #718
- implementationAar fileTree(dir: "libs", include: ["*.aar"])
-}
-
-task sourceJar(type: Jar, dependsOn: classes) {
- classifier = "sources"
- from sourceSets.main.allSource
-}
-
-sourceSets {
- main {
- java {
- srcDirs = ["src/"]
- }
- }
-}
-
-// Does not work because of Processing-specific tags in source code, such as @webref
-task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = "javadoc"
- from javadoc.destinationDir
-}
-
-artifacts {
-// archives javadocJar
- archives sourceJar
-}
-
-jar.doLast { task ->
- ant.checksum file: task.archivePath
-}
-
-clean.doFirst {
- delete "dist"
- delete "library/vr.jar"
-}
-
-compileJava.doFirst {
- String[] deps = ["sdk-audio.jar",
- "sdk-base.jar",
- "sdk-common.jar"]
- File libFolder = file("library")
- libFolder.mkdirs()
- for (String fn : deps) {
- Files.copy(file("${rootDir}/build/libs/" + fn).toPath(),
- file("library/" + fn).toPath(), REPLACE_EXISTING);
- }
-}
-
-build.doLast {
- // Copying vr jar to library folder
- File vrJar = file("library/vr.jar")
- vrJar.mkdirs();
-
- // Need to check the existance of the files before using as the files
- // will get generated only if Task ':mode:libraries:vr:jar' is not being skipped
- // Task ':mode:libraries:vr:jar' will be skipped if source files are unchanged or jar task is UP-TO-DATE
-
- if (file("$buildDir/libs/vr.jar").exists()) {
- Files.copy(file("$buildDir/libs/vr.jar").toPath(),
- vrJar.toPath(), REPLACE_EXISTING);
- }
- // Renaming artifacts for maven publishing
- if (file("$buildDir/libs/vr.jar").exists()) {
- Files.move(file("$buildDir/libs/vr.jar").toPath(),
- file("$buildDir/libs/processing-vr-${vrLibVersion}.jar").toPath(), REPLACE_EXISTING);
- }
- if (file("$buildDir/libs/vr-sources.jar").exists()) {
- Files.move(file("$buildDir/libs/vr-sources.jar").toPath(),
- file("$buildDir/libs/processing-vr-${vrLibVersion}-sources.jar").toPath(), REPLACE_EXISTING);
- }
- if (file("$buildDir/libs/vr.jar.MD5").exists()) {
- Files.move(file("$buildDir/libs/vr.jar.MD5").toPath(),
- file("$buildDir/libs/processing-vr-${vrLibVersion}.jar.md5").toPath(), REPLACE_EXISTING);
- }
-}
-
-ext {
- libName = 'processing-vr'
- libVersion = vrLibVersion
- libJar = "${buildDir}/libs/${libName}-${libVersion}.jar"
- libSrc = "${buildDir}/libs/${libName}-${libVersion}-sources.jar"
- libMd5 = "${buildDir}/libs/${libName}-${libVersion}-sources.jar.md5"
- libDependencies = [[group: 'org.p5android', name: 'processing-core', version: modeVersion],
- [group: 'com.google.vr', name: 'sdk-base', version: gvrVersion],
- [group: 'com.google.vr', name: 'sdk-audio', version: gvrVersion]]
-}
-apply from: "${rootProject.projectDir}/scripts/publish-module.gradle"
diff --git a/mode/libraries/vr/libs/sdk-audio-1.180.0.aar b/mode/libraries/vr/libs/sdk-audio-1.180.0.aar
deleted file mode 100644
index 007485cf4..000000000
Binary files a/mode/libraries/vr/libs/sdk-audio-1.180.0.aar and /dev/null differ
diff --git a/mode/libraries/vr/libs/sdk-base-1.180.0.aar b/mode/libraries/vr/libs/sdk-base-1.180.0.aar
deleted file mode 100644
index e9047d226..000000000
Binary files a/mode/libraries/vr/libs/sdk-base-1.180.0.aar and /dev/null differ
diff --git a/mode/libraries/vr/libs/sdk-common-1.180.0.aar b/mode/libraries/vr/libs/sdk-common-1.180.0.aar
deleted file mode 100644
index 7ba5cff92..000000000
Binary files a/mode/libraries/vr/libs/sdk-common-1.180.0.aar and /dev/null differ
diff --git a/mode/mode/gradlew.zip b/mode/mode/gradlew.zip
deleted file mode 100644
index e782e5b17..000000000
Binary files a/mode/mode/gradlew.zip and /dev/null differ
diff --git a/mode/templates/VRActivity.java.tmpl b/mode/templates/VRActivity.java.tmpl
deleted file mode 100644
index 304996a34..000000000
--- a/mode/templates/VRActivity.java.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-package @@package_name@@;
-
-import android.os.Bundle;
-
-import processing.vr.VRActivity;
-import processing.core.PApplet;
-
-public class MainActivity extends VRActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- PApplet sketch = new @@sketch_class_name@@();
- @@external@@
- setSketch(sketch);
- }
-}
\ No newline at end of file
diff --git a/processing/.gitignore b/processing/.gitignore
new file mode 100644
index 000000000..9c6eb9d40
--- /dev/null
+++ b/processing/.gitignore
@@ -0,0 +1,14 @@
+mode/processing-core.zip
+mode/mode/AndroidMode.jar
+mode/mode/gradle-tooling-api*
+mode/mode/slf4j*
+
+mode/mode/percent.jar
+mode/mode/recyclerview-v7.jar
+mode/mode/support-*
+mode/mode/wearable.jar
+
+mode/libraries/vr/library
+mode/libraries/ar/library
+mode/tools/SDKUpdater/tool
+mode/tools/SDKUpdater/lib
diff --git a/processing/README.md b/processing/README.md
new file mode 100644
index 000000000..743c8422c
--- /dev/null
+++ b/processing/README.md
@@ -0,0 +1,6 @@
+Processing for Android
+======================
+
+This is the main repository for Processing for Android. It includes the core library inside the core folder, and the mode itself in the root. See the [wiki](https://github.com/processing/processing-android/wiki) for build instructions.
+
+
diff --git a/processing/build.gradle b/processing/build.gradle
new file mode 100644
index 000000000..9823664a5
--- /dev/null
+++ b/processing/build.gradle
@@ -0,0 +1,175 @@
+import java.nio.file.Files
+import org.zeroturnaround.zip.ZipUtil
+import org.apache.commons.io.FileUtils
+import java.util.regex.Pattern
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.3.1'
+ classpath group: 'commons-io', name: 'commons-io', version: '2.12.0'
+ classpath group: 'org.zeroturnaround', name: 'zt-zip', version: '1.15'
+ }
+}
+
+plugins {
+ id 'java'
+ id('io.github.gradle-nexus.publish-plugin') version '1.1.0'
+}
+
+apply from: "${rootDir}/scripts/publish-root.gradle"
+
+allprojects {
+ apply plugin: 'java'
+ apply plugin: 'java-library'
+
+ Properties versions = new Properties()
+ versions.load(project.rootProject.file("mode/version.properties").newDataInputStream())
+ ext.targetSdkVersion = versions.getProperty("android-platform")
+ ext.appcompatVersion = versions.getProperty("androidx.appcompat%appcompat")
+ ext.v4legacyVersion = versions.getProperty("androidx.legacy%legacy-support-v4")
+ ext.wearVersion = versions.getProperty("com.google.android.support%wearable")
+ ext.gvrVersion = versions.getProperty("com.google.vr")
+ ext.garVersion = versions.getProperty("com.google.ar")
+ ext.processingVersion = versions.getProperty("org.processing")
+ ext.toolingVersion = versions.getProperty("org.gradle%gradle-tooling-api")
+ ext.slf4jVersion = versions.getProperty("org.slf4j")
+ ext.gradlewVersion = versions.getProperty("gradle-wrapper")
+ ext.toolsLibVersion = versions.getProperty("android-toolslib")
+ ext.jdtVersion = versions.getProperty("org.eclipse.jdt")
+
+ Properties modeProperties = new Properties()
+ modeProperties.load(project.rootProject.file("mode/mode.properties").newDataInputStream())
+ ext.modeVersion = modeProperties.getProperty("prettyVersion")
+
+ Properties vrProperties = new Properties()
+ vrProperties.load(project.rootProject.file("mode/libraries/vr/library.properties").newDataInputStream())
+ ext.vrLibVersion = vrProperties.getProperty("prettyVersion")
+
+ Properties arProperties = new Properties()
+ arProperties.load(project.rootProject.file("mode/libraries/ar/library.properties").newDataInputStream())
+ ext.arLibVersion = arProperties.getProperty("prettyVersion")
+
+
+ def fn = project.rootProject.file("local.properties")
+ if (!fn.exists()) {
+ if (System.env["ANDROID_SDK"] != null) {
+ def syspath = System.env["ANDROID_SDK"]
+ def parts = syspath.split(Pattern.quote(File.separator))
+ def path = String.join("/", parts)
+ fn.withWriterAppend { w ->
+ w << "sdk.dir=${path}\n"
+ }
+ } else {
+ throw new GradleException(
+ "The file local.properties does not exist, and there is no ANDROID_SDK environmental variable defined in the system.\n" +
+ "Define ANDROID_SDK so it points to the location of the Android SDK, or create the local.properties file manually\n" +
+ "and add the following line to it:\n" +
+ "sdk.dir=")
+ }
+ }
+
+
+ Properties localProperties = new Properties()
+ localProperties.load(project.rootProject.file("local.properties").newDataInputStream())
+ def sdkDir = localProperties.getProperty("sdk.dir")
+ ext.androidPlatformPath = "${sdkDir}/platforms/android-${targetSdkVersion}"
+ ext.coreZipPath = "${rootDir}/mode/processing-core.zip"
+
+ repositories {
+ google()
+ mavenCentral()
+ maven { url "https://maven.google.com" }
+ maven { url "https://jitpack.io" }
+ maven { url 'https://repo.gradle.org/gradle/libs-releases' }
+ flatDir dirs: androidPlatformPath
+ flatDir dirs: "${rootDir}/core/build/libs"
+ }
+
+ compileJava {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+
+ // Uncomment this option when building with Java 11+
+ // https://github.com/processing/processing-android/issues/625
+ // options.release = 8
+ }
+}
+
+clean.doFirst {
+ delete "dist"
+}
+
+task dist {
+ dependsOn subprojects.build
+ doLast {
+ def root = "${buildDir}/zip/AndroidMode"
+
+ // Copy assets to build dir
+ FileUtils.copyDirectory(file("mode/templates"), file("${root}/templates"))
+ FileUtils.copyDirectory(file("mode/examples"), file("${root}/examples"))
+ FileUtils.copyDirectory(file("mode/icons"), file("${root}/icons"))
+ FileUtils.copyDirectory(file("mode/theme"), file("${root}/theme"))
+ FileUtils.copyDirectory(file("mode/mode"), file("${root}/mode"))
+ delete "${root}/mode/core.jar"
+ delete "${root}/mode/pde.jar"
+ delete "${root}/mode/JavaMode.jar"
+ // delete "${root}/mode/jdi.jar"
+ // delete "${root}/mode/jdimodel.jar"
+
+ Files.copy(file("mode/processing-core.zip").toPath(),
+ file("${root}/processing-core.zip").toPath(), REPLACE_EXISTING)
+
+ Files.copy(file("mode/keywords.txt").toPath(),
+ file("${root}/keywords.txt").toPath(), REPLACE_EXISTING)
+
+ Files.copy(file("mode/version.properties").toPath(),
+ file("${root}/version.properties").toPath(), REPLACE_EXISTING)
+
+ Files.copy(file("mode/mode.properties").toPath(),
+ file("${root}/mode.properties").toPath(), REPLACE_EXISTING)
+
+ FileUtils.copyDirectory(file("mode/languages"),
+ file("${root}/languages"))
+
+ FileUtils.copyDirectory(file("mode/resources"),
+ file("${root}/resources"))
+
+ FileUtils.copyDirectory(file("mode/tools/SDKUpdater/tool"),
+ file("${root}/tools/SDKUpdater/tool"))
+ FileUtils.copyDirectory(file("mode/tools/SDKUpdater/lib"),
+ file("${root}/tools/SDKUpdater/lib"))
+ FileUtils.copyDirectory(file("mode/tools/SDKUpdater/src"),
+ file("${root}/tools/SDKUpdater/src"))
+
+ FileUtils.copyDirectory(file("mode/libraries/vr/examples"),
+ file("${root}/libraries/vr/examples"))
+ FileUtils.copyDirectory(file("mode/libraries/vr/library"),
+ file("${root}/libraries/vr/library"))
+ FileUtils.copyDirectory(file("mode/libraries/vr/libs"),
+ file("${root}/libraries/vr/libs"))
+ FileUtils.copyDirectory(file("../libs/processing-vr/src/main/java/"),
+ file("${root}/libraries/vr/src"))
+ Files.copy(file("mode/libraries/vr/library.properties").toPath(),
+ file("${root}/libraries/vr/library.properties").toPath(), REPLACE_EXISTING)
+
+ FileUtils.copyDirectory(file("mode/libraries/ar/examples"),
+ file("${root}/libraries/ar/examples"))
+ FileUtils.copyDirectory(file("mode/libraries/ar/library"),
+ file("${root}/libraries/ar/library"))
+ FileUtils.copyDirectory(file("../libs/processing-ar/src/main/java/"),
+ file("${root}/libraries/ar/src"))
+ Files.copy(file("mode/libraries/ar/library.properties").toPath(),
+ file("${root}/libraries/ar/library.properties").toPath(), REPLACE_EXISTING)
+
+ File distFolder = file("dist")
+ distFolder.mkdirs()
+ ZipUtil.pack(file("${buildDir}/zip"), new File("dist/AndroidMode.zip"))
+ Files.copy(file("mode/mode.properties").toPath(),
+ file("dist/AndroidMode.txt").toPath(), REPLACE_EXISTING)
+ }
+}
diff --git a/buildSrc/build.gradle b/processing/buildSrc/build.gradle
similarity index 53%
rename from buildSrc/build.gradle
rename to processing/buildSrc/build.gradle
index a95a3cb68..e6ffdbeb9 100644
--- a/buildSrc/build.gradle
+++ b/processing/buildSrc/build.gradle
@@ -11,5 +11,7 @@ repositories {
dependencies {
implementation gradleApi()
implementation localGroovy()
- implementation 'com.android.tools.build:gradle:4.1.1'
+ implementation 'com.android.tools.build:gradle:7.3.1'
+ implementation 'com.google.guava:guava:32.0.0-jre'
+ implementation 'com.android.tools:common:25.3.0'
}
\ No newline at end of file
diff --git a/processing/buildSrc/src/main/groovy/ImportAar.groovy b/processing/buildSrc/src/main/groovy/ImportAar.groovy
new file mode 100644
index 000000000..fc20588f1
--- /dev/null
+++ b/processing/buildSrc/src/main/groovy/ImportAar.groovy
@@ -0,0 +1,237 @@
+// import org.gradle.api.Plugin
+// import org.gradle.api.Project
+// import org.gradle.api.artifacts.Configuration
+// import org.gradle.api.artifacts.transform.TransformAction
+// import org.gradle.api.artifacts.transform.TransformParameters
+// import org.gradle.api.artifacts.transform.InputArtifact
+// import org.gradle.api.artifacts.transform.TransformOutputs
+// import org.gradle.api.file.FileSystemLocation
+// import org.gradle.api.provider.Provider
+// import org.gradle.api.tasks.PathSensitive
+// import org.gradle.api.tasks.PathSensitivity
+
+// import org.gradle.api.attributes.LibraryElements
+// import org.gradle.api.attributes.Usage
+// import org.gradle.api.attributes.Category
+
+// import com.android.build.gradle.internal.dependency.AarTransform
+// import com.android.build.gradle.internal.dependency.ExtractAarTransform
+// import com.android.build.gradle.internal.publishing.AndroidArtifacts
+// import com.android.builder.aar.AarExtractor
+// import com.google.common.collect.ImmutableList
+
+// import java.nio.file.Files
+// import static java.nio.file.StandardCopyOption.REPLACE_EXISTING
+
+
+// import org.gradle.api.Plugin
+// import org.gradle.api.Project
+// import org.gradle.api.artifacts.Configuration
+// import org.gradle.api.artifacts.ResolvedArtifact
+// import java.util.zip.ZipFile
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.artifacts.Configuration
+import org.gradle.api.tasks.TaskAction
+import java.util.zip.ZipFile
+
+/**
+ * Build Gradle plgin needed to use aar files as dependencies in a pure java library project.
+ * Adapted from the following plugin by nekocode
+ * https://github.com/nekocode/Gradle-Import-Aar
+ * Ported to Groovy, and made specific to the needs of the Android mode build process (i.e.: this plugin
+ * is not meant to be used with other projects).
+ * Ported to Gradle 8 replacing the deprecated ArtifactTransform with the new TransformAction API.
+ */
+class ImportAar implements Plugin {
+ final String CONFIG_NAME_POSTFIX = "Aar"
+
+ @Override
+ void apply(Project project) {
+ // def aar = AndroidArtifacts.TYPE_AAR
+ // def jar = AndroidArtifacts.TYPE_JAR
+
+ println ">>> Calling ImportAar"
+
+ // Create a custom resolvable configuration
+ project.configurations.create('aarExtractorResolvable') {
+ canBeResolved = true
+ canBeConsumed = false
+ extendsFrom project.configurations.implementation
+ }
+
+ project.tasks.register('extractAarJars', ExtractAarJarsTask) {
+ group = 'build'
+ description = 'Extracts JAR files from AAR dependencies and places them in build/libs.'
+ }
+
+
+ // project.task('extractAarJars') {
+ // doLast {
+ // println "=======> Calling extractAarJars task"
+
+ // project.configurations.each { Configuration config ->
+ // config.resolvedConfiguration.resolvedArtifacts.each { ResolvedArtifact artifact ->
+ // println "Resolved artifact: ${artifact}"
+ // if (artifact.type == 'aar') {
+ // extractJarFromAar(artifact, project)
+ // }
+ // }
+ // }
+ // }
+ // }
+
+
+
+/*
+ // Create AAR configurations
+ Collection allConfigs = project.getConfigurations().toList()
+ for (Configuration config: allConfigs) {
+ println config
+ Configuration aarConfig = project.configurations.maybeCreate(config.name + CONFIG_NAME_POSTFIX)
+ println aarConfig
+
+ // Add extracted jars to original configuration after project evaluating
+ aarConfig.attributes {
+ attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements, LibraryElements.JAR))
+ attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage, Usage.JAVA_RUNTIME))
+ attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category, Category.LIBRARY))
+ }
+
+ project.afterEvaluate {
+ println "-> In afterEvaluate"
+ aarConfig.resolvedConfiguration.resolvedArtifacts.each { artifact ->
+ File jarFile = artifact.file
+ print "================================================> FILE "
+ println jarFile
+ println jarFile.getName()
+
+ // Add jar file to classpath
+ project.sourceSets.main.compileClasspath += project.files(jarFile)
+
+ File libraryFolder = new File(project.buildDir, "libs")
+ libraryFolder.mkdirs()
+
+ // Strip version number when copying
+ String name = jarFile.name
+ int p = name.lastIndexOf("-")
+ String libName = name.substring(0, p) + ".jar"
+ File libraryJar = new File(libraryFolder, libName)
+ Files.copy(jarFile.toPath(), libraryJar.toPath(), REPLACE_EXISTING)
+ }
+ }
+ }
+
+ // Register aar transform
+ project.dependencies {
+ registerTransform(AarToJarTransform) {
+ from.attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements, aar))
+ to.attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements, jar))
+ }
+ }
+ */
+ }
+
+ // void extractJarFromAar(ResolvedArtifact artifact, Project project) {
+ // println "Input AAR: ${aarFile}"
+ // def aarFile = artifact.file
+ // def zipFile = new ZipFile(aarFile)
+ // def entry = zipFile.getEntry('classes.jar')
+ // if (entry) {
+ // project.copy {
+ // from project.zipTree(aarFile)
+ // include 'classes.jar'
+ // into "${project.buildDir}/libs"
+ // rename { "${artifact.name}-${artifact.moduleVersion.id.version}.jar" }
+ // }
+ // }
+ // zipFile.close()
+ // }
+
+
+ // abstract static class AarToJarTransform implements TransformAction {
+ // AarToJarTransform() {
+ // println "AarToJarTransform instantiated"
+ // }
+
+ // @InputArtifact
+ // @PathSensitive(PathSensitivity.NAME_ONLY)
+ // abstract Provider getInputArtifact()
+
+ // @Override
+ // void transform(TransformOutputs outputs) {
+ // File inputFile = inputArtifact.get().asFile
+ // println "Input AAR: ${inputFile}"
+ // File explodedDir = new File(outputs.getOutputDirectory(), "exploded")
+ // println "Exploded Directory: ${explodedDir}"
+
+ // AarExtractor aarExtractor = new AarExtractor()
+ // aarExtractor.extract(inputFile, explodedDir)
+ // File classesJar = new File(new File(explodedDir, "jars"), "classes.jar")
+ // if (classesJar.exists()) {
+ // println "Classes JAR found: ${classesJar}"
+ // String aarName = inputFile.name.replace(".aar", "")
+ // File renamedJar = outputs.file("${aarName}.jar")
+ // Files.copy(classesJar.toPath(), renamedJar.toPath(), REPLACE_EXISTING)
+ // println "Transformed JAR: ${renamedJar}"
+ // } else {
+ // println "Error: classes.jar not found in ${explodedDir}"
+ // }
+ // }
+ // }
+}
+
+
+class ExtractAarJarsTask extends org.gradle.api.DefaultTask {
+ @TaskAction
+ void extractJars() {
+ //File outputDir = new File(project.buildDir, 'libs')
+ File outputDir = new File(System.getProperty("user.dir"), "build/libs")
+ outputDir.mkdirs()
+
+ // Configuration compileClasspath = project.configurations.getByName('implementation')
+ Configuration aarExtractorResolvable = project.configurations.getByName('aarExtractorResolvable')
+
+ // compileClasspath.resolvedConfiguration.resolvedArtifacts.each { artifact ->
+ aarExtractorResolvable.resolvedConfiguration.resolvedArtifacts.each { artifact ->
+ if (artifact.type == 'aar') {
+ File aarFile = artifact.file
+ println "Processing AAR: ${aarFile.name}"
+
+ // Extract the AAR file
+ ZipFile zipFile = new ZipFile(aarFile)
+ zipFile.entries().each { entry ->
+ if (entry.name.endsWith('.jar')) {
+ println "Classes JAR found: ${entry}"
+ String aarName = aarFile.name.replace(".aar", "")
+ String jarName = "${aarName}.jar".replaceFirst(/-\d+(\.\d+)*(?=\.jar$)/, '')
+
+ File jarOutput = new File(outputDir, jarName)
+ jarOutput.parentFile.mkdirs()
+
+ // Write the JAR file to the output directory
+ zipFile.getInputStream(entry).withCloseable { inputStream ->
+ jarOutput.withOutputStream { outputStream ->
+ copyStream(inputStream, outputStream)
+ }
+ }
+ println "Extracted JAR: ${jarOutput.absolutePath}"
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Copies data from an InputStream to an OutputStream.
+ */
+ void copyStream(InputStream input, OutputStream output) {
+ byte[] buffer = new byte[1024]
+ int bytesRead
+ while ((bytesRead = input.read(buffer)) != -1) {
+ output.write(buffer, 0, bytesRead)
+ }
+ }
+}
+
diff --git a/processing/buildSrc/src/main/resources/META-INF/gradle-plugins/ImportAar.properties b/processing/buildSrc/src/main/resources/META-INF/gradle-plugins/ImportAar.properties
new file mode 100644
index 000000000..f41e15936
--- /dev/null
+++ b/processing/buildSrc/src/main/resources/META-INF/gradle-plugins/ImportAar.properties
@@ -0,0 +1 @@
+implementation-class=ImportAar
\ No newline at end of file
diff --git a/processing/core/build.gradle b/processing/core/build.gradle
new file mode 100644
index 000000000..07a8b8b73
--- /dev/null
+++ b/processing/core/build.gradle
@@ -0,0 +1,110 @@
+import org.apache.tools.ant.Project
+import java.nio.file.Files
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+
+plugins {
+ id 'ImportAar'
+ id 'java-library'
+ id 'maven-publish'
+}
+
+dependencies {
+ implementation name: "android"
+ implementation "androidx.legacy:legacy-support-v4:${v4legacyVersion}"
+ implementation "com.google.android.support:wearable:${wearVersion}"
+}
+
+sourceSets.main {
+ java.srcDir("../../libs/processing-core/src/main/java/")
+ resources.srcDir("../../libs/processing-core/src/main/")
+ resources.exclude("AndroidManifest.xml", "**/java/**")
+}
+
+tasks.register('sourceJar', Jar) {
+ dependsOn classes
+ duplicatesStrategy = DuplicatesStrategy.INCLUDE
+ archiveClassifier.set("sources")
+ from sourceSets.main.allSource
+}
+
+// Does not work because of Processing-specific tags in source code, such as @webref
+tasks.register('javadocJar', Jar) {
+ dependsOn javadoc
+ archiveClassifier.set("javadoc")
+ from javadoc.destinationDir
+}
+
+// project.afterEvaluate {
+// tasks.named('extractAarJars').configure {
+// dependsOn configurations.runtimeClasspath
+// }
+// }
+
+// project.tasks.named('build').configure {
+// finalizedBy('extractAarJars')
+// }
+
+artifacts {
+// archives javadocJar
+ archives sourceJar
+}
+
+jar.doLast { task ->
+ ant.checksum file: task.archiveFile.get().asFile
+}
+
+tasks.named('clean').configure {
+ doFirst {
+ delete "dist"
+ delete "${coreZipPath}"
+ }
+}
+
+tasks.named('compileJava').configure {
+ doFirst {
+ String[] deps = ["wearable.jar"]
+ deps.each { fn ->
+ Files.copy(file("${rootDir}/build/libs/${fn}").toPath(),
+ file("${rootDir}/mode/mode/${fn}").toPath(), REPLACE_EXISTING)
+ }
+ }
+}
+
+tasks.named('build').configure {
+ doLast {
+ // Need to check the existance of the files before using as the files
+ // will get generated only if Task :core:jar is not being skipped
+ // Task :core:jar will be skipped if source files are unchanged or jar task is UP-TO-DATE
+ if (file("${buildDir}/libs/core.jar").exists()) {
+ // Copying core jar as zip inside the mode folder
+ Files.copy(file("${buildDir}/libs/core.jar").toPath(),
+ file("${coreZipPath}").toPath(), REPLACE_EXISTING)
+ }
+ // Renaming artifacts for maven publishing
+ if (file("${buildDir}/libs/core.jar").exists()) {
+ Files.move(file("${buildDir}/libs/core.jar").toPath(),
+ file("$buildDir/libs/processing-core-${modeVersion}.jar").toPath(), REPLACE_EXISTING)
+ }
+ if (file("${buildDir}/libs/core-sources.jar").exists()) {
+ Files.move(file("${buildDir}/libs/core-sources.jar").toPath(),
+ file("$buildDir/libs/processing-core-${modeVersion}-sources.jar").toPath(), REPLACE_EXISTING)
+ }
+ if (file("${buildDir}/libs/core.jar.MD5").exists()) {
+ Files.move(file("${buildDir}/libs/core.jar.MD5").toPath(),
+ file("$buildDir/libs/processing-core-${modeVersion}.jar.md5").toPath(), REPLACE_EXISTING)
+ }
+ }
+}
+
+ext {
+ libName = 'processing-core'
+ libVersion = modeVersion
+ libJar = "${buildDir}/libs/${libName}-${libVersion}.jar"
+ libSrc = "${buildDir}/libs/${libName}-${libVersion}-sources.jar"
+ libMd5 = "${buildDir}/libs/${libName}-${libVersion}-sources.jar.md5"
+ libDependencies = [[name: 'legacy-support-v4', group: 'androidx.legacy', version: v4legacyVersion],
+ [name: 'wearable', group: 'com.google.android.support', version: wearVersion],
+ [name: 'android']]
+}
+
+apply from: "${rootProject.projectDir}/scripts/publish-module.gradle"
diff --git a/processing/gradle.properties b/processing/gradle.properties
new file mode 100644
index 000000000..5465fec0e
--- /dev/null
+++ b/processing/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/debug/gradle/wrapper/gradle-wrapper.jar b/processing/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from debug/gradle/wrapper/gradle-wrapper.jar
rename to processing/gradle/wrapper/gradle-wrapper.jar
diff --git a/debug/gradle/wrapper/gradle-wrapper.properties b/processing/gradle/wrapper/gradle-wrapper.properties
similarity index 92%
rename from debug/gradle/wrapper/gradle-wrapper.properties
rename to processing/gradle/wrapper/gradle-wrapper.properties
index aa991fcea..d6e308a63 100644
--- a/debug/gradle/wrapper/gradle-wrapper.properties
+++ b/processing/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/processing/gradlew b/processing/gradlew
new file mode 100755
index 000000000..1b6c78733
--- /dev/null
+++ b/processing/gradlew
@@ -0,0 +1,234 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+
+APP_NAME="Gradle"
+APP_BASE_NAME=${0##*/}
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/processing/gradlew.bat
similarity index 100%
rename from gradlew.bat
rename to processing/gradlew.bat
diff --git a/mode/.classpath b/processing/mode/.classpath
similarity index 100%
rename from mode/.classpath
rename to processing/mode/.classpath
diff --git a/mode/.project b/processing/mode/.project
similarity index 87%
rename from mode/.project
rename to processing/mode/.project
index a1e217daa..e89bdfe07 100644
--- a/mode/.project
+++ b/processing/mode/.project
@@ -22,12 +22,12 @@
- 1650246874247
+ 1675640664215
30
org.eclipse.core.resources.regexFilterMatcher
- node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
+ node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
diff --git a/mode/.settings/org.eclipse.buildship.core.prefs b/processing/mode/.settings/org.eclipse.buildship.core.prefs
similarity index 100%
rename from mode/.settings/org.eclipse.buildship.core.prefs
rename to processing/mode/.settings/org.eclipse.buildship.core.prefs
diff --git a/mode/.settings/org.eclipse.jdt.core.prefs b/processing/mode/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from mode/.settings/org.eclipse.jdt.core.prefs
rename to processing/mode/.settings/org.eclipse.jdt.core.prefs
diff --git a/processing/mode/build.gradle b/processing/mode/build.gradle
new file mode 100644
index 000000000..0f34a95d9
--- /dev/null
+++ b/processing/mode/build.gradle
@@ -0,0 +1,102 @@
+import java.nio.file.Files
+import org.zeroturnaround.zip.ZipUtil
+import org.apache.commons.io.FileUtils
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+
+plugins {
+ id 'java'
+}
+
+// Extend compile to copy the jars from gradle-tooling and slf4j:
+// https://stackoverflow.com/a/43602463
+configurations {
+ implementationCopy
+ implementationExtract
+}
+
+dependencies {
+ // implementation group: "org.processing", name: "core", version: "${processingVersion}"
+ // implementation group: "org.processing", name: "pde", version: "${processingVersion}"
+ // implementation group: "org.processing", name: "java-mode", version: "${processingVersion}"
+
+ implementationExtract "org.eclipse.jdt:org.eclipse.jdt.debug:${jdtVersion}"
+
+ implementationCopy "org.gradle:gradle-tooling-api:${toolingVersion}"
+ implementationCopy "org.slf4j:slf4j-api:${slf4jVersion}"
+ implementationCopy "org.slf4j:slf4j-simple:${slf4jVersion}"
+
+ implementation fileTree(include: ["jdi.jar", "jdimodel.jar", "core.jar", "pde.jar", "JavaMode.jar"], dir: 'mode')
+}
+
+// This task copies the gradle tooling jar into the mode folder
+tasks.register("copyToLib", Copy) {
+ from(configurations.implementationCopy)
+ into("mode")
+}
+
+tasks.named('build') {
+ dependsOn 'copyToLib'
+}
+
+tasks.named('compileJava') {
+ dependsOn 'copyToLib'
+}
+
+sourceSets.main.java.srcDir("src/")
+
+tasks.register('getjdi', Copy) {
+ // This task extracts the jar files inside org.eclipse.jdt.debug, which are
+ // jdi.jar and jdimodel.jar and needed to build the debugger.
+ from(zipTree(configurations.implementationExtract.singleFile)) {
+ include '**/*.jar'
+ exclude 'META-INF'
+ }
+ into "mode"
+}
+
+tasks.register('permissions', Exec) {
+ // This task retrieves the latest list of Android permissions and adds them
+ // to the Permissions.java file. The python scripts requries BeautifulSoup
+ workingDir "scripts"
+ commandLine "python", "permissions.py"
+}
+
+
+tasks.register("wrapper", Wrapper) {
+ gradleVersion = "${gradlewVersion}" // version required for gradle wrapper
+}
+
+tasks.named("wrapper").configure {
+ doLast {
+ def wrapperFolder = file("mode/gradlew")
+ wrapperFolder.mkdirs()
+ file("gradle").renameTo(file("mode/gradlew/gradle"))
+ file("gradlew").renameTo(file("mode/gradlew/gradlew"))
+ file("gradlew.bat").renameTo(file("mode/gradlew/gradlew.bat"))
+ FileUtils.copyDirectory(file("gradle"), file("../debug/gradle"))
+ delete("gradle")
+ ZipUtil.pack(file("mode/gradlew"), new File("mode/mode/gradlew.zip"))
+ delete("mode/gradlew")
+ }
+}
+
+tasks.named('clean') {
+ doFirst {
+ delete fileTree("mode") {
+ include "**/*.jar"
+ exclude "jdi.jar", "jdimodel.jar", "istack-commons-runtime.jar", "javax.activation-api.jar",
+ "jaxb-api.jar", "jaxb-jxc.jar", "jaxb-runtime.jar", "jaxb-xjc.jar", "core.jar",
+ "pde.jar", "JavaMode.jar", "org.eclipse.core.contenttype.jar", "org.eclipse.core.jobs.jar",
+ "org.eclipse.core.resources.jar", "org.eclipse.core.runtime.jar", "org.eclipse.equinox.common.jar",
+ "org.eclipse.equinox.preferences.jar", "org.eclipse.jdt.core.jar", "org.eclipse.osgi.jar",
+ "org.eclipse.text.jar"
+ }
+ }
+}
+
+tasks.named('build') {
+ doLast {
+ Files.copy(file("$buildDir/libs/mode.jar").toPath(),
+ file("mode/AndroidMode.jar").toPath(), REPLACE_EXISTING)
+ }
+}
\ No newline at end of file
diff --git a/mode/examples/Basics/Arrays/Array/Array.pde b/processing/mode/examples/Basics/Arrays/Array/Array.pde
similarity index 100%
rename from mode/examples/Basics/Arrays/Array/Array.pde
rename to processing/mode/examples/Basics/Arrays/Array/Array.pde
diff --git a/mode/examples/Basics/Arrays/Array2D/Array2D.pde b/processing/mode/examples/Basics/Arrays/Array2D/Array2D.pde
similarity index 100%
rename from mode/examples/Basics/Arrays/Array2D/Array2D.pde
rename to processing/mode/examples/Basics/Arrays/Array2D/Array2D.pde
diff --git a/mode/examples/Basics/Arrays/ArrayObjects/ArrayObjects.pde b/processing/mode/examples/Basics/Arrays/ArrayObjects/ArrayObjects.pde
similarity index 100%
rename from mode/examples/Basics/Arrays/ArrayObjects/ArrayObjects.pde
rename to processing/mode/examples/Basics/Arrays/ArrayObjects/ArrayObjects.pde
diff --git a/mode/examples/Basics/Arrays/ArrayObjects/Module.pde b/processing/mode/examples/Basics/Arrays/ArrayObjects/Module.pde
similarity index 100%
rename from mode/examples/Basics/Arrays/ArrayObjects/Module.pde
rename to processing/mode/examples/Basics/Arrays/ArrayObjects/Module.pde
diff --git a/mode/examples/Basics/Camera/MoveEye/MoveEye.pde b/processing/mode/examples/Basics/Camera/MoveEye/MoveEye.pde
similarity index 100%
rename from mode/examples/Basics/Camera/MoveEye/MoveEye.pde
rename to processing/mode/examples/Basics/Camera/MoveEye/MoveEye.pde
diff --git a/mode/examples/Basics/Camera/Perspective/Perspective.pde b/processing/mode/examples/Basics/Camera/Perspective/Perspective.pde
similarity index 100%
rename from mode/examples/Basics/Camera/Perspective/Perspective.pde
rename to processing/mode/examples/Basics/Camera/Perspective/Perspective.pde
diff --git a/mode/examples/Basics/Color/Brightness/Brightness.pde b/processing/mode/examples/Basics/Color/Brightness/Brightness.pde
similarity index 100%
rename from mode/examples/Basics/Color/Brightness/Brightness.pde
rename to processing/mode/examples/Basics/Color/Brightness/Brightness.pde
diff --git a/mode/examples/Basics/Color/ColorWheel/ColorWheel.pde b/processing/mode/examples/Basics/Color/ColorWheel/ColorWheel.pde
similarity index 100%
rename from mode/examples/Basics/Color/ColorWheel/ColorWheel.pde
rename to processing/mode/examples/Basics/Color/ColorWheel/ColorWheel.pde
diff --git a/mode/examples/Basics/Color/Creating/Creating.pde b/processing/mode/examples/Basics/Color/Creating/Creating.pde
similarity index 100%
rename from mode/examples/Basics/Color/Creating/Creating.pde
rename to processing/mode/examples/Basics/Color/Creating/Creating.pde
diff --git a/mode/examples/Basics/Color/Hue/Hue.pde b/processing/mode/examples/Basics/Color/Hue/Hue.pde
similarity index 100%
rename from mode/examples/Basics/Color/Hue/Hue.pde
rename to processing/mode/examples/Basics/Color/Hue/Hue.pde
diff --git a/mode/examples/Basics/Color/LinearGradient/LinearGradient.pde b/processing/mode/examples/Basics/Color/LinearGradient/LinearGradient.pde
similarity index 100%
rename from mode/examples/Basics/Color/LinearGradient/LinearGradient.pde
rename to processing/mode/examples/Basics/Color/LinearGradient/LinearGradient.pde
diff --git a/mode/examples/Basics/Color/RadialGradient/RadialGradient.pde b/processing/mode/examples/Basics/Color/RadialGradient/RadialGradient.pde
similarity index 100%
rename from mode/examples/Basics/Color/RadialGradient/RadialGradient.pde
rename to processing/mode/examples/Basics/Color/RadialGradient/RadialGradient.pde
diff --git a/mode/examples/Basics/Color/RadialGradient2/RadialGradient2.pde b/processing/mode/examples/Basics/Color/RadialGradient2/RadialGradient2.pde
similarity index 100%
rename from mode/examples/Basics/Color/RadialGradient2/RadialGradient2.pde
rename to processing/mode/examples/Basics/Color/RadialGradient2/RadialGradient2.pde
diff --git a/mode/examples/Basics/Color/Reading/Reading.pde b/processing/mode/examples/Basics/Color/Reading/Reading.pde
similarity index 100%
rename from mode/examples/Basics/Color/Reading/Reading.pde
rename to processing/mode/examples/Basics/Color/Reading/Reading.pde
diff --git a/mode/examples/Basics/Color/Reading/data/cait.jpg b/processing/mode/examples/Basics/Color/Reading/data/cait.jpg
similarity index 100%
rename from mode/examples/Basics/Color/Reading/data/cait.jpg
rename to processing/mode/examples/Basics/Color/Reading/data/cait.jpg
diff --git a/mode/examples/Basics/Color/Relativity/Relativity.pde b/processing/mode/examples/Basics/Color/Relativity/Relativity.pde
similarity index 100%
rename from mode/examples/Basics/Color/Relativity/Relativity.pde
rename to processing/mode/examples/Basics/Color/Relativity/Relativity.pde
diff --git a/mode/examples/Basics/Color/Saturation/Saturation.pde b/processing/mode/examples/Basics/Color/Saturation/Saturation.pde
similarity index 100%
rename from mode/examples/Basics/Color/Saturation/Saturation.pde
rename to processing/mode/examples/Basics/Color/Saturation/Saturation.pde
diff --git a/mode/examples/Basics/Color/WaveGradient/WaveGradient.pde b/processing/mode/examples/Basics/Color/WaveGradient/WaveGradient.pde
similarity index 100%
rename from mode/examples/Basics/Color/WaveGradient/WaveGradient.pde
rename to processing/mode/examples/Basics/Color/WaveGradient/WaveGradient.pde
diff --git a/mode/examples/Basics/Control/Conditionals1/Conditionals1.pde b/processing/mode/examples/Basics/Control/Conditionals1/Conditionals1.pde
similarity index 100%
rename from mode/examples/Basics/Control/Conditionals1/Conditionals1.pde
rename to processing/mode/examples/Basics/Control/Conditionals1/Conditionals1.pde
diff --git a/mode/examples/Basics/Control/Conditionals2/Conditionals2.pde b/processing/mode/examples/Basics/Control/Conditionals2/Conditionals2.pde
similarity index 100%
rename from mode/examples/Basics/Control/Conditionals2/Conditionals2.pde
rename to processing/mode/examples/Basics/Control/Conditionals2/Conditionals2.pde
diff --git a/mode/examples/Basics/Control/EmbeddedIteration/EmbeddedIteration.pde b/processing/mode/examples/Basics/Control/EmbeddedIteration/EmbeddedIteration.pde
similarity index 100%
rename from mode/examples/Basics/Control/EmbeddedIteration/EmbeddedIteration.pde
rename to processing/mode/examples/Basics/Control/EmbeddedIteration/EmbeddedIteration.pde
diff --git a/mode/examples/Basics/Control/Iteration/Iteration.pde b/processing/mode/examples/Basics/Control/Iteration/Iteration.pde
similarity index 100%
rename from mode/examples/Basics/Control/Iteration/Iteration.pde
rename to processing/mode/examples/Basics/Control/Iteration/Iteration.pde
diff --git a/mode/examples/Basics/Control/LogicalOperators/LogicalOperators.pde b/processing/mode/examples/Basics/Control/LogicalOperators/LogicalOperators.pde
similarity index 100%
rename from mode/examples/Basics/Control/LogicalOperators/LogicalOperators.pde
rename to processing/mode/examples/Basics/Control/LogicalOperators/LogicalOperators.pde
diff --git a/mode/examples/Basics/Data/CharactersStrings/CharactersStrings.pde b/processing/mode/examples/Basics/Data/CharactersStrings/CharactersStrings.pde
similarity index 100%
rename from mode/examples/Basics/Data/CharactersStrings/CharactersStrings.pde
rename to processing/mode/examples/Basics/Data/CharactersStrings/CharactersStrings.pde
diff --git a/mode/examples/Basics/Data/CharactersStrings/data/Eureka-90.vlw b/processing/mode/examples/Basics/Data/CharactersStrings/data/Eureka-90.vlw
similarity index 100%
rename from mode/examples/Basics/Data/CharactersStrings/data/Eureka-90.vlw
rename to processing/mode/examples/Basics/Data/CharactersStrings/data/Eureka-90.vlw
diff --git a/mode/examples/Basics/Data/CharactersStrings/data/rathausFrog.jpg b/processing/mode/examples/Basics/Data/CharactersStrings/data/rathausFrog.jpg
similarity index 100%
rename from mode/examples/Basics/Data/CharactersStrings/data/rathausFrog.jpg
rename to processing/mode/examples/Basics/Data/CharactersStrings/data/rathausFrog.jpg
diff --git a/mode/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde b/processing/mode/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde
similarity index 100%
rename from mode/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde
rename to processing/mode/examples/Basics/Data/DatatypeConversion/DatatypeConversion.pde
diff --git a/mode/examples/Basics/Data/IntegersFloats/IntegersFloats.pde b/processing/mode/examples/Basics/Data/IntegersFloats/IntegersFloats.pde
similarity index 100%
rename from mode/examples/Basics/Data/IntegersFloats/IntegersFloats.pde
rename to processing/mode/examples/Basics/Data/IntegersFloats/IntegersFloats.pde
diff --git a/mode/examples/Basics/Data/TrueFalse/TrueFalse.pde b/processing/mode/examples/Basics/Data/TrueFalse/TrueFalse.pde
similarity index 100%
rename from mode/examples/Basics/Data/TrueFalse/TrueFalse.pde
rename to processing/mode/examples/Basics/Data/TrueFalse/TrueFalse.pde
diff --git a/mode/examples/Basics/Data/VariableScope/VariableScope.pde b/processing/mode/examples/Basics/Data/VariableScope/VariableScope.pde
similarity index 100%
rename from mode/examples/Basics/Data/VariableScope/VariableScope.pde
rename to processing/mode/examples/Basics/Data/VariableScope/VariableScope.pde
diff --git a/mode/examples/Basics/Data/Variables/Variables.pde b/processing/mode/examples/Basics/Data/Variables/Variables.pde
similarity index 100%
rename from mode/examples/Basics/Data/Variables/Variables.pde
rename to processing/mode/examples/Basics/Data/Variables/Variables.pde
diff --git a/mode/examples/Basics/Form/Bezier/Bezier.pde b/processing/mode/examples/Basics/Form/Bezier/Bezier.pde
similarity index 100%
rename from mode/examples/Basics/Form/Bezier/Bezier.pde
rename to processing/mode/examples/Basics/Form/Bezier/Bezier.pde
diff --git a/mode/examples/Basics/Form/BezierEllipse/BezierEllipse.pde b/processing/mode/examples/Basics/Form/BezierEllipse/BezierEllipse.pde
similarity index 100%
rename from mode/examples/Basics/Form/BezierEllipse/BezierEllipse.pde
rename to processing/mode/examples/Basics/Form/BezierEllipse/BezierEllipse.pde
diff --git a/mode/examples/Basics/Form/PieChart/PieChart.pde b/processing/mode/examples/Basics/Form/PieChart/PieChart.pde
similarity index 100%
rename from mode/examples/Basics/Form/PieChart/PieChart.pde
rename to processing/mode/examples/Basics/Form/PieChart/PieChart.pde
diff --git a/mode/examples/Basics/Form/PointsLines/PointsLines.pde b/processing/mode/examples/Basics/Form/PointsLines/PointsLines.pde
similarity index 100%
rename from mode/examples/Basics/Form/PointsLines/PointsLines.pde
rename to processing/mode/examples/Basics/Form/PointsLines/PointsLines.pde
diff --git a/mode/examples/Basics/Form/Primitives3D/Primitives3D.pde b/processing/mode/examples/Basics/Form/Primitives3D/Primitives3D.pde
similarity index 100%
rename from mode/examples/Basics/Form/Primitives3D/Primitives3D.pde
rename to processing/mode/examples/Basics/Form/Primitives3D/Primitives3D.pde
diff --git a/mode/examples/Basics/Form/ShapePrimitives/ShapePrimitives.pde b/processing/mode/examples/Basics/Form/ShapePrimitives/ShapePrimitives.pde
similarity index 100%
rename from mode/examples/Basics/Form/ShapePrimitives/ShapePrimitives.pde
rename to processing/mode/examples/Basics/Form/ShapePrimitives/ShapePrimitives.pde
diff --git a/mode/examples/Basics/Form/SimpleCurves/SimpleCurves.pde b/processing/mode/examples/Basics/Form/SimpleCurves/SimpleCurves.pde
similarity index 100%
rename from mode/examples/Basics/Form/SimpleCurves/SimpleCurves.pde
rename to processing/mode/examples/Basics/Form/SimpleCurves/SimpleCurves.pde
diff --git a/mode/examples/Basics/Form/TriangleStrip/TriangleStrip.pde b/processing/mode/examples/Basics/Form/TriangleStrip/TriangleStrip.pde
similarity index 100%
rename from mode/examples/Basics/Form/TriangleStrip/TriangleStrip.pde
rename to processing/mode/examples/Basics/Form/TriangleStrip/TriangleStrip.pde
diff --git a/mode/examples/Basics/Form/Vertices/Vertices.pde b/processing/mode/examples/Basics/Form/Vertices/Vertices.pde
similarity index 100%
rename from mode/examples/Basics/Form/Vertices/Vertices.pde
rename to processing/mode/examples/Basics/Form/Vertices/Vertices.pde
diff --git a/mode/examples/Basics/Image/Alphamask/Alphamask.pde b/processing/mode/examples/Basics/Image/Alphamask/Alphamask.pde
similarity index 100%
rename from mode/examples/Basics/Image/Alphamask/Alphamask.pde
rename to processing/mode/examples/Basics/Image/Alphamask/Alphamask.pde
diff --git a/mode/examples/Basics/Image/Alphamask/data/mask.jpg b/processing/mode/examples/Basics/Image/Alphamask/data/mask.jpg
similarity index 100%
rename from mode/examples/Basics/Image/Alphamask/data/mask.jpg
rename to processing/mode/examples/Basics/Image/Alphamask/data/mask.jpg
diff --git a/mode/examples/Basics/Image/Alphamask/data/test.jpg b/processing/mode/examples/Basics/Image/Alphamask/data/test.jpg
similarity index 100%
rename from mode/examples/Basics/Image/Alphamask/data/test.jpg
rename to processing/mode/examples/Basics/Image/Alphamask/data/test.jpg
diff --git a/mode/examples/Basics/Image/BackgroundImage/BackgroundImage.pde b/processing/mode/examples/Basics/Image/BackgroundImage/BackgroundImage.pde
similarity index 100%
rename from mode/examples/Basics/Image/BackgroundImage/BackgroundImage.pde
rename to processing/mode/examples/Basics/Image/BackgroundImage/BackgroundImage.pde
diff --git a/mode/examples/Basics/Image/BackgroundImage/data/milan_rubbish.jpg b/processing/mode/examples/Basics/Image/BackgroundImage/data/milan_rubbish.jpg
similarity index 100%
rename from mode/examples/Basics/Image/BackgroundImage/data/milan_rubbish.jpg
rename to processing/mode/examples/Basics/Image/BackgroundImage/data/milan_rubbish.jpg
diff --git a/mode/examples/Basics/Image/CreateImage/CreateImage.pde b/processing/mode/examples/Basics/Image/CreateImage/CreateImage.pde
similarity index 100%
rename from mode/examples/Basics/Image/CreateImage/CreateImage.pde
rename to processing/mode/examples/Basics/Image/CreateImage/CreateImage.pde
diff --git a/mode/examples/Basics/Image/CreateImage/data/mask.jpg b/processing/mode/examples/Basics/Image/CreateImage/data/mask.jpg
similarity index 100%
rename from mode/examples/Basics/Image/CreateImage/data/mask.jpg
rename to processing/mode/examples/Basics/Image/CreateImage/data/mask.jpg
diff --git a/mode/examples/Basics/Image/CreateImage/data/test.jpg b/processing/mode/examples/Basics/Image/CreateImage/data/test.jpg
similarity index 100%
rename from mode/examples/Basics/Image/CreateImage/data/test.jpg
rename to processing/mode/examples/Basics/Image/CreateImage/data/test.jpg
diff --git a/mode/examples/Basics/Image/LoadDisplayImage/LoadDisplayImage.pde b/processing/mode/examples/Basics/Image/LoadDisplayImage/LoadDisplayImage.pde
similarity index 93%
rename from mode/examples/Basics/Image/LoadDisplayImage/LoadDisplayImage.pde
rename to processing/mode/examples/Basics/Image/LoadDisplayImage/LoadDisplayImage.pde
index 8252c5cbc..495d1f124 100644
--- a/mode/examples/Basics/Image/LoadDisplayImage/LoadDisplayImage.pde
+++ b/processing/mode/examples/Basics/Image/LoadDisplayImage/LoadDisplayImage.pde
@@ -12,7 +12,6 @@ void setup() {
// The file "jelly.jpg" must be in the data folder
// of the current sketch to load successfully
a = loadImage("jelly.jpg"); // Load the image into the program
- noLoop(); // Makes draw() only run once
}
void draw() {
diff --git a/mode/examples/Basics/Image/LoadDisplayImage/data/jelly.jpg b/processing/mode/examples/Basics/Image/LoadDisplayImage/data/jelly.jpg
similarity index 100%
rename from mode/examples/Basics/Image/LoadDisplayImage/data/jelly.jpg
rename to processing/mode/examples/Basics/Image/LoadDisplayImage/data/jelly.jpg
diff --git a/mode/examples/Basics/Image/Pointillism/Pointillism.pde b/processing/mode/examples/Basics/Image/Pointillism/Pointillism.pde
similarity index 100%
rename from mode/examples/Basics/Image/Pointillism/Pointillism.pde
rename to processing/mode/examples/Basics/Image/Pointillism/Pointillism.pde
diff --git a/mode/examples/Basics/Image/Pointillism/data/eames.jpg b/processing/mode/examples/Basics/Image/Pointillism/data/eames.jpg
similarity index 100%
rename from mode/examples/Basics/Image/Pointillism/data/eames.jpg
rename to processing/mode/examples/Basics/Image/Pointillism/data/eames.jpg
diff --git a/mode/examples/Basics/Image/Pointillism/data/sunflower.jpg b/processing/mode/examples/Basics/Image/Pointillism/data/sunflower.jpg
similarity index 100%
rename from mode/examples/Basics/Image/Pointillism/data/sunflower.jpg
rename to processing/mode/examples/Basics/Image/Pointillism/data/sunflower.jpg
diff --git a/mode/examples/Basics/Image/RequestImage/RequestImage.pde b/processing/mode/examples/Basics/Image/RequestImage/RequestImage.pde
similarity index 100%
rename from mode/examples/Basics/Image/RequestImage/RequestImage.pde
rename to processing/mode/examples/Basics/Image/RequestImage/RequestImage.pde
diff --git a/mode/examples/Basics/Image/Sprite/Sprite.pde b/processing/mode/examples/Basics/Image/Sprite/Sprite.pde
similarity index 100%
rename from mode/examples/Basics/Image/Sprite/Sprite.pde
rename to processing/mode/examples/Basics/Image/Sprite/Sprite.pde
diff --git a/mode/examples/Basics/Image/Sprite/data/teddy.gif b/processing/mode/examples/Basics/Image/Sprite/data/teddy.gif
similarity index 100%
rename from mode/examples/Basics/Image/Sprite/data/teddy.gif
rename to processing/mode/examples/Basics/Image/Sprite/data/teddy.gif
diff --git a/mode/examples/Basics/Image/Sprite2/Sprite2.pde b/processing/mode/examples/Basics/Image/Sprite2/Sprite2.pde
similarity index 100%
rename from mode/examples/Basics/Image/Sprite2/Sprite2.pde
rename to processing/mode/examples/Basics/Image/Sprite2/Sprite2.pde
diff --git a/mode/examples/Basics/Image/Sprite2/data/sky.jpg b/processing/mode/examples/Basics/Image/Sprite2/data/sky.jpg
similarity index 100%
rename from mode/examples/Basics/Image/Sprite2/data/sky.jpg
rename to processing/mode/examples/Basics/Image/Sprite2/data/sky.jpg
diff --git a/mode/examples/Basics/Image/Sprite2/data/teddy.gif b/processing/mode/examples/Basics/Image/Sprite2/data/teddy.gif
similarity index 100%
rename from mode/examples/Basics/Image/Sprite2/data/teddy.gif
rename to processing/mode/examples/Basics/Image/Sprite2/data/teddy.gif
diff --git a/mode/examples/Basics/Image/Transparency/Transparency.pde b/processing/mode/examples/Basics/Image/Transparency/Transparency.pde
similarity index 100%
rename from mode/examples/Basics/Image/Transparency/Transparency.pde
rename to processing/mode/examples/Basics/Image/Transparency/Transparency.pde
diff --git a/mode/examples/Basics/Image/Transparency/data/construct.jpg b/processing/mode/examples/Basics/Image/Transparency/data/construct.jpg
similarity index 100%
rename from mode/examples/Basics/Image/Transparency/data/construct.jpg
rename to processing/mode/examples/Basics/Image/Transparency/data/construct.jpg
diff --git a/mode/examples/Basics/Image/Transparency/data/wash.jpg b/processing/mode/examples/Basics/Image/Transparency/data/wash.jpg
similarity index 100%
rename from mode/examples/Basics/Image/Transparency/data/wash.jpg
rename to processing/mode/examples/Basics/Image/Transparency/data/wash.jpg
diff --git a/mode/examples/Basics/Input/Clock/Clock.pde b/processing/mode/examples/Basics/Input/Clock/Clock.pde
similarity index 100%
rename from mode/examples/Basics/Input/Clock/Clock.pde
rename to processing/mode/examples/Basics/Input/Clock/Clock.pde
diff --git a/mode/examples/Basics/Input/Constrain/Constrain.pde b/processing/mode/examples/Basics/Input/Constrain/Constrain.pde
similarity index 100%
rename from mode/examples/Basics/Input/Constrain/Constrain.pde
rename to processing/mode/examples/Basics/Input/Constrain/Constrain.pde
diff --git a/mode/examples/Basics/Input/Easing/Easing.pde b/processing/mode/examples/Basics/Input/Easing/Easing.pde
similarity index 100%
rename from mode/examples/Basics/Input/Easing/Easing.pde
rename to processing/mode/examples/Basics/Input/Easing/Easing.pde
diff --git a/mode/examples/Basics/Input/Keyboard/Keyboard.pde b/processing/mode/examples/Basics/Input/Keyboard/Keyboard.pde
similarity index 100%
rename from mode/examples/Basics/Input/Keyboard/Keyboard.pde
rename to processing/mode/examples/Basics/Input/Keyboard/Keyboard.pde
diff --git a/mode/examples/Basics/Input/KeyboardFunctions/KeyboardFunctions.pde b/processing/mode/examples/Basics/Input/KeyboardFunctions/KeyboardFunctions.pde
similarity index 100%
rename from mode/examples/Basics/Input/KeyboardFunctions/KeyboardFunctions.pde
rename to processing/mode/examples/Basics/Input/KeyboardFunctions/KeyboardFunctions.pde
diff --git a/mode/examples/Basics/Input/KeyboardFunctions/data/brugges.jpg b/processing/mode/examples/Basics/Input/KeyboardFunctions/data/brugges.jpg
similarity index 100%
rename from mode/examples/Basics/Input/KeyboardFunctions/data/brugges.jpg
rename to processing/mode/examples/Basics/Input/KeyboardFunctions/data/brugges.jpg
diff --git a/mode/examples/Basics/Input/Milliseconds/Milliseconds.pde b/processing/mode/examples/Basics/Input/Milliseconds/Milliseconds.pde
similarity index 100%
rename from mode/examples/Basics/Input/Milliseconds/Milliseconds.pde
rename to processing/mode/examples/Basics/Input/Milliseconds/Milliseconds.pde
diff --git a/mode/examples/Basics/Input/Mouse1D/Mouse1D.pde b/processing/mode/examples/Basics/Input/Mouse1D/Mouse1D.pde
similarity index 100%
rename from mode/examples/Basics/Input/Mouse1D/Mouse1D.pde
rename to processing/mode/examples/Basics/Input/Mouse1D/Mouse1D.pde
diff --git a/mode/examples/Basics/Input/Mouse2D/Mouse2D.pde b/processing/mode/examples/Basics/Input/Mouse2D/Mouse2D.pde
similarity index 100%
rename from mode/examples/Basics/Input/Mouse2D/Mouse2D.pde
rename to processing/mode/examples/Basics/Input/Mouse2D/Mouse2D.pde
diff --git a/mode/examples/Basics/Input/MouseFunctions/MouseFunctions.pde b/processing/mode/examples/Basics/Input/MouseFunctions/MouseFunctions.pde
similarity index 100%
rename from mode/examples/Basics/Input/MouseFunctions/MouseFunctions.pde
rename to processing/mode/examples/Basics/Input/MouseFunctions/MouseFunctions.pde
diff --git a/mode/examples/Basics/Input/MousePress/MousePress.pde b/processing/mode/examples/Basics/Input/MousePress/MousePress.pde
similarity index 100%
rename from mode/examples/Basics/Input/MousePress/MousePress.pde
rename to processing/mode/examples/Basics/Input/MousePress/MousePress.pde
diff --git a/mode/examples/Basics/Input/MouseSignals/MouseSignals.pde b/processing/mode/examples/Basics/Input/MouseSignals/MouseSignals.pde
similarity index 100%
rename from mode/examples/Basics/Input/MouseSignals/MouseSignals.pde
rename to processing/mode/examples/Basics/Input/MouseSignals/MouseSignals.pde
diff --git a/mode/examples/Basics/Input/StoringInput/StoringInput.pde b/processing/mode/examples/Basics/Input/StoringInput/StoringInput.pde
similarity index 100%
rename from mode/examples/Basics/Input/StoringInput/StoringInput.pde
rename to processing/mode/examples/Basics/Input/StoringInput/StoringInput.pde
diff --git a/mode/examples/Basics/Lights/Directional/Directional.pde b/processing/mode/examples/Basics/Lights/Directional/Directional.pde
similarity index 100%
rename from mode/examples/Basics/Lights/Directional/Directional.pde
rename to processing/mode/examples/Basics/Lights/Directional/Directional.pde
diff --git a/mode/examples/Basics/Lights/Mixture/Mixture.pde b/processing/mode/examples/Basics/Lights/Mixture/Mixture.pde
similarity index 100%
rename from mode/examples/Basics/Lights/Mixture/Mixture.pde
rename to processing/mode/examples/Basics/Lights/Mixture/Mixture.pde
diff --git a/mode/examples/Basics/Lights/MixtureGrid/MixtureGrid.pde b/processing/mode/examples/Basics/Lights/MixtureGrid/MixtureGrid.pde
similarity index 100%
rename from mode/examples/Basics/Lights/MixtureGrid/MixtureGrid.pde
rename to processing/mode/examples/Basics/Lights/MixtureGrid/MixtureGrid.pde
diff --git a/mode/examples/Basics/Lights/OnOff/OnOff.pde b/processing/mode/examples/Basics/Lights/OnOff/OnOff.pde
similarity index 100%
rename from mode/examples/Basics/Lights/OnOff/OnOff.pde
rename to processing/mode/examples/Basics/Lights/OnOff/OnOff.pde
diff --git a/mode/examples/Basics/Lights/Reflection/Reflection.pde b/processing/mode/examples/Basics/Lights/Reflection/Reflection.pde
similarity index 100%
rename from mode/examples/Basics/Lights/Reflection/Reflection.pde
rename to processing/mode/examples/Basics/Lights/Reflection/Reflection.pde
diff --git a/mode/examples/Basics/Lights/Spot/Spot.pde b/processing/mode/examples/Basics/Lights/Spot/Spot.pde
similarity index 100%
rename from mode/examples/Basics/Lights/Spot/Spot.pde
rename to processing/mode/examples/Basics/Lights/Spot/Spot.pde
diff --git a/mode/examples/Basics/Math/AdditiveWave/AdditiveWave.pde b/processing/mode/examples/Basics/Math/AdditiveWave/AdditiveWave.pde
similarity index 100%
rename from mode/examples/Basics/Math/AdditiveWave/AdditiveWave.pde
rename to processing/mode/examples/Basics/Math/AdditiveWave/AdditiveWave.pde
diff --git a/mode/examples/Basics/Math/Arctangent/Arctangent.pde b/processing/mode/examples/Basics/Math/Arctangent/Arctangent.pde
similarity index 100%
rename from mode/examples/Basics/Math/Arctangent/Arctangent.pde
rename to processing/mode/examples/Basics/Math/Arctangent/Arctangent.pde
diff --git a/mode/examples/Basics/Math/Distance1D/Distance1D.pde b/processing/mode/examples/Basics/Math/Distance1D/Distance1D.pde
similarity index 100%
rename from mode/examples/Basics/Math/Distance1D/Distance1D.pde
rename to processing/mode/examples/Basics/Math/Distance1D/Distance1D.pde
diff --git a/mode/examples/Basics/Math/Distance2D/Distance2D.pde b/processing/mode/examples/Basics/Math/Distance2D/Distance2D.pde
similarity index 100%
rename from mode/examples/Basics/Math/Distance2D/Distance2D.pde
rename to processing/mode/examples/Basics/Math/Distance2D/Distance2D.pde
diff --git a/mode/examples/Basics/Math/DoubleRandom/DoubleRandom.pde b/processing/mode/examples/Basics/Math/DoubleRandom/DoubleRandom.pde
similarity index 100%
rename from mode/examples/Basics/Math/DoubleRandom/DoubleRandom.pde
rename to processing/mode/examples/Basics/Math/DoubleRandom/DoubleRandom.pde
diff --git a/mode/examples/Basics/Math/Graphing2DEquation/Graphing2DEquation.pde b/processing/mode/examples/Basics/Math/Graphing2DEquation/Graphing2DEquation.pde
similarity index 100%
rename from mode/examples/Basics/Math/Graphing2DEquation/Graphing2DEquation.pde
rename to processing/mode/examples/Basics/Math/Graphing2DEquation/Graphing2DEquation.pde
diff --git a/mode/examples/Basics/Math/IncrementDecrement/IncrementDecrement.pde b/processing/mode/examples/Basics/Math/IncrementDecrement/IncrementDecrement.pde
similarity index 100%
rename from mode/examples/Basics/Math/IncrementDecrement/IncrementDecrement.pde
rename to processing/mode/examples/Basics/Math/IncrementDecrement/IncrementDecrement.pde
diff --git a/mode/examples/Basics/Math/Modulo/Modulo.pde b/processing/mode/examples/Basics/Math/Modulo/Modulo.pde
similarity index 100%
rename from mode/examples/Basics/Math/Modulo/Modulo.pde
rename to processing/mode/examples/Basics/Math/Modulo/Modulo.pde
diff --git a/mode/examples/Basics/Math/Noise1D/Noise1D.pde b/processing/mode/examples/Basics/Math/Noise1D/Noise1D.pde
similarity index 100%
rename from mode/examples/Basics/Math/Noise1D/Noise1D.pde
rename to processing/mode/examples/Basics/Math/Noise1D/Noise1D.pde
diff --git a/mode/examples/Basics/Math/Noise2D/Noise2D.pde b/processing/mode/examples/Basics/Math/Noise2D/Noise2D.pde
similarity index 100%
rename from mode/examples/Basics/Math/Noise2D/Noise2D.pde
rename to processing/mode/examples/Basics/Math/Noise2D/Noise2D.pde
diff --git a/mode/examples/Basics/Math/Noise3D/Noise3D.pde b/processing/mode/examples/Basics/Math/Noise3D/Noise3D.pde
similarity index 100%
rename from mode/examples/Basics/Math/Noise3D/Noise3D.pde
rename to processing/mode/examples/Basics/Math/Noise3D/Noise3D.pde
diff --git a/mode/examples/Basics/Math/NoiseWave/NoiseWave.pde b/processing/mode/examples/Basics/Math/NoiseWave/NoiseWave.pde
similarity index 100%
rename from mode/examples/Basics/Math/NoiseWave/NoiseWave.pde
rename to processing/mode/examples/Basics/Math/NoiseWave/NoiseWave.pde
diff --git a/mode/examples/Basics/Math/OperatorPrecedence/OperatorPrecedence.pde b/processing/mode/examples/Basics/Math/OperatorPrecedence/OperatorPrecedence.pde
similarity index 100%
rename from mode/examples/Basics/Math/OperatorPrecedence/OperatorPrecedence.pde
rename to processing/mode/examples/Basics/Math/OperatorPrecedence/OperatorPrecedence.pde
diff --git a/mode/examples/Basics/Math/PolarToCartesian/PolarToCartesian.pde b/processing/mode/examples/Basics/Math/PolarToCartesian/PolarToCartesian.pde
similarity index 100%
rename from mode/examples/Basics/Math/PolarToCartesian/PolarToCartesian.pde
rename to processing/mode/examples/Basics/Math/PolarToCartesian/PolarToCartesian.pde
diff --git a/mode/examples/Basics/Math/Random/Random.pde b/processing/mode/examples/Basics/Math/Random/Random.pde
similarity index 100%
rename from mode/examples/Basics/Math/Random/Random.pde
rename to processing/mode/examples/Basics/Math/Random/Random.pde
diff --git a/mode/examples/Basics/Math/Sine/Sine.pde b/processing/mode/examples/Basics/Math/Sine/Sine.pde
similarity index 100%
rename from mode/examples/Basics/Math/Sine/Sine.pde
rename to processing/mode/examples/Basics/Math/Sine/Sine.pde
diff --git a/mode/examples/Basics/Math/SineCosine/SineCosine.pde b/processing/mode/examples/Basics/Math/SineCosine/SineCosine.pde
similarity index 100%
rename from mode/examples/Basics/Math/SineCosine/SineCosine.pde
rename to processing/mode/examples/Basics/Math/SineCosine/SineCosine.pde
diff --git a/mode/examples/Basics/Math/SineWave/SineWave.pde b/processing/mode/examples/Basics/Math/SineWave/SineWave.pde
similarity index 100%
rename from mode/examples/Basics/Math/SineWave/SineWave.pde
rename to processing/mode/examples/Basics/Math/SineWave/SineWave.pde
diff --git a/mode/examples/Basics/Objects/CompositeObjects/CompositeObjects.pde b/processing/mode/examples/Basics/Objects/CompositeObjects/CompositeObjects.pde
similarity index 100%
rename from mode/examples/Basics/Objects/CompositeObjects/CompositeObjects.pde
rename to processing/mode/examples/Basics/Objects/CompositeObjects/CompositeObjects.pde
diff --git a/mode/examples/Basics/Objects/CompositeObjects/Egg.pde b/processing/mode/examples/Basics/Objects/CompositeObjects/Egg.pde
similarity index 100%
rename from mode/examples/Basics/Objects/CompositeObjects/Egg.pde
rename to processing/mode/examples/Basics/Objects/CompositeObjects/Egg.pde
diff --git a/mode/examples/Basics/Objects/CompositeObjects/EggRing.pde b/processing/mode/examples/Basics/Objects/CompositeObjects/EggRing.pde
similarity index 100%
rename from mode/examples/Basics/Objects/CompositeObjects/EggRing.pde
rename to processing/mode/examples/Basics/Objects/CompositeObjects/EggRing.pde
diff --git a/mode/examples/Basics/Objects/CompositeObjects/Ring.pde b/processing/mode/examples/Basics/Objects/CompositeObjects/Ring.pde
similarity index 100%
rename from mode/examples/Basics/Objects/CompositeObjects/Ring.pde
rename to processing/mode/examples/Basics/Objects/CompositeObjects/Ring.pde
diff --git a/mode/examples/Basics/Objects/Inheritance/Inheritance.pde b/processing/mode/examples/Basics/Objects/Inheritance/Inheritance.pde
similarity index 100%
rename from mode/examples/Basics/Objects/Inheritance/Inheritance.pde
rename to processing/mode/examples/Basics/Objects/Inheritance/Inheritance.pde
diff --git a/mode/examples/Basics/Objects/MultipleConstructors/MultipleConstructors.pde b/processing/mode/examples/Basics/Objects/MultipleConstructors/MultipleConstructors.pde
similarity index 100%
rename from mode/examples/Basics/Objects/MultipleConstructors/MultipleConstructors.pde
rename to processing/mode/examples/Basics/Objects/MultipleConstructors/MultipleConstructors.pde
diff --git a/mode/examples/Basics/Objects/Neighborhood/Neighborhood.pde b/processing/mode/examples/Basics/Objects/Neighborhood/Neighborhood.pde
similarity index 100%
rename from mode/examples/Basics/Objects/Neighborhood/Neighborhood.pde
rename to processing/mode/examples/Basics/Objects/Neighborhood/Neighborhood.pde
diff --git a/mode/examples/Basics/Objects/Objects/Objects.pde b/processing/mode/examples/Basics/Objects/Objects/Objects.pde
similarity index 100%
rename from mode/examples/Basics/Objects/Objects/Objects.pde
rename to processing/mode/examples/Basics/Objects/Objects/Objects.pde
diff --git a/mode/examples/Basics/Shape/DisableStyle/DisableStyle.pde b/processing/mode/examples/Basics/Shape/DisableStyle/DisableStyle.pde
similarity index 100%
rename from mode/examples/Basics/Shape/DisableStyle/DisableStyle.pde
rename to processing/mode/examples/Basics/Shape/DisableStyle/DisableStyle.pde
diff --git a/mode/examples/Basics/Shape/DisableStyle/data/bot1.svg b/processing/mode/examples/Basics/Shape/DisableStyle/data/bot1.svg
similarity index 100%
rename from mode/examples/Basics/Shape/DisableStyle/data/bot1.svg
rename to processing/mode/examples/Basics/Shape/DisableStyle/data/bot1.svg
diff --git a/mode/examples/Basics/Shape/GetChild/GetChild.pde b/processing/mode/examples/Basics/Shape/GetChild/GetChild.pde
similarity index 100%
rename from mode/examples/Basics/Shape/GetChild/GetChild.pde
rename to processing/mode/examples/Basics/Shape/GetChild/GetChild.pde
diff --git a/mode/examples/Basics/Shape/GetChild/data/usa-wikipedia.svg b/processing/mode/examples/Basics/Shape/GetChild/data/usa-wikipedia.svg
similarity index 100%
rename from mode/examples/Basics/Shape/GetChild/data/usa-wikipedia.svg
rename to processing/mode/examples/Basics/Shape/GetChild/data/usa-wikipedia.svg
diff --git a/mode/examples/Basics/Shape/LoadDisplayOBJ/LoadDisplayOBJ.pde b/processing/mode/examples/Basics/Shape/LoadDisplayOBJ/LoadDisplayOBJ.pde
similarity index 100%
rename from mode/examples/Basics/Shape/LoadDisplayOBJ/LoadDisplayOBJ.pde
rename to processing/mode/examples/Basics/Shape/LoadDisplayOBJ/LoadDisplayOBJ.pde
diff --git a/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.mtl b/processing/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.mtl
similarity index 100%
rename from mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.mtl
rename to processing/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.mtl
diff --git a/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.obj b/processing/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.obj
similarity index 100%
rename from mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.obj
rename to processing/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.obj
diff --git a/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.png b/processing/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.png
similarity index 100%
rename from mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.png
rename to processing/mode/examples/Basics/Shape/LoadDisplayOBJ/data/rocket.png
diff --git a/mode/examples/Basics/Shape/LoadDisplaySVG/LoadDisplaySVG.pde b/processing/mode/examples/Basics/Shape/LoadDisplaySVG/LoadDisplaySVG.pde
similarity index 100%
rename from mode/examples/Basics/Shape/LoadDisplaySVG/LoadDisplaySVG.pde
rename to processing/mode/examples/Basics/Shape/LoadDisplaySVG/LoadDisplaySVG.pde
diff --git a/mode/examples/Basics/Shape/LoadDisplaySVG/data/bot1.svg b/processing/mode/examples/Basics/Shape/LoadDisplaySVG/data/bot1.svg
similarity index 100%
rename from mode/examples/Basics/Shape/LoadDisplaySVG/data/bot1.svg
rename to processing/mode/examples/Basics/Shape/LoadDisplaySVG/data/bot1.svg
diff --git a/mode/examples/Basics/Shape/ScaleShape/ScaleShape.pde b/processing/mode/examples/Basics/Shape/ScaleShape/ScaleShape.pde
similarity index 100%
rename from mode/examples/Basics/Shape/ScaleShape/ScaleShape.pde
rename to processing/mode/examples/Basics/Shape/ScaleShape/ScaleShape.pde
diff --git a/mode/examples/Basics/Shape/ScaleShape/data/bot1.svg b/processing/mode/examples/Basics/Shape/ScaleShape/data/bot1.svg
similarity index 100%
rename from mode/examples/Basics/Shape/ScaleShape/data/bot1.svg
rename to processing/mode/examples/Basics/Shape/ScaleShape/data/bot1.svg
diff --git a/mode/examples/Basics/Structure/Coordinates/Coordinates.pde b/processing/mode/examples/Basics/Structure/Coordinates/Coordinates.pde
similarity index 100%
rename from mode/examples/Basics/Structure/Coordinates/Coordinates.pde
rename to processing/mode/examples/Basics/Structure/Coordinates/Coordinates.pde
diff --git a/mode/examples/Basics/Structure/CreateGraphics/CreateGraphics.pde b/processing/mode/examples/Basics/Structure/CreateGraphics/CreateGraphics.pde
similarity index 100%
rename from mode/examples/Basics/Structure/CreateGraphics/CreateGraphics.pde
rename to processing/mode/examples/Basics/Structure/CreateGraphics/CreateGraphics.pde
diff --git a/mode/examples/Basics/Structure/CreateGraphics/data/mask.jpg b/processing/mode/examples/Basics/Structure/CreateGraphics/data/mask.jpg
similarity index 100%
rename from mode/examples/Basics/Structure/CreateGraphics/data/mask.jpg
rename to processing/mode/examples/Basics/Structure/CreateGraphics/data/mask.jpg
diff --git a/mode/examples/Basics/Structure/CreateGraphics/data/test.jpg b/processing/mode/examples/Basics/Structure/CreateGraphics/data/test.jpg
similarity index 100%
rename from mode/examples/Basics/Structure/CreateGraphics/data/test.jpg
rename to processing/mode/examples/Basics/Structure/CreateGraphics/data/test.jpg
diff --git a/mode/examples/Basics/Structure/Functions/Functions.pde b/processing/mode/examples/Basics/Structure/Functions/Functions.pde
similarity index 100%
rename from mode/examples/Basics/Structure/Functions/Functions.pde
rename to processing/mode/examples/Basics/Structure/Functions/Functions.pde
diff --git a/mode/examples/Basics/Structure/Loop/Loop.pde b/processing/mode/examples/Basics/Structure/Loop/Loop.pde
similarity index 100%
rename from mode/examples/Basics/Structure/Loop/Loop.pde
rename to processing/mode/examples/Basics/Structure/Loop/Loop.pde
diff --git a/mode/examples/Basics/Structure/NoLoop/NoLoop.pde b/processing/mode/examples/Basics/Structure/NoLoop/NoLoop.pde
similarity index 100%
rename from mode/examples/Basics/Structure/NoLoop/NoLoop.pde
rename to processing/mode/examples/Basics/Structure/NoLoop/NoLoop.pde
diff --git a/mode/examples/Basics/Structure/Recursion/Recursion.pde b/processing/mode/examples/Basics/Structure/Recursion/Recursion.pde
similarity index 100%
rename from mode/examples/Basics/Structure/Recursion/Recursion.pde
rename to processing/mode/examples/Basics/Structure/Recursion/Recursion.pde
diff --git a/mode/examples/Basics/Structure/Recursion2/Recursion2.pde b/processing/mode/examples/Basics/Structure/Recursion2/Recursion2.pde
similarity index 100%
rename from mode/examples/Basics/Structure/Recursion2/Recursion2.pde
rename to processing/mode/examples/Basics/Structure/Recursion2/Recursion2.pde
diff --git a/mode/examples/Basics/Structure/Redraw/Redraw.pde b/processing/mode/examples/Basics/Structure/Redraw/Redraw.pde
similarity index 100%
rename from mode/examples/Basics/Structure/Redraw/Redraw.pde
rename to processing/mode/examples/Basics/Structure/Redraw/Redraw.pde
diff --git a/mode/examples/Basics/Structure/SetupDraw/SetupDraw.pde b/processing/mode/examples/Basics/Structure/SetupDraw/SetupDraw.pde
similarity index 100%
rename from mode/examples/Basics/Structure/SetupDraw/SetupDraw.pde
rename to processing/mode/examples/Basics/Structure/SetupDraw/SetupDraw.pde
diff --git a/mode/examples/Basics/Structure/StatementsComments/StatementsComments.pde b/processing/mode/examples/Basics/Structure/StatementsComments/StatementsComments.pde
similarity index 100%
rename from mode/examples/Basics/Structure/StatementsComments/StatementsComments.pde
rename to processing/mode/examples/Basics/Structure/StatementsComments/StatementsComments.pde
diff --git a/mode/examples/Basics/Structure/WidthHeight/WidthHeight.pde b/processing/mode/examples/Basics/Structure/WidthHeight/WidthHeight.pde
similarity index 100%
rename from mode/examples/Basics/Structure/WidthHeight/WidthHeight.pde
rename to processing/mode/examples/Basics/Structure/WidthHeight/WidthHeight.pde
diff --git a/mode/examples/Basics/Transform/Arm/Arm.pde b/processing/mode/examples/Basics/Transform/Arm/Arm.pde
similarity index 100%
rename from mode/examples/Basics/Transform/Arm/Arm.pde
rename to processing/mode/examples/Basics/Transform/Arm/Arm.pde
diff --git a/mode/examples/Basics/Transform/Rotate/Rotate.pde b/processing/mode/examples/Basics/Transform/Rotate/Rotate.pde
similarity index 100%
rename from mode/examples/Basics/Transform/Rotate/Rotate.pde
rename to processing/mode/examples/Basics/Transform/Rotate/Rotate.pde
diff --git a/mode/examples/Basics/Transform/RotatePushPop/RotatePushPop.pde b/processing/mode/examples/Basics/Transform/RotatePushPop/RotatePushPop.pde
similarity index 100%
rename from mode/examples/Basics/Transform/RotatePushPop/RotatePushPop.pde
rename to processing/mode/examples/Basics/Transform/RotatePushPop/RotatePushPop.pde
diff --git a/mode/examples/Basics/Transform/RotateXY/RotateXY.pde b/processing/mode/examples/Basics/Transform/RotateXY/RotateXY.pde
similarity index 100%
rename from mode/examples/Basics/Transform/RotateXY/RotateXY.pde
rename to processing/mode/examples/Basics/Transform/RotateXY/RotateXY.pde
diff --git a/mode/examples/Basics/Transform/Scale/Scale.pde b/processing/mode/examples/Basics/Transform/Scale/Scale.pde
similarity index 100%
rename from mode/examples/Basics/Transform/Scale/Scale.pde
rename to processing/mode/examples/Basics/Transform/Scale/Scale.pde
diff --git a/mode/examples/Basics/Transform/Translate/Translate.pde b/processing/mode/examples/Basics/Transform/Translate/Translate.pde
similarity index 100%
rename from mode/examples/Basics/Transform/Translate/Translate.pde
rename to processing/mode/examples/Basics/Transform/Translate/Translate.pde
diff --git a/mode/examples/Basics/Transform/TriangleFlower/TriangleFlower.pde b/processing/mode/examples/Basics/Transform/TriangleFlower/TriangleFlower.pde
similarity index 100%
rename from mode/examples/Basics/Transform/TriangleFlower/TriangleFlower.pde
rename to processing/mode/examples/Basics/Transform/TriangleFlower/TriangleFlower.pde
diff --git a/mode/examples/Basics/Typography/Letters/Letters.pde b/processing/mode/examples/Basics/Typography/Letters/Letters.pde
similarity index 100%
rename from mode/examples/Basics/Typography/Letters/Letters.pde
rename to processing/mode/examples/Basics/Typography/Letters/Letters.pde
diff --git a/mode/examples/Basics/Typography/Letters/data/CourierNew36.vlw b/processing/mode/examples/Basics/Typography/Letters/data/CourierNew36.vlw
similarity index 100%
rename from mode/examples/Basics/Typography/Letters/data/CourierNew36.vlw
rename to processing/mode/examples/Basics/Typography/Letters/data/CourierNew36.vlw
diff --git a/mode/examples/Basics/Typography/Words/Words.pde b/processing/mode/examples/Basics/Typography/Words/Words.pde
similarity index 100%
rename from mode/examples/Basics/Typography/Words/Words.pde
rename to processing/mode/examples/Basics/Typography/Words/Words.pde
diff --git a/mode/examples/Basics/Typography/Words/data/Ziggurat-HTF-Black-32.vlw b/processing/mode/examples/Basics/Typography/Words/data/Ziggurat-HTF-Black-32.vlw
similarity index 100%
rename from mode/examples/Basics/Typography/Words/data/Ziggurat-HTF-Black-32.vlw
rename to processing/mode/examples/Basics/Typography/Words/data/Ziggurat-HTF-Black-32.vlw
diff --git a/mode/examples/Basics/Web/EmbeddedLinks/EmbeddedLinks.pde b/processing/mode/examples/Basics/Web/EmbeddedLinks/EmbeddedLinks.pde
similarity index 100%
rename from mode/examples/Basics/Web/EmbeddedLinks/EmbeddedLinks.pde
rename to processing/mode/examples/Basics/Web/EmbeddedLinks/EmbeddedLinks.pde
diff --git a/mode/examples/Basics/Web/LoadingImages/LoadingImages.pde b/processing/mode/examples/Basics/Web/LoadingImages/LoadingImages.pde
similarity index 100%
rename from mode/examples/Basics/Web/LoadingImages/LoadingImages.pde
rename to processing/mode/examples/Basics/Web/LoadingImages/LoadingImages.pde
diff --git a/mode/examples/Demos/Graphics/Particles/Particle.pde b/processing/mode/examples/Demos/Graphics/Particles/Particle.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Particles/Particle.pde
rename to processing/mode/examples/Demos/Graphics/Particles/Particle.pde
diff --git a/mode/examples/Demos/Graphics/Particles/ParticleSystem.pde b/processing/mode/examples/Demos/Graphics/Particles/ParticleSystem.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Particles/ParticleSystem.pde
rename to processing/mode/examples/Demos/Graphics/Particles/ParticleSystem.pde
diff --git a/mode/examples/Demos/Graphics/Particles/Particles.pde b/processing/mode/examples/Demos/Graphics/Particles/Particles.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Particles/Particles.pde
rename to processing/mode/examples/Demos/Graphics/Particles/Particles.pde
diff --git a/mode/examples/Demos/Graphics/Particles/data/sprite.png b/processing/mode/examples/Demos/Graphics/Particles/data/sprite.png
similarity index 100%
rename from mode/examples/Demos/Graphics/Particles/data/sprite.png
rename to processing/mode/examples/Demos/Graphics/Particles/data/sprite.png
diff --git a/mode/examples/Demos/Graphics/Patch/Patch.pde b/processing/mode/examples/Demos/Graphics/Patch/Patch.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Patch/Patch.pde
rename to processing/mode/examples/Demos/Graphics/Patch/Patch.pde
diff --git a/mode/examples/Demos/Graphics/Planets/Perlin.pde b/processing/mode/examples/Demos/Graphics/Planets/Perlin.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Planets/Perlin.pde
rename to processing/mode/examples/Demos/Graphics/Planets/Perlin.pde
diff --git a/mode/examples/Demos/Graphics/Planets/Planets.pde b/processing/mode/examples/Demos/Graphics/Planets/Planets.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Planets/Planets.pde
rename to processing/mode/examples/Demos/Graphics/Planets/Planets.pde
diff --git a/mode/examples/Demos/Graphics/Planets/data/mercury.jpg b/processing/mode/examples/Demos/Graphics/Planets/data/mercury.jpg
similarity index 100%
rename from mode/examples/Demos/Graphics/Planets/data/mercury.jpg
rename to processing/mode/examples/Demos/Graphics/Planets/data/mercury.jpg
diff --git a/mode/examples/Demos/Graphics/Planets/data/planet.jpg b/processing/mode/examples/Demos/Graphics/Planets/data/planet.jpg
similarity index 100%
rename from mode/examples/Demos/Graphics/Planets/data/planet.jpg
rename to processing/mode/examples/Demos/Graphics/Planets/data/planet.jpg
diff --git a/mode/examples/Demos/Graphics/Planets/data/starfield.jpg b/processing/mode/examples/Demos/Graphics/Planets/data/starfield.jpg
similarity index 100%
rename from mode/examples/Demos/Graphics/Planets/data/starfield.jpg
rename to processing/mode/examples/Demos/Graphics/Planets/data/starfield.jpg
diff --git a/mode/examples/Demos/Graphics/Planets/data/sun.jpg b/processing/mode/examples/Demos/Graphics/Planets/data/sun.jpg
similarity index 100%
rename from mode/examples/Demos/Graphics/Planets/data/sun.jpg
rename to processing/mode/examples/Demos/Graphics/Planets/data/sun.jpg
diff --git a/mode/examples/Demos/Graphics/Ribbons/ArcBall.pde b/processing/mode/examples/Demos/Graphics/Ribbons/ArcBall.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/ArcBall.pde
rename to processing/mode/examples/Demos/Graphics/Ribbons/ArcBall.pde
diff --git a/mode/examples/Demos/Graphics/Ribbons/BSpline.pde b/processing/mode/examples/Demos/Graphics/Ribbons/BSpline.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/BSpline.pde
rename to processing/mode/examples/Demos/Graphics/Ribbons/BSpline.pde
diff --git a/mode/examples/Demos/Graphics/Ribbons/Geometry.pde b/processing/mode/examples/Demos/Graphics/Ribbons/Geometry.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/Geometry.pde
rename to processing/mode/examples/Demos/Graphics/Ribbons/Geometry.pde
diff --git a/mode/examples/Demos/Graphics/Ribbons/PDB.pde b/processing/mode/examples/Demos/Graphics/Ribbons/PDB.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/PDB.pde
rename to processing/mode/examples/Demos/Graphics/Ribbons/PDB.pde
diff --git a/mode/examples/Demos/Graphics/Ribbons/Ribbons.pde b/processing/mode/examples/Demos/Graphics/Ribbons/Ribbons.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/Ribbons.pde
rename to processing/mode/examples/Demos/Graphics/Ribbons/Ribbons.pde
diff --git a/mode/examples/Demos/Graphics/Ribbons/data/1CBS.pdb b/processing/mode/examples/Demos/Graphics/Ribbons/data/1CBS.pdb
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/data/1CBS.pdb
rename to processing/mode/examples/Demos/Graphics/Ribbons/data/1CBS.pdb
diff --git a/mode/examples/Demos/Graphics/Ribbons/data/2POR.pdb b/processing/mode/examples/Demos/Graphics/Ribbons/data/2POR.pdb
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/data/2POR.pdb
rename to processing/mode/examples/Demos/Graphics/Ribbons/data/2POR.pdb
diff --git a/mode/examples/Demos/Graphics/Ribbons/data/4HHB.pdb b/processing/mode/examples/Demos/Graphics/Ribbons/data/4HHB.pdb
similarity index 100%
rename from mode/examples/Demos/Graphics/Ribbons/data/4HHB.pdb
rename to processing/mode/examples/Demos/Graphics/Ribbons/data/4HHB.pdb
diff --git a/mode/examples/Demos/Graphics/RotatingArcs/RotatingArcs.pde b/processing/mode/examples/Demos/Graphics/RotatingArcs/RotatingArcs.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/RotatingArcs/RotatingArcs.pde
rename to processing/mode/examples/Demos/Graphics/RotatingArcs/RotatingArcs.pde
diff --git a/mode/examples/Demos/Graphics/Trefoil/Surface.pde b/processing/mode/examples/Demos/Graphics/Trefoil/Surface.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Trefoil/Surface.pde
rename to processing/mode/examples/Demos/Graphics/Trefoil/Surface.pde
diff --git a/mode/examples/Demos/Graphics/Trefoil/Trefoil.pde b/processing/mode/examples/Demos/Graphics/Trefoil/Trefoil.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Trefoil/Trefoil.pde
rename to processing/mode/examples/Demos/Graphics/Trefoil/Trefoil.pde
diff --git a/mode/examples/Demos/Graphics/Trefoil/data/particle.png b/processing/mode/examples/Demos/Graphics/Trefoil/data/particle.png
similarity index 100%
rename from mode/examples/Demos/Graphics/Trefoil/data/particle.png
rename to processing/mode/examples/Demos/Graphics/Trefoil/data/particle.png
diff --git a/mode/examples/Demos/Graphics/Wiggling/Wiggling.pde b/processing/mode/examples/Demos/Graphics/Wiggling/Wiggling.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Wiggling/Wiggling.pde
rename to processing/mode/examples/Demos/Graphics/Wiggling/Wiggling.pde
diff --git a/mode/examples/Demos/Graphics/Yellowtail/Gesture.pde b/processing/mode/examples/Demos/Graphics/Yellowtail/Gesture.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Yellowtail/Gesture.pde
rename to processing/mode/examples/Demos/Graphics/Yellowtail/Gesture.pde
diff --git a/mode/examples/Demos/Graphics/Yellowtail/Polygon.pde b/processing/mode/examples/Demos/Graphics/Yellowtail/Polygon.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Yellowtail/Polygon.pde
rename to processing/mode/examples/Demos/Graphics/Yellowtail/Polygon.pde
diff --git a/mode/examples/Demos/Graphics/Yellowtail/Vec3f.pde b/processing/mode/examples/Demos/Graphics/Yellowtail/Vec3f.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Yellowtail/Vec3f.pde
rename to processing/mode/examples/Demos/Graphics/Yellowtail/Vec3f.pde
diff --git a/mode/examples/Demos/Graphics/Yellowtail/Yellowtail.pde b/processing/mode/examples/Demos/Graphics/Yellowtail/Yellowtail.pde
similarity index 100%
rename from mode/examples/Demos/Graphics/Yellowtail/Yellowtail.pde
rename to processing/mode/examples/Demos/Graphics/Yellowtail/Yellowtail.pde
diff --git a/mode/examples/Demos/Performance/CubicGridImmediate/CubicGridImmediate.pde b/processing/mode/examples/Demos/Performance/CubicGridImmediate/CubicGridImmediate.pde
similarity index 100%
rename from mode/examples/Demos/Performance/CubicGridImmediate/CubicGridImmediate.pde
rename to processing/mode/examples/Demos/Performance/CubicGridImmediate/CubicGridImmediate.pde
diff --git a/mode/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde b/processing/mode/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde
similarity index 100%
rename from mode/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde
rename to processing/mode/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde
diff --git a/mode/examples/Demos/Performance/DynamicParticlesImmediate/DynamicParticlesImmediate.pde b/processing/mode/examples/Demos/Performance/DynamicParticlesImmediate/DynamicParticlesImmediate.pde
similarity index 100%
rename from mode/examples/Demos/Performance/DynamicParticlesImmediate/DynamicParticlesImmediate.pde
rename to processing/mode/examples/Demos/Performance/DynamicParticlesImmediate/DynamicParticlesImmediate.pde
diff --git a/mode/examples/Demos/Performance/DynamicParticlesImmediate/data/sprite.png b/processing/mode/examples/Demos/Performance/DynamicParticlesImmediate/data/sprite.png
similarity index 100%
rename from mode/examples/Demos/Performance/DynamicParticlesImmediate/data/sprite.png
rename to processing/mode/examples/Demos/Performance/DynamicParticlesImmediate/data/sprite.png
diff --git a/mode/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde b/processing/mode/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde
similarity index 100%
rename from mode/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde
rename to processing/mode/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde
diff --git a/mode/examples/Demos/Performance/DynamicParticlesRetained/data/sprite.png b/processing/mode/examples/Demos/Performance/DynamicParticlesRetained/data/sprite.png
similarity index 100%
rename from mode/examples/Demos/Performance/DynamicParticlesRetained/data/sprite.png
rename to processing/mode/examples/Demos/Performance/DynamicParticlesRetained/data/sprite.png
diff --git a/mode/examples/Demos/Performance/Esfera/Esfera.pde b/processing/mode/examples/Demos/Performance/Esfera/Esfera.pde
similarity index 100%
rename from mode/examples/Demos/Performance/Esfera/Esfera.pde
rename to processing/mode/examples/Demos/Performance/Esfera/Esfera.pde
diff --git a/mode/examples/Demos/Performance/LineRendering/LineRendering.pde b/processing/mode/examples/Demos/Performance/LineRendering/LineRendering.pde
similarity index 100%
rename from mode/examples/Demos/Performance/LineRendering/LineRendering.pde
rename to processing/mode/examples/Demos/Performance/LineRendering/LineRendering.pde
diff --git a/mode/examples/Demos/Performance/P2DXDemo/P2DXDemo.pde b/processing/mode/examples/Demos/Performance/P2DXDemo/P2DXDemo.pde
similarity index 100%
rename from mode/examples/Demos/Performance/P2DXDemo/P2DXDemo.pde
rename to processing/mode/examples/Demos/Performance/P2DXDemo/P2DXDemo.pde
diff --git a/mode/examples/Demos/Performance/QuadRendering/QuadRendering.pde b/processing/mode/examples/Demos/Performance/QuadRendering/QuadRendering.pde
similarity index 100%
rename from mode/examples/Demos/Performance/QuadRendering/QuadRendering.pde
rename to processing/mode/examples/Demos/Performance/QuadRendering/QuadRendering.pde
diff --git a/mode/examples/Demos/Performance/StaticParticlesImmediate/StaticParticlesImmediate.pde b/processing/mode/examples/Demos/Performance/StaticParticlesImmediate/StaticParticlesImmediate.pde
similarity index 100%
rename from mode/examples/Demos/Performance/StaticParticlesImmediate/StaticParticlesImmediate.pde
rename to processing/mode/examples/Demos/Performance/StaticParticlesImmediate/StaticParticlesImmediate.pde
diff --git a/mode/examples/Demos/Performance/StaticParticlesImmediate/data/sprite.png b/processing/mode/examples/Demos/Performance/StaticParticlesImmediate/data/sprite.png
similarity index 100%
rename from mode/examples/Demos/Performance/StaticParticlesImmediate/data/sprite.png
rename to processing/mode/examples/Demos/Performance/StaticParticlesImmediate/data/sprite.png
diff --git a/mode/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde b/processing/mode/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde
similarity index 100%
rename from mode/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde
rename to processing/mode/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde
diff --git a/mode/examples/Demos/Performance/StaticParticlesRetained/data/sprite.png b/processing/mode/examples/Demos/Performance/StaticParticlesRetained/data/sprite.png
similarity index 100%
rename from mode/examples/Demos/Performance/StaticParticlesRetained/data/sprite.png
rename to processing/mode/examples/Demos/Performance/StaticParticlesRetained/data/sprite.png
diff --git a/mode/examples/Demos/Performance/TextRendering/TextRendering.pde b/processing/mode/examples/Demos/Performance/TextRendering/TextRendering.pde
similarity index 100%
rename from mode/examples/Demos/Performance/TextRendering/TextRendering.pde
rename to processing/mode/examples/Demos/Performance/TextRendering/TextRendering.pde
diff --git a/mode/examples/Demos/Tests/NoBackgroundTest/NoBackgroundTest.pde b/processing/mode/examples/Demos/Tests/NoBackgroundTest/NoBackgroundTest.pde
similarity index 100%
rename from mode/examples/Demos/Tests/NoBackgroundTest/NoBackgroundTest.pde
rename to processing/mode/examples/Demos/Tests/NoBackgroundTest/NoBackgroundTest.pde
diff --git a/mode/examples/Demos/Tests/OffscreenTest/OffscreenTest.pde b/processing/mode/examples/Demos/Tests/OffscreenTest/OffscreenTest.pde
similarity index 100%
rename from mode/examples/Demos/Tests/OffscreenTest/OffscreenTest.pde
rename to processing/mode/examples/Demos/Tests/OffscreenTest/OffscreenTest.pde
diff --git a/mode/examples/Demos/Tests/RedrawTest/RedrawTest.pde b/processing/mode/examples/Demos/Tests/RedrawTest/RedrawTest.pde
similarity index 100%
rename from mode/examples/Demos/Tests/RedrawTest/RedrawTest.pde
rename to processing/mode/examples/Demos/Tests/RedrawTest/RedrawTest.pde
diff --git a/mode/examples/Sensors/Accelerometer/Accelerometer.pde b/processing/mode/examples/Sensors/Accelerometer/Accelerometer.pde
similarity index 100%
rename from mode/examples/Sensors/Accelerometer/Accelerometer.pde
rename to processing/mode/examples/Sensors/Accelerometer/Accelerometer.pde
diff --git a/mode/examples/Sensors/Accelerometer/AccelerometerManager.java b/processing/mode/examples/Sensors/Accelerometer/AccelerometerManager.java
similarity index 100%
rename from mode/examples/Sensors/Accelerometer/AccelerometerManager.java
rename to processing/mode/examples/Sensors/Accelerometer/AccelerometerManager.java
diff --git a/mode/examples/Sensors/Compass/Compass.pde b/processing/mode/examples/Sensors/Compass/Compass.pde
similarity index 100%
rename from mode/examples/Sensors/Compass/Compass.pde
rename to processing/mode/examples/Sensors/Compass/Compass.pde
diff --git a/mode/examples/Sensors/Compass/CompassManager.java b/processing/mode/examples/Sensors/Compass/CompassManager.java
similarity index 100%
rename from mode/examples/Sensors/Compass/CompassManager.java
rename to processing/mode/examples/Sensors/Compass/CompassManager.java
diff --git a/mode/examples/Topics/Advanced Data/ArrayListClass/ArrayListClass.pde b/processing/mode/examples/Topics/Advanced Data/ArrayListClass/ArrayListClass.pde
similarity index 100%
rename from mode/examples/Topics/Advanced Data/ArrayListClass/ArrayListClass.pde
rename to processing/mode/examples/Topics/Advanced Data/ArrayListClass/ArrayListClass.pde
diff --git a/mode/examples/Topics/Advanced Data/ArrayListClass/Ball.pde b/processing/mode/examples/Topics/Advanced Data/ArrayListClass/Ball.pde
similarity index 100%
rename from mode/examples/Topics/Advanced Data/ArrayListClass/Ball.pde
rename to processing/mode/examples/Topics/Advanced Data/ArrayListClass/Ball.pde
diff --git a/mode/examples/Topics/Advanced Data/DirectoryList/DirectoryList.pde b/processing/mode/examples/Topics/Advanced Data/DirectoryList/DirectoryList.pde
similarity index 100%
rename from mode/examples/Topics/Advanced Data/DirectoryList/DirectoryList.pde
rename to processing/mode/examples/Topics/Advanced Data/DirectoryList/DirectoryList.pde
diff --git a/mode/examples/Topics/Advanced Data/HashMapClass/HashMapClass.pde b/processing/mode/examples/Topics/Advanced Data/HashMapClass/HashMapClass.pde
similarity index 100%
rename from mode/examples/Topics/Advanced Data/HashMapClass/HashMapClass.pde
rename to processing/mode/examples/Topics/Advanced Data/HashMapClass/HashMapClass.pde
diff --git a/mode/examples/Topics/Advanced Data/HashMapClass/Word.pde b/processing/mode/examples/Topics/Advanced Data/HashMapClass/Word.pde
similarity index 100%
rename from mode/examples/Topics/Advanced Data/HashMapClass/Word.pde
rename to processing/mode/examples/Topics/Advanced Data/HashMapClass/Word.pde
diff --git a/mode/examples/Topics/Advanced Data/HashMapClass/data/dracula.txt b/processing/mode/examples/Topics/Advanced Data/HashMapClass/data/dracula.txt
similarity index 100%
rename from mode/examples/Topics/Advanced Data/HashMapClass/data/dracula.txt
rename to processing/mode/examples/Topics/Advanced Data/HashMapClass/data/dracula.txt
diff --git a/mode/examples/Topics/Advanced Data/HashMapClass/data/hamlet.txt b/processing/mode/examples/Topics/Advanced Data/HashMapClass/data/hamlet.txt
similarity index 100%
rename from mode/examples/Topics/Advanced Data/HashMapClass/data/hamlet.txt
rename to processing/mode/examples/Topics/Advanced Data/HashMapClass/data/hamlet.txt
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/AnimatedSprite.pde b/processing/mode/examples/Topics/Animation/AnimatedSprite/AnimatedSprite.pde
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/AnimatedSprite.pde
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/AnimatedSprite.pde
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/Animation.pde b/processing/mode/examples/Topics/Animation/AnimatedSprite/Animation.pde
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/Animation.pde
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/Animation.pde
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0000.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0000.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0000.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0000.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0001.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0001.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0001.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0001.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0002.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0002.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0002.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0002.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0003.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0003.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0003.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0003.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0004.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0004.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0004.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0004.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0005.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0005.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0005.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0005.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0006.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0006.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0006.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0006.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0007.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0007.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0007.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0007.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0008.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0008.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0008.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0008.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0009.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0009.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0009.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0009.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0010.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0010.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0010.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0010.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0011.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0011.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0011.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0011.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0012.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0012.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0012.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0012.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0013.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0013.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0013.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0013.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0014.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0014.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0014.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0014.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0015.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0015.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0015.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0015.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0016.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0016.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0016.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0016.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0017.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0017.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0017.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0017.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0018.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0018.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0018.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0018.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0019.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0019.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0019.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0019.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0020.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0020.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0020.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0020.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0021.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0021.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0021.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0021.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0022.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0022.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0022.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0022.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0023.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0023.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0023.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0023.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0024.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0024.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0024.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0024.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0025.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0025.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0025.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0025.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0026.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0026.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0026.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0026.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0027.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0027.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0027.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0027.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0028.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0028.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0028.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0028.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0029.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0029.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0029.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0029.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0030.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0030.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0030.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0030.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0031.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0031.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0031.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0031.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0032.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0032.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0032.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0032.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0033.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0033.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0033.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0033.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0034.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0034.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0034.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0034.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0035.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0035.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0035.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0035.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0036.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0036.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0036.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0036.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0037.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0037.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0037.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Shifty_0037.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0000.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0000.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0000.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0000.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0001.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0001.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0001.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0001.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0002.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0002.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0002.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0002.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0003.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0003.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0003.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0003.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0004.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0004.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0004.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0004.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0005.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0005.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0005.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0005.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0006.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0006.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0006.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0006.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0007.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0007.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0007.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0007.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0008.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0008.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0008.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0008.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0009.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0009.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0009.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0009.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0010.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0010.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0010.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0010.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0011.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0011.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0011.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0011.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0012.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0012.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0012.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0012.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0013.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0013.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0013.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0013.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0014.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0014.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0014.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0014.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0015.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0015.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0015.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0015.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0016.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0016.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0016.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0016.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0017.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0017.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0017.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0017.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0018.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0018.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0018.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0018.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0019.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0019.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0019.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0019.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0020.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0020.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0020.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0020.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0021.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0021.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0021.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0021.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0022.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0022.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0022.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0022.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0023.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0023.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0023.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0023.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0024.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0024.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0024.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0024.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0025.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0025.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0025.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0025.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0026.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0026.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0026.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0026.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0027.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0027.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0027.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0027.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0028.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0028.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0028.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0028.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0029.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0029.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0029.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0029.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0030.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0030.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0030.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0030.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0031.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0031.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0031.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0031.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0032.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0032.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0032.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0032.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0033.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0033.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0033.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0033.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0034.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0034.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0034.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0034.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0035.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0035.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0035.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0035.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0036.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0036.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0036.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0036.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0037.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0037.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0037.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0037.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0038.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0038.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0038.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0038.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0039.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0039.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0039.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0039.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0040.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0040.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0040.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0040.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0041.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0041.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0041.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0041.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0042.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0042.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0042.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0042.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0043.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0043.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0043.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0043.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0044.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0044.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0044.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0044.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0045.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0045.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0045.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0045.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0046.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0046.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0046.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0046.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0047.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0047.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0047.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0047.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0048.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0048.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0048.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0048.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0049.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0049.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0049.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0049.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0050.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0050.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0050.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0050.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0051.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0051.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0051.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0051.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0052.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0052.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0052.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0052.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0053.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0053.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0053.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0053.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0054.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0054.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0054.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0054.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0055.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0055.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0055.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0055.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0056.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0056.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0056.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0056.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0057.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0057.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0057.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0057.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0058.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0058.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0058.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0058.gif
diff --git a/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0059.gif b/processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0059.gif
similarity index 100%
rename from mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0059.gif
rename to processing/mode/examples/Topics/Animation/AnimatedSprite/data/PT_Teddy_0059.gif
diff --git a/mode/examples/Topics/Animation/Sequential/Sequential.pde b/processing/mode/examples/Topics/Animation/Sequential/Sequential.pde
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/Sequential.pde
rename to processing/mode/examples/Topics/Animation/Sequential/Sequential.pde
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0000.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0000.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0000.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0000.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0001.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0001.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0001.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0001.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0002.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0002.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0002.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0002.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0003.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0003.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0003.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0003.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0004.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0004.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0004.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0004.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0005.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0005.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0005.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0005.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0006.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0006.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0006.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0006.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0007.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0007.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0007.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0007.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0008.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0008.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0008.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0008.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0009.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0009.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0009.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0009.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0010.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0010.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0010.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0010.gif
diff --git a/mode/examples/Topics/Animation/Sequential/data/PT_anim0011.gif b/processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0011.gif
similarity index 100%
rename from mode/examples/Topics/Animation/Sequential/data/PT_anim0011.gif
rename to processing/mode/examples/Topics/Animation/Sequential/data/PT_anim0011.gif
diff --git a/mode/examples/Topics/Cellular Automata/Conway/Conway.pde b/processing/mode/examples/Topics/Cellular Automata/Conway/Conway.pde
similarity index 100%
rename from mode/examples/Topics/Cellular Automata/Conway/Conway.pde
rename to processing/mode/examples/Topics/Cellular Automata/Conway/Conway.pde
diff --git a/mode/examples/Topics/Cellular Automata/Spore1/Spore1.pde b/processing/mode/examples/Topics/Cellular Automata/Spore1/Spore1.pde
similarity index 100%
rename from mode/examples/Topics/Cellular Automata/Spore1/Spore1.pde
rename to processing/mode/examples/Topics/Cellular Automata/Spore1/Spore1.pde
diff --git a/mode/examples/Topics/Cellular Automata/Spore2/Spore2.pde b/processing/mode/examples/Topics/Cellular Automata/Spore2/Spore2.pde
similarity index 100%
rename from mode/examples/Topics/Cellular Automata/Spore2/Spore2.pde
rename to processing/mode/examples/Topics/Cellular Automata/Spore2/Spore2.pde
diff --git a/mode/examples/Topics/Cellular Automata/Wolfram/CA.pde b/processing/mode/examples/Topics/Cellular Automata/Wolfram/CA.pde
similarity index 100%
rename from mode/examples/Topics/Cellular Automata/Wolfram/CA.pde
rename to processing/mode/examples/Topics/Cellular Automata/Wolfram/CA.pde
diff --git a/mode/examples/Topics/Cellular Automata/Wolfram/Wolfram.pde b/processing/mode/examples/Topics/Cellular Automata/Wolfram/Wolfram.pde
similarity index 100%
rename from mode/examples/Topics/Cellular Automata/Wolfram/Wolfram.pde
rename to processing/mode/examples/Topics/Cellular Automata/Wolfram/Wolfram.pde
diff --git a/mode/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde b/processing/mode/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde
rename to processing/mode/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde
diff --git a/mode/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde b/processing/mode/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde
rename to processing/mode/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde
diff --git a/mode/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde b/processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde
rename to processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde
diff --git a/mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystem.pde b/processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystem.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystem.pde
rename to processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystem.pde
diff --git a/mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystemPShape.pde b/processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystemPShape.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystemPShape.pde
rename to processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/ParticleSystemPShape.pde
diff --git a/mode/examples/Topics/Create Shapes/ParticleSystemPShape/data/sprite.png b/processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/data/sprite.png
similarity index 100%
rename from mode/examples/Topics/Create Shapes/ParticleSystemPShape/data/sprite.png
rename to processing/mode/examples/Topics/Create Shapes/ParticleSystemPShape/data/sprite.png
diff --git a/mode/examples/Topics/Create Shapes/PathPShape/PathPShape.pde b/processing/mode/examples/Topics/Create Shapes/PathPShape/PathPShape.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PathPShape/PathPShape.pde
rename to processing/mode/examples/Topics/Create Shapes/PathPShape/PathPShape.pde
diff --git a/mode/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde b/processing/mode/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde
rename to processing/mode/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde
diff --git a/mode/examples/Topics/Create Shapes/PolygonPShapeOOP/PolygonPShapeOOP.pde b/processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP/PolygonPShapeOOP.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PolygonPShapeOOP/PolygonPShapeOOP.pde
rename to processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP/PolygonPShapeOOP.pde
diff --git a/mode/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde b/processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde
rename to processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde
diff --git a/mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/Polygon.pde b/processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/Polygon.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/Polygon.pde
rename to processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/Polygon.pde
diff --git a/mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde b/processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde
rename to processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde
diff --git a/mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/Polygon.pde b/processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/Polygon.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/Polygon.pde
rename to processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/Polygon.pde
diff --git a/mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde b/processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde
rename to processing/mode/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde
diff --git a/mode/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde b/processing/mode/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde
rename to processing/mode/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde
diff --git a/mode/examples/Topics/Create Shapes/WigglePShape/WigglePShape.pde b/processing/mode/examples/Topics/Create Shapes/WigglePShape/WigglePShape.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/WigglePShape/WigglePShape.pde
rename to processing/mode/examples/Topics/Create Shapes/WigglePShape/WigglePShape.pde
diff --git a/mode/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde b/processing/mode/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde
similarity index 100%
rename from mode/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde
rename to processing/mode/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde
diff --git a/mode/examples/Topics/Drawing/Animator/Animator.pde b/processing/mode/examples/Topics/Drawing/Animator/Animator.pde
similarity index 100%
rename from mode/examples/Topics/Drawing/Animator/Animator.pde
rename to processing/mode/examples/Topics/Drawing/Animator/Animator.pde
diff --git a/mode/examples/Topics/Drawing/ContinuousLines/ContinuousLines.pde b/processing/mode/examples/Topics/Drawing/ContinuousLines/ContinuousLines.pde
similarity index 100%
rename from mode/examples/Topics/Drawing/ContinuousLines/ContinuousLines.pde
rename to processing/mode/examples/Topics/Drawing/ContinuousLines/ContinuousLines.pde
diff --git a/mode/examples/Topics/Drawing/CustomTool/CustomTool.pde b/processing/mode/examples/Topics/Drawing/CustomTool/CustomTool.pde
similarity index 100%
rename from mode/examples/Topics/Drawing/CustomTool/CustomTool.pde
rename to processing/mode/examples/Topics/Drawing/CustomTool/CustomTool.pde
diff --git a/mode/examples/Topics/Drawing/CustomTool/data/milan.jpg b/processing/mode/examples/Topics/Drawing/CustomTool/data/milan.jpg
similarity index 100%
rename from mode/examples/Topics/Drawing/CustomTool/data/milan.jpg
rename to processing/mode/examples/Topics/Drawing/CustomTool/data/milan.jpg
diff --git a/mode/examples/Topics/Drawing/CustomTool/data/paris.jpg b/processing/mode/examples/Topics/Drawing/CustomTool/data/paris.jpg
similarity index 100%
rename from mode/examples/Topics/Drawing/CustomTool/data/paris.jpg
rename to processing/mode/examples/Topics/Drawing/CustomTool/data/paris.jpg
diff --git a/mode/examples/Topics/Drawing/Pattern/Pattern.pde b/processing/mode/examples/Topics/Drawing/Pattern/Pattern.pde
similarity index 100%
rename from mode/examples/Topics/Drawing/Pattern/Pattern.pde
rename to processing/mode/examples/Topics/Drawing/Pattern/Pattern.pde
diff --git a/mode/examples/Topics/Drawing/Pulses/Pulses.pde b/processing/mode/examples/Topics/Drawing/Pulses/Pulses.pde
similarity index 100%
rename from mode/examples/Topics/Drawing/Pulses/Pulses.pde
rename to processing/mode/examples/Topics/Drawing/Pulses/Pulses.pde
diff --git a/mode/examples/Topics/Drawing/ScribblePlotter/ScribblePlotter.pde b/processing/mode/examples/Topics/Drawing/ScribblePlotter/ScribblePlotter.pde
similarity index 100%
rename from mode/examples/Topics/Drawing/ScribblePlotter/ScribblePlotter.pde
rename to processing/mode/examples/Topics/Drawing/ScribblePlotter/ScribblePlotter.pde
diff --git a/mode/examples/Topics/Effects/FireCube/FireCube.pde b/processing/mode/examples/Topics/Effects/FireCube/FireCube.pde
similarity index 100%
rename from mode/examples/Topics/Effects/FireCube/FireCube.pde
rename to processing/mode/examples/Topics/Effects/FireCube/FireCube.pde
diff --git a/mode/examples/Topics/Effects/Lens/Lens.pde b/processing/mode/examples/Topics/Effects/Lens/Lens.pde
similarity index 100%
rename from mode/examples/Topics/Effects/Lens/Lens.pde
rename to processing/mode/examples/Topics/Effects/Lens/Lens.pde
diff --git a/mode/examples/Topics/Effects/Lens/data/red_smoke.jpg b/processing/mode/examples/Topics/Effects/Lens/data/red_smoke.jpg
similarity index 100%
rename from mode/examples/Topics/Effects/Lens/data/red_smoke.jpg
rename to processing/mode/examples/Topics/Effects/Lens/data/red_smoke.jpg
diff --git a/mode/examples/Topics/Effects/Metaball/Metaball.pde b/processing/mode/examples/Topics/Effects/Metaball/Metaball.pde
similarity index 100%
rename from mode/examples/Topics/Effects/Metaball/Metaball.pde
rename to processing/mode/examples/Topics/Effects/Metaball/Metaball.pde
diff --git a/mode/examples/Topics/Effects/Plasma/Plasma.pde b/processing/mode/examples/Topics/Effects/Plasma/Plasma.pde
similarity index 100%
rename from mode/examples/Topics/Effects/Plasma/Plasma.pde
rename to processing/mode/examples/Topics/Effects/Plasma/Plasma.pde
diff --git a/mode/examples/Topics/Effects/Tunnel/Tunnel.pde b/processing/mode/examples/Topics/Effects/Tunnel/Tunnel.pde
similarity index 100%
rename from mode/examples/Topics/Effects/Tunnel/Tunnel.pde
rename to processing/mode/examples/Topics/Effects/Tunnel/Tunnel.pde
diff --git a/mode/examples/Topics/Effects/Tunnel/data/red_smoke.jpg b/processing/mode/examples/Topics/Effects/Tunnel/data/red_smoke.jpg
similarity index 100%
rename from mode/examples/Topics/Effects/Tunnel/data/red_smoke.jpg
rename to processing/mode/examples/Topics/Effects/Tunnel/data/red_smoke.jpg
diff --git a/mode/examples/Topics/Effects/UnlimitedSprites/UnlimitedSprites.pde b/processing/mode/examples/Topics/Effects/UnlimitedSprites/UnlimitedSprites.pde
similarity index 100%
rename from mode/examples/Topics/Effects/UnlimitedSprites/UnlimitedSprites.pde
rename to processing/mode/examples/Topics/Effects/UnlimitedSprites/UnlimitedSprites.pde
diff --git a/mode/examples/Topics/Effects/UnlimitedSprites/data/Aqua-Ball-48x48.png b/processing/mode/examples/Topics/Effects/UnlimitedSprites/data/Aqua-Ball-48x48.png
similarity index 100%
rename from mode/examples/Topics/Effects/UnlimitedSprites/data/Aqua-Ball-48x48.png
rename to processing/mode/examples/Topics/Effects/UnlimitedSprites/data/Aqua-Ball-48x48.png
diff --git a/mode/examples/Topics/Effects/Wormhole/Wormhole.pde b/processing/mode/examples/Topics/Effects/Wormhole/Wormhole.pde
similarity index 100%
rename from mode/examples/Topics/Effects/Wormhole/Wormhole.pde
rename to processing/mode/examples/Topics/Effects/Wormhole/Wormhole.pde
diff --git a/mode/examples/Topics/Effects/Wormhole/data/texture.gif b/processing/mode/examples/Topics/Effects/Wormhole/data/texture.gif
similarity index 100%
rename from mode/examples/Topics/Effects/Wormhole/data/texture.gif
rename to processing/mode/examples/Topics/Effects/Wormhole/data/texture.gif
diff --git a/mode/examples/Topics/Effects/Wormhole/data/wormhole.png b/processing/mode/examples/Topics/Effects/Wormhole/data/wormhole.png
similarity index 100%
rename from mode/examples/Topics/Effects/Wormhole/data/wormhole.png
rename to processing/mode/examples/Topics/Effects/Wormhole/data/wormhole.png
diff --git a/mode/examples/Topics/File IO/LoadFile1/LoadFile1.pde b/processing/mode/examples/Topics/File IO/LoadFile1/LoadFile1.pde
similarity index 100%
rename from mode/examples/Topics/File IO/LoadFile1/LoadFile1.pde
rename to processing/mode/examples/Topics/File IO/LoadFile1/LoadFile1.pde
diff --git a/mode/examples/Topics/File IO/LoadFile1/data/positions.txt b/processing/mode/examples/Topics/File IO/LoadFile1/data/positions.txt
similarity index 100%
rename from mode/examples/Topics/File IO/LoadFile1/data/positions.txt
rename to processing/mode/examples/Topics/File IO/LoadFile1/data/positions.txt
diff --git a/mode/examples/Topics/File IO/LoadFile2/LoadFile2.pde b/processing/mode/examples/Topics/File IO/LoadFile2/LoadFile2.pde
similarity index 100%
rename from mode/examples/Topics/File IO/LoadFile2/LoadFile2.pde
rename to processing/mode/examples/Topics/File IO/LoadFile2/LoadFile2.pde
diff --git a/mode/examples/Topics/File IO/LoadFile2/Record.pde b/processing/mode/examples/Topics/File IO/LoadFile2/Record.pde
similarity index 100%
rename from mode/examples/Topics/File IO/LoadFile2/Record.pde
rename to processing/mode/examples/Topics/File IO/LoadFile2/Record.pde
diff --git a/mode/examples/Topics/File IO/LoadFile2/data/TheSans-Plain-12.vlw b/processing/mode/examples/Topics/File IO/LoadFile2/data/TheSans-Plain-12.vlw
similarity index 100%
rename from mode/examples/Topics/File IO/LoadFile2/data/TheSans-Plain-12.vlw
rename to processing/mode/examples/Topics/File IO/LoadFile2/data/TheSans-Plain-12.vlw
diff --git a/mode/examples/Topics/File IO/LoadFile2/data/cars2.tsv b/processing/mode/examples/Topics/File IO/LoadFile2/data/cars2.tsv
similarity index 100%
rename from mode/examples/Topics/File IO/LoadFile2/data/cars2.tsv
rename to processing/mode/examples/Topics/File IO/LoadFile2/data/cars2.tsv
diff --git a/mode/examples/Topics/File IO/SaveFile1/SaveFile1.pde b/processing/mode/examples/Topics/File IO/SaveFile1/SaveFile1.pde
similarity index 100%
rename from mode/examples/Topics/File IO/SaveFile1/SaveFile1.pde
rename to processing/mode/examples/Topics/File IO/SaveFile1/SaveFile1.pde
diff --git a/mode/examples/Topics/File IO/SaveFile2/SaveFile2.pde b/processing/mode/examples/Topics/File IO/SaveFile2/SaveFile2.pde
similarity index 100%
rename from mode/examples/Topics/File IO/SaveFile2/SaveFile2.pde
rename to processing/mode/examples/Topics/File IO/SaveFile2/SaveFile2.pde
diff --git a/mode/examples/Topics/File IO/SaveManyImages/SaveManyImages.pde b/processing/mode/examples/Topics/File IO/SaveManyImages/SaveManyImages.pde
similarity index 100%
rename from mode/examples/Topics/File IO/SaveManyImages/SaveManyImages.pde
rename to processing/mode/examples/Topics/File IO/SaveManyImages/SaveManyImages.pde
diff --git a/mode/examples/Topics/File IO/SaveOneImage/SaveOneImage.pde b/processing/mode/examples/Topics/File IO/SaveOneImage/SaveOneImage.pde
similarity index 100%
rename from mode/examples/Topics/File IO/SaveOneImage/SaveOneImage.pde
rename to processing/mode/examples/Topics/File IO/SaveOneImage/SaveOneImage.pde
diff --git a/mode/examples/Topics/File IO/TileImages/TileImages.pde b/processing/mode/examples/Topics/File IO/TileImages/TileImages.pde
similarity index 100%
rename from mode/examples/Topics/File IO/TileImages/TileImages.pde
rename to processing/mode/examples/Topics/File IO/TileImages/TileImages.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/Koch/Koch.pde b/processing/mode/examples/Topics/Fractals and L-Systems/Koch/Koch.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/Koch/Koch.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/Koch/Koch.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.pde b/processing/mode/examples/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/Mandelbrot/Mandelbrot.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/LSystem.pde b/processing/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/LSystem.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/LSystem.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/LSystem.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.pde b/processing/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflake.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflakeLSystem.pde b/processing/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflakeLSystem.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflakeLSystem.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/PenroseSnowflake/PenroseSnowflakeLSystem.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/PenroseTile/LSystem.pde b/processing/mode/examples/Topics/Fractals and L-Systems/PenroseTile/LSystem.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/PenroseTile/LSystem.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/PenroseTile/LSystem.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseLSystem.pde b/processing/mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseLSystem.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseLSystem.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseLSystem.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.pde b/processing/mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/PenroseTile/PenroseTile.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/Pentigree/LSystem.pde b/processing/mode/examples/Topics/Fractals and L-Systems/Pentigree/LSystem.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/Pentigree/LSystem.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/Pentigree/LSystem.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/Pentigree/Pentigree.pde b/processing/mode/examples/Topics/Fractals and L-Systems/Pentigree/Pentigree.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/Pentigree/Pentigree.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/Pentigree/Pentigree.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/Pentigree/PentigreeLSystem.pde b/processing/mode/examples/Topics/Fractals and L-Systems/Pentigree/PentigreeLSystem.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/Pentigree/PentigreeLSystem.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/Pentigree/PentigreeLSystem.pde
diff --git a/mode/examples/Topics/Fractals and L-Systems/Tree/Tree.pde b/processing/mode/examples/Topics/Fractals and L-Systems/Tree/Tree.pde
similarity index 100%
rename from mode/examples/Topics/Fractals and L-Systems/Tree/Tree.pde
rename to processing/mode/examples/Topics/Fractals and L-Systems/Tree/Tree.pde
diff --git a/mode/examples/Topics/GUI/Button/Button.pde b/processing/mode/examples/Topics/GUI/Button/Button.pde
similarity index 100%
rename from mode/examples/Topics/GUI/Button/Button.pde
rename to processing/mode/examples/Topics/GUI/Button/Button.pde
diff --git a/mode/examples/Topics/GUI/Buttons/Buttons.pde b/processing/mode/examples/Topics/GUI/Buttons/Buttons.pde
similarity index 100%
rename from mode/examples/Topics/GUI/Buttons/Buttons.pde
rename to processing/mode/examples/Topics/GUI/Buttons/Buttons.pde
diff --git a/mode/examples/Topics/GUI/Handles/Handles.pde b/processing/mode/examples/Topics/GUI/Handles/Handles.pde
similarity index 100%
rename from mode/examples/Topics/GUI/Handles/Handles.pde
rename to processing/mode/examples/Topics/GUI/Handles/Handles.pde
diff --git a/mode/examples/Topics/GUI/ImageButton/ImageButton.pde b/processing/mode/examples/Topics/GUI/ImageButton/ImageButton.pde
similarity index 100%
rename from mode/examples/Topics/GUI/ImageButton/ImageButton.pde
rename to processing/mode/examples/Topics/GUI/ImageButton/ImageButton.pde
diff --git a/mode/examples/Topics/GUI/ImageButton/data/base.gif b/processing/mode/examples/Topics/GUI/ImageButton/data/base.gif
similarity index 100%
rename from mode/examples/Topics/GUI/ImageButton/data/base.gif
rename to processing/mode/examples/Topics/GUI/ImageButton/data/base.gif
diff --git a/mode/examples/Topics/GUI/ImageButton/data/down.gif b/processing/mode/examples/Topics/GUI/ImageButton/data/down.gif
similarity index 100%
rename from mode/examples/Topics/GUI/ImageButton/data/down.gif
rename to processing/mode/examples/Topics/GUI/ImageButton/data/down.gif
diff --git a/mode/examples/Topics/GUI/ImageButton/data/roll.gif b/processing/mode/examples/Topics/GUI/ImageButton/data/roll.gif
similarity index 100%
rename from mode/examples/Topics/GUI/ImageButton/data/roll.gif
rename to processing/mode/examples/Topics/GUI/ImageButton/data/roll.gif
diff --git a/mode/examples/Topics/GUI/Rollover/Rollover.pde b/processing/mode/examples/Topics/GUI/Rollover/Rollover.pde
similarity index 100%
rename from mode/examples/Topics/GUI/Rollover/Rollover.pde
rename to processing/mode/examples/Topics/GUI/Rollover/Rollover.pde
diff --git a/mode/examples/Topics/GUI/Scrollbar/Scrollbar.pde b/processing/mode/examples/Topics/GUI/Scrollbar/Scrollbar.pde
similarity index 100%
rename from mode/examples/Topics/GUI/Scrollbar/Scrollbar.pde
rename to processing/mode/examples/Topics/GUI/Scrollbar/Scrollbar.pde
diff --git a/mode/examples/Topics/GUI/Scrollbar/data/seedBottom.jpg b/processing/mode/examples/Topics/GUI/Scrollbar/data/seedBottom.jpg
similarity index 100%
rename from mode/examples/Topics/GUI/Scrollbar/data/seedBottom.jpg
rename to processing/mode/examples/Topics/GUI/Scrollbar/data/seedBottom.jpg
diff --git a/mode/examples/Topics/GUI/Scrollbar/data/seedTop.jpg b/processing/mode/examples/Topics/GUI/Scrollbar/data/seedTop.jpg
similarity index 100%
rename from mode/examples/Topics/GUI/Scrollbar/data/seedTop.jpg
rename to processing/mode/examples/Topics/GUI/Scrollbar/data/seedTop.jpg
diff --git a/mode/examples/Topics/Geometry/Icosahedra/Dimension3D.pde b/processing/mode/examples/Topics/Geometry/Icosahedra/Dimension3D.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/Icosahedra/Dimension3D.pde
rename to processing/mode/examples/Topics/Geometry/Icosahedra/Dimension3D.pde
diff --git a/mode/examples/Topics/Geometry/Icosahedra/Icosahedra.pde b/processing/mode/examples/Topics/Geometry/Icosahedra/Icosahedra.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/Icosahedra/Icosahedra.pde
rename to processing/mode/examples/Topics/Geometry/Icosahedra/Icosahedra.pde
diff --git a/mode/examples/Topics/Geometry/Icosahedra/Icosahedron.pde b/processing/mode/examples/Topics/Geometry/Icosahedra/Icosahedron.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/Icosahedra/Icosahedron.pde
rename to processing/mode/examples/Topics/Geometry/Icosahedra/Icosahedron.pde
diff --git a/mode/examples/Topics/Geometry/Icosahedra/Shape3D.pde b/processing/mode/examples/Topics/Geometry/Icosahedra/Shape3D.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/Icosahedra/Shape3D.pde
rename to processing/mode/examples/Topics/Geometry/Icosahedra/Shape3D.pde
diff --git a/mode/examples/Topics/Geometry/NoiseSphere/NoiseSphere.pde b/processing/mode/examples/Topics/Geometry/NoiseSphere/NoiseSphere.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/NoiseSphere/NoiseSphere.pde
rename to processing/mode/examples/Topics/Geometry/NoiseSphere/NoiseSphere.pde
diff --git a/mode/examples/Topics/Geometry/RGBCube/RGBCube.pde b/processing/mode/examples/Topics/Geometry/RGBCube/RGBCube.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/RGBCube/RGBCube.pde
rename to processing/mode/examples/Topics/Geometry/RGBCube/RGBCube.pde
diff --git a/mode/examples/Topics/Geometry/ShapeTransform/ShapeTransform.pde b/processing/mode/examples/Topics/Geometry/ShapeTransform/ShapeTransform.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/ShapeTransform/ShapeTransform.pde
rename to processing/mode/examples/Topics/Geometry/ShapeTransform/ShapeTransform.pde
diff --git a/mode/examples/Topics/Geometry/SpaceJunk/Cube.pde b/processing/mode/examples/Topics/Geometry/SpaceJunk/Cube.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/SpaceJunk/Cube.pde
rename to processing/mode/examples/Topics/Geometry/SpaceJunk/Cube.pde
diff --git a/mode/examples/Topics/Geometry/SpaceJunk/SpaceJunk.pde b/processing/mode/examples/Topics/Geometry/SpaceJunk/SpaceJunk.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/SpaceJunk/SpaceJunk.pde
rename to processing/mode/examples/Topics/Geometry/SpaceJunk/SpaceJunk.pde
diff --git a/mode/examples/Topics/Geometry/Toroid/Toroid.pde b/processing/mode/examples/Topics/Geometry/Toroid/Toroid.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/Toroid/Toroid.pde
rename to processing/mode/examples/Topics/Geometry/Toroid/Toroid.pde
diff --git a/mode/examples/Topics/Geometry/Vertices/Vertices.pde b/processing/mode/examples/Topics/Geometry/Vertices/Vertices.pde
similarity index 100%
rename from mode/examples/Topics/Geometry/Vertices/Vertices.pde
rename to processing/mode/examples/Topics/Geometry/Vertices/Vertices.pde
diff --git a/mode/examples/Topics/Image Processing/Blur/Blur.pde b/processing/mode/examples/Topics/Image Processing/Blur/Blur.pde
similarity index 100%
rename from mode/examples/Topics/Image Processing/Blur/Blur.pde
rename to processing/mode/examples/Topics/Image Processing/Blur/Blur.pde
diff --git a/mode/examples/Topics/Image Processing/Blur/data/trees.jpg b/processing/mode/examples/Topics/Image Processing/Blur/data/trees.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/Blur/data/trees.jpg
rename to processing/mode/examples/Topics/Image Processing/Blur/data/trees.jpg
diff --git a/mode/examples/Topics/Image Processing/Brightness/Brightness.pde b/processing/mode/examples/Topics/Image Processing/Brightness/Brightness.pde
similarity index 100%
rename from mode/examples/Topics/Image Processing/Brightness/Brightness.pde
rename to processing/mode/examples/Topics/Image Processing/Brightness/Brightness.pde
diff --git a/mode/examples/Topics/Image Processing/Brightness/data/wires.jpg b/processing/mode/examples/Topics/Image Processing/Brightness/data/wires.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/Brightness/data/wires.jpg
rename to processing/mode/examples/Topics/Image Processing/Brightness/data/wires.jpg
diff --git a/mode/examples/Topics/Image Processing/Convolution/Convolution.pde b/processing/mode/examples/Topics/Image Processing/Convolution/Convolution.pde
similarity index 100%
rename from mode/examples/Topics/Image Processing/Convolution/Convolution.pde
rename to processing/mode/examples/Topics/Image Processing/Convolution/Convolution.pde
diff --git a/mode/examples/Topics/Image Processing/Convolution/data/end.jpg b/processing/mode/examples/Topics/Image Processing/Convolution/data/end.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/Convolution/data/end.jpg
rename to processing/mode/examples/Topics/Image Processing/Convolution/data/end.jpg
diff --git a/mode/examples/Topics/Image Processing/Convolution/data/sunflower.jpg b/processing/mode/examples/Topics/Image Processing/Convolution/data/sunflower.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/Convolution/data/sunflower.jpg
rename to processing/mode/examples/Topics/Image Processing/Convolution/data/sunflower.jpg
diff --git a/mode/examples/Topics/Image Processing/EdgeDetection/EdgeDetection.pde b/processing/mode/examples/Topics/Image Processing/EdgeDetection/EdgeDetection.pde
similarity index 100%
rename from mode/examples/Topics/Image Processing/EdgeDetection/EdgeDetection.pde
rename to processing/mode/examples/Topics/Image Processing/EdgeDetection/EdgeDetection.pde
diff --git a/mode/examples/Topics/Image Processing/EdgeDetection/data/house.jpg b/processing/mode/examples/Topics/Image Processing/EdgeDetection/data/house.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/EdgeDetection/data/house.jpg
rename to processing/mode/examples/Topics/Image Processing/EdgeDetection/data/house.jpg
diff --git a/mode/examples/Topics/Image Processing/Histogram/Histogram.pde b/processing/mode/examples/Topics/Image Processing/Histogram/Histogram.pde
similarity index 100%
rename from mode/examples/Topics/Image Processing/Histogram/Histogram.pde
rename to processing/mode/examples/Topics/Image Processing/Histogram/Histogram.pde
diff --git a/mode/examples/Topics/Image Processing/Histogram/data/cdi01_g.jpg b/processing/mode/examples/Topics/Image Processing/Histogram/data/cdi01_g.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/Histogram/data/cdi01_g.jpg
rename to processing/mode/examples/Topics/Image Processing/Histogram/data/cdi01_g.jpg
diff --git a/mode/examples/Topics/Image Processing/Histogram/data/ystone08.jpg b/processing/mode/examples/Topics/Image Processing/Histogram/data/ystone08.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/Histogram/data/ystone08.jpg
rename to processing/mode/examples/Topics/Image Processing/Histogram/data/ystone08.jpg
diff --git a/mode/examples/Topics/Image Processing/LinearImage/LinearImage.pde b/processing/mode/examples/Topics/Image Processing/LinearImage/LinearImage.pde
similarity index 100%
rename from mode/examples/Topics/Image Processing/LinearImage/LinearImage.pde
rename to processing/mode/examples/Topics/Image Processing/LinearImage/LinearImage.pde
diff --git a/mode/examples/Topics/Image Processing/LinearImage/data/florence03.jpg b/processing/mode/examples/Topics/Image Processing/LinearImage/data/florence03.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/LinearImage/data/florence03.jpg
rename to processing/mode/examples/Topics/Image Processing/LinearImage/data/florence03.jpg
diff --git a/mode/examples/Topics/Image Processing/PixelArray/PixelArray.pde b/processing/mode/examples/Topics/Image Processing/PixelArray/PixelArray.pde
similarity index 100%
rename from mode/examples/Topics/Image Processing/PixelArray/PixelArray.pde
rename to processing/mode/examples/Topics/Image Processing/PixelArray/PixelArray.pde
diff --git a/mode/examples/Topics/Image Processing/PixelArray/data/ystone08.jpg b/processing/mode/examples/Topics/Image Processing/PixelArray/data/ystone08.jpg
similarity index 100%
rename from mode/examples/Topics/Image Processing/PixelArray/data/ystone08.jpg
rename to processing/mode/examples/Topics/Image Processing/PixelArray/data/ystone08.jpg
diff --git a/mode/examples/Topics/Interaction/Follow1/Follow1.pde b/processing/mode/examples/Topics/Interaction/Follow1/Follow1.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Follow1/Follow1.pde
rename to processing/mode/examples/Topics/Interaction/Follow1/Follow1.pde
diff --git a/mode/examples/Topics/Interaction/Follow2/Follow2.pde b/processing/mode/examples/Topics/Interaction/Follow2/Follow2.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Follow2/Follow2.pde
rename to processing/mode/examples/Topics/Interaction/Follow2/Follow2.pde
diff --git a/mode/examples/Topics/Interaction/Follow3/Follow3.pde b/processing/mode/examples/Topics/Interaction/Follow3/Follow3.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Follow3/Follow3.pde
rename to processing/mode/examples/Topics/Interaction/Follow3/Follow3.pde
diff --git a/mode/examples/Topics/Interaction/Multitouch/Multitouch.pde b/processing/mode/examples/Topics/Interaction/Multitouch/Multitouch.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Multitouch/Multitouch.pde
rename to processing/mode/examples/Topics/Interaction/Multitouch/Multitouch.pde
diff --git a/mode/examples/Topics/Interaction/Reach1/Reach1.pde b/processing/mode/examples/Topics/Interaction/Reach1/Reach1.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Reach1/Reach1.pde
rename to processing/mode/examples/Topics/Interaction/Reach1/Reach1.pde
diff --git a/mode/examples/Topics/Interaction/Reach2/Reach2.pde b/processing/mode/examples/Topics/Interaction/Reach2/Reach2.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Reach2/Reach2.pde
rename to processing/mode/examples/Topics/Interaction/Reach2/Reach2.pde
diff --git a/mode/examples/Topics/Interaction/Reach3/Reach3.pde b/processing/mode/examples/Topics/Interaction/Reach3/Reach3.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Reach3/Reach3.pde
rename to processing/mode/examples/Topics/Interaction/Reach3/Reach3.pde
diff --git a/mode/examples/Topics/Interaction/Tickle/Tickle.pde b/processing/mode/examples/Topics/Interaction/Tickle/Tickle.pde
similarity index 100%
rename from mode/examples/Topics/Interaction/Tickle/Tickle.pde
rename to processing/mode/examples/Topics/Interaction/Tickle/Tickle.pde
diff --git a/mode/examples/Topics/Interaction/Tickle/data/AmericanTypewriter-24.vlw b/processing/mode/examples/Topics/Interaction/Tickle/data/AmericanTypewriter-24.vlw
similarity index 100%
rename from mode/examples/Topics/Interaction/Tickle/data/AmericanTypewriter-24.vlw
rename to processing/mode/examples/Topics/Interaction/Tickle/data/AmericanTypewriter-24.vlw
diff --git a/mode/examples/Topics/Motion/Bounce/Bounce.pde b/processing/mode/examples/Topics/Motion/Bounce/Bounce.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Bounce/Bounce.pde
rename to processing/mode/examples/Topics/Motion/Bounce/Bounce.pde
diff --git a/mode/examples/Topics/Motion/BouncyBubbles/BouncyBubbles.pde b/processing/mode/examples/Topics/Motion/BouncyBubbles/BouncyBubbles.pde
similarity index 100%
rename from mode/examples/Topics/Motion/BouncyBubbles/BouncyBubbles.pde
rename to processing/mode/examples/Topics/Motion/BouncyBubbles/BouncyBubbles.pde
diff --git a/mode/examples/Topics/Motion/Brownian/Brownian.pde b/processing/mode/examples/Topics/Motion/Brownian/Brownian.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Brownian/Brownian.pde
rename to processing/mode/examples/Topics/Motion/Brownian/Brownian.pde
diff --git a/mode/examples/Topics/Motion/CircleCollision/Ball.pde b/processing/mode/examples/Topics/Motion/CircleCollision/Ball.pde
similarity index 100%
rename from mode/examples/Topics/Motion/CircleCollision/Ball.pde
rename to processing/mode/examples/Topics/Motion/CircleCollision/Ball.pde
diff --git a/mode/examples/Topics/Motion/CircleCollision/CircleCollision.pde b/processing/mode/examples/Topics/Motion/CircleCollision/CircleCollision.pde
similarity index 100%
rename from mode/examples/Topics/Motion/CircleCollision/CircleCollision.pde
rename to processing/mode/examples/Topics/Motion/CircleCollision/CircleCollision.pde
diff --git a/mode/examples/Topics/Motion/Collision/Collision.pde b/processing/mode/examples/Topics/Motion/Collision/Collision.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Collision/Collision.pde
rename to processing/mode/examples/Topics/Motion/Collision/Collision.pde
diff --git a/mode/examples/Topics/Motion/Linear/Linear.pde b/processing/mode/examples/Topics/Motion/Linear/Linear.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Linear/Linear.pde
rename to processing/mode/examples/Topics/Motion/Linear/Linear.pde
diff --git a/mode/examples/Topics/Motion/MovingOnCurves/MovingOnCurves.pde b/processing/mode/examples/Topics/Motion/MovingOnCurves/MovingOnCurves.pde
similarity index 100%
rename from mode/examples/Topics/Motion/MovingOnCurves/MovingOnCurves.pde
rename to processing/mode/examples/Topics/Motion/MovingOnCurves/MovingOnCurves.pde
diff --git a/mode/examples/Topics/Motion/Puff/Puff.pde b/processing/mode/examples/Topics/Motion/Puff/Puff.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Puff/Puff.pde
rename to processing/mode/examples/Topics/Motion/Puff/Puff.pde
diff --git a/mode/examples/Topics/Motion/Reflection1/Reflection1.pde b/processing/mode/examples/Topics/Motion/Reflection1/Reflection1.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Reflection1/Reflection1.pde
rename to processing/mode/examples/Topics/Motion/Reflection1/Reflection1.pde
diff --git a/mode/examples/Topics/Motion/Reflection2/Ground.pde b/processing/mode/examples/Topics/Motion/Reflection2/Ground.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Reflection2/Ground.pde
rename to processing/mode/examples/Topics/Motion/Reflection2/Ground.pde
diff --git a/mode/examples/Topics/Motion/Reflection2/Orb.pde b/processing/mode/examples/Topics/Motion/Reflection2/Orb.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Reflection2/Orb.pde
rename to processing/mode/examples/Topics/Motion/Reflection2/Orb.pde
diff --git a/mode/examples/Topics/Motion/Reflection2/Reflection2.pde b/processing/mode/examples/Topics/Motion/Reflection2/Reflection2.pde
similarity index 100%
rename from mode/examples/Topics/Motion/Reflection2/Reflection2.pde
rename to processing/mode/examples/Topics/Motion/Reflection2/Reflection2.pde
diff --git a/mode/examples/Topics/Shaders/BlurFilter/BlurFilter.pde b/processing/mode/examples/Topics/Shaders/BlurFilter/BlurFilter.pde
similarity index 100%
rename from mode/examples/Topics/Shaders/BlurFilter/BlurFilter.pde
rename to processing/mode/examples/Topics/Shaders/BlurFilter/BlurFilter.pde
diff --git a/mode/examples/Topics/Shaders/BlurFilter/data/blur.glsl b/processing/mode/examples/Topics/Shaders/BlurFilter/data/blur.glsl
similarity index 100%
rename from mode/examples/Topics/Shaders/BlurFilter/data/blur.glsl
rename to processing/mode/examples/Topics/Shaders/BlurFilter/data/blur.glsl
diff --git a/mode/examples/Topics/Shaders/EdgeDetect/EdgeDetect.pde b/processing/mode/examples/Topics/Shaders/EdgeDetect/EdgeDetect.pde
similarity index 100%
rename from mode/examples/Topics/Shaders/EdgeDetect/EdgeDetect.pde
rename to processing/mode/examples/Topics/Shaders/EdgeDetect/EdgeDetect.pde
diff --git a/mode/examples/Topics/Shaders/EdgeDetect/data/edges.glsl b/processing/mode/examples/Topics/Shaders/EdgeDetect/data/edges.glsl
similarity index 100%
rename from mode/examples/Topics/Shaders/EdgeDetect/data/edges.glsl
rename to processing/mode/examples/Topics/Shaders/EdgeDetect/data/edges.glsl
diff --git a/mode/examples/Topics/Shaders/EdgeDetect/data/leaves.jpg b/processing/mode/examples/Topics/Shaders/EdgeDetect/data/leaves.jpg
similarity index 100%
rename from mode/examples/Topics/Shaders/EdgeDetect/data/leaves.jpg
rename to processing/mode/examples/Topics/Shaders/EdgeDetect/data/leaves.jpg
diff --git a/mode/examples/Topics/Shaders/EdgeFilter/EdgeFilter.pde b/processing/mode/examples/Topics/Shaders/EdgeFilter/EdgeFilter.pde
similarity index 100%
rename from mode/examples/Topics/Shaders/EdgeFilter/EdgeFilter.pde
rename to processing/mode/examples/Topics/Shaders/EdgeFilter/EdgeFilter.pde
diff --git a/mode/examples/Topics/Shaders/EdgeFilter/data/edges.glsl b/processing/mode/examples/Topics/Shaders/EdgeFilter/data/edges.glsl
similarity index 100%
rename from mode/examples/Topics/Shaders/EdgeFilter/data/edges.glsl
rename to processing/mode/examples/Topics/Shaders/EdgeFilter/data/edges.glsl
diff --git a/mode/examples/Topics/Shaders/LowLevelGL/LowLevelGL.pde b/processing/mode/examples/Topics/Shaders/LowLevelGL/LowLevelGL.pde
similarity index 100%
rename from mode/examples/Topics/Shaders/LowLevelGL/LowLevelGL.pde
rename to processing/mode/examples/Topics/Shaders/LowLevelGL/LowLevelGL.pde
diff --git a/mode/examples/Topics/Shaders/LowLevelGL/data/frag.glsl b/processing/mode/examples/Topics/Shaders/LowLevelGL/data/frag.glsl
similarity index 100%
rename from mode/examples/Topics/Shaders/LowLevelGL/data/frag.glsl
rename to processing/mode/examples/Topics/Shaders/LowLevelGL/data/frag.glsl
diff --git a/mode/examples/Topics/Shaders/LowLevelGL/data/vert.glsl b/processing/mode/examples/Topics/Shaders/LowLevelGL/data/vert.glsl
similarity index 100%
rename from mode/examples/Topics/Shaders/LowLevelGL/data/vert.glsl
rename to processing/mode/examples/Topics/Shaders/LowLevelGL/data/vert.glsl
diff --git a/mode/examples/Topics/Shaders/ToonShading/ToonShading.pde b/processing/mode/examples/Topics/Shaders/ToonShading/ToonShading.pde
similarity index 100%
rename from mode/examples/Topics/Shaders/ToonShading/ToonShading.pde
rename to processing/mode/examples/Topics/Shaders/ToonShading/ToonShading.pde
diff --git a/mode/examples/Topics/Shaders/ToonShading/data/ToonFrag.glsl b/processing/mode/examples/Topics/Shaders/ToonShading/data/ToonFrag.glsl
similarity index 100%
rename from mode/examples/Topics/Shaders/ToonShading/data/ToonFrag.glsl
rename to processing/mode/examples/Topics/Shaders/ToonShading/data/ToonFrag.glsl
diff --git a/mode/examples/Topics/Shaders/ToonShading/data/ToonVert.glsl b/processing/mode/examples/Topics/Shaders/ToonShading/data/ToonVert.glsl
similarity index 100%
rename from mode/examples/Topics/Shaders/ToonShading/data/ToonVert.glsl
rename to processing/mode/examples/Topics/Shaders/ToonShading/data/ToonVert.glsl
diff --git a/mode/examples/Topics/Simulate/Chain/Chain.pde b/processing/mode/examples/Topics/Simulate/Chain/Chain.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/Chain/Chain.pde
rename to processing/mode/examples/Topics/Simulate/Chain/Chain.pde
diff --git a/mode/examples/Topics/Simulate/Flocking/Boid.pde b/processing/mode/examples/Topics/Simulate/Flocking/Boid.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/Flocking/Boid.pde
rename to processing/mode/examples/Topics/Simulate/Flocking/Boid.pde
diff --git a/mode/examples/Topics/Simulate/Flocking/Flock.pde b/processing/mode/examples/Topics/Simulate/Flocking/Flock.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/Flocking/Flock.pde
rename to processing/mode/examples/Topics/Simulate/Flocking/Flock.pde
diff --git a/mode/examples/Topics/Simulate/Flocking/Flocking.pde b/processing/mode/examples/Topics/Simulate/Flocking/Flocking.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/Flocking/Flocking.pde
rename to processing/mode/examples/Topics/Simulate/Flocking/Flocking.pde
diff --git a/mode/examples/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.pde b/processing/mode/examples/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.pde
rename to processing/mode/examples/Topics/Simulate/ForcesWithVectors/ForcesWithVectors.pde
diff --git a/mode/examples/Topics/Simulate/ForcesWithVectors/Liquid.pde b/processing/mode/examples/Topics/Simulate/ForcesWithVectors/Liquid.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/ForcesWithVectors/Liquid.pde
rename to processing/mode/examples/Topics/Simulate/ForcesWithVectors/Liquid.pde
diff --git a/mode/examples/Topics/Simulate/ForcesWithVectors/Mover.pde b/processing/mode/examples/Topics/Simulate/ForcesWithVectors/Mover.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/ForcesWithVectors/Mover.pde
rename to processing/mode/examples/Topics/Simulate/ForcesWithVectors/Mover.pde
diff --git a/mode/examples/Topics/Simulate/GravitationalAttraction3D/GravitationalAttraction3D.pde b/processing/mode/examples/Topics/Simulate/GravitationalAttraction3D/GravitationalAttraction3D.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/GravitationalAttraction3D/GravitationalAttraction3D.pde
rename to processing/mode/examples/Topics/Simulate/GravitationalAttraction3D/GravitationalAttraction3D.pde
diff --git a/mode/examples/Topics/Simulate/GravitationalAttraction3D/Planet.pde b/processing/mode/examples/Topics/Simulate/GravitationalAttraction3D/Planet.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/GravitationalAttraction3D/Planet.pde
rename to processing/mode/examples/Topics/Simulate/GravitationalAttraction3D/Planet.pde
diff --git a/mode/examples/Topics/Simulate/GravitationalAttraction3D/Sun.pde b/processing/mode/examples/Topics/Simulate/GravitationalAttraction3D/Sun.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/GravitationalAttraction3D/Sun.pde
rename to processing/mode/examples/Topics/Simulate/GravitationalAttraction3D/Sun.pde
diff --git a/mode/examples/Topics/Simulate/MultipleParticleSystems/CrazyParticle.pde b/processing/mode/examples/Topics/Simulate/MultipleParticleSystems/CrazyParticle.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/MultipleParticleSystems/CrazyParticle.pde
rename to processing/mode/examples/Topics/Simulate/MultipleParticleSystems/CrazyParticle.pde
diff --git a/mode/examples/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.pde b/processing/mode/examples/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.pde
rename to processing/mode/examples/Topics/Simulate/MultipleParticleSystems/MultipleParticleSystems.pde
diff --git a/mode/examples/Topics/Simulate/MultipleParticleSystems/Particle.pde b/processing/mode/examples/Topics/Simulate/MultipleParticleSystems/Particle.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/MultipleParticleSystems/Particle.pde
rename to processing/mode/examples/Topics/Simulate/MultipleParticleSystems/Particle.pde
diff --git a/mode/examples/Topics/Simulate/MultipleParticleSystems/ParticleSystem.pde b/processing/mode/examples/Topics/Simulate/MultipleParticleSystems/ParticleSystem.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/MultipleParticleSystems/ParticleSystem.pde
rename to processing/mode/examples/Topics/Simulate/MultipleParticleSystems/ParticleSystem.pde
diff --git a/mode/examples/Topics/Simulate/SimpleParticleSystem/Particle.pde b/processing/mode/examples/Topics/Simulate/SimpleParticleSystem/Particle.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/SimpleParticleSystem/Particle.pde
rename to processing/mode/examples/Topics/Simulate/SimpleParticleSystem/Particle.pde
diff --git a/mode/examples/Topics/Simulate/SimpleParticleSystem/ParticleSystem.pde b/processing/mode/examples/Topics/Simulate/SimpleParticleSystem/ParticleSystem.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/SimpleParticleSystem/ParticleSystem.pde
rename to processing/mode/examples/Topics/Simulate/SimpleParticleSystem/ParticleSystem.pde
diff --git a/mode/examples/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.pde b/processing/mode/examples/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.pde
rename to processing/mode/examples/Topics/Simulate/SimpleParticleSystem/SimpleParticleSystem.pde
diff --git a/mode/examples/Topics/Simulate/SmokeParticleSystem/Particle.pde b/processing/mode/examples/Topics/Simulate/SmokeParticleSystem/Particle.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/SmokeParticleSystem/Particle.pde
rename to processing/mode/examples/Topics/Simulate/SmokeParticleSystem/Particle.pde
diff --git a/mode/examples/Topics/Simulate/SmokeParticleSystem/ParticleSystem.pde b/processing/mode/examples/Topics/Simulate/SmokeParticleSystem/ParticleSystem.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/SmokeParticleSystem/ParticleSystem.pde
rename to processing/mode/examples/Topics/Simulate/SmokeParticleSystem/ParticleSystem.pde
diff --git a/mode/examples/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.pde b/processing/mode/examples/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.pde
rename to processing/mode/examples/Topics/Simulate/SmokeParticleSystem/SmokeParticleSystem.pde
diff --git a/mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.gif b/processing/mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.gif
similarity index 100%
rename from mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.gif
rename to processing/mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.gif
diff --git a/mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.png b/processing/mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.png
similarity index 100%
rename from mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.png
rename to processing/mode/examples/Topics/Simulate/SmokeParticleSystem/data/texture.png
diff --git a/mode/examples/Topics/Simulate/SoftBody/SoftBody.pde b/processing/mode/examples/Topics/Simulate/SoftBody/SoftBody.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/SoftBody/SoftBody.pde
rename to processing/mode/examples/Topics/Simulate/SoftBody/SoftBody.pde
diff --git a/mode/examples/Topics/Simulate/Spring/Spring.pde b/processing/mode/examples/Topics/Simulate/Spring/Spring.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/Spring/Spring.pde
rename to processing/mode/examples/Topics/Simulate/Spring/Spring.pde
diff --git a/mode/examples/Topics/Simulate/Springs/Springs.pde b/processing/mode/examples/Topics/Simulate/Springs/Springs.pde
similarity index 100%
rename from mode/examples/Topics/Simulate/Springs/Springs.pde
rename to processing/mode/examples/Topics/Simulate/Springs/Springs.pde
diff --git a/mode/examples/Topics/Textures/TextureCube/TextureCube.pde b/processing/mode/examples/Topics/Textures/TextureCube/TextureCube.pde
similarity index 100%
rename from mode/examples/Topics/Textures/TextureCube/TextureCube.pde
rename to processing/mode/examples/Topics/Textures/TextureCube/TextureCube.pde
diff --git a/mode/examples/Topics/Textures/TextureCube/data/berlin-1.jpg b/processing/mode/examples/Topics/Textures/TextureCube/data/berlin-1.jpg
similarity index 100%
rename from mode/examples/Topics/Textures/TextureCube/data/berlin-1.jpg
rename to processing/mode/examples/Topics/Textures/TextureCube/data/berlin-1.jpg
diff --git a/mode/examples/Topics/Textures/TextureCube/data/uvtex.jpg b/processing/mode/examples/Topics/Textures/TextureCube/data/uvtex.jpg
similarity index 100%
rename from mode/examples/Topics/Textures/TextureCube/data/uvtex.jpg
rename to processing/mode/examples/Topics/Textures/TextureCube/data/uvtex.jpg
diff --git a/mode/examples/Topics/Textures/TextureCylinder/TextureCylinder.pde b/processing/mode/examples/Topics/Textures/TextureCylinder/TextureCylinder.pde
similarity index 100%
rename from mode/examples/Topics/Textures/TextureCylinder/TextureCylinder.pde
rename to processing/mode/examples/Topics/Textures/TextureCylinder/TextureCylinder.pde
diff --git a/mode/examples/Topics/Textures/TextureCylinder/data/berlin-1.jpg b/processing/mode/examples/Topics/Textures/TextureCylinder/data/berlin-1.jpg
similarity index 100%
rename from mode/examples/Topics/Textures/TextureCylinder/data/berlin-1.jpg
rename to processing/mode/examples/Topics/Textures/TextureCylinder/data/berlin-1.jpg
diff --git a/mode/examples/Topics/Textures/TextureQuad/TextureQuad.pde b/processing/mode/examples/Topics/Textures/TextureQuad/TextureQuad.pde
similarity index 100%
rename from mode/examples/Topics/Textures/TextureQuad/TextureQuad.pde
rename to processing/mode/examples/Topics/Textures/TextureQuad/TextureQuad.pde
diff --git a/mode/examples/Topics/Textures/TextureQuad/data/berlin-1.jpg b/processing/mode/examples/Topics/Textures/TextureQuad/data/berlin-1.jpg
similarity index 100%
rename from mode/examples/Topics/Textures/TextureQuad/data/berlin-1.jpg
rename to processing/mode/examples/Topics/Textures/TextureQuad/data/berlin-1.jpg
diff --git a/mode/examples/Topics/Textures/TextureSphere/TextureSphere.pde b/processing/mode/examples/Topics/Textures/TextureSphere/TextureSphere.pde
similarity index 100%
rename from mode/examples/Topics/Textures/TextureSphere/TextureSphere.pde
rename to processing/mode/examples/Topics/Textures/TextureSphere/TextureSphere.pde
diff --git a/mode/examples/Topics/Textures/TextureSphere/data/world32k.jpg b/processing/mode/examples/Topics/Textures/TextureSphere/data/world32k.jpg
similarity index 100%
rename from mode/examples/Topics/Textures/TextureSphere/data/world32k.jpg
rename to processing/mode/examples/Topics/Textures/TextureSphere/data/world32k.jpg
diff --git a/mode/examples/Topics/Textures/TextureTriangle/TextureTriangle.pde b/processing/mode/examples/Topics/Textures/TextureTriangle/TextureTriangle.pde
similarity index 100%
rename from mode/examples/Topics/Textures/TextureTriangle/TextureTriangle.pde
rename to processing/mode/examples/Topics/Textures/TextureTriangle/TextureTriangle.pde
diff --git a/mode/examples/Topics/Textures/TextureTriangle/data/berlin-1.jpg b/processing/mode/examples/Topics/Textures/TextureTriangle/data/berlin-1.jpg
similarity index 100%
rename from mode/examples/Topics/Textures/TextureTriangle/data/berlin-1.jpg
rename to processing/mode/examples/Topics/Textures/TextureTriangle/data/berlin-1.jpg
diff --git a/mode/examples/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.pde b/processing/mode/examples/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.pde
similarity index 100%
rename from mode/examples/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.pde
rename to processing/mode/examples/Topics/Vectors/AccelerationWithVectors/AccelerationWithVectors.pde
diff --git a/mode/examples/Topics/Vectors/AccelerationWithVectors/Mover.pde b/processing/mode/examples/Topics/Vectors/AccelerationWithVectors/Mover.pde
similarity index 100%
rename from mode/examples/Topics/Vectors/AccelerationWithVectors/Mover.pde
rename to processing/mode/examples/Topics/Vectors/AccelerationWithVectors/Mover.pde
diff --git a/mode/examples/Topics/Vectors/BouncingBall/BouncingBall.pde b/processing/mode/examples/Topics/Vectors/BouncingBall/BouncingBall.pde
similarity index 100%
rename from mode/examples/Topics/Vectors/BouncingBall/BouncingBall.pde
rename to processing/mode/examples/Topics/Vectors/BouncingBall/BouncingBall.pde
diff --git a/mode/examples/Topics/Vectors/Normalize/Normalize.pde b/processing/mode/examples/Topics/Vectors/Normalize/Normalize.pde
similarity index 100%
rename from mode/examples/Topics/Vectors/Normalize/Normalize.pde
rename to processing/mode/examples/Topics/Vectors/Normalize/Normalize.pde
diff --git a/mode/examples/Topics/Vectors/VectorMath/VectorMath.pde b/processing/mode/examples/Topics/Vectors/VectorMath/VectorMath.pde
similarity index 100%
rename from mode/examples/Topics/Vectors/VectorMath/VectorMath.pde
rename to processing/mode/examples/Topics/Vectors/VectorMath/VectorMath.pde
diff --git a/mode/examples/Topics/Wallpapers/Circles/Circles.pde b/processing/mode/examples/Topics/Wallpapers/Circles/Circles.pde
similarity index 100%
rename from mode/examples/Topics/Wallpapers/Circles/Circles.pde
rename to processing/mode/examples/Topics/Wallpapers/Circles/Circles.pde
diff --git a/mode/examples/Topics/Wallpapers/Circles/code/sketch.properties b/processing/mode/examples/Topics/Wallpapers/Circles/code/sketch.properties
similarity index 100%
rename from mode/examples/Topics/Wallpapers/Circles/code/sketch.properties
rename to processing/mode/examples/Topics/Wallpapers/Circles/code/sketch.properties
diff --git a/mode/examples/Topics/Watchfaces/WatchFace/WatchFace.pde b/processing/mode/examples/Topics/Watchfaces/WatchFace/WatchFace.pde
similarity index 100%
rename from mode/examples/Topics/Watchfaces/WatchFace/WatchFace.pde
rename to processing/mode/examples/Topics/Watchfaces/WatchFace/WatchFace.pde
diff --git a/mode/examples/Topics/Watchfaces/WatchFace/code/sketch.properties b/processing/mode/examples/Topics/Watchfaces/WatchFace/code/sketch.properties
similarity index 100%
rename from mode/examples/Topics/Watchfaces/WatchFace/code/sketch.properties
rename to processing/mode/examples/Topics/Watchfaces/WatchFace/code/sketch.properties
diff --git a/processing/mode/icons/launcher_144.png b/processing/mode/icons/launcher_144.png
new file mode 100644
index 000000000..78fed6592
Binary files /dev/null and b/processing/mode/icons/launcher_144.png differ
diff --git a/processing/mode/icons/launcher_192.png b/processing/mode/icons/launcher_192.png
new file mode 100644
index 000000000..48d3a34fe
Binary files /dev/null and b/processing/mode/icons/launcher_192.png differ
diff --git a/processing/mode/icons/launcher_36.png b/processing/mode/icons/launcher_36.png
new file mode 100644
index 000000000..e276bbd6f
Binary files /dev/null and b/processing/mode/icons/launcher_36.png differ
diff --git a/processing/mode/icons/launcher_48.png b/processing/mode/icons/launcher_48.png
new file mode 100644
index 000000000..9dde1a58f
Binary files /dev/null and b/processing/mode/icons/launcher_48.png differ
diff --git a/processing/mode/icons/launcher_72.png b/processing/mode/icons/launcher_72.png
new file mode 100644
index 000000000..ff769c587
Binary files /dev/null and b/processing/mode/icons/launcher_72.png differ
diff --git a/processing/mode/icons/launcher_96.png b/processing/mode/icons/launcher_96.png
new file mode 100644
index 000000000..d9b25dba2
Binary files /dev/null and b/processing/mode/icons/launcher_96.png differ
diff --git a/processing/mode/icons/preview_circular.png b/processing/mode/icons/preview_circular.png
new file mode 100644
index 000000000..40a11bf0d
Binary files /dev/null and b/processing/mode/icons/preview_circular.png differ
diff --git a/processing/mode/icons/preview_rectangular.png b/processing/mode/icons/preview_rectangular.png
new file mode 100644
index 000000000..9c9d9ed41
Binary files /dev/null and b/processing/mode/icons/preview_rectangular.png differ
diff --git a/mode/keywords.txt b/processing/mode/keywords.txt
similarity index 100%
rename from mode/keywords.txt
rename to processing/mode/keywords.txt
diff --git a/mode/languages/mode.properties b/processing/mode/languages/mode.properties
similarity index 94%
rename from mode/languages/mode.properties
rename to processing/mode/languages/mode.properties
index 35500f539..a87ae41d9 100644
--- a/mode/languages/mode.properties
+++ b/processing/mode/languages/mode.properties
@@ -95,15 +95,15 @@ android_keystore.error.cannot_create_keystore = The keystore could not be create
# Android Mode
android_mode.dialog.watchface_debug_title = Is the watch connected to the computer?
-android_mode.dialog.watchface_debug_body = Processing will install watch faces on a smartwatch either over Wi-Fi or via Bluetooth, in which case the watch needs to be paired with a phone.
Read this guide on debugging an Android Wear App for more details.
+android_mode.dialog.watchface_debug_body = Processing will install watch faces on a smartwatch either over Wi-Fi or via Bluetooth, in which case the watch needs to be paired with a phone.
Read this guide on debugging an Android Wear App for more details.
android_mode.dialog.wallpaper_installed_title = Wallpaper installed!
android_mode.dialog.wallpaper_installed_body = Processing just built and installed your sketch as a live wallpaper on the selected device.
You need to open the wallpaper picker in the device in order to select it as the new background.
android_mode.dialog.watchface_installed_title = Watch face installed!
android_mode.dialog.watchface_installed_body = Processing just built and installed your sketch as a watch face on the selected device.
You need to add it as a favourite watch face on the device and then select it from the watch face picker in order to run it.
android_mode.dialog.cannot_export_package_title = Cannot complete export...
-android_mode.dialog.cannot_export_package_body = The sketch still has the default package name. Not good, since this name will uniquely identify your app on the Play store... for ever! Come up with a different package name and write in the AndroidManifest.xml file in the sketch folder, after the "package=" attribute inside the manifest tag, which also contains version code and name. Once you have done that, try exporting the sketch again.
For more info on distributing apps from Processing,
check this online tutorial.
+android_mode.dialog.cannot_export_package_body = The sketch still has the default package name. Not good, since this name will uniquely identify your app on the Play store... for ever! Come up with a different package name and write in the AndroidManifest.xml file in the sketch folder, after the "package=" attribute inside the manifest tag, which also contains version code and name. Once you have done that, try exporting the sketch again.
For more info on distributing apps from Processing,
check this online tutorial.
android_mode.dialog.cannot_use_default_icons_title = Cannot complete export...
-android_mode.dialog.cannot_use_default_icons_body = The sketch does not include all required app icons. Processing could use its default set of Android icons, which are okay to test the app on your device, but a bad idea to distribute it on the Play store. Create a full set of unique icons for your app, and copy them into the sketch folder. Once you have done that, try exporting the sketch again.
For more info on distributing apps from Processing,
check this online tutorial.
+android_mode.dialog.cannot_use_default_icons_body = The sketch does not include all required app icons. Processing could use its default set of Android icons, which are okay to test the app on your device, but a bad idea to distribute it on the Play store. Create a full set of unique icons for your app, and copy them into the sketch folder. Once you have done that, try exporting the sketch again.
For more info on distributing apps from Processing,
check this online tutorial.
android_mode.warn.cannot_load_sdk_title = Bad news...
android_mode.warn.cannot_load_sdk_body = The Android SDK could not be loaded.\nThe Android Mode will be disabled.
android_mode.info.cannot_open_sdk_path = "Android SDK path couldn't be opened.";
@@ -159,9 +159,9 @@ android_sdk.dialog.found_installed_sdk_body = Processing found a valid Android S
android_sdk.option.use_existing_sdk = Use existing SDK
android_sdk.option.download_new_sdk = Download new SDK
android_sdk.dialog.cannot_find_sdk_title = Cannot find an Android SDK...
-android_sdk.dialog.cannot_find_sdk_body = Processing did not find an Android SDK on this computer. If there is one, and you know where it is, click "Locate SDK path" to select it, or "Download SDK" to let Processing download the SDK automatically.
If you want to download the SDK manually, you can get the command line tools from here. Make sure to install the SDK platform for API %s.
+android_sdk.dialog.cannot_find_sdk_body = Processing did not find an Android SDK on this computer. If there is one, and you know where it is, click "Locate SDK path" to select it, or "Download SDK" to let Processing download the SDK automatically.
If you want to download the SDK manually, you can get the command line tools from here. Make sure to install the SDK platform for API %s.
android_sdk.dialog.invalid_sdk_title = Android SDK is not valid...
-android_sdk.dialog.invalid_sdk_body = Processing found an Android SDK, but is not valid. It could be missing some files, or might not be including the required platform for API %s.
If a valid SDK is available in a different location, click "Locate SDK path" to select it, or "Download SDK" to let Processing download the SDK automatically.
If you want to download the SDK manually, you can get the command line tools from here. Make sure to install the SDK platform for API %s.
+android_sdk.dialog.invalid_sdk_body = Processing found an Android SDK, but is not valid. It could be missing some files, or might not be including the required platform for API %s.
If a valid SDK is available in a different location, click "Locate SDK path" to select it, or "Download SDK" to let Processing download the SDK automatically.
If you want to download the SDK manually, you can get the command line tools from here. Make sure to install the SDK platform for API %s.
android_sdk.option.download_sdk = Download SDK automatically
android_sdk.option.locate_sdk = Locate SDK path manually
android_sdk.dialog.download_phone_image_title = Download phone system image?
@@ -173,18 +173,18 @@ android_sdk.error.sdk_selection_canceled = User canceled attempt to find SDK
android_sdk.error.sdk_download_canceled = User canceled SDK download
android_sdk.error.sdk_download_failed = SDK could not be downloaded
android_sdk.dialog.sdk_installed_title = SDK installed!
-android_sdk.dialog.sdk_installed_body = Processing just downloaded and installed the Android SDK successfully. The Android mode is now ready to use!
For documentation, examples, and tutorials, visit the Processing for Android website, and if you updated from version 3 of the mode, check the what's new page.
-android_sdk.dialog.install_usb_driver =
If you are planning to use Google Nexus devices, then you need the Google USB Driver to connect them to Processing. You will have to install the driver manually following these instructions.
The installation files are available in this folder:%s
+android_sdk.dialog.sdk_installed_body = Processing just downloaded and installed the Android SDK successfully. The Android mode is now ready to use!
For documentation, examples, and tutorials, visit the Processing for Android website, and if you updated from version 3 of the mode, check the what's new page.
+android_sdk.dialog.install_usb_driver =
If you are planning to use Google Nexus devices, then you need the Google USB Driver to connect them to Processing. You will have to install the driver manually following these instructions.
The installation files are available in this folder:%s
android_sdk.dialog.sdk_license_rejected_title = SDK license not accepted
android_sdk.dialog.sdk_license_rejected_body = The Android SDK was installed, but will not be usable. You can accept the license at a later time by opening a terminal, changing to the SDK folder, and then running the following command:
tools/bin/sdkmanager --licenses
android_sdk.dialog.32bit_system_title = System is 32 bit...
-android_sdk.dialog.32bit_system_body = The Android SDK no longer includes 32 bit platform tools (adb, etc.), and so they will not work.
This thread provides some possible workarounds.
+android_sdk.dialog.32bit_system_body = The Android SDK no longer includes 32 bit platform tools (adb, etc.), and so they will not work.
This thread provides some possible workarounds.
android_sdk.error.emulator_download_canceled = User canceled emulator download
android_sdk.error.emulator_download_failed = Emulator could not be downloaded
android_sdk.dialog.using_existing_sdk_title = SDK configured!
-android_sdk.dialog.using_existing_sdk_body = Processing will use the existing Android SDK. The Android mode is now ready to use!
For documentation, examples, and tutorials, visit the Processing for Android website, and if you updated from version 3 of the mode, check the what's new page.
+android_sdk.dialog.using_existing_sdk_body = Processing will use the existing Android SDK. The Android mode is now ready to use!
For documentation, examples, and tutorials, visit the Processing for Android website, and if you updated from version 3 of the mode, check the what's new page.
android_sdk.dialog.accept_sdk_license_title = Accept SDK license?
-android_sdk.dialog.accept_sdk_license_body = You need to accept the terms of the Android SDK license from Google in order to use the SDK. Read the license from here.
+android_sdk.dialog.accept_sdk_license_body = You need to accept the terms of the Android SDK license from Google in order to use the SDK. Read the license from here.
android_sdk.warn.cannot_run_adb_title = Trouble with adb!
android_sdk.warn.cannot_run_adb_body = Could not run the adb tool from the Android SDK.\nOne possibility is that its executable permission\nis not properly set. You can try setting this\npermission manually, or re-installing the SDK.\n\nThe mode will be disabled until this problem is fixed.\n
android_sdk.error.missing_sdk_folder = %s does not exist
@@ -213,7 +213,7 @@ android_avd.error.cannot_load_avd_body = This could mean that the Android tools
android_avd.error.sdk_wrong_install_title = The SDK is not properly installed
-android_avd.error.sdk_wrong_install_body = Please re-read the installation instructions for Processing
found in this online tutorial.
+android_avd.error.sdk_wrong_install_body = Please re-read the installation instructions for Processing
found in this online tutorial.
# ---------------------------------------
# Devices
@@ -222,7 +222,7 @@ android_devices.error.cannot_get_device_list = Received unfamiliar output from \
android_devices.error.no_permissions_title = Found devices with no permissions!
-android_devices.error.no_permissions_body = Make sure that the device has USB debugging enabled, and that the required USB drivers are installed on Windows, and that permissions are properly configured on Linux. Also, on Linux, don't set the USB configuration to "charging" while debugging.
Read this guide on running apps on hardware device for more details.
+android_devices.error.no_permissions_body = Make sure that the device has USB debugging enabled, and that the required USB drivers are installed on Windows, and that permissions are properly configured on Linux. Also, on Linux, don't set the USB configuration to "charging" while debugging.
Read this guide on running apps on hardware device for more details.
private static final String DEVICE_PERMISSIONS_URL =
"https://developer.android.com/studio/run/device.html";
@@ -235,7 +235,7 @@ android_devices.error.no_permissions_body = Make sure that the device has USB de
# ---------------------------------------
# Keystore manager
-keystore_manager.top_label = Please enter the information below so we can generate a private key for you.
Fields marked bold are required, though you may consider to fill some of optional fields below those to avoid potential problems.
More about private keys can be found here.