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 100% rename from debug/apps/arscene/src/main/java/arscene/MainActivity.java rename to apps/arscene/src/main/java/arscene/MainActivity.java 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 93% rename from debug/apps/vrcube/build.gradle rename to apps/vrcube/build.gradle index 0125b0655..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 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/debug/apps/vrcube/src/main/java/vrcube/MainActivity.java b/apps/vrcube/src/main/java/vrcube/MainActivity.java similarity index 100% rename from debug/apps/vrcube/src/main/java/vrcube/MainActivity.java rename to apps/vrcube/src/main/java/vrcube/MainActivity.java 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 9052869ed..5bb77278f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,175 +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/libs"), - file("${root}/libraries/vr/libs")) - 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/build.gradle b/debug/build.gradle deleted file mode 100644 index d8dc6e328..000000000 --- a/debug/build.gradle +++ /dev/null @@ -1,35 +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' } - - mavenCentral() - google() - } -} - -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/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 81% rename from debug/libs/google-vr/build.gradle rename to libs/google-vr/build.gradle index cc436f20f..9d7c8f77b 100644 --- a/debug/libs/google-vr/build.gradle +++ b/libs/google-vr/build.gradle @@ -2,6 +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')) \ No newline at end of file +artifacts.add("default", file('sdk-common-1.180.0.aar')) +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 61% rename from mode/libraries/ar/src/processing/ar/ARGraphics.java rename to libs/processing-ar/src/main/java/processing/ar/ARGraphics.java index 736194eca..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() { } @@ -218,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)); } @@ -232,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; } @@ -279,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); } @@ -332,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], @@ -344,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; @@ -436,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); @@ -450,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/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 89138c841..000000000 --- a/mode/libraries/vr/build.gradle +++ /dev/null @@ -1,104 +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/google-vr", 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/google-vr/build.gradle b/mode/libraries/vr/libs/google-vr/build.gradle deleted file mode 100644 index cc436f20f..000000000 --- a/mode/libraries/vr/libs/google-vr/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -// Dummy Gradle project to be able to import local aar files: -// 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')) \ No newline at end of file diff --git a/mode/libraries/vr/libs/google-vr/sdk-audio-1.180.0.aar b/mode/libraries/vr/libs/google-vr/sdk-audio-1.180.0.aar deleted file mode 100644 index 007485cf4..000000000 Binary files a/mode/libraries/vr/libs/google-vr/sdk-audio-1.180.0.aar and /dev/null differ diff --git a/mode/libraries/vr/libs/google-vr/sdk-base-1.180.0.aar b/mode/libraries/vr/libs/google-vr/sdk-base-1.180.0.aar deleted file mode 100644 index e9047d226..000000000 Binary files a/mode/libraries/vr/libs/google-vr/sdk-base-1.180.0.aar and /dev/null differ diff --git a/mode/libraries/vr/libs/google-vr/sdk-common-1.180.0.aar b/mode/libraries/vr/libs/google-vr/sdk-common-1.180.0.aar deleted file mode 100644 index 7ba5cff92..000000000 Binary files a/mode/libraries/vr/libs/google-vr/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/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 100% rename from mode/.project rename to processing/mode/.project 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/mode/icons/launcher_144.png b/processing/mode/icons/launcher_144.png similarity index 100% rename from mode/icons/launcher_144.png rename to processing/mode/icons/launcher_144.png diff --git a/mode/icons/launcher_192.png b/processing/mode/icons/launcher_192.png similarity index 100% rename from mode/icons/launcher_192.png rename to processing/mode/icons/launcher_192.png diff --git a/mode/icons/launcher_36.png b/processing/mode/icons/launcher_36.png similarity index 100% rename from mode/icons/launcher_36.png rename to processing/mode/icons/launcher_36.png diff --git a/mode/icons/launcher_48.png b/processing/mode/icons/launcher_48.png similarity index 100% rename from mode/icons/launcher_48.png rename to processing/mode/icons/launcher_48.png diff --git a/mode/icons/launcher_72.png b/processing/mode/icons/launcher_72.png similarity index 100% rename from mode/icons/launcher_72.png rename to processing/mode/icons/launcher_72.png diff --git a/mode/icons/launcher_96.png b/processing/mode/icons/launcher_96.png similarity index 100% rename from mode/icons/launcher_96.png rename to processing/mode/icons/launcher_96.png diff --git a/mode/icons/preview_circular.png b/processing/mode/icons/preview_circular.png similarity index 100% rename from mode/icons/preview_circular.png rename to processing/mode/icons/preview_circular.png diff --git a/mode/icons/preview_rectangular.png b/processing/mode/icons/preview_rectangular.png similarity index 100% rename from mode/icons/preview_rectangular.png rename to processing/mode/icons/preview_rectangular.png 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 100% rename from mode/languages/mode.properties rename to processing/mode/languages/mode.properties diff --git a/mode/languages/mode_ko.properties b/processing/mode/languages/mode_ko.properties similarity index 100% rename from mode/languages/mode_ko.properties rename to processing/mode/languages/mode_ko.properties diff --git a/mode/languages/mode_zh-Hans.properties b/processing/mode/languages/mode_zh-Hans.properties similarity index 100% rename from mode/languages/mode_zh-Hans.properties rename to processing/mode/languages/mode_zh-Hans.properties diff --git a/mode/libraries/ar/README.md b/processing/mode/libraries/ar/README.md similarity index 100% rename from mode/libraries/ar/README.md rename to processing/mode/libraries/ar/README.md diff --git a/processing/mode/libraries/ar/build.gradle b/processing/mode/libraries/ar/build.gradle new file mode 100644 index 000000000..5b47b90b4 --- /dev/null +++ b/processing/mode/libraries/ar/build.gradle @@ -0,0 +1,123 @@ +import java.nio.file.Files +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; + +plugins { + id 'java-library' + id 'maven-publish' +} + +dependencies { + compileOnly name: "android" + compileOnly "org.p5android:processing-core:${modeVersion}" + implementation "com.google.ar:core:${garVersion}" +} + +sourceSets { + main { + java.srcDir("../../../../libs/processing-ar/src/main/java/") + resources { + srcDir("../../../../libs/processing-ar/src/main/") + exclude "AndroidManifest.xml" + exclude "**/java/**" + } + } +} + +java { + withSourcesJar() +} + +tasks.named('jar') { + duplicatesStrategy = DuplicatesStrategy.INCLUDE +} + +tasks.register("sourceJar", Jar) { + from sourceSets.main.allJava + archiveClassifier.set("sources") +} + +// 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 +} + +artifacts { +// archives javadocJar + archives sourceJar +} + +tasks.jar { + doLast { + ant.checksum file: archiveFile.get().asFile + } +} + +tasks.clean { + doFirst { + delete "dist" + delete "library/ar.jar" + } +} + +tasks.compileJava { + doFirst { + String[] deps = ["core.jar"] + File libFolder = file("library") + libFolder.mkdirs() + deps.each { String fn -> + Files.copy( + file("${rootDir}/build/libs/" + fn).toPath(), + file("library/" + fn).toPath(), + REPLACE_EXISTING + ) + } + } +} + +tasks.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 + def arJarFile = file("$buildDir/libs/ar.jar") + if (arJarFile.exists()) { + Files.copy(arJarFile.toPath(), arJar.toPath(), REPLACE_EXISTING) + } + + // Rename artifacts for Maven publishing + def processingArJar = file("$buildDir/libs/processing-ar-${arLibVersion}.jar") + if (arJarFile.exists()) { + Files.move(arJarFile.toPath(), processingArJar.toPath(), REPLACE_EXISTING) + } + + def processingArSourcesJar = file("$buildDir/libs/processing-ar-${arLibVersion}-sources.jar") + def arSourcesJar = file("$buildDir/libs/ar-sources.jar") + if (arSourcesJar.exists()) { + Files.move(arSourcesJar.toPath(), processingArSourcesJar.toPath(), REPLACE_EXISTING) + } + + def arMd5File = file("$buildDir/libs/ar.jar.MD5") + def processingArMd5File = file("$buildDir/libs/processing-ar-${arLibVersion}.jar.md5") + if (arMd5File.exists()) { + Files.move(arMd5File.toPath(), processingArMd5File.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/ar/examples/Cubes/Cubes.pde b/processing/mode/libraries/ar/examples/Cubes/Cubes.pde similarity index 100% rename from mode/libraries/ar/examples/Cubes/Cubes.pde rename to processing/mode/libraries/ar/examples/Cubes/Cubes.pde diff --git a/mode/libraries/ar/examples/Cubes/code/sketch.properties b/processing/mode/libraries/ar/examples/Cubes/code/sketch.properties similarity index 100% rename from mode/libraries/ar/examples/Cubes/code/sketch.properties rename to processing/mode/libraries/ar/examples/Cubes/code/sketch.properties diff --git a/processing/mode/libraries/ar/examples/ImageMarkers/ImageMarkers.pde b/processing/mode/libraries/ar/examples/ImageMarkers/ImageMarkers.pde new file mode 100644 index 000000000..6b346c7f2 --- /dev/null +++ b/processing/mode/libraries/ar/examples/ImageMarkers/ImageMarkers.pde @@ -0,0 +1,43 @@ +import processing.ar.*; + +ARTracker tracker; +ARAnchor anchor; +PShape earth; + +void setup() { + fullScreen(AR); + + tracker = new ARTracker(this); + + PImage earthImg = loadImage("earth.jpg"); + tracker.start(); + + // Add the image to use as a marker to the AR tracker + tracker.addImage("earth", earthImg); + + // If you know the size (in meters) of the image in the physical space, + // you can specify it in the addImage(), this is optional but it would + // speed up the detection since the AR library will know the size of the + // marker beforehand + // tracker.addImage("earth", earthImg, 0.25); + + earth = createShape(SPHERE, 0.15); +} + +void draw() { + lights(); + + if (mousePressed) { + // Create new anchor at the current touch point + if (anchor != null) anchor.dispose(); + ARTrackable hit = tracker.get(mouseX, mouseY); + if (hit != null && hit.isImage() && hit.getName().equals("earth")) anchor = new ARAnchor(hit); + else anchor = null; + } + + if (anchor != null) { + anchor.attach(); + shape(earth); + anchor.detach(); + } +} \ No newline at end of file diff --git a/mode/libraries/ar/examples/ImportObj/code/sketch.properties b/processing/mode/libraries/ar/examples/ImageMarkers/code/sketch.properties similarity index 100% rename from mode/libraries/ar/examples/ImportObj/code/sketch.properties rename to processing/mode/libraries/ar/examples/ImageMarkers/code/sketch.properties diff --git a/processing/mode/libraries/ar/examples/ImageMarkers/data/earth.jpg b/processing/mode/libraries/ar/examples/ImageMarkers/data/earth.jpg new file mode 100644 index 000000000..73ebe8431 Binary files /dev/null and b/processing/mode/libraries/ar/examples/ImageMarkers/data/earth.jpg differ diff --git a/mode/libraries/ar/examples/ImportObj/ImportObj.pde b/processing/mode/libraries/ar/examples/ImportObj/ImportObj.pde similarity index 100% rename from mode/libraries/ar/examples/ImportObj/ImportObj.pde rename to processing/mode/libraries/ar/examples/ImportObj/ImportObj.pde diff --git a/processing/mode/libraries/ar/examples/ImportObj/code/sketch.properties b/processing/mode/libraries/ar/examples/ImportObj/code/sketch.properties new file mode 100644 index 000000000..db8eaa0b5 --- /dev/null +++ b/processing/mode/libraries/ar/examples/ImportObj/code/sketch.properties @@ -0,0 +1 @@ +component=ar diff --git a/mode/libraries/ar/examples/ImportObj/data/grey.png b/processing/mode/libraries/ar/examples/ImportObj/data/grey.png similarity index 100% rename from mode/libraries/ar/examples/ImportObj/data/grey.png rename to processing/mode/libraries/ar/examples/ImportObj/data/grey.png diff --git a/mode/libraries/ar/examples/ImportObj/data/materials.mtl b/processing/mode/libraries/ar/examples/ImportObj/data/materials.mtl similarity index 100% rename from mode/libraries/ar/examples/ImportObj/data/materials.mtl rename to processing/mode/libraries/ar/examples/ImportObj/data/materials.mtl diff --git a/mode/libraries/ar/examples/ImportObj/data/model.obj b/processing/mode/libraries/ar/examples/ImportObj/data/model.obj similarity index 100% rename from mode/libraries/ar/examples/ImportObj/data/model.obj rename to processing/mode/libraries/ar/examples/ImportObj/data/model.obj diff --git a/mode/libraries/ar/examples/Spheres/Spheres.pde b/processing/mode/libraries/ar/examples/Spheres/Spheres.pde similarity index 100% rename from mode/libraries/ar/examples/Spheres/Spheres.pde rename to processing/mode/libraries/ar/examples/Spheres/Spheres.pde diff --git a/mode/libraries/ar/examples/Spheres/code/sketch.properties b/processing/mode/libraries/ar/examples/Spheres/code/sketch.properties similarity index 100% rename from mode/libraries/ar/examples/Spheres/code/sketch.properties rename to processing/mode/libraries/ar/examples/Spheres/code/sketch.properties diff --git a/mode/libraries/ar/library.properties b/processing/mode/libraries/ar/library.properties similarity index 100% rename from mode/libraries/ar/library.properties rename to processing/mode/libraries/ar/library.properties diff --git a/mode/libraries/vr/README.md b/processing/mode/libraries/vr/README.md similarity index 100% rename from mode/libraries/vr/README.md rename to processing/mode/libraries/vr/README.md diff --git a/processing/mode/libraries/vr/build.gradle b/processing/mode/libraries/vr/build.gradle new file mode 100644 index 000000000..b223c4910 --- /dev/null +++ b/processing/mode/libraries/vr/build.gradle @@ -0,0 +1,132 @@ +import java.nio.file.Files +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING + +plugins { + id 'java-library' + id 'maven-publish' +} + +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 + implementation fileTree(dir: "../../../../libs/google-vr/", include: ["*.aar"]) +} + +sourceSets { + main { + java.srcDir("../../../../libs/processing-vr/src/main/java/") + resources { + srcDir("../../../../libs/processing-vr/src/main/") + exclude "AndroidManifest.xml" + exclude "**/java/**" + } + } +} + +java { + withSourcesJar() +} + +tasks.named('jar') { + duplicatesStrategy = DuplicatesStrategy.INCLUDE +} + +tasks.register("sourceJar", Jar) { + from sourceSets.main.allJava + archiveClassifier.set("sources") +} + +// 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 +} + +artifacts { +// archives javadocJar + archives sourceJar +} + +tasks.jar { + doLast { + ant.checksum file: archiveFile.get().asFile + } +} + +tasks.clean { + doFirst { + delete "dist" + delete "library/vr.jar" + } +} + +tasks.compileJava { + doFirst { + String[] deps = ["sdk-audio.jar", + "sdk-base.jar", + "sdk-common.jar"] + File libFolder = file("library") + libFolder.mkdirs() + deps.each { String fn -> + Files.copy( + file("${rootDir}/build/libs/" + fn).toPath(), + file("library/" + fn).toPath(), + REPLACE_EXISTING + ) + } + } +} + +tasks.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 + def vrJarFile = file("$buildDir/libs/vr.jar") + if (vrJarFile.exists()) { + Files.copy(vrJarFile.toPath(), vrJar.toPath(), REPLACE_EXISTING) + } + + // Renaming artifacts for maven publishing + def processingVrJar = file("$buildDir/libs/processing-vr-${vrLibVersion}.jar") + if (vrJarFile.exists()) { + Files.move(vrJarFile.toPath(), processingVrJar.toPath(), REPLACE_EXISTING) + } + + def processingVrSourcesJar = file("$buildDir/libs/processing-vr-${vrLibVersion}-sources.jar") + def vrSourcesJar = file("$buildDir/libs/vr-sources.jar") + if (vrSourcesJar.exists()) { + Files.move(vrSourcesJar.toPath(), processingVrSourcesJar.toPath(), REPLACE_EXISTING) + } + + def vrMd5File = file("$buildDir/libs/vr.jar.MD5") + def processingVrMd5File = file("$buildDir/libs/processing-vr-${vrLibVersion}.jar.md5") + if (vrMd5File.exists()) { + Files.move(vrMd5File.toPath(), processingVrMd5File.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/examples/Cube/Cube.pde b/processing/mode/libraries/vr/examples/Cube/Cube.pde similarity index 100% rename from mode/libraries/vr/examples/Cube/Cube.pde rename to processing/mode/libraries/vr/examples/Cube/Cube.pde diff --git a/mode/libraries/vr/examples/Cube/code/sketch.properties b/processing/mode/libraries/vr/examples/Cube/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/Cube/code/sketch.properties rename to processing/mode/libraries/vr/examples/Cube/code/sketch.properties diff --git a/mode/libraries/vr/examples/GenerateRay/GenerateRay.pde b/processing/mode/libraries/vr/examples/GenerateRay/GenerateRay.pde similarity index 100% rename from mode/libraries/vr/examples/GenerateRay/GenerateRay.pde rename to processing/mode/libraries/vr/examples/GenerateRay/GenerateRay.pde diff --git a/mode/libraries/vr/examples/GenerateRay/code/sketch.properties b/processing/mode/libraries/vr/examples/GenerateRay/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/GenerateRay/code/sketch.properties rename to processing/mode/libraries/vr/examples/GenerateRay/code/sketch.properties diff --git a/mode/libraries/vr/examples/IntersectsBox/IntersectsBox.pde b/processing/mode/libraries/vr/examples/IntersectsBox/IntersectsBox.pde similarity index 100% rename from mode/libraries/vr/examples/IntersectsBox/IntersectsBox.pde rename to processing/mode/libraries/vr/examples/IntersectsBox/IntersectsBox.pde diff --git a/mode/libraries/vr/examples/IntersectsBox/code/sketch.properties b/processing/mode/libraries/vr/examples/IntersectsBox/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/IntersectsBox/code/sketch.properties rename to processing/mode/libraries/vr/examples/IntersectsBox/code/sketch.properties diff --git a/mode/libraries/vr/examples/IntersectsPlane/IntersectsPlane.pde b/processing/mode/libraries/vr/examples/IntersectsPlane/IntersectsPlane.pde similarity index 100% rename from mode/libraries/vr/examples/IntersectsPlane/IntersectsPlane.pde rename to processing/mode/libraries/vr/examples/IntersectsPlane/IntersectsPlane.pde diff --git a/mode/libraries/vr/examples/IntersectsPlane/code/sketch.properties b/processing/mode/libraries/vr/examples/IntersectsPlane/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/IntersectsPlane/code/sketch.properties rename to processing/mode/libraries/vr/examples/IntersectsPlane/code/sketch.properties diff --git a/mode/libraries/vr/examples/IntersectsSphere/IntersectsSphere.pde b/processing/mode/libraries/vr/examples/IntersectsSphere/IntersectsSphere.pde similarity index 100% rename from mode/libraries/vr/examples/IntersectsSphere/IntersectsSphere.pde rename to processing/mode/libraries/vr/examples/IntersectsSphere/IntersectsSphere.pde diff --git a/mode/libraries/vr/examples/IntersectsSphere/code/sketch.properties b/processing/mode/libraries/vr/examples/IntersectsSphere/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/IntersectsSphere/code/sketch.properties rename to processing/mode/libraries/vr/examples/IntersectsSphere/code/sketch.properties diff --git a/mode/libraries/vr/examples/Mono/Mono.pde b/processing/mode/libraries/vr/examples/Mono/Mono.pde similarity index 100% rename from mode/libraries/vr/examples/Mono/Mono.pde rename to processing/mode/libraries/vr/examples/Mono/Mono.pde diff --git a/mode/libraries/vr/examples/Mono/code/sketch.properties b/processing/mode/libraries/vr/examples/Mono/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/Mono/code/sketch.properties rename to processing/mode/libraries/vr/examples/Mono/code/sketch.properties diff --git a/mode/libraries/vr/examples/Stereoscopy/Stereoscopy.pde b/processing/mode/libraries/vr/examples/Stereoscopy/Stereoscopy.pde similarity index 100% rename from mode/libraries/vr/examples/Stereoscopy/Stereoscopy.pde rename to processing/mode/libraries/vr/examples/Stereoscopy/Stereoscopy.pde diff --git a/mode/libraries/vr/examples/Stereoscopy/code/sketch.properties b/processing/mode/libraries/vr/examples/Stereoscopy/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/Stereoscopy/code/sketch.properties rename to processing/mode/libraries/vr/examples/Stereoscopy/code/sketch.properties diff --git a/mode/libraries/vr/examples/drawAim/code/sketch.properties b/processing/mode/libraries/vr/examples/drawAim/code/sketch.properties similarity index 100% rename from mode/libraries/vr/examples/drawAim/code/sketch.properties rename to processing/mode/libraries/vr/examples/drawAim/code/sketch.properties diff --git a/mode/libraries/vr/examples/drawAim/drawAim.pde b/processing/mode/libraries/vr/examples/drawAim/drawAim.pde similarity index 100% rename from mode/libraries/vr/examples/drawAim/drawAim.pde rename to processing/mode/libraries/vr/examples/drawAim/drawAim.pde diff --git a/mode/libraries/vr/library.properties b/processing/mode/libraries/vr/library.properties similarity index 100% rename from mode/libraries/vr/library.properties rename to processing/mode/libraries/vr/library.properties diff --git a/mode/mode.properties b/processing/mode/mode.properties similarity index 89% rename from mode/mode.properties rename to processing/mode/mode.properties index 89b4ed955..a03cb0ece 100644 --- a/mode/mode.properties +++ b/processing/mode/mode.properties @@ -4,7 +4,7 @@ url = https://android.processing.org sentence = This mode lets you use Processing to create Android apps paragraph = imports=processing.mode.java.JavaMode -version = 411 -prettyVersion = 4.5.1 +version = 412 +prettyVersion = 4.6.0 minRevision = 1283 maxRevision = 0 \ No newline at end of file diff --git a/mode/mode/JavaMode.jar b/processing/mode/mode/JavaMode.jar similarity index 100% rename from mode/mode/JavaMode.jar rename to processing/mode/mode/JavaMode.jar diff --git a/mode/mode/core.jar b/processing/mode/mode/core.jar similarity index 100% rename from mode/mode/core.jar rename to processing/mode/mode/core.jar diff --git a/processing/mode/mode/gradlew.zip b/processing/mode/mode/gradlew.zip new file mode 100644 index 000000000..5f7697c8a Binary files /dev/null and b/processing/mode/mode/gradlew.zip differ diff --git a/mode/mode/istack-commons-runtime.jar b/processing/mode/mode/istack-commons-runtime.jar similarity index 100% rename from mode/mode/istack-commons-runtime.jar rename to processing/mode/mode/istack-commons-runtime.jar diff --git a/mode/mode/javax.activation-api.jar b/processing/mode/mode/javax.activation-api.jar similarity index 100% rename from mode/mode/javax.activation-api.jar rename to processing/mode/mode/javax.activation-api.jar diff --git a/mode/mode/jaxb-api.jar b/processing/mode/mode/jaxb-api.jar similarity index 100% rename from mode/mode/jaxb-api.jar rename to processing/mode/mode/jaxb-api.jar diff --git a/mode/mode/jaxb-jxc.jar b/processing/mode/mode/jaxb-jxc.jar similarity index 100% rename from mode/mode/jaxb-jxc.jar rename to processing/mode/mode/jaxb-jxc.jar diff --git a/mode/mode/jaxb-runtime.jar b/processing/mode/mode/jaxb-runtime.jar similarity index 100% rename from mode/mode/jaxb-runtime.jar rename to processing/mode/mode/jaxb-runtime.jar diff --git a/mode/mode/jaxb-xjc.jar b/processing/mode/mode/jaxb-xjc.jar similarity index 100% rename from mode/mode/jaxb-xjc.jar rename to processing/mode/mode/jaxb-xjc.jar diff --git a/mode/mode/jdi.jar b/processing/mode/mode/jdi.jar similarity index 100% rename from mode/mode/jdi.jar rename to processing/mode/mode/jdi.jar diff --git a/mode/mode/jdimodel.jar b/processing/mode/mode/jdimodel.jar similarity index 100% rename from mode/mode/jdimodel.jar rename to processing/mode/mode/jdimodel.jar diff --git a/mode/mode/org.eclipse.core.contenttype.jar b/processing/mode/mode/org.eclipse.core.contenttype.jar similarity index 100% rename from mode/mode/org.eclipse.core.contenttype.jar rename to processing/mode/mode/org.eclipse.core.contenttype.jar diff --git a/mode/mode/org.eclipse.core.jobs.jar b/processing/mode/mode/org.eclipse.core.jobs.jar similarity index 100% rename from mode/mode/org.eclipse.core.jobs.jar rename to processing/mode/mode/org.eclipse.core.jobs.jar diff --git a/mode/mode/org.eclipse.core.resources.jar b/processing/mode/mode/org.eclipse.core.resources.jar similarity index 100% rename from mode/mode/org.eclipse.core.resources.jar rename to processing/mode/mode/org.eclipse.core.resources.jar diff --git a/mode/mode/org.eclipse.core.runtime.jar b/processing/mode/mode/org.eclipse.core.runtime.jar similarity index 100% rename from mode/mode/org.eclipse.core.runtime.jar rename to processing/mode/mode/org.eclipse.core.runtime.jar diff --git a/mode/mode/org.eclipse.equinox.common.jar b/processing/mode/mode/org.eclipse.equinox.common.jar similarity index 100% rename from mode/mode/org.eclipse.equinox.common.jar rename to processing/mode/mode/org.eclipse.equinox.common.jar diff --git a/mode/mode/org.eclipse.equinox.preferences.jar b/processing/mode/mode/org.eclipse.equinox.preferences.jar similarity index 100% rename from mode/mode/org.eclipse.equinox.preferences.jar rename to processing/mode/mode/org.eclipse.equinox.preferences.jar diff --git a/mode/mode/org.eclipse.jdt.core.jar b/processing/mode/mode/org.eclipse.jdt.core.jar similarity index 100% rename from mode/mode/org.eclipse.jdt.core.jar rename to processing/mode/mode/org.eclipse.jdt.core.jar diff --git a/mode/mode/org.eclipse.osgi.jar b/processing/mode/mode/org.eclipse.osgi.jar similarity index 100% rename from mode/mode/org.eclipse.osgi.jar rename to processing/mode/mode/org.eclipse.osgi.jar diff --git a/mode/mode/org.eclipse.text.jar b/processing/mode/mode/org.eclipse.text.jar similarity index 100% rename from mode/mode/org.eclipse.text.jar rename to processing/mode/mode/org.eclipse.text.jar diff --git a/mode/mode/pde.jar b/processing/mode/mode/pde.jar similarity index 100% rename from mode/mode/pde.jar rename to processing/mode/mode/pde.jar diff --git a/mode/resources/device-art-resources/device-art.xml b/processing/mode/resources/device-art-resources/device-art.xml similarity index 100% rename from mode/resources/device-art-resources/device-art.xml rename to processing/mode/resources/device-art-resources/device-art.xml diff --git a/mode/resources/device-art-resources/pixel_3/layout b/processing/mode/resources/device-art-resources/pixel_3/layout similarity index 100% rename from mode/resources/device-art-resources/pixel_3/layout rename to processing/mode/resources/device-art-resources/pixel_3/layout diff --git a/mode/resources/device-art-resources/pixel_3/port_back.webp b/processing/mode/resources/device-art-resources/pixel_3/port_back.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_3/port_back.webp rename to processing/mode/resources/device-art-resources/pixel_3/port_back.webp diff --git a/mode/resources/device-art-resources/pixel_3/round_corners.webp b/processing/mode/resources/device-art-resources/pixel_3/round_corners.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_3/round_corners.webp rename to processing/mode/resources/device-art-resources/pixel_3/round_corners.webp diff --git a/mode/resources/device-art-resources/pixel_6/back.webp b/processing/mode/resources/device-art-resources/pixel_6/back.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_6/back.webp rename to processing/mode/resources/device-art-resources/pixel_6/back.webp diff --git a/mode/resources/device-art-resources/pixel_6/layout b/processing/mode/resources/device-art-resources/pixel_6/layout similarity index 100% rename from mode/resources/device-art-resources/pixel_6/layout rename to processing/mode/resources/device-art-resources/pixel_6/layout diff --git a/mode/resources/device-art-resources/pixel_6/mask.webp b/processing/mode/resources/device-art-resources/pixel_6/mask.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_6/mask.webp rename to processing/mode/resources/device-art-resources/pixel_6/mask.webp diff --git a/mode/resources/device-art-resources/pixel_c/land_back.webp b/processing/mode/resources/device-art-resources/pixel_c/land_back.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_c/land_back.webp rename to processing/mode/resources/device-art-resources/pixel_c/land_back.webp diff --git a/mode/resources/device-art-resources/pixel_c/land_fore.webp b/processing/mode/resources/device-art-resources/pixel_c/land_fore.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_c/land_fore.webp rename to processing/mode/resources/device-art-resources/pixel_c/land_fore.webp diff --git a/mode/resources/device-art-resources/pixel_c/land_shadow.webp b/processing/mode/resources/device-art-resources/pixel_c/land_shadow.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_c/land_shadow.webp rename to processing/mode/resources/device-art-resources/pixel_c/land_shadow.webp diff --git a/mode/resources/device-art-resources/pixel_c/layout b/processing/mode/resources/device-art-resources/pixel_c/layout similarity index 100% rename from mode/resources/device-art-resources/pixel_c/layout rename to processing/mode/resources/device-art-resources/pixel_c/layout diff --git a/mode/resources/device-art-resources/pixel_c/port_back.webp b/processing/mode/resources/device-art-resources/pixel_c/port_back.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_c/port_back.webp rename to processing/mode/resources/device-art-resources/pixel_c/port_back.webp diff --git a/mode/resources/device-art-resources/pixel_c/port_fore.webp b/processing/mode/resources/device-art-resources/pixel_c/port_fore.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_c/port_fore.webp rename to processing/mode/resources/device-art-resources/pixel_c/port_fore.webp diff --git a/mode/resources/device-art-resources/pixel_c/port_shadow.webp b/processing/mode/resources/device-art-resources/pixel_c/port_shadow.webp similarity index 100% rename from mode/resources/device-art-resources/pixel_c/port_shadow.webp rename to processing/mode/resources/device-art-resources/pixel_c/port_shadow.webp diff --git a/mode/resources/device-art-resources/wearos_small_round/device_bezel.png b/processing/mode/resources/device-art-resources/wearos_small_round/device_bezel.png similarity index 100% rename from mode/resources/device-art-resources/wearos_small_round/device_bezel.png rename to processing/mode/resources/device-art-resources/wearos_small_round/device_bezel.png diff --git a/mode/resources/device-art-resources/wearos_small_round/hardware.ini b/processing/mode/resources/device-art-resources/wearos_small_round/hardware.ini similarity index 100% rename from mode/resources/device-art-resources/wearos_small_round/hardware.ini rename to processing/mode/resources/device-art-resources/wearos_small_round/hardware.ini diff --git a/mode/resources/device-art-resources/wearos_small_round/layout b/processing/mode/resources/device-art-resources/wearos_small_round/layout similarity index 100% rename from mode/resources/device-art-resources/wearos_small_round/layout rename to processing/mode/resources/device-art-resources/wearos_small_round/layout diff --git a/mode/resources/device-art-resources/wearos_square/device_bezel.png b/processing/mode/resources/device-art-resources/wearos_square/device_bezel.png similarity index 100% rename from mode/resources/device-art-resources/wearos_square/device_bezel.png rename to processing/mode/resources/device-art-resources/wearos_square/device_bezel.png diff --git a/mode/resources/device-art-resources/wearos_square/hardware.ini b/processing/mode/resources/device-art-resources/wearos_square/hardware.ini similarity index 100% rename from mode/resources/device-art-resources/wearos_square/hardware.ini rename to processing/mode/resources/device-art-resources/wearos_square/hardware.ini diff --git a/mode/resources/device-art-resources/wearos_square/layout b/processing/mode/resources/device-art-resources/wearos_square/layout similarity index 100% rename from mode/resources/device-art-resources/wearos_square/layout rename to processing/mode/resources/device-art-resources/wearos_square/layout diff --git a/mode/scripts/permissions.py b/processing/mode/scripts/permissions.py similarity index 100% rename from mode/scripts/permissions.py rename to processing/mode/scripts/permissions.py diff --git a/mode/scripts/requirements.txt b/processing/mode/scripts/requirements.txt similarity index 75% rename from mode/scripts/requirements.txt rename to processing/mode/scripts/requirements.txt index c1f5f713c..6f83e94d2 100644 --- a/mode/scripts/requirements.txt +++ b/processing/mode/scripts/requirements.txt @@ -1 +1,2 @@ beautifulsoup4 +lxml diff --git a/mode/src/processing/mode/android/AVD.java b/processing/mode/src/processing/mode/android/AVD.java similarity index 100% rename from mode/src/processing/mode/android/AVD.java rename to processing/mode/src/processing/mode/android/AVD.java diff --git a/mode/src/processing/mode/android/AndroidBuild.java b/processing/mode/src/processing/mode/android/AndroidBuild.java similarity index 97% rename from mode/src/processing/mode/android/AndroidBuild.java rename to processing/mode/src/processing/mode/android/AndroidBuild.java index 72a1e9e53..78a16f8a3 100644 --- a/mode/src/processing/mode/android/AndroidBuild.java +++ b/processing/mode/src/processing/mode/android/AndroidBuild.java @@ -991,7 +991,7 @@ private File createTempBuildFolder(final Sketch sketch) throws IOException { private void installGradlew(File exportFolder) throws IOException { File gradlewFile = mode.getContentFile("mode/gradlew.zip"); - AndroidUtil.extractFolder(gradlewFile, exportFolder, false, true); + AndroidUtil.extractFolder(gradlewFile, exportFolder); if (Platform.isMacOS() || Platform.isLinux()) { File execFile = new File(exportFolder, "gradlew"); execFile.setExecutable(true); diff --git a/mode/src/processing/mode/android/AndroidDebugger.java b/processing/mode/src/processing/mode/android/AndroidDebugger.java similarity index 100% rename from mode/src/processing/mode/android/AndroidDebugger.java rename to processing/mode/src/processing/mode/android/AndroidDebugger.java diff --git a/mode/src/processing/mode/android/AndroidEditor.java b/processing/mode/src/processing/mode/android/AndroidEditor.java similarity index 99% rename from mode/src/processing/mode/android/AndroidEditor.java rename to processing/mode/src/processing/mode/android/AndroidEditor.java index 218ae6c10..d45cb4ad9 100644 --- a/mode/src/processing/mode/android/AndroidEditor.java +++ b/processing/mode/src/processing/mode/android/AndroidEditor.java @@ -123,7 +123,7 @@ public boolean handleSaveAs() { public JMenu buildFileMenu() { String exportPackageTitle = AndroidToolbar.getTitle(AndroidToolbar.EXPORT_PACKAGE); - JMenuItem exportPackage = Toolkit.newJMenuItemShift(exportPackageTitle,'T'); + JMenuItem exportPackage = Toolkit.newJMenuItemShift(exportPackageTitle, 'X'); exportPackage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { handleExportPackage(); @@ -132,7 +132,7 @@ public void actionPerformed(ActionEvent e) { String exportBundleTitle = AndroidToolbar.getTitle(AndroidToolbar.EXPORT_BUNDLE); - JMenuItem exportBundle = Toolkit.newJMenuItem(exportBundleTitle, 'B'); + JMenuItem exportBundle = Toolkit.newJMenuItemShift(exportBundleTitle, 'B'); exportBundle.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { handleExportBundle(); @@ -141,7 +141,7 @@ public void actionPerformed(ActionEvent e) { String exportProjectTitle = AndroidToolbar.getTitle(AndroidToolbar.EXPORT_PROJECT); - JMenuItem exportProject = Toolkit.newJMenuItemShift(exportProjectTitle, 'X'); + JMenuItem exportProject = Toolkit.newJMenuItemShift(exportProjectTitle, 'E'); exportProject.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { handleExportProject(); @@ -153,14 +153,14 @@ public void actionPerformed(ActionEvent e) { public JMenu buildSketchMenu() { - JMenuItem runItem = Toolkit.newJMenuItem(AndroidToolbar.getTitle(AndroidToolbar.RUN_ON_DEVICE), 'D'); + JMenuItem runItem = Toolkit.newJMenuItem(AndroidToolbar.getTitle(AndroidToolbar.RUN_ON_DEVICE), 'R'); runItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { handleRunDevice(); } }); - JMenuItem presentItem = Toolkit.newJMenuItemShift(AndroidToolbar.getTitle(AndroidToolbar.RUN_IN_EMULATOR), 'E'); + JMenuItem presentItem = Toolkit.newJMenuItemShift(AndroidToolbar.getTitle(AndroidToolbar.RUN_IN_EMULATOR), 'R'); presentItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { handleRunEmulator(); diff --git a/mode/src/processing/mode/android/AndroidKeyStore.java b/processing/mode/src/processing/mode/android/AndroidKeyStore.java similarity index 100% rename from mode/src/processing/mode/android/AndroidKeyStore.java rename to processing/mode/src/processing/mode/android/AndroidKeyStore.java diff --git a/mode/src/processing/mode/android/AndroidLineBreakpoint.java b/processing/mode/src/processing/mode/android/AndroidLineBreakpoint.java similarity index 100% rename from mode/src/processing/mode/android/AndroidLineBreakpoint.java rename to processing/mode/src/processing/mode/android/AndroidLineBreakpoint.java diff --git a/mode/src/processing/mode/android/AndroidMode.java b/processing/mode/src/processing/mode/android/AndroidMode.java similarity index 100% rename from mode/src/processing/mode/android/AndroidMode.java rename to processing/mode/src/processing/mode/android/AndroidMode.java diff --git a/mode/src/processing/mode/android/AndroidRunner.java b/processing/mode/src/processing/mode/android/AndroidRunner.java similarity index 100% rename from mode/src/processing/mode/android/AndroidRunner.java rename to processing/mode/src/processing/mode/android/AndroidRunner.java diff --git a/mode/src/processing/mode/android/AndroidSDK.java b/processing/mode/src/processing/mode/android/AndroidSDK.java similarity index 89% rename from mode/src/processing/mode/android/AndroidSDK.java rename to processing/mode/src/processing/mode/android/AndroidSDK.java index 53e3c205f..36e7423a1 100644 --- a/mode/src/processing/mode/android/AndroidSDK.java +++ b/processing/mode/src/processing/mode/android/AndroidSDK.java @@ -41,13 +41,18 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.nio.file.attribute.PosixFilePermission; import java.io.PrintWriter; +import java.util.Set; /** * Class holding all needed references (path, tools, etc) to the SDK used by @@ -69,6 +74,7 @@ class AndroidSDK { private final File cmdlineTools; private final File avdManager; private final File sdkManager; + private final File adb; private File emulator; @@ -132,30 +138,35 @@ public AndroidSDK(File folder) throws BadSDKException, IOException { } // Retrieve the highest platform from the available targets - ArrayList targets = getAvailableSdkTargets(); - int highest = 1; - for (SDKTarget targ: targets) { - if (highest < targ.version) { - highest = targ.version; + ArrayList targets = getAvailableSdkTargets(); + int highestBuild = 1; + int highestTarget = 1; + String highestName = ""; + for (Target targ: targets) { + if (highestBuild < targ.build) { + highestBuild = targ.build; + highestTarget = targ.sdk; + highestName = targ.name; } } - if (highest < PApplet.parseInt(AndroidBuild.TARGET_SDK)) { + if (highestTarget < PApplet.parseInt(AndroidBuild.TARGET_SDK)) { throw new BadSDKException(AndroidMode.getTextString("android_sdk.error.missing_target_platform", AndroidBuild.TARGET_SDK, platforms.getAbsolutePath())); } - - highestPlatform = new File(platforms, "android-" + highest); + highestPlatform = new File(platforms, highestName); androidJar = new File(highestPlatform, "android.jar"); if (!androidJar.exists()) { throw new BadSDKException(AndroidMode.getTextString("android_sdk.error.missing_android_jar", AndroidBuild.TARGET_SDK, highestPlatform.getAbsolutePath())); } + // Collecting the tools needed by the mode + adb = findCliTool(platformTools, "adb"); avdManager = findCliTool(new File(cmdlineTools, "bin"), "avdmanager"); sdkManager = findCliTool(new File(cmdlineTools, "bin"), "sdkmanager"); - + initEmu(); String path = Platform.getenv("PATH"); @@ -328,18 +339,7 @@ public File getHighestPlatform() { public File getTargetPlatform(String target) { return new File(platforms, "android-" + target); } - - - public File getZipAlignTool() { - File[] files = buildTools.listFiles(); - String name = Platform.isWindows() ? "zipalign.exe" : "zipalign"; - for (File f: files) { - File z = new File(f, name); - if (z.exists()) return z; - } - return null; - } - + // Write to the process input, so the licenses will be accepted. In // principle, we only need 7 'y', one for the 'yes' to the first @@ -403,18 +403,48 @@ static public File getGoogleDriverFolder() { * for the SDK installation. Also figures out the name of android/android.bat/android.exe * so that it can be called explicitly. */ - private static File findCliTool(final File tools, String name) + private static File findCliTool(final File toolDir, String toolName) throws BadSDKException { - if (new File(tools, name + ".bat").exists()) { - return new File(tools, name + ".bat"); - } - if (new File(tools, name + ".exe").exists()) { - return new File(tools, name + ".exe"); - } - if (new File(tools, name).exists()) { - return new File(tools, name); + File toolFile; + if (Platform.isWindows()) { + toolFile = new File(toolDir, toolName + ".exe"); + if (!toolFile.exists()) { + toolFile = new File(toolDir, toolName + ".bat"); + } + } else { + toolFile = new File(toolDir, toolName); + } + + if (!toolFile.exists()) { + throw new BadSDKException("Cannot find " + toolName + " in " + toolDir); + } + + if (!Platform.isWindows()) { + try { + // Get the POSIX file permissions + Path toolPath = Paths.get(toolFile.getAbsolutePath()); + Set permissions = Files.getPosixFilePermissions(toolPath); + + boolean addedPerm = false; + if (!permissions.contains(PosixFilePermission.OWNER_EXECUTE)) { + permissions.add(PosixFilePermission.OWNER_EXECUTE); + addedPerm = true; + } + if (!permissions.contains(PosixFilePermission.GROUP_EXECUTE)) { + permissions.add(PosixFilePermission.GROUP_EXECUTE); + addedPerm = true; + } + + if (addedPerm) { + // Set the missing POSIX execute (group and owner) permissions + Files.setPosixFilePermissions(toolPath, permissions); + } + } catch (Exception e) { + e.printStackTrace(); + } } - throw new BadSDKException("Cannot find " + name + " in " + tools); + + return toolFile; } @@ -784,25 +814,20 @@ static public File selectFolder(String prompt, File folder, Frame frame) { private static final String ADB_DAEMON_MSG_1 = "daemon not running"; private static final String ADB_DAEMON_MSG_2 = "daemon started successfully"; - public ProcessResult runADB(final String... cmd) + public ProcessResult runAdb(final String... cmd) throws InterruptedException, IOException { if (adbDisabled) { throw new IOException("adb is currently disabled"); } - - final String[] adbCmd; - if (!cmd[0].contains("adb")) { - File abdPath = Platform.isWindows() ? new File(platformTools, "adb.exe") : - new File(platformTools, "adb"); - adbCmd = PApplet.splice(cmd, abdPath.getCanonicalPath(), 0); - } else { - adbCmd = cmd; - } - // printing this here to see if anyone else is killing the adb server + + final String[] adbCmd = PApplet.splice(cmd, adb.getCanonicalPath(), 0); + if (processing.app.Base.DEBUG) { + // printing this here to see if anyone else is killing the adb server PApplet.printArray(adbCmd); } + try { ProcessResult adbResult = new ProcessHelper(adbCmd).execute(); // Ignore messages about starting up an adb daemon @@ -832,36 +857,71 @@ public ProcessResult runADB(final String... cmd) } } - static class SDKTarget { - public int version = 0; - public String name; + public Process getAdbProcess(final String... cmd) + throws IOException { + + if (adbDisabled) { + throw new IOException("adb is currently disabled"); + } + + final String[] adbCmd = PApplet.splice(cmd, adb.getCanonicalPath(), 0); + + if (processing.app.Base.DEBUG) { + // printing this here to see if anyone else is killing the adb server + PApplet.printArray(adbCmd); + } + + try { + Process process = Runtime.getRuntime().exec(adbCmd); + return process; + } catch (IOException ioe) { + if (-1 < ioe.getMessage().indexOf("Permission denied")) { + Messages.showWarning(AndroidMode.getTextString("android_sdk.warn.cannot_run_adb_title"), + AndroidMode.getTextString("android_sdk.warn.cannot_run_adb_body")); + adbDisabled = true; + } + throw ioe; + } + } + + static private class Target { + public int sdk = 0; + public String release = ""; + public int build = 0; + public String name = ""; } - public ArrayList getAvailableSdkTargets() throws IOException { - ArrayList targets = new ArrayList(); + private ArrayList getAvailableSdkTargets() throws IOException { + ArrayList targets = new ArrayList(); for (File platform : platforms.listFiles()) { File propFile = new File(platform, "build.prop"); if (!propFile.exists()) continue; - SDKTarget target = new SDKTarget(); + Target target = new Target(); BufferedReader br = new BufferedReader(new FileReader(propFile)); String line; while ((line = br.readLine()) != null) { String[] lineData = line.split("="); - if (lineData[0].equals("ro.build.version.sdk")) { - target.version = Integer.valueOf(lineData[1]); + + if (lineData[0].equals("ro.system.build.version.incremental")) { + target.build = Integer.valueOf(lineData[1]); } if (lineData[0].equals("ro.build.version.release")) { - target.name = lineData[1]; - break; + target.release = lineData[1]; } + + if (lineData[0].equals("ro.build.version.sdk")) { + target.sdk = Integer.valueOf(lineData[1]); + } + + target.name = platform.getName(); } br.close(); - if (target.version != 0 && target.name != null) targets.add(target); + if (target.sdk != 0 && target.build != 0 && target.name != "") targets.add(target); } return targets; diff --git a/mode/src/processing/mode/android/AndroidTool.java b/processing/mode/src/processing/mode/android/AndroidTool.java similarity index 100% rename from mode/src/processing/mode/android/AndroidTool.java rename to processing/mode/src/processing/mode/android/AndroidTool.java diff --git a/mode/src/processing/mode/android/AndroidToolbar.java b/processing/mode/src/processing/mode/android/AndroidToolbar.java similarity index 100% rename from mode/src/processing/mode/android/AndroidToolbar.java rename to processing/mode/src/processing/mode/android/AndroidToolbar.java diff --git a/mode/src/processing/mode/android/AndroidUtil.java b/processing/mode/src/processing/mode/android/AndroidUtil.java similarity index 91% rename from mode/src/processing/mode/android/AndroidUtil.java rename to processing/mode/src/processing/mode/android/AndroidUtil.java index 4f78e9206..9e0a215f4 100644 --- a/mode/src/processing/mode/android/AndroidUtil.java +++ b/processing/mode/src/processing/mode/android/AndroidUtil.java @@ -110,8 +110,7 @@ static public void writeFile(final File file, String[] lines) { writer.flush(); writer.close(); } - - + static public File createPath(final File parent, final String name) throws SketchException { final File result = new File(parent, name); @@ -120,12 +119,10 @@ static public File createPath(final File parent, final String name) } return result; } - - + static public void createFileFromTemplate(final File tmplFile, final File destFile) { createFileFromTemplate(tmplFile, destFile, null); - } - + } static public void createFileFromTemplate(final File tmplFile, final File destFile, final HashMap replaceMap) { @@ -149,8 +146,7 @@ static public void createFileFromTemplate(final File tmplFile, final File destFi pw.flush(); pw.close(); } - - + static public File createSubFolder(File parent, String name) throws IOException { File newFolder = new File(parent, name); if (newFolder.exists()) { @@ -190,15 +186,9 @@ static public File createSubFolder(File parent, String name) throws IOException } return newFolder; } - - - static public void extractFolder(File file, File newPath, boolean setExec) + + static public void extractFolder(File file, File newPath) throws IOException { - extractFolder(file, newPath, setExec, false); - } - - static public void extractFolder(File file, File newPath, boolean setExec, - boolean remRoot) throws IOException { int BUFFER = 2048; ZipFile zip = new ZipFile(file); @@ -209,18 +199,7 @@ static public void extractFolder(File file, File newPath, boolean setExec, // grab a zip file entry ZipEntry entry = zipFileEntries.nextElement(); String currentEntry = entry.getName(); - - if (remRoot) { - // Remove root folder from path - int idx = currentEntry.indexOf("/"); - if (idx == -1) { - // Let's try the system file separator - // https://stackoverflow.com/a/16485210 - idx = currentEntry.indexOf(File.separator); - } - currentEntry = currentEntry.substring(idx + 1); - } - + File destFile = new File(newPath, currentEntry); //destFile = new File(newPath, destFile.getName()); File destinationParent = destFile.getParentFile(); @@ -228,13 +207,6 @@ static public void extractFolder(File file, File newPath, boolean setExec, // create the parent directory structure if needed destinationParent.mkdirs(); - String ext = PApplet.getExtension(currentEntry); - if (setExec && ext.equals("unknown")) { - // On some OS X machines the android binaries lose their executable - // attribute, rendering the mode unusable - destFile.setExecutable(true); - } - if (!entry.isDirectory()) { // should preserve permissions // https://bitbucket.org/atlassian/amps/pull-requests/21/amps-904-preserve-executable-file-status/diff @@ -263,17 +235,15 @@ static public void extractClassesJarFromAar(File wearFile, File explodeDir, File jarFile) throws IOException { extractClassesJarFromAar(wearFile, explodeDir, jarFile, true); } - - + static public void extractClassesJarFromAar(File wearFile, File explodeDir, File jarFile, boolean removeDir) throws IOException { - extractFolder(wearFile, explodeDir, false); + extractFolder(wearFile, explodeDir); File classFile = new File(explodeDir, "classes.jar"); Util.copyFile(classFile, jarFile); Util.removeDir(explodeDir); } - static public File[] getFileList(File folder, String[] names) { return getFileList(folder, names, null); } @@ -289,8 +259,7 @@ static public File[] getFileList(File folder, String[] names, String[] altNames) } return icons; } - - + static public File[] getFileList(Mode mode, String prefix, String[] names) { File[] icons = new File[names.length]; for (int i = 0; i < names.length; i++) { @@ -305,8 +274,7 @@ static public boolean allFilesExists(File[] files) { } return true; } - - + static public boolean noFileExists(File[] files) { for (File f: files) { if (f.exists()) return false; diff --git a/mode/src/processing/mode/android/Commander.java b/processing/mode/src/processing/mode/android/Commander.java similarity index 100% rename from mode/src/processing/mode/android/Commander.java rename to processing/mode/src/processing/mode/android/Commander.java diff --git a/mode/src/processing/mode/android/Device.java b/processing/mode/src/processing/mode/android/Device.java similarity index 93% rename from mode/src/processing/mode/android/Device.java rename to processing/mode/src/processing/mode/android/Device.java index 590c9167e..017250da0 100644 --- a/mode/src/processing/mode/android/Device.java +++ b/processing/mode/src/processing/mode/android/Device.java @@ -22,7 +22,6 @@ package processing.mode.android; import processing.app.Base; -import processing.app.Platform; import processing.app.RunnerListener; import processing.app.exec.LineProcessor; import processing.app.exec.ProcessRegistry; @@ -31,7 +30,6 @@ import processing.core.PApplet; import processing.mode.android.LogEntry.Severity; -import java.io.File; import java.io.IOException; import java.util.*; import java.util.regex.Matcher; @@ -73,8 +71,8 @@ public Device(final Devices env, final String id) { public void bringLauncherToFront() { try { adb("shell", "am", "start", - "-a", "android.intent.action.MAIN", - "-c", "android.intent.category.HOME"); + "-a", "android.intent.action.MAIN", + "-c", "android.intent.category.HOME"); } catch (final Exception e) { e.printStackTrace(System.err); } @@ -88,12 +86,12 @@ public String getName() { String name = ""; try { - ProcessResult result = env.getSDK().runADB("-s", id, "shell", "getprop", "ro.product.brand"); + ProcessResult result = adb("shell", "getprop", "ro.product.brand"); if (result.succeeded()) { name += result.getStdout() + " "; } - result = env.getSDK().runADB("-s", id, "shell", "getprop", "ro.product.model"); + result = adb("shell", "getprop", "ro.product.model"); if (result.succeeded()) { name += result.getStdout(); } @@ -208,7 +206,6 @@ public boolean launchApp(final String packageName, boolean isDebuggerEnabled) }; pr = adb(cmd); } -// PApplet.println(cmd); if (Base.DEBUG) { System.out.println(pr.toString()); @@ -226,8 +223,9 @@ public boolean launchApp(final String packageName, boolean isDebuggerEnabled) public void forwardPort(int tcpPort) throws IOException, InterruptedException { // Start ADB Server adb("start-server"); - final String[] jdwpcmd = generateAdbCommand("jdwp"); - Process deviceId = Runtime.getRuntime().exec(jdwpcmd); + + Process deviceId = adbProc("jdwp"); + // Get Process ID from ADB command `adb jdwp` JDWPProcessor pIDProcessor = new JDWPProcessor(); new StreamPump(deviceId.getInputStream(), "jdwp: ").addTarget( @@ -236,7 +234,8 @@ public void forwardPort(int tcpPort) throws IOException, InterruptedException { System.err).start(); Thread.sleep(1000); - // forward to tcp port + + // Forward to tcp port adb("forward", "tcp:" + tcpPort, "jdwp:" + pIDProcessor.getId()); } @@ -389,9 +388,11 @@ private void reportStackTrace(final LogEntry entry) { void initialize() throws IOException, InterruptedException { adb("logcat", "-c"); - final String[] cmd = generateAdbCommand("logcat", "-v", "brief"); + + final String[] cmd = genAdbCommand("logcat", "-v", "brief"); final String title = PApplet.join(cmd, ' '); - logcat = Runtime.getRuntime().exec(cmd); + logcat = env.getSDK().getAdbProcess(cmd); + ProcessRegistry.watch(logcat); new StreamPump(logcat.getInputStream(), "log: " + title).addTarget( new LogLineProcessor()).start(); @@ -465,15 +466,17 @@ public void removeListener(final DeviceListener listener) { } private ProcessResult adb(final String... cmd) throws InterruptedException, IOException { - final String[] adbCmd = generateAdbCommand(cmd); - return env.getSDK().runADB(adbCmd); + final String[] adbCmd = genAdbCommand(cmd); + return env.getSDK().runAdb(adbCmd); + } + + private Process adbProc(final String... cmd) throws IOException { + final String[] adbCmd = genAdbCommand(cmd); + return env.getSDK().getAdbProcess(adbCmd); } - private String[] generateAdbCommand(final String... cmd) throws IOException { - File toolsPath = env.getSDK().getPlatformToolsFolder(); - File abdPath = Platform.isWindows() ? new File(toolsPath, "adb.exe") : - new File(toolsPath, "adb"); - return PApplet.concat(new String[] { abdPath.getCanonicalPath(), "-s", getId() }, cmd); + private String[] genAdbCommand(final String... cmd) { + return PApplet.concat(new String[] { "-s", getId() }, cmd); } @Override diff --git a/mode/src/processing/mode/android/DeviceListener.java b/processing/mode/src/processing/mode/android/DeviceListener.java similarity index 100% rename from mode/src/processing/mode/android/DeviceListener.java rename to processing/mode/src/processing/mode/android/DeviceListener.java diff --git a/mode/src/processing/mode/android/Devices.java b/processing/mode/src/processing/mode/android/Devices.java similarity index 95% rename from mode/src/processing/mode/android/Devices.java rename to processing/mode/src/processing/mode/android/Devices.java index c893f1de0..92f1e2208 100644 --- a/mode/src/processing/mode/android/Devices.java +++ b/processing/mode/src/processing/mode/android/Devices.java @@ -83,7 +83,7 @@ public void killAdbServer() { System.out.print("Shutting down any existing adb server..."); System.out.flush(); try { - sdk.runADB("kill-server"); + sdk.runAdb("kill-server"); System.out.println(" Done."); } catch (final Exception e) { System.err.println("/nDevices.killAdbServer() failed."); @@ -95,7 +95,7 @@ public void startAdbServer() { System.out.print("Starting a new adb server..."); System.out.flush(); try { - sdk.runADB("start-server"); + sdk.runAdb("start-server"); System.out.println(" Done."); } catch (final Exception e) { System.err.println("/nDevices.startAdbServer() failed."); @@ -118,9 +118,9 @@ public void enableBluetoothDebugging() { try { // Try Enable debugging over bluetooth // http://developer.android.com/training/wearables/apps/bt-debugging.html - sdk.runADB("-s", device.getId(), "forward", "tcp:" + BT_DEBUG_PORT, + sdk.runAdb("-s", device.getId(), "forward", "tcp:" + BT_DEBUG_PORT, "localabstract:/adb-hub"); - sdk.runADB("connect", "127.0.0.1:" + BT_DEBUG_PORT); + sdk.runAdb("connect", "127.0.0.1:" + BT_DEBUG_PORT); } catch (final Exception e) { e.printStackTrace(); } @@ -349,7 +349,7 @@ public List list() { ProcessResult result; try { // System.out.println("listing devices 00"); - result = sdk.runADB("devices"); + result = sdk.runAdb("devices"); // System.out.println("listing devices 05"); } catch (InterruptedException e) { return Collections.emptyList(); diff --git a/mode/src/processing/mode/android/EmulatorController.java b/processing/mode/src/processing/mode/android/EmulatorController.java similarity index 99% rename from mode/src/processing/mode/android/EmulatorController.java rename to processing/mode/src/processing/mode/android/EmulatorController.java index 0e2288591..e3d9b7a13 100644 --- a/mode/src/processing/mode/android/EmulatorController.java +++ b/processing/mode/src/processing/mode/android/EmulatorController.java @@ -146,7 +146,7 @@ public void run() { } Thread.sleep(2000); //System.out.println("done sleeping"); - ProcessResult result = sdk.runADB("-s", "emulator-" + portString, + ProcessResult result = sdk.runAdb("-s", "emulator-" + portString, "shell", "getprop", "dev.bootcomplete"); if (result.getStdout().trim().equals("1")) { setState(State.RUNNING); diff --git a/mode/src/processing/mode/android/KeyStoreManager.java b/processing/mode/src/processing/mode/android/KeyStoreManager.java similarity index 100% rename from mode/src/processing/mode/android/KeyStoreManager.java rename to processing/mode/src/processing/mode/android/KeyStoreManager.java diff --git a/mode/src/processing/mode/android/Keys.java b/processing/mode/src/processing/mode/android/Keys.java similarity index 100% rename from mode/src/processing/mode/android/Keys.java rename to processing/mode/src/processing/mode/android/Keys.java diff --git a/mode/src/processing/mode/android/LogEntry.java b/processing/mode/src/processing/mode/android/LogEntry.java similarity index 100% rename from mode/src/processing/mode/android/LogEntry.java rename to processing/mode/src/processing/mode/android/LogEntry.java diff --git a/mode/src/processing/mode/android/Manifest.java b/processing/mode/src/processing/mode/android/Manifest.java similarity index 100% rename from mode/src/processing/mode/android/Manifest.java rename to processing/mode/src/processing/mode/android/Manifest.java diff --git a/mode/src/processing/mode/android/Pair.java b/processing/mode/src/processing/mode/android/Pair.java similarity index 100% rename from mode/src/processing/mode/android/Pair.java rename to processing/mode/src/processing/mode/android/Pair.java diff --git a/mode/src/processing/mode/android/Permissions.java b/processing/mode/src/processing/mode/android/Permissions.java similarity index 69% rename from mode/src/processing/mode/android/Permissions.java rename to processing/mode/src/processing/mode/android/Permissions.java index cc1ea0a2f..10b80f98f 100644 --- a/mode/src/processing/mode/android/Permissions.java +++ b/processing/mode/src/processing/mode/android/Permissions.java @@ -256,6 +256,7 @@ public String getMenuTitle() { "ACCESS_CHECKIN_PROPERTIES", "Allows read/write access to the \"properties\" table in the checkin database, to change values that get uploaded.", "ACCESS_COARSE_LOCATION", "Allows an app to access approximate location.", "ACCESS_FINE_LOCATION", "Allows an app to access precise location.", + "ACCESS_HIDDEN_PROFILES", "Allows applications to access profiles with ACCESS_HIDDEN_PROFILES user property", "ACCESS_LOCATION_EXTRA_COMMANDS", "Allows an application to access extra location provider commands.", "ACCESS_MEDIA_LOCATION", "Allows an application to access any geographic locations persisted in the user's shared collection.", "ACCESS_NETWORK_STATE", "Allows applications to access information about networks.", @@ -275,6 +276,7 @@ public String getMenuTitle() { "BIND_COMPANION_DEVICE_SERVICE", "Must be required by any CompanionDeviceService s to ensure that only the system can bind to it.", "BIND_CONDITION_PROVIDER_SERVICE", "Must be required by a ConditionProviderService , to ensure that only the system can bind to it.", "BIND_CONTROLS", "Allows SystemUI to request third party controls.", + "BIND_CREDENTIAL_PROVIDER_SERVICE", "Must be required by a CredentialProviderService to ensure that only the system can bind to it.", "BIND_DEVICE_ADMIN", "Must be required by device administration receiver, to ensure that only the system can interact with it.", "BIND_DREAM_SERVICE", "Must be required by an DreamService , to ensure that only the system can bind to it.", "BIND_INCALL_SERVICE", "Must be required by a InCallService , to ensure that only the system can bind to it.", @@ -319,16 +321,37 @@ public String getMenuTitle() { "CHANGE_WIFI_MULTICAST_STATE", "Allows applications to enter Wi-Fi Multicast mode.", "CHANGE_WIFI_STATE", "Allows applications to change Wi-Fi connectivity state.", "CLEAR_APP_CACHE", "Allows an application to clear the caches of all installed applications on the device.", + "CONFIGURE_WIFI_DISPLAY", "Allows an application to configure and connect to Wifi displays", "CONTROL_LOCATION_UPDATES", "Allows enabling/disabling location update notifications from the radio.", + "CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS", "Allows a browser to invoke the set of query apis to get metadata about credential candidates prepared during the CredentialManager.prepareGetCredential API.", + "CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS", "Allows specifying candidate credential providers to be queried in Credential Manager get flows, or to be preferred as a default in the Credential Manager create flows.", + "CREDENTIAL_MANAGER_SET_ORIGIN", "Allows a browser to invoke credential manager APIs on behalf of another RP.", "DELETE_CACHE_FILES", "Old permission for deleting an app's cache files, no longer used, but signals for us to quietly ignore calls instead of throwing an exception.", "DELETE_PACKAGES", "Allows an application to delete packages.", "DELIVER_COMPANION_MESSAGES", "Allows an application to deliver companion messages to system", + "DETECT_SCREEN_CAPTURE", "Allows an application to get notified when a screen capture of its windows is attempted.", + "DETECT_SCREEN_RECORDING", "Allows an application to get notified when it is being recorded.", "DIAGNOSTIC", "Allows applications to RW to diagnostic resources.", "DISABLE_KEYGUARD", "Allows applications to disable the keyguard if it is not secure.", "DUMP", "Allows an application to retrieve state dump information from system services.", + "ENFORCE_UPDATE_OWNERSHIP", "Allows an application to indicate via PackageInstaller.SessionParams.setRequestUpdateOwnership(boolean) that it has the intention of becoming the update owner.", + "EXECUTE_APP_ACTION", "Allows an assistive application to perform actions on behalf of users inside of applications.", "EXPAND_STATUS_BAR", "Allows an application to expand or collapse the status bar.", "FACTORY_TEST", "Run as a manufacturer test application, running as the root user.", "FOREGROUND_SERVICE", "Allows a regular application to use Service.startForeground .", + "FOREGROUND_SERVICE_CAMERA", "Allows a regular application to use Service.startForeground with the type \"camera\".", + "FOREGROUND_SERVICE_CONNECTED_DEVICE", "Allows a regular application to use Service.startForeground with the type \"connectedDevice\".", + "FOREGROUND_SERVICE_DATA_SYNC", "Allows a regular application to use Service.startForeground with the type \"dataSync\".", + "FOREGROUND_SERVICE_HEALTH", "Allows a regular application to use Service.startForeground with the type \"health\".", + "FOREGROUND_SERVICE_LOCATION", "Allows a regular application to use Service.startForeground with the type \"location\".", + "FOREGROUND_SERVICE_MEDIA_PLAYBACK", "Allows a regular application to use Service.startForeground with the type \"mediaPlayback\".", + "FOREGROUND_SERVICE_MEDIA_PROCESSING", "Allows a regular application to use Service.startForeground with the type \"mediaProcessing\".", + "FOREGROUND_SERVICE_MEDIA_PROJECTION", "Allows a regular application to use Service.startForeground with the type \"mediaProjection\".", + "FOREGROUND_SERVICE_MICROPHONE", "Allows a regular application to use Service.startForeground with the type \"microphone\".", + "FOREGROUND_SERVICE_PHONE_CALL", "Allows a regular application to use Service.startForeground with the type \"phoneCall\".", + "FOREGROUND_SERVICE_REMOTE_MESSAGING", "Allows a regular application to use Service.startForeground with the type \"remoteMessaging\".", + "FOREGROUND_SERVICE_SPECIAL_USE", "Allows a regular application to use Service.startForeground with the type \"specialUse\".", + "FOREGROUND_SERVICE_SYSTEM_EXEMPTED", "Allows a regular application to use Service.startForeground with the type \"systemExempted\".", "GET_ACCOUNTS", "Allows access to the list of accounts in the Accounts Service.", "GET_ACCOUNTS_PRIVILEGED", "Allows access to the list of accounts in the Accounts Service.", "GET_PACKAGE_SIZE", "Allows an application to find out the space used by any package.", @@ -342,9 +365,92 @@ public String getMenuTitle() { "INTERACT_ACROSS_PROFILES", "Allows interaction across profiles in the same profile group.", "INTERNET", "Allows applications to open network sockets.", "KILL_BACKGROUND_PROCESSES", "Allows an application to call ActivityManager.killBackgroundProcesses(String) .", + "LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE", "Allows an application to capture screen content to perform a screenshot using the intent action Intent.ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE .", "LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK", "An application needs this permission for Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY to show its Activity embedded in Settings app.", "LOADER_USAGE_STATS", "Allows a data loader to read a package's access logs.", "LOCATION_HARDWARE", "Allows an application to use location features in hardware, such as the geofencing api.", + "MANAGE_DEVICE_LOCK_STATE", "Allows financed device kiosk apps to perform actions on the Device Lock service", + "MANAGE_DEVICE_POLICY_ACCESSIBILITY", "Allows an application to manage policy related to accessibility.", + "MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENT", "Allows an application to set policy related to account management.", + "MANAGE_DEVICE_POLICY_ACROSS_USERS", "Allows an application to set device policies outside the current user that are required for securing device ownership without accessing user data.", + "MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL", "Allows an application to set device policies outside the current user.", + "MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL", "Allows an application to set device policies outside the current user that are critical for securing data within the current user.", + "MANAGE_DEVICE_POLICY_AIRPLANE_MODE", "Allows an application to set policy related to airplane mode.", + "MANAGE_DEVICE_POLICY_APPS_CONTROL", "Allows an application to manage policy regarding modifying applications.", + "MANAGE_DEVICE_POLICY_APP_RESTRICTIONS", "Allows an application to manage application restrictions.", + "MANAGE_DEVICE_POLICY_APP_USER_DATA", "Allows an application to manage policy related to application user data.", + "MANAGE_DEVICE_POLICY_ASSIST_CONTENT", "Allows an application to set policy related to sending assist content to a privileged app such as the Assistant app.", + "MANAGE_DEVICE_POLICY_AUDIO_OUTPUT", "Allows an application to set policy related to audio output.", + "MANAGE_DEVICE_POLICY_AUTOFILL", "Allows an application to set policy related to autofill.", + "MANAGE_DEVICE_POLICY_BACKUP_SERVICE", "Allows an application to manage backup service policy.", + "MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL", "Allows an application to manage policy related to block package uninstallation.", + "MANAGE_DEVICE_POLICY_BLUETOOTH", "Allows an application to set policy related to bluetooth.", + "MANAGE_DEVICE_POLICY_BUGREPORT", "Allows an application to request bugreports with user consent.", + "MANAGE_DEVICE_POLICY_CALLS", "Allows an application to manage calling policy.", + "MANAGE_DEVICE_POLICY_CAMERA", "Allows an application to set policy related to restricting a user's ability to use or enable and disable the camera.", + "MANAGE_DEVICE_POLICY_CAMERA_TOGGLE", "Allows an application to manage policy related to camera toggle.", + "MANAGE_DEVICE_POLICY_CERTIFICATES", "Allows an application to set policy related to certificates.", + "MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE", "Allows an application to manage policy related to common criteria mode.", + "MANAGE_DEVICE_POLICY_CONTENT_PROTECTION", "Allows an application to manage policy related to content protection.", + "MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES", "Allows an application to manage debugging features policy.", + "MANAGE_DEVICE_POLICY_DEFAULT_SMS", "Allows an application to set policy related to the default sms application.", + "MANAGE_DEVICE_POLICY_DEVICE_IDENTIFIERS", "Allows an application to manage policy related to device identifiers.", + "MANAGE_DEVICE_POLICY_DISPLAY", "Allows an application to set policy related to the display.", + "MANAGE_DEVICE_POLICY_FACTORY_RESET", "Allows an application to set policy related to factory reset.", + "MANAGE_DEVICE_POLICY_FUN", "Allows an application to set policy related to fun.", + "MANAGE_DEVICE_POLICY_INPUT_METHODS", "Allows an application to set policy related to input methods.", + "MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES", "Allows an application to manage installing from unknown sources policy.", + "MANAGE_DEVICE_POLICY_KEEP_UNINSTALLED_PACKAGES", "Allows an application to set policy related to keeping uninstalled packages.", + "MANAGE_DEVICE_POLICY_KEYGUARD", "Allows an application to manage policy related to keyguard.", + "MANAGE_DEVICE_POLICY_LOCALE", "Allows an application to set policy related to locale.", + "MANAGE_DEVICE_POLICY_LOCATION", "Allows an application to set policy related to location.", + "MANAGE_DEVICE_POLICY_LOCK", "Allows an application to lock a profile or the device with the appropriate cross-user permission.", + "MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS", "Allows an application to set policy related to lock credentials.", + "MANAGE_DEVICE_POLICY_LOCK_TASK", "Allows an application to manage lock task policy.", + "MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS", "Allows an application to set policy related to subscriptions downloaded by an admin.", + "MANAGE_DEVICE_POLICY_METERED_DATA", "Allows an application to manage policy related to metered data.", + "MANAGE_DEVICE_POLICY_MICROPHONE", "Allows an application to set policy related to restricting a user's ability to use or enable and disable the microphone.", + "MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE", "Allows an application to manage policy related to microphone toggle.", + "MANAGE_DEVICE_POLICY_MOBILE_NETWORK", "Allows an application to set policy related to mobile networks.", + "MANAGE_DEVICE_POLICY_MODIFY_USERS", "Allows an application to manage policy preventing users from modifying users.", + "MANAGE_DEVICE_POLICY_MTE", "Allows an application to manage policy related to the Memory Tagging Extension (MTE).", + "MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION", "Allows an application to set policy related to nearby communications (e.g. Beam and nearby streaming).", + "MANAGE_DEVICE_POLICY_NETWORK_LOGGING", "Allows an application to set policy related to network logging.", + "MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY", "Allows an application to manage the identity of the managing organization.", + "MANAGE_DEVICE_POLICY_OVERRIDE_APN", "Allows an application to set policy related to override APNs.", + "MANAGE_DEVICE_POLICY_PACKAGE_STATE", "Allows an application to set policy related to hiding and suspending packages.", + "MANAGE_DEVICE_POLICY_PHYSICAL_MEDIA", "Allows an application to set policy related to physical media.", + "MANAGE_DEVICE_POLICY_PRINTING", "Allows an application to set policy related to printing.", + "MANAGE_DEVICE_POLICY_PRIVATE_DNS", "Allows an application to set policy related to private DNS.", + "MANAGE_DEVICE_POLICY_PROFILES", "Allows an application to set policy related to profiles.", + "MANAGE_DEVICE_POLICY_PROFILE_INTERACTION", "Allows an application to set policy related to interacting with profiles (e.g. Disallowing cross-profile copy and paste).", + "MANAGE_DEVICE_POLICY_PROXY", "Allows an application to set a network-independent global HTTP proxy.", + "MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES", "Allows an application query system updates.", + "MANAGE_DEVICE_POLICY_RESET_PASSWORD", "Allows an application to force set a new device unlock password or a managed profile challenge on current user.", + "MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS", "Allows an application to set policy related to restricting the user from configuring private DNS.", + "MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS", "Allows an application to set the grant state of runtime permissions on packages.", + "MANAGE_DEVICE_POLICY_RUN_IN_BACKGROUND", "Allows an application to set policy related to users running in the background.", + "MANAGE_DEVICE_POLICY_SAFE_BOOT", "Allows an application to manage safe boot policy.", + "MANAGE_DEVICE_POLICY_SCREEN_CAPTURE", "Allows an application to set policy related to screen capture.", + "MANAGE_DEVICE_POLICY_SCREEN_CONTENT", "Allows an application to set policy related to the usage of the contents of the screen.", + "MANAGE_DEVICE_POLICY_SECURITY_LOGGING", "Allows an application to set policy related to security logging.", + "MANAGE_DEVICE_POLICY_SETTINGS", "Allows an application to set policy related to settings.", + "MANAGE_DEVICE_POLICY_SMS", "Allows an application to set policy related to sms.", + "MANAGE_DEVICE_POLICY_STATUS_BAR", "Allows an application to set policy related to the status bar.", + "MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE", "Allows an application to set support messages for when a user action is affected by an active policy.", + "MANAGE_DEVICE_POLICY_SUSPEND_PERSONAL_APPS", "Allows an application to set policy related to suspending personal apps.", + "MANAGE_DEVICE_POLICY_SYSTEM_APPS", "Allows an application to manage policy related to system apps.", + "MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS", "Allows an application to set policy related to system dialogs.", + "MANAGE_DEVICE_POLICY_SYSTEM_UPDATES", "Allows an application to set policy related to system updates.", + "MANAGE_DEVICE_POLICY_TIME", "Allows an application to manage device policy relating to time.", + "MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING", "Allows an application to set policy related to usb data signalling.", + "MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER", "Allows an application to set policy related to usb file transfers.", + "MANAGE_DEVICE_POLICY_USERS", "Allows an application to set policy related to users.", + "MANAGE_DEVICE_POLICY_VPN", "Allows an application to set policy related to VPNs.", + "MANAGE_DEVICE_POLICY_WALLPAPER", "Allows an application to set policy related to the wallpaper.", + "MANAGE_DEVICE_POLICY_WIFI", "Allows an application to set policy related to Wifi.", + "MANAGE_DEVICE_POLICY_WINDOWS", "Allows an application to set policy related to windows.", + "MANAGE_DEVICE_POLICY_WIPE_DATA", "Allows an application to manage policy related to wiping data.", "MANAGE_DOCUMENTS", "Allows an application to manage access to documents, usually as part of a document picker.", "MANAGE_EXTERNAL_STORAGE", "Allows an application a broad access to external storage in scoped storage.", "MANAGE_MEDIA", "Allows an application to modify and delete media files on this device or any connected storage device without user confirmation.", @@ -354,6 +460,7 @@ public String getMenuTitle() { "MANAGE_WIFI_NETWORK_SELECTION", "This permission is used to let OEMs grant their trusted app access to a subset of privileged wifi APIs to improve wifi performance.", "MASTER_CLEAR", "Not for use by third-party applications.", "MEDIA_CONTENT_CONTROL", "Allows an application to know what content is playing and control its playback.", + "MEDIA_ROUTING_CONTROL", "Allows an application to control the routing of media apps.", "MODIFY_AUDIO_SETTINGS", "Allows an application to modify global audio settings.", "MODIFY_PHONE_STATE", "Allows modification of the telephony state - power on, mmi, etc.", "MOUNT_FORMAT_FILESYSTEMS", "Allows formatting file systems for removable storage.", @@ -365,18 +472,22 @@ public String getMenuTitle() { "OVERRIDE_WIFI_CONFIG", "Allows an application to modify any wifi configuration, even if created by another application.", "PACKAGE_USAGE_STATS", "Allows an application to collect component usage statistics", "POST_NOTIFICATIONS", "Allows an app to post notifications", + "PROVIDE_OWN_AUTOFILL_SUGGESTIONS", "Allows an application to display its suggestions using the autofill framework.", + "PROVIDE_REMOTE_CREDENTIALS", "Allows an application to be able to store and retrieve credentials from a remote device.", "QUERY_ALL_PACKAGES", "Allows query of any normal app on the device, regardless of manifest declarations.", "READ_ASSISTANT_APP_SEARCH_DATA", "Allows an application to query over global data in AppSearch that's visible to the ASSISTANT role.", "READ_BASIC_PHONE_STATE", "Allows read only access to phone state with a non dangerous permission, including the information like cellular network type, software version.", "READ_CALENDAR", "Allows an application to read the user's calendar data.", "READ_CALL_LOG", "Allows an application to read the user's call log.", "READ_CONTACTS", "Allows an application to read the user's contacts data.", + "READ_DROPBOX_DATA", "Allows an application to access the data in Dropbox.", "READ_EXTERNAL_STORAGE", "Allows an application to read from external storage.", "READ_HOME_APP_SEARCH_DATA", "Allows an application to query over global data in AppSearch that's visible to the HOME role.", "READ_LOGS", "Allows an application to read the low-level system log files.", "READ_MEDIA_AUDIO", "Allows an application to read audio files from external storage.", "READ_MEDIA_IMAGES", "Allows an application to read image files from external storage.", "READ_MEDIA_VIDEO", "Allows an application to read video files from external storage.", + "READ_MEDIA_VISUAL_USER_SELECTED", "Allows an application to read image or video files from external storage that a user has selected via the permission prompt photo picker.", "READ_NEARBY_STREAMING_POLICY", "Allows an application to read nearby streaming policy.", "READ_PHONE_NUMBERS", "Allows read access to the device's phone number(s).", "READ_PHONE_STATE", "Allows read only access to phone state, including the current cellular network information, the status of any ongoing calls, and a list of any PhoneAccount s registered on the device.", @@ -395,6 +506,8 @@ public String getMenuTitle() { "REQUEST_COMPANION_PROFILE_APP_STREAMING", "Allows application to request to be associated with a virtual display capable of streaming Android applications ( AssociationRequest.DEVICE_PROFILE_APP_STREAMING ) by CompanionDeviceManager .", "REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION", "Allows application to request to be associated with a vehicle head unit capable of automotive projection ( AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION ) by CompanionDeviceManager .", "REQUEST_COMPANION_PROFILE_COMPUTER", "Allows application to request to be associated with a computer to share functionality and/or data with other devices, such as notifications, photos and media ( AssociationRequest.DEVICE_PROFILE_COMPUTER ) by CompanionDeviceManager .", + "REQUEST_COMPANION_PROFILE_GLASSES", "Allows app to request to be associated with a device via CompanionDeviceManager as \"glasses\"", + "REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING", "Allows application to request to stream content from an Android host to a nearby device ( AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_STREAMING ) by CompanionDeviceManager .", "REQUEST_COMPANION_PROFILE_WATCH", "Allows app to request to be associated with a device via CompanionDeviceManager as a \"watch\"", "REQUEST_COMPANION_RUN_IN_BACKGROUND", "Allows a companion app to run in the background.", "REQUEST_COMPANION_SELF_MANAGED", "Allows an application to create a \"self-managed\" association.", @@ -405,12 +518,14 @@ public String getMenuTitle() { "REQUEST_INSTALL_PACKAGES", "Allows an application to request installing packages.", "REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE", "Allows an application to subscribe to notifications about the presence status change of their associated companion device", "REQUEST_PASSWORD_COMPLEXITY", "Allows an application to request the screen lock complexity and prompt users to update the screen lock to a certain complexity level.", + "RUN_USER_INITIATED_JOBS", "Allows applications to use the user-initiated jobs API.", "SCHEDULE_EXACT_ALARM", "Allows applications to use exact alarm APIs.", "SEND_RESPOND_VIA_MESSAGE", "Allows an application (Phone) to send a request to other applications to handle the respond-via-message action during incoming calls.", "SEND_SMS", "Allows an application to send SMS messages.", "SET_ALARM", "Allows an application to broadcast an Intent to set an alarm for the user.", "SET_ALWAYS_FINISH", "Allows an application to control whether activities are immediately finished when put in the background.", "SET_ANIMATION_SCALE", "Modify the global animation scaling factor.", + "SET_BIOMETRIC_DIALOG_ADVANCED", "Allows an application to set the advanced features on BiometricDialog (SystemUI), including logo, logo description, and content view with more options button.", "SET_DEBUG_APP", "Configure an application for debugging.", "SET_PROCESS_LIMIT", "Allows an application to set the maximum number of (not needed) application processes that can be running.", "SET_TIME", "Allows applications to set the system time directly.", @@ -425,6 +540,7 @@ public String getMenuTitle() { "SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE", "Allows an application to subscribe to keyguard locked (i.e., showing) state.", "SYSTEM_ALERT_WINDOW", "Allows an app to create windows using the type WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY , shown on top of all other apps.", "TRANSMIT_IR", "Allows using the device's IR transmitter, if available.", + "TURN_SCREEN_ON", "Allows an app to turn on the screen on, e.g. with PowerManager.ACQUIRE_CAUSES_WAKEUP .", "UPDATE_DEVICE_STATS", "Allows an application to update device statistics.", "UPDATE_PACKAGES_WITHOUT_USER_ACTION", "Allows an application to indicate via PackageInstaller.SessionParams.setRequireUserAction(int) that user action should not be required for an app update.", "USE_BIOMETRIC", "Allows an app to use device supported biometric modalities.", @@ -437,7 +553,7 @@ public String getMenuTitle() { "WAKE_LOCK", "Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming.", "WRITE_APN_SETTINGS", "Allows applications to write the apn settings and read sensitive fields of an existing apn settings like user and password.", "WRITE_CALENDAR", "Allows an application to write the user's calendar data.", - "WRITE_CALL_LOG", "Allows an application to write (but not read) the user's call log data.", + "WRITE_CALL_LOG", "Allows an application to write and read the user's call log data.", "WRITE_CONTACTS", "Allows an application to write the user's contacts data.", "WRITE_EXTERNAL_STORAGE", "Allows an application to write to external storage.", "WRITE_GSERVICES", "Allows an application to modify the Google service map.", @@ -475,6 +591,7 @@ public String getMenuTitle() { "READ_MEDIA_AUDIO", "READ_MEDIA_IMAGES", "READ_MEDIA_VIDEO", + "READ_MEDIA_VISUAL_USER_SELECTED", "READ_PHONE_NUMBERS", "READ_PHONE_STATE", "READ_SMS", diff --git a/mode/src/processing/mode/android/RedirectStreamHandler.java b/processing/mode/src/processing/mode/android/RedirectStreamHandler.java similarity index 100% rename from mode/src/processing/mode/android/RedirectStreamHandler.java rename to processing/mode/src/processing/mode/android/RedirectStreamHandler.java diff --git a/mode/src/processing/mode/android/SDKDownloader.java b/processing/mode/src/processing/mode/android/SDKDownloader.java similarity index 97% rename from mode/src/processing/mode/android/SDKDownloader.java rename to processing/mode/src/processing/mode/android/SDKDownloader.java index 58397611d..2f9312b81 100644 --- a/mode/src/processing/mode/android/SDKDownloader.java +++ b/processing/mode/src/processing/mode/android/SDKDownloader.java @@ -141,7 +141,7 @@ protected Object doInBackground() throws Exception { // Command-line tools File downloadedCmdLineTools = new File(tempFolder, downloadUrls.cmdlineToolsFilename); - downloadAndUnpack(downloadUrls.cmdlineToolsUrl, downloadedCmdLineTools, sdkFolder, true); + downloadAndUnpack(downloadUrls.cmdlineToolsUrl, downloadedCmdLineTools, sdkFolder); File tmpFrom = new File(sdkFolder, "cmdline-tools"); File tmpTo = new File(sdkFolder, "cmdline-tmp"); AndroidUtil.moveDir(tmpFrom, tmpTo); @@ -151,33 +151,33 @@ protected Object doInBackground() throws Exception { // Platform tools File downloadedPlatformTools = new File(tempFolder, downloadUrls.platformToolsFilename); - downloadAndUnpack(downloadUrls.platformToolsUrl, downloadedPlatformTools, sdkFolder, true); + downloadAndUnpack(downloadUrls.platformToolsUrl, downloadedPlatformTools, sdkFolder); // Build tools File downloadedBuildTools = new File(tempFolder, downloadUrls.buildToolsFilename); - downloadAndUnpack(downloadUrls.buildToolsUrl, downloadedBuildTools, buildToolsFolder, true); + downloadAndUnpack(downloadUrls.buildToolsUrl, downloadedBuildTools, buildToolsFolder); // Platform File downloadedPlatform = new File(tempFolder, downloadUrls.platformFilename); - downloadAndUnpack(downloadUrls.platformUrl, downloadedPlatform, platformsFolder, false); + downloadAndUnpack(downloadUrls.platformUrl, downloadedPlatform, platformsFolder); // USB driver - if (Platform.isWindows()) { + if (Platform.isWindows() && downloadUrls.usbDriverFilename != null) { File downloadedFolder = new File(tempFolder, downloadUrls.usbDriverFilename); - downloadAndUnpack(downloadUrls.usbDriverUrl, downloadedFolder, googleRepoFolder, false); + downloadAndUnpack(downloadUrls.usbDriverUrl, downloadedFolder, googleRepoFolder); } // HAXM - if (!Platform.isLinux()) { + if (!Platform.isLinux() && downloadUrls.haxmFilename != null) { File downloadedFolder = new File(tempFolder, downloadUrls.haxmFilename); - downloadAndUnpack(downloadUrls.haxmUrl, downloadedFolder, haxmFolder, true); + downloadAndUnpack(downloadUrls.haxmUrl, downloadedFolder, haxmFolder); } - if (DOWNLOAD_EMU_WITH_SDK) { + if (DOWNLOAD_EMU_WITH_SDK && downloadUrls.emulatorFilename != null) { // Emulator, unpacks directly to sdk folder File downloadedEmulator = new File(tempFolder, downloadUrls.emulatorFilename); - downloadAndUnpack(downloadUrls.emulatorUrl, downloadedEmulator, sdkFolder, true); - } + downloadAndUnpack(downloadUrls.emulatorUrl, downloadedEmulator, sdkFolder); + } if (Platform.isLinux() || Platform.isMacOS()) { Runtime.getRuntime().exec("chmod -R 755 " + sdkFolder.getAbsolutePath()); @@ -186,10 +186,11 @@ protected Object doInBackground() throws Exception { for (File f: tempFolder.listFiles()) f.delete(); tempFolder.delete(); - // Normalize built-tools and platform folders to android- - String actualName = platformsFolder.listFiles()[0].getName(); - renameFolder(platformsFolder, "android-" + AndroidBuild.TARGET_SDK, actualName); - actualName = buildToolsFolder.listFiles()[0].getName(); + +// String actualName = platformsFolder.listFiles()[0].getName(); +// renameFolder(platformsFolder, "android-" + AndroidBuild.TARGET_SDK, actualName); + // Rename build-tools folder to the expected name if it's not that already + String actualName = buildToolsFolder.listFiles()[0].getName(); renameFolder(buildToolsFolder, downloadUrls.buildToolsVersion, actualName); // Done, let's set the environment and load the new SDK! @@ -216,7 +217,7 @@ protected void done() { } private void downloadAndUnpack(String urlString, File saveTo, - File unpackTo, boolean setExec) throws IOException { + File unpackTo) throws IOException { URL url = null; try { url = new URL(urlString); @@ -248,7 +249,7 @@ private void downloadAndUnpack(String urlString, File saveTo, inputStream.close(); outputStream.close(); - AndroidUtil.extractFolder(saveTo, unpackTo, setExec); + AndroidUtil.extractFolder(saveTo, unpackTo); } private void getMainDownloadUrls(SDKUrlHolder urlHolder, diff --git a/mode/src/processing/mode/android/SysImageDownloader.java b/processing/mode/src/processing/mode/android/SysImageDownloader.java similarity index 98% rename from mode/src/processing/mode/android/SysImageDownloader.java rename to processing/mode/src/processing/mode/android/SysImageDownloader.java index f80b347f3..d665991f4 100644 --- a/mode/src/processing/mode/android/SysImageDownloader.java +++ b/processing/mode/src/processing/mode/android/SysImageDownloader.java @@ -148,7 +148,7 @@ protected Object doInBackground() throws Exception { if (!tmp.exists()) tmp.mkdir(); File sysImgWearFinalFolder = new File(tmp, downloadUrls.sysImgWearTag); if (!sysImgWearFinalFolder.exists()) sysImgWearFinalFolder.mkdir(); - downloadAndUnpack(downloadUrls.sysImgWearUrl, downloadedSysImgWear, sysImgWearFinalFolder, false); + downloadAndUnpack(downloadUrls.sysImgWearUrl, downloadedSysImgWear, sysImgWearFinalFolder); fixSourceProperties(sysImgWearFinalFolder); } else { // mobile system images @@ -157,7 +157,7 @@ protected Object doInBackground() throws Exception { if (!tmp.exists()) tmp.mkdir(); File sysImgFinalFolder = new File(tmp, downloadUrls.sysImgTag); if (!sysImgFinalFolder.exists()) sysImgFinalFolder.mkdir(); - downloadAndUnpack(downloadUrls.sysImgUrl, downloadedSysImg, sysImgFinalFolder, false); + downloadAndUnpack(downloadUrls.sysImgUrl, downloadedSysImg, sysImgFinalFolder); fixSourceProperties(sysImgFinalFolder); } @@ -193,7 +193,7 @@ protected void done() { } private void downloadAndUnpack(String urlString, File saveTo, - File unpackTo, boolean setExec) throws IOException { + File unpackTo) throws IOException { URL url = null; try { url = new URL(urlString); @@ -218,7 +218,7 @@ private void downloadAndUnpack(String urlString, File saveTo, inputStream.close(); outputStream.close(); - AndroidUtil.extractFolder(saveTo, unpackTo, setExec); + AndroidUtil.extractFolder(saveTo, unpackTo); } // For some reason the source.properties file includes Addon entries, diff --git a/mode/templates/ARActivity.java.tmpl b/processing/mode/templates/ARActivity.java.tmpl similarity index 100% rename from mode/templates/ARActivity.java.tmpl rename to processing/mode/templates/ARActivity.java.tmpl diff --git a/mode/templates/ARBuild.gradle.tmpl b/processing/mode/templates/ARBuild.gradle.tmpl similarity index 97% rename from mode/templates/ARBuild.gradle.tmpl rename to processing/mode/templates/ARBuild.gradle.tmpl index 2c222a9d0..9bd31923a 100644 --- a/mode/templates/ARBuild.gradle.tmpl +++ b/processing/mode/templates/ARBuild.gradle.tmpl @@ -7,7 +7,7 @@ android { } compileSdkVersion @@target_sdk@@ defaultConfig { - applicationId "@@target_sdk@@" + applicationId "@@package_name@@" minSdkVersion @@min_sdk@@ targetSdkVersion @@target_sdk@@ versionCode @@version_code@@ diff --git a/mode/templates/ARBuildECJ.gradle.tmpl b/processing/mode/templates/ARBuildECJ.gradle.tmpl similarity index 100% rename from mode/templates/ARBuildECJ.gradle.tmpl rename to processing/mode/templates/ARBuildECJ.gradle.tmpl diff --git a/mode/templates/ARManifest.xml.tmpl b/processing/mode/templates/ARManifest.xml.tmpl similarity index 100% rename from mode/templates/ARManifest.xml.tmpl rename to processing/mode/templates/ARManifest.xml.tmpl diff --git a/mode/templates/AppActivity.java.tmpl b/processing/mode/templates/AppActivity.java.tmpl similarity index 100% rename from mode/templates/AppActivity.java.tmpl rename to processing/mode/templates/AppActivity.java.tmpl diff --git a/mode/templates/AppBuild.gradle.tmpl b/processing/mode/templates/AppBuild.gradle.tmpl similarity index 100% rename from mode/templates/AppBuild.gradle.tmpl rename to processing/mode/templates/AppBuild.gradle.tmpl diff --git a/mode/templates/AppBuildECJ.gradle.tmpl b/processing/mode/templates/AppBuildECJ.gradle.tmpl similarity index 100% rename from mode/templates/AppBuildECJ.gradle.tmpl rename to processing/mode/templates/AppBuildECJ.gradle.tmpl diff --git a/mode/templates/AppManifest.xml.tmpl b/processing/mode/templates/AppManifest.xml.tmpl similarity index 100% rename from mode/templates/AppManifest.xml.tmpl rename to processing/mode/templates/AppManifest.xml.tmpl diff --git a/mode/templates/ExpProperties.gradle.tmpl b/processing/mode/templates/ExpProperties.gradle.tmpl similarity index 100% rename from mode/templates/ExpProperties.gradle.tmpl rename to processing/mode/templates/ExpProperties.gradle.tmpl diff --git a/mode/templates/LayoutActivity.xml.tmpl b/processing/mode/templates/LayoutActivity.xml.tmpl similarity index 100% rename from mode/templates/LayoutActivity.xml.tmpl rename to processing/mode/templates/LayoutActivity.xml.tmpl diff --git a/mode/templates/Properties.gradle.tmpl b/processing/mode/templates/Properties.gradle.tmpl similarity index 100% rename from mode/templates/Properties.gradle.tmpl rename to processing/mode/templates/Properties.gradle.tmpl diff --git a/mode/templates/Properties.local.tmpl b/processing/mode/templates/Properties.local.tmpl similarity index 100% rename from mode/templates/Properties.local.tmpl rename to processing/mode/templates/Properties.local.tmpl diff --git a/mode/templates/Settings.gradle.tmpl b/processing/mode/templates/Settings.gradle.tmpl similarity index 100% rename from mode/templates/Settings.gradle.tmpl rename to processing/mode/templates/Settings.gradle.tmpl diff --git a/mode/templates/StringsWallpaper.xml.tmpl b/processing/mode/templates/StringsWallpaper.xml.tmpl similarity index 100% rename from mode/templates/StringsWallpaper.xml.tmpl rename to processing/mode/templates/StringsWallpaper.xml.tmpl diff --git a/mode/templates/StylesAR.xml.tmpl b/processing/mode/templates/StylesAR.xml.tmpl similarity index 100% rename from mode/templates/StylesAR.xml.tmpl rename to processing/mode/templates/StylesAR.xml.tmpl diff --git a/mode/templates/StylesFragment.xml.tmpl b/processing/mode/templates/StylesFragment.xml.tmpl similarity index 100% rename from mode/templates/StylesFragment.xml.tmpl rename to processing/mode/templates/StylesFragment.xml.tmpl diff --git a/mode/templates/StylesVR.xml.tmpl b/processing/mode/templates/StylesVR.xml.tmpl similarity index 100% rename from mode/templates/StylesVR.xml.tmpl rename to processing/mode/templates/StylesVR.xml.tmpl diff --git a/mode/templates/TopBuild.gradle.tmpl b/processing/mode/templates/TopBuild.gradle.tmpl similarity index 100% rename from mode/templates/TopBuild.gradle.tmpl rename to processing/mode/templates/TopBuild.gradle.tmpl diff --git a/mode/templates/VRActivity.java.tmpl b/processing/mode/templates/VRActivity.java.tmpl similarity index 100% rename from mode/templates/VRActivity.java.tmpl rename to processing/mode/templates/VRActivity.java.tmpl diff --git a/mode/templates/VRBuild.gradle.tmpl b/processing/mode/templates/VRBuild.gradle.tmpl similarity index 100% rename from mode/templates/VRBuild.gradle.tmpl rename to processing/mode/templates/VRBuild.gradle.tmpl diff --git a/mode/templates/VRBuildECJ.gradle.tmpl b/processing/mode/templates/VRBuildECJ.gradle.tmpl similarity index 100% rename from mode/templates/VRBuildECJ.gradle.tmpl rename to processing/mode/templates/VRBuildECJ.gradle.tmpl diff --git a/mode/templates/VRManifest.xml.tmpl b/processing/mode/templates/VRManifest.xml.tmpl similarity index 100% rename from mode/templates/VRManifest.xml.tmpl rename to processing/mode/templates/VRManifest.xml.tmpl diff --git a/mode/templates/WallpaperManifest.xml.tmpl b/processing/mode/templates/WallpaperManifest.xml.tmpl similarity index 100% rename from mode/templates/WallpaperManifest.xml.tmpl rename to processing/mode/templates/WallpaperManifest.xml.tmpl diff --git a/mode/templates/WallpaperService.java.tmpl b/processing/mode/templates/WallpaperService.java.tmpl similarity index 100% rename from mode/templates/WallpaperService.java.tmpl rename to processing/mode/templates/WallpaperService.java.tmpl diff --git a/mode/templates/WatchFaceManifest.xml.tmpl b/processing/mode/templates/WatchFaceManifest.xml.tmpl similarity index 100% rename from mode/templates/WatchFaceManifest.xml.tmpl rename to processing/mode/templates/WatchFaceManifest.xml.tmpl diff --git a/mode/templates/WatchFaceService.java.tmpl b/processing/mode/templates/WatchFaceService.java.tmpl similarity index 100% rename from mode/templates/WatchFaceService.java.tmpl rename to processing/mode/templates/WatchFaceService.java.tmpl diff --git a/mode/templates/WearBuild.gradle.tmpl b/processing/mode/templates/WearBuild.gradle.tmpl similarity index 100% rename from mode/templates/WearBuild.gradle.tmpl rename to processing/mode/templates/WearBuild.gradle.tmpl diff --git a/mode/templates/WearBuildECJ.gradle.tmpl b/processing/mode/templates/WearBuildECJ.gradle.tmpl similarity index 100% rename from mode/templates/WearBuildECJ.gradle.tmpl rename to processing/mode/templates/WearBuildECJ.gradle.tmpl diff --git a/mode/templates/XMLWallpaper.xml.tmpl b/processing/mode/templates/XMLWallpaper.xml.tmpl similarity index 100% rename from mode/templates/XMLWallpaper.xml.tmpl rename to processing/mode/templates/XMLWallpaper.xml.tmpl diff --git a/mode/templates/XMLWatchFace.xml.tmpl b/processing/mode/templates/XMLWatchFace.xml.tmpl similarity index 100% rename from mode/templates/XMLWatchFace.xml.tmpl rename to processing/mode/templates/XMLWatchFace.xml.tmpl diff --git a/mode/theme/completion/class_obj-1x.png b/processing/mode/theme/completion/class_obj-1x.png similarity index 100% rename from mode/theme/completion/class_obj-1x.png rename to processing/mode/theme/completion/class_obj-1x.png diff --git a/mode/theme/completion/class_obj-2x.png b/processing/mode/theme/completion/class_obj-2x.png similarity index 100% rename from mode/theme/completion/class_obj-2x.png rename to processing/mode/theme/completion/class_obj-2x.png diff --git a/mode/theme/completion/field_default_obj-1x.png b/processing/mode/theme/completion/field_default_obj-1x.png similarity index 100% rename from mode/theme/completion/field_default_obj-1x.png rename to processing/mode/theme/completion/field_default_obj-1x.png diff --git a/mode/theme/completion/field_default_obj-2x.png b/processing/mode/theme/completion/field_default_obj-2x.png similarity index 100% rename from mode/theme/completion/field_default_obj-2x.png rename to processing/mode/theme/completion/field_default_obj-2x.png diff --git a/mode/theme/completion/field_protected_obj-1x.png b/processing/mode/theme/completion/field_protected_obj-1x.png similarity index 100% rename from mode/theme/completion/field_protected_obj-1x.png rename to processing/mode/theme/completion/field_protected_obj-1x.png diff --git a/mode/theme/completion/field_protected_obj-2x.png b/processing/mode/theme/completion/field_protected_obj-2x.png similarity index 100% rename from mode/theme/completion/field_protected_obj-2x.png rename to processing/mode/theme/completion/field_protected_obj-2x.png diff --git a/mode/theme/completion/methpub_obj-1x.png b/processing/mode/theme/completion/methpub_obj-1x.png similarity index 100% rename from mode/theme/completion/methpub_obj-1x.png rename to processing/mode/theme/completion/methpub_obj-1x.png diff --git a/mode/theme/completion/methpub_obj-2x.png b/processing/mode/theme/completion/methpub_obj-2x.png similarity index 100% rename from mode/theme/completion/methpub_obj-2x.png rename to processing/mode/theme/completion/methpub_obj-2x.png diff --git a/mode/theme/debug/breakpoint-enabled-1x.png b/processing/mode/theme/debug/breakpoint-enabled-1x.png similarity index 100% rename from mode/theme/debug/breakpoint-enabled-1x.png rename to processing/mode/theme/debug/breakpoint-enabled-1x.png diff --git a/mode/theme/debug/breakpoint-enabled-2x.png b/processing/mode/theme/debug/breakpoint-enabled-2x.png similarity index 100% rename from mode/theme/debug/breakpoint-enabled-2x.png rename to processing/mode/theme/debug/breakpoint-enabled-2x.png diff --git a/mode/theme/debug/continue-enabled-1x.png b/processing/mode/theme/debug/continue-enabled-1x.png similarity index 100% rename from mode/theme/debug/continue-enabled-1x.png rename to processing/mode/theme/debug/continue-enabled-1x.png diff --git a/mode/theme/debug/continue-enabled-2x.png b/processing/mode/theme/debug/continue-enabled-2x.png similarity index 100% rename from mode/theme/debug/continue-enabled-2x.png rename to processing/mode/theme/debug/continue-enabled-2x.png diff --git a/mode/theme/debug/step-enabled-1x.png b/processing/mode/theme/debug/step-enabled-1x.png similarity index 100% rename from mode/theme/debug/step-enabled-1x.png rename to processing/mode/theme/debug/step-enabled-1x.png diff --git a/mode/theme/debug/step-enabled-2x.png b/processing/mode/theme/debug/step-enabled-2x.png similarity index 100% rename from mode/theme/debug/step-enabled-2x.png rename to processing/mode/theme/debug/step-enabled-2x.png diff --git a/mode/theme/variables-1x.png b/processing/mode/theme/variables-1x.png similarity index 100% rename from mode/theme/variables-1x.png rename to processing/mode/theme/variables-1x.png diff --git a/mode/theme/variables-2x.png b/processing/mode/theme/variables-2x.png similarity index 100% rename from mode/theme/variables-2x.png rename to processing/mode/theme/variables-2x.png diff --git a/mode/tools/SDKUpdater/.classpath b/processing/mode/tools/SDKUpdater/.classpath similarity index 100% rename from mode/tools/SDKUpdater/.classpath rename to processing/mode/tools/SDKUpdater/.classpath diff --git a/mode/tools/SDKUpdater/.gitignore b/processing/mode/tools/SDKUpdater/.gitignore similarity index 100% rename from mode/tools/SDKUpdater/.gitignore rename to processing/mode/tools/SDKUpdater/.gitignore diff --git a/mode/tools/SDKUpdater/.project b/processing/mode/tools/SDKUpdater/.project similarity index 100% rename from mode/tools/SDKUpdater/.project rename to processing/mode/tools/SDKUpdater/.project diff --git a/mode/tools/SDKUpdater/.settings/org.eclipse.buildship.core.prefs b/processing/mode/tools/SDKUpdater/.settings/org.eclipse.buildship.core.prefs similarity index 100% rename from mode/tools/SDKUpdater/.settings/org.eclipse.buildship.core.prefs rename to processing/mode/tools/SDKUpdater/.settings/org.eclipse.buildship.core.prefs diff --git a/mode/tools/SDKUpdater/.settings/org.eclipse.jdt.core.prefs b/processing/mode/tools/SDKUpdater/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from mode/tools/SDKUpdater/.settings/org.eclipse.jdt.core.prefs rename to processing/mode/tools/SDKUpdater/.settings/org.eclipse.jdt.core.prefs diff --git a/mode/tools/SDKUpdater/build.gradle b/processing/mode/tools/SDKUpdater/build.gradle similarity index 100% rename from mode/tools/SDKUpdater/build.gradle rename to processing/mode/tools/SDKUpdater/build.gradle diff --git a/mode/tools/SDKUpdater/src/processing/mode/android/tools/SDKUpdater.java b/processing/mode/tools/SDKUpdater/src/processing/mode/android/tools/SDKUpdater.java similarity index 100% rename from mode/tools/SDKUpdater/src/processing/mode/android/tools/SDKUpdater.java rename to processing/mode/tools/SDKUpdater/src/processing/mode/android/tools/SDKUpdater.java diff --git a/mode/version.properties b/processing/mode/version.properties similarity index 97% rename from mode/version.properties rename to processing/mode/version.properties index 2bc0ba59d..fbf85d18d 100644 --- a/mode/version.properties +++ b/processing/mode/version.properties @@ -22,7 +22,7 @@ androidx.legacy%legacy-support-v4 = 1.0.0 com.google.android.support%wearable = 2.9.0 com.google.android.gms%play-services-wearable = 18.0.0 com.google.vr = 1.180.0 -com.google.ar = 1.35.0 +com.google.ar = 1.37.0 org.processing = 4.0.0b7 org.gradle%gradle-tooling-api = 7.2 org.slf4j = 1.7.30 diff --git a/scripts/publish-module.gradle b/processing/scripts/publish-module.gradle similarity index 100% rename from scripts/publish-module.gradle rename to processing/scripts/publish-module.gradle diff --git a/scripts/publish-root.gradle b/processing/scripts/publish-root.gradle similarity index 100% rename from scripts/publish-root.gradle rename to processing/scripts/publish-root.gradle diff --git a/processing/settings.gradle b/processing/settings.gradle new file mode 100644 index 000000000..9e3fad4ab --- /dev/null +++ b/processing/settings.gradle @@ -0,0 +1,2 @@ +include ':mode', ':core', ':mode:libraries:vr', ':mode:libraries:ar', 'mode:tools:SDKUpdater' + diff --git a/settings.gradle b/settings.gradle index 9e3fad4ab..193a03378 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1 @@ -include ':mode', ':core', ':mode:libraries:vr', ':mode:libraries:ar', 'mode:tools:SDKUpdater' - +include ':libs:processing-core', 'libs:google-vr',':libs:processing-vr', ':libs:processing-ar', ':apps:simple', ':apps:wallpaper', ':apps:arscene', ':apps:watchface', ':apps:fast2d', ':apps:armarkers' \ No newline at end of file