From 7da8e48b8106143b7a2ce264ba85cce2fd707124 Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 15:38:58 +0900 Subject: [PATCH 001/136] update gitignore --- .gitignore | 77 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index a026429fa..22233dd40 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,74 @@ -#OSX -.DS_Store -target/ +# Mac OS +.DS_store -.idea/ -*.iml +# Built application files +*.apk +*.ap_ -#Gradle -build/ +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files .gradle/ +build/ + +# Local configuration file (sdk path, etc) local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +.idea/caches +.idea/misc.xml +.idea/modules.xml +.idea/navEditor.xml +projectFilesBackup/ + +# Keystore files +# Uncomment the following line if you do not want to check your keystore files in. +#*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +fastlane/README.md +fastlane/report.xml + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# NDK +.externalNativeBuild From 13689af683184ced2e6e9c015d7dabc1820e4bdb Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 15:39:36 +0900 Subject: [PATCH 002/136] update to 4.10.1 --- gradle/wrapper/gradle-wrapper.jar | Bin 49896 -> 56177 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 78 +++++++++++++---------- gradlew.bat | 14 ++-- 4 files changed, 48 insertions(+), 47 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8c0fb64a8698b08ecc4158d828ca593c4928e9dd..13536770052936a92b204cc34e72284a03a6903c 100644 GIT binary patch literal 56177 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 i;x|p)^~-yfPOPa3(|vBayXKz1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$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="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index aec99730b..e95643d6a 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line From 42765494f33def54588eb3d44a078ae3bbfc47b5 Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 15:46:58 +0900 Subject: [PATCH 003/136] update android gradle plugin --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ecc0a83e5..92bbfeda2 100644 --- a/build.gradle +++ b/build.gradle @@ -2,15 +2,17 @@ buildscript { repositories { + google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.0.0-beta6' + classpath 'com.android.tools.build:gradle:3.3.0-alpha13' } } allprojects { repositories { + google() jcenter() maven { url("https://oss.sonatype.org/content/repositories/snapshots/") } } From 22b8cfa734e1e999f3ee95a2adb6cb90bc26a83d Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 16:48:10 +0900 Subject: [PATCH 004/136] Source move to java dir --- library/.gitignore | 32 ------------------ library/build.gradle | 14 -------- library/project.properties | 15 -------- library/{ => src/main}/AndroidManifest.xml | 0 library/{jni => src/main/cpp}/yuv-decoder.c | 0 .../cyberagent/android/gpuimage/GPUImage.java | 1 - .../GPUImage3x3ConvolutionFilter.java | 0 .../GPUImage3x3TextureSamplingFilter.java | 0 .../gpuimage/GPUImageAddBlendFilter.java | 0 .../gpuimage/GPUImageAlphaBlendFilter.java | 0 .../gpuimage/GPUImageBilateralFilter.java | 0 .../gpuimage/GPUImageBoxBlurFilter.java | 0 .../gpuimage/GPUImageBrightnessFilter.java | 0 .../GPUImageBulgeDistortionFilter.java | 0 .../gpuimage/GPUImageCGAColorspaceFilter.java | 0 .../GPUImageChromaKeyBlendFilter.java | 0 .../gpuimage/GPUImageColorBalanceFilter.java | 0 .../gpuimage/GPUImageColorBlendFilter.java | 0 .../GPUImageColorBurnBlendFilter.java | 0 .../GPUImageColorDodgeBlendFilter.java | 0 .../gpuimage/GPUImageColorInvertFilter.java | 0 .../gpuimage/GPUImageColorMatrixFilter.java | 0 .../gpuimage/GPUImageContrastFilter.java | 0 .../gpuimage/GPUImageCrosshatchFilter.java | 0 .../gpuimage/GPUImageDarkenBlendFilter.java | 0 .../GPUImageDifferenceBlendFilter.java | 0 .../gpuimage/GPUImageDilationFilter.java | 0 ...geDirectionalSobelEdgeDetectionFilter.java | 0 .../gpuimage/GPUImageDissolveBlendFilter.java | 2 -- .../gpuimage/GPUImageDivideBlendFilter.java | 0 .../gpuimage/GPUImageEmbossFilter.java | 0 .../GPUImageExclusionBlendFilter.java | 0 .../gpuimage/GPUImageExposureFilter.java | 0 .../gpuimage/GPUImageFalseColorFilter.java | 0 .../android/gpuimage/GPUImageFilter.java | 0 .../android/gpuimage/GPUImageFilterGroup.java | 0 .../android/gpuimage/GPUImageGammaFilter.java | 0 .../gpuimage/GPUImageGaussianBlurFilter.java | 0 .../gpuimage/GPUImageGlassSphereFilter.java | 0 .../gpuimage/GPUImageGrayscaleFilter.java | 0 .../gpuimage/GPUImageHalftoneFilter.java | 0 .../GPUImageHardLightBlendFilter.java | 0 .../android/gpuimage/GPUImageHazeFilter.java | 0 .../GPUImageHighlightShadowFilter.java | 0 .../gpuimage/GPUImageHueBlendFilter.java | 0 .../android/gpuimage/GPUImageHueFilter.java | 0 .../gpuimage/GPUImageKuwaharaFilter.java | 0 .../gpuimage/GPUImageLaplacianFilter.java | 0 .../gpuimage/GPUImageLevelsFilter.java | 1 - .../gpuimage/GPUImageLightenBlendFilter.java | 0 .../GPUImageLinearBurnBlendFilter.java | 0 .../gpuimage/GPUImageLookupFilter.java | 0 .../GPUImageLuminosityBlendFilter.java | 0 .../gpuimage/GPUImageMixBlendFilter.java | 0 .../gpuimage/GPUImageMonochromeFilter.java | 0 .../gpuimage/GPUImageMultiplyBlendFilter.java | 0 .../gpuimage/GPUImageNativeLibrary.java | 2 +- .../GPUImageNonMaximumSuppressionFilter.java | 0 .../gpuimage/GPUImageNormalBlendFilter.java | 0 .../gpuimage/GPUImageOpacityFilter.java | 0 .../gpuimage/GPUImageOverlayBlendFilter.java | 0 .../gpuimage/GPUImagePixelationFilter.java | 0 .../gpuimage/GPUImagePosterizeFilter.java | 0 .../gpuimage/GPUImageRGBDilationFilter.java | 0 .../android/gpuimage/GPUImageRGBFilter.java | 0 .../android/gpuimage/GPUImageRenderer.java | 15 ++++---- .../GPUImageSaturationBlendFilter.java | 0 .../gpuimage/GPUImageSaturationFilter.java | 0 .../gpuimage/GPUImageScreenBlendFilter.java | 0 .../android/gpuimage/GPUImageSepiaFilter.java | 0 .../gpuimage/GPUImageSharpenFilter.java | 0 .../gpuimage/GPUImageSketchFilter.java | 3 -- .../gpuimage/GPUImageSmoothToonFilter.java | 2 -- .../gpuimage/GPUImageSobelEdgeDetection.java | 3 -- .../GPUImageSobelThresholdFilter.java | 0 .../GPUImageSoftLightBlendFilter.java | 0 .../GPUImageSourceOverBlendFilter.java | 0 .../GPUImageSphereRefractionFilter.java | 0 .../gpuimage/GPUImageSubtractBlendFilter.java | 0 .../android/gpuimage/GPUImageSwirlFilter.java | 0 .../GPUImageThresholdEdgeDetection.java | 0 .../gpuimage/GPUImageToneCurveFilter.java | 0 .../android/gpuimage/GPUImageToonFilter.java | 0 .../gpuimage/GPUImageTransformFilter.java | 0 .../gpuimage/GPUImageTwoInputFilter.java | 0 .../gpuimage/GPUImageTwoPassFilter.java | 0 .../GPUImageTwoPassTextureSamplingFilter.java | 0 .../android/gpuimage/GPUImageView.java | 2 -- .../gpuimage/GPUImageVignetteFilter.java | 0 .../GPUImageWeakPixelInclusionFilter.java | 0 .../gpuimage/GPUImageWhiteBalanceFilter.java | 0 .../android/gpuimage/OpenGlUtils.java | 0 .../android/gpuimage/PixelBuffer.java | 0 .../cyberagent/android/gpuimage/Rotation.java | 0 .../gpuimage/util/TextureRotationUtil.java | 2 +- sample/.gitignore | 32 ------------------ sample/build.gradle | 14 -------- sample/project.properties | 16 --------- sample/{ => src/main}/AndroidManifest.xml | 6 ++-- .../gpuimage/sample/GPUImageFilterTools.java | 4 +-- .../sample/activity/ActivityCamera.java | 3 +- .../sample/activity/ActivityGallery.java | 3 +- .../sample/activity/ActivityMain.java | 1 + .../gpuimage/sample/utils/CameraHelper.java | 0 .../sample/utils/CameraHelperBase.java | 0 .../gpuimage/sample/utils/CameraHelperGB.java | 0 .../res/drawable-hdpi/ic_action_search.png | Bin .../main}/res/drawable-hdpi/ic_launcher.png | Bin .../res/drawable-hdpi/ic_switch_camera.png | Bin .../main}/res/drawable-ldpi/ic_launcher.png | Bin .../res/drawable-mdpi/ic_action_search.png | Bin .../main}/res/drawable-mdpi/ic_launcher.png | Bin .../res/drawable-nodpi/lookup_amatorka.png | Bin .../res/drawable-xhdpi/ic_action_search.png | Bin .../main}/res/drawable-xhdpi/ic_launcher.png | Bin .../main}/res/layout/activity_camera.xml | 0 .../main}/res/layout/activity_gallery.xml | 0 .../main}/res/layout/activity_main.xml | 0 .../main}/res/raw/tone_cuver_sample.acv | Bin .../{ => src/main}/res/values-v11/styles.xml | 0 .../{ => src/main}/res/values-v14/styles.xml | 0 sample/{ => src/main}/res/values/strings.xml | 0 sample/{ => src/main}/res/values/styles.xml | 0 123 files changed, 19 insertions(+), 154 deletions(-) delete mode 100644 library/.gitignore delete mode 100644 library/project.properties rename library/{ => src/main}/AndroidManifest.xml (100%) rename library/{jni => src/main/cpp}/yuv-decoder.c (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImage.java (99%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java (98%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java (99%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java (94%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java (98%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java (98%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java (98%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java (98%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageThresholdEdgeDetection.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageTransformFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageView.java (99%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/PixelBuffer.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/Rotation.java (100%) rename library/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java (96%) delete mode 100644 sample/.gitignore delete mode 100644 sample/project.properties rename sample/{ => src/main}/AndroidManifest.xml (85%) rename sample/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java (100%) rename sample/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java (98%) rename sample/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java (97%) rename sample/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java (99%) rename sample/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java (100%) rename sample/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java (100%) rename sample/src/{ => main/java}/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java (100%) rename sample/{ => src/main}/res/drawable-hdpi/ic_action_search.png (100%) rename sample/{ => src/main}/res/drawable-hdpi/ic_launcher.png (100%) rename sample/{ => src/main}/res/drawable-hdpi/ic_switch_camera.png (100%) rename sample/{ => src/main}/res/drawable-ldpi/ic_launcher.png (100%) rename sample/{ => src/main}/res/drawable-mdpi/ic_action_search.png (100%) rename sample/{ => src/main}/res/drawable-mdpi/ic_launcher.png (100%) rename sample/{ => src/main}/res/drawable-nodpi/lookup_amatorka.png (100%) rename sample/{ => src/main}/res/drawable-xhdpi/ic_action_search.png (100%) rename sample/{ => src/main}/res/drawable-xhdpi/ic_launcher.png (100%) rename sample/{ => src/main}/res/layout/activity_camera.xml (100%) rename sample/{ => src/main}/res/layout/activity_gallery.xml (100%) rename sample/{ => src/main}/res/layout/activity_main.xml (100%) rename sample/{ => src/main}/res/raw/tone_cuver_sample.acv (100%) rename sample/{ => src/main}/res/values-v11/styles.xml (100%) rename sample/{ => src/main}/res/values-v14/styles.xml (100%) rename sample/{ => src/main}/res/values/strings.xml (100%) rename sample/{ => src/main}/res/values/styles.xml (100%) diff --git a/library/.gitignore b/library/.gitignore deleted file mode 100644 index 85e23b431..000000000 --- a/library/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -#Android generated -bin -gen -obj - -#Eclipse -#.project -#.classpath -.settings - -#IntelliJ IDEA -.idea -*.iml -*.ipr -*.iws -out - -#Checkstyle -.checkstyle - -#Maven -target -release.properties -pom.xml.* - -#Ant -build.xml -local.properties -proguard.cfg - -#OSX -.DS_Store diff --git a/library/build.gradle b/library/build.gradle index 3cd5e8c42..640292516 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -18,20 +18,6 @@ android { ldLibs "log" } } - - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - resources.srcDirs = ['src'] - aidl.srcDirs = ['src'] - renderscript.srcDirs = ['src'] - res.srcDirs = ['res'] - assets.srcDirs = ['assets'] - jni.srcDirs = ['jni'] - } - - instrumentTest.setRoot('tests') } lintOptions { diff --git a/library/project.properties b/library/project.properties deleted file mode 100644 index 93c8c3c08..000000000 --- a/library/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-21 -android.library=true diff --git a/library/AndroidManifest.xml b/library/src/main/AndroidManifest.xml similarity index 100% rename from library/AndroidManifest.xml rename to library/src/main/AndroidManifest.xml diff --git a/library/jni/yuv-decoder.c b/library/src/main/cpp/yuv-decoder.c similarity index 100% rename from library/jni/yuv-decoder.c rename to library/src/main/cpp/yuv-decoder.c diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImage.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java similarity index 99% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImage.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java index 8392a5a9a..693c6f910 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImage.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java @@ -42,7 +42,6 @@ import java.io.*; import java.net.URL; import java.util.List; -import java.util.concurrent.Semaphore; /** * The main accessor for GPUImage functionality. This class helps to do common diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java similarity index 98% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java index cd2880a60..688c28343 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java @@ -16,8 +16,6 @@ package jp.co.cyberagent.android.gpuimage; -import android.opengl.GLES20; - /** * Mix ranges from 0.0 (only image 1) to 1.0 (only image 2), with 0.5 (half of either) as the normal level */ diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java similarity index 99% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java index d7fbcfdfe..9ef7a124f 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java @@ -1,7 +1,6 @@ package jp.co.cyberagent.android.gpuimage; import android.opengl.GLES20; -import android.util.Log; /** * Created by vashisthg 30/05/14. diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java similarity index 94% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java index ce8c31b87..db88ff5ff 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java @@ -18,7 +18,7 @@ public class GPUImageNativeLibrary { static { - System.loadLibrary("gpuimage-library"); + System.loadLibrary("yuv-decoder"); } public static native void YUVtoRBGA(byte[] yuv, int width, int height, int[] out); diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java similarity index 98% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java index 691550bde..6d504c9fa 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java @@ -26,10 +26,6 @@ import android.opengl.GLES20; import android.opengl.GLSurfaceView.Renderer; -import jp.co.cyberagent.android.gpuimage.util.TextureRotationUtil; - -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.opengles.GL10; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -38,6 +34,11 @@ import java.util.LinkedList; import java.util.Queue; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; + +import jp.co.cyberagent.android.gpuimage.util.TextureRotationUtil; + import static jp.co.cyberagent.android.gpuimage.util.TextureRotationUtil.TEXTURE_NO_ROTATION; @TargetApi(11) @@ -127,9 +128,9 @@ public void onDrawFrame(final GL10 gl) { /** * Sets the background color * - * @param red red color value + * @param red red color value * @param green green color value - * @param blue red color value + * @param blue red color value */ public void setBackgroundColor(float red, float green, float blue) { mBackgroundRed = red; @@ -315,7 +316,7 @@ private float addDistance(float coordinate, float distance) { } public void setRotationCamera(final Rotation rotation, final boolean flipHorizontal, - final boolean flipVertical) { + final boolean flipVertical) { setRotation(rotation, flipVertical, flipHorizontal); } diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java similarity index 98% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java index dd78e7085..ea87d999f 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java @@ -16,9 +16,6 @@ package jp.co.cyberagent.android.gpuimage; -import java.util.ArrayList; -import java.util.List; - /** * Converts video to look like a sketch. * This is just the Sobel edge detection filter with the colors inverted. diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java similarity index 98% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java index a569ce972..944a80984 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java @@ -16,8 +16,6 @@ package jp.co.cyberagent.android.gpuimage; -import android.opengl.GLES20; - /** * This uses a similar process as the GPUImageToonFilter, only it precedes the toon effect * with a Gaussian blur to smooth out noise. diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java similarity index 98% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java index 2a775d483..ae08bb5eb 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java @@ -16,9 +16,6 @@ package jp.co.cyberagent.android.gpuimage; -import java.util.ArrayList; -import java.util.List; - /** * Applies sobel edge detection on the image. */ diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageThresholdEdgeDetection.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageThresholdEdgeDetection.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageThresholdEdgeDetection.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageThresholdEdgeDetection.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageTransformFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTransformFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageTransformFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTransformFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageView.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java similarity index 99% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageView.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java index cc6a02472..8d9c3a1e9 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageView.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java @@ -19,8 +19,6 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; import android.media.MediaScannerConnection; import android.net.Uri; import android.opengl.GLES20; diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/PixelBuffer.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/PixelBuffer.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/Rotation.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java similarity index 100% rename from library/src/jp/co/cyberagent/android/gpuimage/Rotation.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java diff --git a/library/src/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java similarity index 96% rename from library/src/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java rename to library/src/main/java/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java index c439d914f..ea7c357eb 100644 --- a/library/src/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java @@ -50,7 +50,7 @@ private TextureRotationUtil() { } public static float[] getRotation(final Rotation rotation, final boolean flipHorizontal, - final boolean flipVertical) { + final boolean flipVertical) { float[] rotatedTex; switch (rotation) { case ROTATION_90: diff --git a/sample/.gitignore b/sample/.gitignore deleted file mode 100644 index 85e23b431..000000000 --- a/sample/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -#Android generated -bin -gen -obj - -#Eclipse -#.project -#.classpath -.settings - -#IntelliJ IDEA -.idea -*.iml -*.ipr -*.iws -out - -#Checkstyle -.checkstyle - -#Maven -target -release.properties -pom.xml.* - -#Ant -build.xml -local.properties -proguard.cfg - -#OSX -.DS_Store diff --git a/sample/build.gradle b/sample/build.gradle index 878f820fd..895dae16f 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -9,20 +9,6 @@ android { targetSdkVersion TARGET_SDK_VERSION as int } - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - resources.srcDirs = ['src'] - aidl.srcDirs = ['src'] - renderscript.srcDirs = ['src'] - res.srcDirs = ['res'] - assets.srcDirs = ['assets'] - } - - instrumentTest.setRoot('tests') - } - lintOptions { abortOnError true } diff --git a/sample/project.properties b/sample/project.properties deleted file mode 100644 index 24e0cbf3b..000000000 --- a/sample/project.properties +++ /dev/null @@ -1,16 +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-16 -proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt -android.library.reference.1=../library \ No newline at end of file diff --git a/sample/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml similarity index 85% rename from sample/AndroidManifest.xml rename to sample/src/main/AndroidManifest.xml index 855b72c5e..6c3b28186 100644 --- a/sample/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -1,4 +1,5 @@ @@ -13,7 +14,8 @@ android:icon="@drawable/ic_launcher" android:largeHeap="true" android:label="@string/app_name" - android:theme="@style/AppTheme" > + android:theme="@style/AppTheme" + tools:ignore="GoogleAppIndexingWarning"> @@ -25,7 +27,7 @@ diff --git a/sample/src/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java similarity index 100% rename from sample/src/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java rename to sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java index 6f2f6dd4f..a0567895e 100644 --- a/sample/src/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java @@ -23,11 +23,11 @@ import android.graphics.PointF; import android.opengl.Matrix; -import jp.co.cyberagent.android.gpuimage.*; - import java.util.LinkedList; import java.util.List; +import jp.co.cyberagent.android.gpuimage.*; + public class GPUImageFilterTools { public static void showDialog(final Context context, final OnGpuImageFilterChosenListener listener) { diff --git a/sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java similarity index 98% rename from sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java rename to sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java index ba8322842..2038a0ce2 100644 --- a/sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java @@ -40,7 +40,6 @@ import java.util.Date; import jp.co.cyberagent.android.gpuimage.GPUImage; -import jp.co.cyberagent.android.gpuimage.GPUImage.OnPictureSavedListener; import jp.co.cyberagent.android.gpuimage.GPUImageFilter; import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools; import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools.FilterAdjuster; @@ -162,7 +161,7 @@ public void onPictureTaken(byte[] data, final Camera camera) { view.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); mGPUImage.saveToPictures(bitmap, "GPUImage", System.currentTimeMillis() + ".jpg", - new OnPictureSavedListener() { + new GPUImage.OnPictureSavedListener() { @Override public void onPictureSaved(final Uri diff --git a/sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java similarity index 97% rename from sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java rename to sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java index ad7348236..95205556e 100644 --- a/sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java @@ -18,7 +18,6 @@ import jp.co.cyberagent.android.gpuimage.GPUImageFilter; import jp.co.cyberagent.android.gpuimage.GPUImageView; -import jp.co.cyberagent.android.gpuimage.GPUImageView.OnPictureSavedListener; import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools; import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools.FilterAdjuster; import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools.OnGpuImageFilterChosenListener; @@ -34,7 +33,7 @@ import android.widget.Toast; public class ActivityGallery extends Activity implements OnSeekBarChangeListener, - OnClickListener, OnPictureSavedListener { + OnClickListener, GPUImageView.OnPictureSavedListener { private static final int REQUEST_PICK_IMAGE = 1; private GPUImageFilter mFilter; diff --git a/sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java similarity index 99% rename from sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java rename to sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java index 80600ee6f..540310f09 100644 --- a/sample/src/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java @@ -25,6 +25,7 @@ import android.support.v4.content.PermissionChecker; import android.view.View; import android.view.View.OnClickListener; + import jp.co.cyberagent.android.gpuimage.sample.R; public class ActivityMain extends Activity implements OnClickListener { diff --git a/sample/src/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java similarity index 100% rename from sample/src/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java rename to sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java diff --git a/sample/src/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java similarity index 100% rename from sample/src/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java rename to sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java diff --git a/sample/src/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java similarity index 100% rename from sample/src/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java rename to sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java diff --git a/sample/res/drawable-hdpi/ic_action_search.png b/sample/src/main/res/drawable-hdpi/ic_action_search.png similarity index 100% rename from sample/res/drawable-hdpi/ic_action_search.png rename to sample/src/main/res/drawable-hdpi/ic_action_search.png diff --git a/sample/res/drawable-hdpi/ic_launcher.png b/sample/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from sample/res/drawable-hdpi/ic_launcher.png rename to sample/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/sample/res/drawable-hdpi/ic_switch_camera.png b/sample/src/main/res/drawable-hdpi/ic_switch_camera.png similarity index 100% rename from sample/res/drawable-hdpi/ic_switch_camera.png rename to sample/src/main/res/drawable-hdpi/ic_switch_camera.png diff --git a/sample/res/drawable-ldpi/ic_launcher.png b/sample/src/main/res/drawable-ldpi/ic_launcher.png similarity index 100% rename from sample/res/drawable-ldpi/ic_launcher.png rename to sample/src/main/res/drawable-ldpi/ic_launcher.png diff --git a/sample/res/drawable-mdpi/ic_action_search.png b/sample/src/main/res/drawable-mdpi/ic_action_search.png similarity index 100% rename from sample/res/drawable-mdpi/ic_action_search.png rename to sample/src/main/res/drawable-mdpi/ic_action_search.png diff --git a/sample/res/drawable-mdpi/ic_launcher.png b/sample/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from sample/res/drawable-mdpi/ic_launcher.png rename to sample/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/sample/res/drawable-nodpi/lookup_amatorka.png b/sample/src/main/res/drawable-nodpi/lookup_amatorka.png similarity index 100% rename from sample/res/drawable-nodpi/lookup_amatorka.png rename to sample/src/main/res/drawable-nodpi/lookup_amatorka.png diff --git a/sample/res/drawable-xhdpi/ic_action_search.png b/sample/src/main/res/drawable-xhdpi/ic_action_search.png similarity index 100% rename from sample/res/drawable-xhdpi/ic_action_search.png rename to sample/src/main/res/drawable-xhdpi/ic_action_search.png diff --git a/sample/res/drawable-xhdpi/ic_launcher.png b/sample/src/main/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from sample/res/drawable-xhdpi/ic_launcher.png rename to sample/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/sample/res/layout/activity_camera.xml b/sample/src/main/res/layout/activity_camera.xml similarity index 100% rename from sample/res/layout/activity_camera.xml rename to sample/src/main/res/layout/activity_camera.xml diff --git a/sample/res/layout/activity_gallery.xml b/sample/src/main/res/layout/activity_gallery.xml similarity index 100% rename from sample/res/layout/activity_gallery.xml rename to sample/src/main/res/layout/activity_gallery.xml diff --git a/sample/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml similarity index 100% rename from sample/res/layout/activity_main.xml rename to sample/src/main/res/layout/activity_main.xml diff --git a/sample/res/raw/tone_cuver_sample.acv b/sample/src/main/res/raw/tone_cuver_sample.acv similarity index 100% rename from sample/res/raw/tone_cuver_sample.acv rename to sample/src/main/res/raw/tone_cuver_sample.acv diff --git a/sample/res/values-v11/styles.xml b/sample/src/main/res/values-v11/styles.xml similarity index 100% rename from sample/res/values-v11/styles.xml rename to sample/src/main/res/values-v11/styles.xml diff --git a/sample/res/values-v14/styles.xml b/sample/src/main/res/values-v14/styles.xml similarity index 100% rename from sample/res/values-v14/styles.xml rename to sample/src/main/res/values-v14/styles.xml diff --git a/sample/res/values/strings.xml b/sample/src/main/res/values/strings.xml similarity index 100% rename from sample/res/values/strings.xml rename to sample/src/main/res/values/strings.xml diff --git a/sample/res/values/styles.xml b/sample/src/main/res/values/styles.xml similarity index 100% rename from sample/res/values/styles.xml rename to sample/src/main/res/values/styles.xml From c998f5ca57f1894207e7fe21bc4a3011deee972a Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 16:51:02 +0900 Subject: [PATCH 005/136] update copyright --- .../main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java | 2 +- .../android/gpuimage/GPUImage3x3ConvolutionFilter.java | 2 +- .../android/gpuimage/GPUImage3x3TextureSamplingFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageBrightnessFilter.java | 2 +- .../android/gpuimage/GPUImageBulgeDistortionFilter.java | 2 +- .../android/gpuimage/GPUImageCGAColorspaceFilter.java | 2 +- .../android/gpuimage/GPUImageChromaKeyBlendFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageColorBlendFilter.java | 2 +- .../android/gpuimage/GPUImageColorBurnBlendFilter.java | 2 +- .../android/gpuimage/GPUImageColorDodgeBlendFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageColorInvertFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageContrastFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java | 2 +- .../android/gpuimage/GPUImageDifferenceBlendFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageDilationFilter.java | 2 +- .../gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java | 2 +- .../android/gpuimage/GPUImageDissolveBlendFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java | 2 +- .../android/gpuimage/GPUImageExclusionBlendFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageExposureFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageFalseColorFilter.java | 2 +- .../java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java | 2 +- .../android/gpuimage/GPUImageHardLightBlendFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java | 2 +- .../android/gpuimage/GPUImageHighlightShadowFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java | 2 +- .../android/gpuimage/GPUImageLinearBurnBlendFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java | 2 +- .../android/gpuimage/GPUImageLuminosityBlendFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageMonochromeFilter.java | 2 +- .../android/gpuimage/GPUImageMultiplyBlendFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java | 2 +- .../android/gpuimage/GPUImageNonMaximumSuppressionFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImagePixelationFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java | 2 +- .../android/gpuimage/GPUImageSaturationBlendFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageSaturationFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java | 2 +- .../android/gpuimage/GPUImageSoftLightBlendFilter.java | 2 +- .../android/gpuimage/GPUImageSourceOverBlendFilter.java | 2 +- .../android/gpuimage/GPUImageSphereRefractionFilter.java | 2 +- .../android/gpuimage/GPUImageSubtractBlendFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java | 2 +- .../jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java | 2 +- .../android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java | 2 +- .../java/jp/co/cyberagent/android/gpuimage/GPUImageView.java | 2 +- .../co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java | 2 +- .../android/gpuimage/GPUImageWeakPixelInclusionFilter.java | 2 +- .../cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java | 2 +- .../java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java | 2 +- .../java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java | 2 +- .../main/java/jp/co/cyberagent/android/gpuimage/Rotation.java | 2 +- .../cyberagent/android/gpuimage/util/TextureRotationUtil.java | 2 +- .../cyberagent/android/gpuimage/sample/GPUImageFilterTools.java | 2 +- .../android/gpuimage/sample/activity/ActivityCamera.java | 2 +- .../android/gpuimage/sample/activity/ActivityGallery.java | 2 +- .../android/gpuimage/sample/activity/ActivityMain.java | 2 +- .../cyberagent/android/gpuimage/sample/utils/CameraHelper.java | 2 +- .../android/gpuimage/sample/utils/CameraHelperBase.java | 2 +- .../android/gpuimage/sample/utils/CameraHelperGB.java | 2 +- 90 files changed, 90 insertions(+), 90 deletions(-) diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java index 693c6f910..d36eb482b 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java index 0c5e5a03d..6182fd854 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java index 2e6820a3b..eeaab0217 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java index 59dcb3438..168993cb8 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAddBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java index 753c24d6c..9b24d7dcf 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java index 4e681b3c5..392aff0b7 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java index e528ee879..46e72b5c7 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java index af49beddf..eac6ef6e9 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBulgeDistortionFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java index 525859569..f4ea9018d 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCGAColorspaceFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java index 7957b05a2..80cc02b66 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java index 0f5de140d..971ab6518 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java index e3b5c42a5..8040cd2fe 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBurnBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java index 702a3a985..a2a49314f 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorDodgeBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java index 2d8df9b94..c8a49d73c 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorInvertFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java index 59203c4d2..c49f55b1c 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java index 1d2b9107a..e30d376f6 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java index 04a3d4c74..a6ca63d17 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageCrosshatchFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java index 385e8e3a0..851e6a6b0 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDarkenBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java index 1a32cd0cf..a7d160c0e 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDifferenceBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java index f6ce4e2f5..0dc0fb548 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDilationFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java index a5884a121..7430bfaa8 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java index 688c28343..00125bc0b 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java index 179cd4eea..eafd6b96a 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDivideBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java index f4cbdef77..ac7ea79ba 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java index dcfc9346f..806786408 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExclusionBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java index de5de414e..eedd78c1f 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageExposureFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java index c815ad0fd..fa632b439 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFalseColorFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java index 7a8641aaa..368312cf3 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java index 10ea41ca4..dddf531e3 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java index 1f902d0f6..6d8978a32 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java index c912f73ef..8ed4309e9 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGaussianBlurFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java index 460019cc0..995852c22 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGlassSphereFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java index b0a67f9ef..a3f05db05 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageGrayscaleFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java index 5bcb9c90b..f9bf7fd3f 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHardLightBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java index bb230abc9..ba54c3cb4 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java index 878c508a9..7081d6b66 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java index 3950901c7..dbb7bb4c9 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java index 9fcf79396..01f3a7ad9 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java index 6fc7f32bc..a5161c2ba 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageKuwaharaFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java index d320f64d8..37729763a 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLaplacianFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java index 77399cb18..01211132c 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLightenBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java index 2623b528e..9c7d9bfe0 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLinearBurnBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java index 42c9ebdcb..1d56a4e68 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLookupFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java index 85e7bfdae..3f41c0c83 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLuminosityBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java index 7bf688590..03b485e02 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMixBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java index e426a340c..bd9b617b6 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java index 1e002e367..810efac9f 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMultiplyBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java index db88ff5ff..f222ef773 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNativeLibrary.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java index a6f5af486..a249de55c 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNonMaximumSuppressionFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java index a886bd407..8e275c542 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java index 55f198d14..4c0dea398 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java index 4dba4200c..f16882590 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOverlayBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java index c0ec15d13..9c4af4b70 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java index 3b7c8ff7b..742043d89 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePosterizeFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java index 2d5e28c78..7fc457b2b 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBDilationFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java index f0af18cb9..76cea73dd 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java index 6d504c9fa..6b0380990 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java index 1c0f90d68..5f87fb913 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java index 0725953d3..a510ec9d2 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSaturationFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java index 2c63a6992..955925846 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageScreenBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java index cbcf35346..244398172 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java index 4317b66c6..35cfc04a4 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java index ea87d999f..37c2ed292 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSketchFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java index 944a80984..07c220425 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java index ae08bb5eb..b755627f9 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java index 0e1b742e6..599654fcb 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSoftLightBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java index fd6a7b986..8e2d50ff7 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSourceOverBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java index 6314cf196..de322a38b 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSphereRefractionFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java index 52b54ecc7..fb036c744 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSubtractBlendFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java index d4947b9af..68af5192c 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSwirlFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java index 0f6e1d082..38dd04b14 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java index 5148d1d01..76f6880d7 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToonFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java index afc3b8640..e2dee7034 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java index bf3fbf172..ab3c08767 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java index 19c0365b2..32740c012 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoPassTextureSamplingFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java index 8d9c3a1e9..1ee6be2b5 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java index 439e8bd0d..316333a95 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java index 3e1b8f01c..4677a49ee 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWeakPixelInclusionFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java index 1818da992..a60e6a5a8 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java index e85897041..c23892c61 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java index ac23f5990..12a07eb2c 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * Copyright (C) 2010 jsemler * * Original publication without License diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java index bd2e840ef..74203ac96 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java index ea7c357eb..89c2c2ddb 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/util/TextureRotationUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java index a0567895e..6cf7a3aab 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java index 2038a0ce2..3a4ca4465 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java index 95205556e..49c62a7c9 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java index 540310f09..940328339 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java index 9fafc8910..8dcfbc0d4 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java index daceb838d..f20fd3500 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java index ec1ad63d3..17f5944de 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 CyberAgent + * Copyright (C) 2018 CyberAgent, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 552fcbd2a15ee6893791d669fb1bb1d34add09b8 Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 16:51:25 +0900 Subject: [PATCH 006/136] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 129ecf756..2e0f68011 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ gradle clean assemble ``` ## License - Copyright 2012 CyberAgent, Inc. + Copyright 2018 CyberAgent, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From a0ce32e3b334cb30857e46609b00a2ae3abfecd9 Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 16:52:54 +0900 Subject: [PATCH 007/136] update ndk settings --- gradle.properties | 2 -- library/build.gradle | 10 +++---- library/src/main/cpp/CMakeLists.txt | 44 +++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 library/src/main/cpp/CMakeLists.txt diff --git a/gradle.properties b/gradle.properties index 6cb104fdd..7349d5ee2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,5 +17,3 @@ POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_LICENCE_DIST=repo POM_DEVELOPER_ID=pboos POM_DEVELOPER_NAME=Patrick Boos - -android.useDeprecatedNdk=true diff --git a/library/build.gradle b/library/build.gradle index 640292516..f9d0e999a 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -10,14 +10,12 @@ android { versionCode = VERSION_CODE versionName = VERSION_NAME - - ndk { - moduleName "gpuimage-library" - stl "gnustl_shared" - abiFilters "all" - ldLibs "log" + externalNativeBuild { + cmake { cppFlags "" } } } + externalNativeBuild { + cmake { path "src/main/cpp/CMakeLists.txt" } } lintOptions { diff --git a/library/src/main/cpp/CMakeLists.txt b/library/src/main/cpp/CMakeLists.txt new file mode 100644 index 000000000..e4caf43c8 --- /dev/null +++ b/library/src/main/cpp/CMakeLists.txt @@ -0,0 +1,44 @@ +# For more information about using CMake with Android Studio, read the +# documentation: https://d.android.com/studio/projects/add-native-code.html + +# Sets the minimum version of CMake required to build the native library. + +cmake_minimum_required(VERSION 3.4.1) + +# Creates and names a library, sets it as either STATIC +# or SHARED, and provides the relative paths to its source code. +# You can define multiple libraries, and CMake builds them for you. +# Gradle automatically packages shared libraries with your APK. + +add_library( # Sets the name of the library. + yuv-decoder + + # Sets the library as a shared library. + SHARED + + # Provides a relative path to your source file(s). + yuv-decoder.c) + +# Searches for a specified prebuilt library and stores the path as a +# variable. Because CMake includes system libraries in the search path by +# default, you only need to specify the name of the public NDK library +# you want to add. CMake verifies that the library exists before +# completing its build. + +find_library( # Sets the name of the path variable. + log-lib + + # Specifies the name of the NDK library that + # you want CMake to locate. + log) + +# Specifies libraries CMake should link to your target library. You +# can link multiple libraries, such as libraries you define in this +# build script, prebuilt third-party libraries, or system libraries. + +target_link_libraries( # Specifies the target library. + yuv-decoder + + # Links the target library to the log library + # included in the NDK. + ${log-lib}) \ No newline at end of file From 5690f0dddd5d81e9b1f6b795e52f5fc1a0487f69 Mon Sep 17 00:00:00 2001 From: wasabeef Date: Wed, 10 Oct 2018 17:19:08 +0900 Subject: [PATCH 008/136] Renew formatter --- .../cyberagent/android/gpuimage/GPUImage.java | 56 ++-- .../GPUImage3x3ConvolutionFilter.java | 80 ++--- .../GPUImage3x3TextureSamplingFilter.java | 78 ++--- .../gpuimage/GPUImageAlphaBlendFilter.java | 2 +- .../gpuimage/GPUImageBilateralFilter.java | 277 +++++++++--------- .../gpuimage/GPUImageBoxBlurFilter.java | 2 +- .../GPUImageChromaKeyBlendFilter.java | 7 +- .../gpuimage/GPUImageColorBalanceFilter.java | 186 ++++++------ .../gpuimage/GPUImageColorMatrixFilter.java | 2 +- .../gpuimage/GPUImageContrastFilter.java | 22 +- ...geDirectionalSobelEdgeDetectionFilter.java | 70 ++--- .../gpuimage/GPUImageDissolveBlendFilter.java | 2 +- .../gpuimage/GPUImageEmbossFilter.java | 2 +- .../android/gpuimage/GPUImageFilter.java | 3 +- .../android/gpuimage/GPUImageFilterGroup.java | 7 +- .../gpuimage/GPUImageHalftoneFilter.java | 2 +- .../android/gpuimage/GPUImageHazeFilter.java | 2 +- .../GPUImageHighlightShadowFilter.java | 2 +- .../android/gpuimage/GPUImageHueFilter.java | 86 +++--- .../gpuimage/GPUImageLevelsFilter.java | 50 ++-- .../gpuimage/GPUImageMonochromeFilter.java | 12 +- .../gpuimage/GPUImageNormalBlendFilter.java | 8 +- .../gpuimage/GPUImageOpacityFilter.java | 2 +- .../gpuimage/GPUImagePixelationFilter.java | 7 +- .../android/gpuimage/GPUImageRGBFilter.java | 30 +- .../android/gpuimage/GPUImageSepiaFilter.java | 2 +- .../gpuimage/GPUImageSharpenFilter.java | 46 +-- .../gpuimage/GPUImageSmoothToonFilter.java | 4 +- .../gpuimage/GPUImageSobelEdgeDetection.java | 64 ++-- .../GPUImageSobelThresholdFilter.java | 104 +++---- .../gpuimage/GPUImageToneCurveFilter.java | 3 +- .../gpuimage/GPUImageTwoInputFilter.java | 9 +- .../android/gpuimage/GPUImageView.java | 15 +- .../gpuimage/GPUImageVignetteFilter.java | 14 +- .../gpuimage/GPUImageWhiteBalanceFilter.java | 10 +- .../android/gpuimage/OpenGlUtils.java | 4 +- .../android/gpuimage/PixelBuffer.java | 38 +-- .../cyberagent/android/gpuimage/Rotation.java | 35 ++- .../gpuimage/sample/GPUImageFilterTools.java | 108 +++++-- .../sample/activity/ActivityCamera.java | 8 +- .../sample/activity/ActivityGallery.java | 13 +- .../sample/activity/ActivityMain.java | 17 +- .../gpuimage/sample/utils/CameraHelper.java | 7 +- .../sample/utils/CameraHelperBase.java | 5 +- .../gpuimage/sample/utils/CameraHelperGB.java | 5 +- .../src/main/res/layout/activity_camera.xml | 4 +- .../src/main/res/layout/activity_gallery.xml | 4 +- sample/src/main/res/layout/activity_main.xml | 5 +- sample/src/main/res/values-v14/styles.xml | 1 + sample/src/main/res/values/styles.xml | 1 + 50 files changed, 816 insertions(+), 707 deletions(-) diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java index d36eb482b..1c783f47e 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage.java @@ -39,7 +39,11 @@ import android.view.Display; import android.view.WindowManager; -import java.io.*; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.util.List; @@ -102,9 +106,9 @@ public void setGLSurfaceView(final GLSurfaceView view) { /** * Sets the background color * - * @param red red color value + * @param red red color value * @param green green color value - * @param blue red color value + * @param blue red color value */ public void setBackgroundColor(float red, float green, float blue) { mRenderer.setBackgroundColor(red, green, blue); @@ -131,13 +135,13 @@ public void setUpCamera(final Camera camera) { /** * Sets the up camera to be connected to GPUImage to get a filtered preview. * - * @param camera the camera - * @param degrees by how many degrees the image should be rotated + * @param camera the camera + * @param degrees by how many degrees the image should be rotated * @param flipHorizontal if the image should be flipped horizontally - * @param flipVertical if the image should be flipped vertically + * @param flipVertical if the image should be flipped vertically */ public void setUpCamera(final Camera camera, final int degrees, final boolean flipHorizontal, - final boolean flipVertical) { + final boolean flipVertical) { mGlSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD_MR1) { setUpCameraGingerbread(camera); @@ -284,13 +288,13 @@ public Bitmap getBitmapWithFilterApplied(final Bitmap bitmap) { @Override public void run() { - synchronized(mFilter) { + synchronized (mFilter) { mFilter.destroy(); mFilter.notify(); } } }); - synchronized(mFilter) { + synchronized (mFilter) { requestRender(); try { mFilter.wait(); @@ -328,12 +332,12 @@ public void run() { * bitmap. The order of the calls to the listener will be the same as the * filter order. * - * @param bitmap the bitmap on which the filters will be applied - * @param filters the filters which will be applied on the bitmap + * @param bitmap the bitmap on which the filters will be applied + * @param filters the filters which will be applied on the bitmap * @param listener the listener on which the results will be notified */ public static void getBitmapForMultipleFilters(final Bitmap bitmap, - final List filters, final ResponseListener listener) { + final List filters, final ResponseListener listener) { if (filters.isEmpty()) { return; } @@ -354,7 +358,7 @@ public static void getBitmapForMultipleFilters(final Bitmap bitmap, /** * Deprecated: Please use * {@link GPUImageView#saveToPictures(String, String, jp.co.cyberagent.android.gpuimage.GPUImageView.OnPictureSavedListener)} - * + *

* Save current image with applied filter to Pictures. It will be stored on * the default Picture folder on the phone below the given folderName and * fileName.
@@ -362,33 +366,33 @@ public static void getBitmapForMultipleFilters(final Bitmap bitmap, * listener. * * @param folderName the folder name - * @param fileName the file name - * @param listener the listener + * @param fileName the file name + * @param listener the listener */ @Deprecated public void saveToPictures(final String folderName, final String fileName, - final OnPictureSavedListener listener) { + final OnPictureSavedListener listener) { saveToPictures(mCurrentBitmap, folderName, fileName, listener); } /** * Deprecated: Please use * {@link GPUImageView#saveToPictures(String, String, jp.co.cyberagent.android.gpuimage.GPUImageView.OnPictureSavedListener)} - * + *

* Apply and save the given bitmap with applied filter to Pictures. It will * be stored on the default Picture folder on the phone below the given * folerName and fileName.
* This method is async and will notify when the image was saved through the * listener. * - * @param bitmap the bitmap + * @param bitmap the bitmap * @param folderName the folder name - * @param fileName the file name - * @param listener the listener + * @param fileName the file name + * @param listener the listener */ @Deprecated public void saveToPictures(final Bitmap bitmap, final String folderName, final String fileName, - final OnPictureSavedListener listener) { + final OnPictureSavedListener listener) { new SaveTask(bitmap, folderName, fileName, listener).execute(); } @@ -437,7 +441,7 @@ private class SaveTask extends AsyncTask { private final Handler mHandler; public SaveTask(final Bitmap bitmap, final String folderName, final String fileName, - final OnPictureSavedListener listener) { + final OnPictureSavedListener listener) { mBitmap = bitmap; mFolderName = folderName; mFileName = fileName; @@ -460,8 +464,8 @@ private void saveImage(final String folderName, final String fileName, final Bit file.getParentFile().mkdirs(); image.compress(CompressFormat.JPEG, 80, new FileOutputStream(file)); MediaScannerConnection.scanFile(mContext, - new String[] { - file.toString() + new String[]{ + file.toString() }, null, new MediaScannerConnection.OnScanCompletedListener() { @Override @@ -515,7 +519,7 @@ protected Bitmap decode(BitmapFactory.Options options) { @Override protected int getImageOrientation() throws IOException { Cursor cursor = mContext.getContentResolver().query(mUri, - new String[] { MediaStore.Images.ImageColumns.ORIENTATION }, null, null, null); + new String[]{MediaStore.Images.ImageColumns.ORIENTATION}, null, null, null); if (cursor == null || cursor.getCount() != 1) { return 0; @@ -712,5 +716,5 @@ public interface ResponseListener { void response(T item); } - public enum ScaleType { CENTER_INSIDE, CENTER_CROP } + public enum ScaleType {CENTER_INSIDE, CENTER_CROP} } diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java index 6182fd854..d3b6dbec3 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3ConvolutionFilter.java @@ -23,58 +23,58 @@ */ public class GPUImage3x3ConvolutionFilter extends GPUImage3x3TextureSamplingFilter { public static final String THREE_X_THREE_TEXTURE_SAMPLING_FRAGMENT_SHADER = "" + - "precision highp float;\n" + - "\n" + - "uniform sampler2D inputImageTexture;\n" + - "\n" + - "uniform mediump mat3 convolutionMatrix;\n" + - "\n" + - "varying vec2 textureCoordinate;\n" + - "varying vec2 leftTextureCoordinate;\n" + - "varying vec2 rightTextureCoordinate;\n" + - "\n" + - "varying vec2 topTextureCoordinate;\n" + - "varying vec2 topLeftTextureCoordinate;\n" + - "varying vec2 topRightTextureCoordinate;\n" + - "\n" + - "varying vec2 bottomTextureCoordinate;\n" + - "varying vec2 bottomLeftTextureCoordinate;\n" + - "varying vec2 bottomRightTextureCoordinate;\n" + - "\n" + - "void main()\n" + - "{\n" + - " mediump vec4 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate);\n" + - " mediump vec4 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate);\n" + - " mediump vec4 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate);\n" + - " mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate);\n" + - " mediump vec4 leftColor = texture2D(inputImageTexture, leftTextureCoordinate);\n" + - " mediump vec4 rightColor = texture2D(inputImageTexture, rightTextureCoordinate);\n" + - " mediump vec4 topColor = texture2D(inputImageTexture, topTextureCoordinate);\n" + - " mediump vec4 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate);\n" + - " mediump vec4 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate);\n" + - "\n" + - " mediump vec4 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2];\n" + - " resultColor += leftColor * convolutionMatrix[1][0] + centerColor * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2];\n" + - " resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2];\n" + - "\n" + - " gl_FragColor = resultColor;\n" + - "}"; - + "precision highp float;\n" + + "\n" + + "uniform sampler2D inputImageTexture;\n" + + "\n" + + "uniform mediump mat3 convolutionMatrix;\n" + + "\n" + + "varying vec2 textureCoordinate;\n" + + "varying vec2 leftTextureCoordinate;\n" + + "varying vec2 rightTextureCoordinate;\n" + + "\n" + + "varying vec2 topTextureCoordinate;\n" + + "varying vec2 topLeftTextureCoordinate;\n" + + "varying vec2 topRightTextureCoordinate;\n" + + "\n" + + "varying vec2 bottomTextureCoordinate;\n" + + "varying vec2 bottomLeftTextureCoordinate;\n" + + "varying vec2 bottomRightTextureCoordinate;\n" + + "\n" + + "void main()\n" + + "{\n" + + " mediump vec4 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate);\n" + + " mediump vec4 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate);\n" + + " mediump vec4 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate);\n" + + " mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate);\n" + + " mediump vec4 leftColor = texture2D(inputImageTexture, leftTextureCoordinate);\n" + + " mediump vec4 rightColor = texture2D(inputImageTexture, rightTextureCoordinate);\n" + + " mediump vec4 topColor = texture2D(inputImageTexture, topTextureCoordinate);\n" + + " mediump vec4 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate);\n" + + " mediump vec4 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate);\n" + + "\n" + + " mediump vec4 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2];\n" + + " resultColor += leftColor * convolutionMatrix[1][0] + centerColor * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2];\n" + + " resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2];\n" + + "\n" + + " gl_FragColor = resultColor;\n" + + "}"; + private float[] mConvolutionKernel; private int mUniformConvolutionMatrix; /** * Instantiates a new GPUimage3x3ConvolutionFilter with default values, that - * will look like the original image. + * will look like the original image. */ public GPUImage3x3ConvolutionFilter() { - this(new float[] { + this(new float[]{ 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }); } - + /** * Instantiates a new GPUimage3x3ConvolutionFilter with given convolution kernel. * diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java index eeaab0217..1cc92ae19 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImage3x3TextureSamplingFilter.java @@ -20,51 +20,51 @@ public class GPUImage3x3TextureSamplingFilter extends GPUImageFilter { public static final String THREE_X_THREE_TEXTURE_SAMPLING_VERTEX_SHADER = "" + - "attribute vec4 position;\n" + - "attribute vec4 inputTextureCoordinate;\n" + - "\n" + - "uniform highp float texelWidth; \n" + - "uniform highp float texelHeight; \n" + - "\n" + - "varying vec2 textureCoordinate;\n" + - "varying vec2 leftTextureCoordinate;\n" + - "varying vec2 rightTextureCoordinate;\n" + - "\n" + - "varying vec2 topTextureCoordinate;\n" + - "varying vec2 topLeftTextureCoordinate;\n" + - "varying vec2 topRightTextureCoordinate;\n" + - "\n" + - "varying vec2 bottomTextureCoordinate;\n" + - "varying vec2 bottomLeftTextureCoordinate;\n" + - "varying vec2 bottomRightTextureCoordinate;\n" + - "\n" + - "void main()\n" + - "{\n" + - " gl_Position = position;\n" + - "\n" + - " vec2 widthStep = vec2(texelWidth, 0.0);\n" + - " vec2 heightStep = vec2(0.0, texelHeight);\n" + - " vec2 widthHeightStep = vec2(texelWidth, texelHeight);\n" + - " vec2 widthNegativeHeightStep = vec2(texelWidth, -texelHeight);\n" + - "\n" + - " textureCoordinate = inputTextureCoordinate.xy;\n" + - " leftTextureCoordinate = inputTextureCoordinate.xy - widthStep;\n" + - " rightTextureCoordinate = inputTextureCoordinate.xy + widthStep;\n" + - "\n" + - " topTextureCoordinate = inputTextureCoordinate.xy - heightStep;\n" + - " topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep;\n" + - " topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep;\n" + - "\n" + - " bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep;\n" + - " bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep;\n" + - " bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep;\n" + + "attribute vec4 position;\n" + + "attribute vec4 inputTextureCoordinate;\n" + + "\n" + + "uniform highp float texelWidth; \n" + + "uniform highp float texelHeight; \n" + + "\n" + + "varying vec2 textureCoordinate;\n" + + "varying vec2 leftTextureCoordinate;\n" + + "varying vec2 rightTextureCoordinate;\n" + + "\n" + + "varying vec2 topTextureCoordinate;\n" + + "varying vec2 topLeftTextureCoordinate;\n" + + "varying vec2 topRightTextureCoordinate;\n" + + "\n" + + "varying vec2 bottomTextureCoordinate;\n" + + "varying vec2 bottomLeftTextureCoordinate;\n" + + "varying vec2 bottomRightTextureCoordinate;\n" + + "\n" + + "void main()\n" + + "{\n" + + " gl_Position = position;\n" + + "\n" + + " vec2 widthStep = vec2(texelWidth, 0.0);\n" + + " vec2 heightStep = vec2(0.0, texelHeight);\n" + + " vec2 widthHeightStep = vec2(texelWidth, texelHeight);\n" + + " vec2 widthNegativeHeightStep = vec2(texelWidth, -texelHeight);\n" + + "\n" + + " textureCoordinate = inputTextureCoordinate.xy;\n" + + " leftTextureCoordinate = inputTextureCoordinate.xy - widthStep;\n" + + " rightTextureCoordinate = inputTextureCoordinate.xy + widthStep;\n" + + "\n" + + " topTextureCoordinate = inputTextureCoordinate.xy - heightStep;\n" + + " topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep;\n" + + " topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep;\n" + + "\n" + + " bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep;\n" + + " bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep;\n" + + " bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep;\n" + "}"; private int mUniformTexelWidthLocation; private int mUniformTexelHeightLocation; private boolean mHasOverriddenImageSizeFactor = false; - private float mTexelWidth; + private float mTexelWidth; private float mTexelHeight; private float mLineSize = 1.0f; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java index 9b24d7dcf..0dfa9ad07 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageAlphaBlendFilter.java @@ -19,7 +19,7 @@ /** * Mix ranges from 0.0 (only image 1) to 1.0 (only image 2), with 0.5 (half of either) as the normal level */ -public class GPUImageAlphaBlendFilter extends GPUImageMixBlendFilter{ +public class GPUImageAlphaBlendFilter extends GPUImageMixBlendFilter { public static final String ALPHA_BLEND_FRAGMENT_SHADER = "varying highp vec2 textureCoordinate;\n" + " varying highp vec2 textureCoordinate2;\n" + "\n" + diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java index 275253abc..92c988670 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBilateralFilter.java @@ -1,8 +1,7 @@ /** * @author wysaid * @mail admin@wysaid.org - * -*/ + */ package jp.co.cyberagent.android.gpuimage; @@ -10,144 +9,144 @@ public class GPUImageBilateralFilter extends GPUImageFilter { - public static final String BILATERAL_VERTEX_SHADER = "" + - "attribute vec4 position;\n" + - "attribute vec4 inputTextureCoordinate;\n" + - - "const int GAUSSIAN_SAMPLES = 9;\n" + - - "uniform vec2 singleStepOffset;\n" + - - "varying vec2 textureCoordinate;\n" + - "varying vec2 blurCoordinates[GAUSSIAN_SAMPLES];\n" + - - "void main()\n" + - "{\n" + - " gl_Position = position;\n" + - " textureCoordinate = inputTextureCoordinate.xy;\n" + - - " int multiplier = 0;\n" + - " vec2 blurStep;\n" + - - " for (int i = 0; i < GAUSSIAN_SAMPLES; i++)\n" + - " {\n" + - " multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2));\n" + - - " blurStep = float(multiplier) * singleStepOffset;\n" + - " blurCoordinates[i] = inputTextureCoordinate.xy + blurStep;\n" + - " }\n" + - "}"; - - public static final String BILATERAL_FRAGMENT_SHADER = "" + - "uniform sampler2D inputImageTexture;\n" + - - " const lowp int GAUSSIAN_SAMPLES = 9;\n" + - - " varying highp vec2 textureCoordinate;\n" + - " varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES];\n" + - - " uniform mediump float distanceNormalizationFactor;\n" + - - " void main()\n" + - " {\n" + - " lowp vec4 centralColor;\n" + - " lowp float gaussianWeightTotal;\n" + - " lowp vec4 sum;\n" + - " lowp vec4 sampleColor;\n" + - " lowp float distanceFromCentralColor;\n" + - " lowp float gaussianWeight;\n" + - " \n" + - " centralColor = texture2D(inputImageTexture, blurCoordinates[4]);\n" + - " gaussianWeightTotal = 0.18;\n" + - " sum = centralColor * 0.18;\n" + - " \n" + - " sampleColor = texture2D(inputImageTexture, blurCoordinates[0]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - - " sampleColor = texture2D(inputImageTexture, blurCoordinates[1]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - - " sampleColor = texture2D(inputImageTexture, blurCoordinates[2]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - - " sampleColor = texture2D(inputImageTexture, blurCoordinates[3]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - - " sampleColor = texture2D(inputImageTexture, blurCoordinates[5]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - - " sampleColor = texture2D(inputImageTexture, blurCoordinates[6]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - - " sampleColor = texture2D(inputImageTexture, blurCoordinates[7]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - - " sampleColor = texture2D(inputImageTexture, blurCoordinates[8]);\n" + - " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + - " gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor);\n" + - " gaussianWeightTotal += gaussianWeight;\n" + - " sum += sampleColor * gaussianWeight;\n" + - " gl_FragColor = sum / gaussianWeightTotal;\n" + + public static final String BILATERAL_VERTEX_SHADER = "" + + "attribute vec4 position;\n" + + "attribute vec4 inputTextureCoordinate;\n" + + + "const int GAUSSIAN_SAMPLES = 9;\n" + + + "uniform vec2 singleStepOffset;\n" + + + "varying vec2 textureCoordinate;\n" + + "varying vec2 blurCoordinates[GAUSSIAN_SAMPLES];\n" + + + "void main()\n" + + "{\n" + + " gl_Position = position;\n" + + " textureCoordinate = inputTextureCoordinate.xy;\n" + + + " int multiplier = 0;\n" + + " vec2 blurStep;\n" + + + " for (int i = 0; i < GAUSSIAN_SAMPLES; i++)\n" + + " {\n" + + " multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2));\n" + + + " blurStep = float(multiplier) * singleStepOffset;\n" + + " blurCoordinates[i] = inputTextureCoordinate.xy + blurStep;\n" + + " }\n" + + "}"; + + public static final String BILATERAL_FRAGMENT_SHADER = "" + + "uniform sampler2D inputImageTexture;\n" + + + " const lowp int GAUSSIAN_SAMPLES = 9;\n" + + + " varying highp vec2 textureCoordinate;\n" + + " varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES];\n" + + + " uniform mediump float distanceNormalizationFactor;\n" + + + " void main()\n" + + " {\n" + + " lowp vec4 centralColor;\n" + + " lowp float gaussianWeightTotal;\n" + + " lowp vec4 sum;\n" + + " lowp vec4 sampleColor;\n" + + " lowp float distanceFromCentralColor;\n" + + " lowp float gaussianWeight;\n" + + " \n" + + " centralColor = texture2D(inputImageTexture, blurCoordinates[4]);\n" + + " gaussianWeightTotal = 0.18;\n" + + " sum = centralColor * 0.18;\n" + + " \n" + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[0]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[1]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[2]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[3]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[5]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[6]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[7]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + + " sampleColor = texture2D(inputImageTexture, blurCoordinates[8]);\n" + + " distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);\n" + + " gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor);\n" + + " gaussianWeightTotal += gaussianWeight;\n" + + " sum += sampleColor * gaussianWeight;\n" + + " gl_FragColor = sum / gaussianWeightTotal;\n" + // " gl_FragColor.r = distanceNormalizationFactor / 20.0;" + - " }"; - - private float mDistanceNormalizationFactor; - private int mDisFactorLocation; - private int mSingleStepOffsetLocation; - - public GPUImageBilateralFilter() { - this(8.0f); - } - - public GPUImageBilateralFilter(final float distanceNormalizationFactor) { - super(BILATERAL_VERTEX_SHADER, BILATERAL_FRAGMENT_SHADER); - mDistanceNormalizationFactor = distanceNormalizationFactor; - } - - @Override - public void onInit() { - super.onInit(); - mDisFactorLocation = GLES20.glGetUniformLocation(getProgram(), "distanceNormalizationFactor"); - mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset"); - } - - @Override - public void onInitialized() { - super.onInitialized(); - setDistanceNormalizationFactor(mDistanceNormalizationFactor); - } - - public void setDistanceNormalizationFactor(final float newValue) { - mDistanceNormalizationFactor = newValue; - setFloat(mDisFactorLocation, newValue); - } - - private void setTexelSize(final float w, final float h) { - setFloatVec2(mSingleStepOffsetLocation, new float[] {1.0f / w, 1.0f / h}); - } - - @Override + " }"; + + private float mDistanceNormalizationFactor; + private int mDisFactorLocation; + private int mSingleStepOffsetLocation; + + public GPUImageBilateralFilter() { + this(8.0f); + } + + public GPUImageBilateralFilter(final float distanceNormalizationFactor) { + super(BILATERAL_VERTEX_SHADER, BILATERAL_FRAGMENT_SHADER); + mDistanceNormalizationFactor = distanceNormalizationFactor; + } + + @Override + public void onInit() { + super.onInit(); + mDisFactorLocation = GLES20.glGetUniformLocation(getProgram(), "distanceNormalizationFactor"); + mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset"); + } + + @Override + public void onInitialized() { + super.onInitialized(); + setDistanceNormalizationFactor(mDistanceNormalizationFactor); + } + + public void setDistanceNormalizationFactor(final float newValue) { + mDistanceNormalizationFactor = newValue; + setFloat(mDisFactorLocation, newValue); + } + + private void setTexelSize(final float w, final float h) { + setFloatVec2(mSingleStepOffsetLocation, new float[]{1.0f / w, 1.0f / h}); + } + + @Override public void onOutputSizeChanged(final int width, final int height) { super.onOutputSizeChanged(width, height); setTexelSize(width, height); diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java index 392aff0b7..517c53ccd 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageBoxBlurFilter.java @@ -18,7 +18,7 @@ /** * A hardware-accelerated 9-hit box blur of an image - * + *

* scaling: for the size of the applied blur, default of 1.0 */ public class GPUImageBoxBlurFilter extends GPUImageTwoPassTextureSamplingFilter { diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java index 80cc02b66..877ffa159 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageChromaKeyBlendFilter.java @@ -96,12 +96,13 @@ public void setThresholdSensitivity(final float thresholdSensitivity) { setFloat(mThresholdSensitivityLocation, mThresholdSensitivity); } - /** The color to be replaced is specified using individual red, green, and blue components (normalized to 1.0). + /** + * The color to be replaced is specified using individual red, green, and blue components (normalized to 1.0). * The default is green: (0.0, 1.0, 0.0). * - * @param redComponent Red component of color to be replaced + * @param redComponent Red component of color to be replaced * @param greenComponent Green component of color to be replaced - * @param blueComponent Blue component of color to be replaced + * @param blueComponent Blue component of color to be replaced */ public void setColorToReplace(float redComponent, float greenComponent, float blueComponent) { mColorToReplace = new float[]{redComponent, greenComponent, blueComponent}; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java index 68c078a66..b0e514cb4 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorBalanceFilter.java @@ -8,133 +8,133 @@ public class GPUImageColorBalanceFilter extends GPUImageFilter { public static final String GPU_IMAGE_COLOR_BALANCE_FRAGMENT_SHADER = "" + - "varying highp vec2 textureCoordinate;\n" + - "uniform sampler2D inputImageTexture;\n" + + "varying highp vec2 textureCoordinate;\n" + + "uniform sampler2D inputImageTexture;\n" + "uniform lowp vec3 shadowsShift;\n" + - "uniform lowp vec3 midtonesShift;\n" + - "uniform lowp vec3 highlightsShift;\n" + + "uniform lowp vec3 midtonesShift;\n" + + "uniform lowp vec3 highlightsShift;\n" + "uniform int preserveLuminosity;\n" + "lowp vec3 RGBToHSL(lowp vec3 color)\n" + - "{\n" + - "lowp vec3 hsl; // init to 0 to avoid warnings ? (and reverse if + remove first part)\n" + + "{\n" + + "lowp vec3 hsl; // init to 0 to avoid warnings ? (and reverse if + remove first part)\n" + - "lowp float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB\n" + - "lowp float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB\n" + - "lowp float delta = fmax - fmin; //Delta RGB value\n" + + "lowp float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB\n" + + "lowp float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB\n" + + "lowp float delta = fmax - fmin; //Delta RGB value\n" + - "hsl.z = (fmax + fmin) / 2.0; // Luminance\n" + + "hsl.z = (fmax + fmin) / 2.0; // Luminance\n" + - "if (delta == 0.0) //This is a gray, no chroma...\n" + - "{\n" + - " hsl.x = 0.0; // Hue\n" + - " hsl.y = 0.0; // Saturation\n" + - "}\n" + + "if (delta == 0.0) //This is a gray, no chroma...\n" + + "{\n" + + " hsl.x = 0.0; // Hue\n" + + " hsl.y = 0.0; // Saturation\n" + + "}\n" + "else //Chromatic data...\n" + - "{\n" + - " if (hsl.z < 0.5)\n" + - " hsl.y = delta / (fmax + fmin); // Saturation\n" + - " else\n"+ - " hsl.y = delta / (2.0 - fmax - fmin); // Saturation\n" + + "{\n" + + " if (hsl.z < 0.5)\n" + + " hsl.y = delta / (fmax + fmin); // Saturation\n" + + " else\n" + + " hsl.y = delta / (2.0 - fmax - fmin); // Saturation\n" + "\n" + " lowp float deltaR = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta;\n" + " lowp float deltaG = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta;\n" + " lowp float deltaB = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta;\n" + "\n" + - " if (color.r == fmax )\n" + + " if (color.r == fmax )\n" + " hsl.x = deltaB - deltaG; // Hue\n" + - " else if (color.g == fmax)\n" + - " hsl.x = (1.0 / 3.0) + deltaR - deltaB; // Hue\n" + - " else if (color.b == fmax)\n" + - " hsl.x = (2.0 / 3.0) + deltaG - deltaR; // Hue\n" + - - " if (hsl.x < 0.0)\n" + - " hsl.x += 1.0; // Hue\n" + - " else if (hsl.x > 1.0)\n" + - " hsl.x -= 1.0; // Hue\n" + - "}\n" + + " else if (color.g == fmax)\n" + + " hsl.x = (1.0 / 3.0) + deltaR - deltaB; // Hue\n" + + " else if (color.b == fmax)\n" + + " hsl.x = (2.0 / 3.0) + deltaG - deltaR; // Hue\n" + + + " if (hsl.x < 0.0)\n" + + " hsl.x += 1.0; // Hue\n" + + " else if (hsl.x > 1.0)\n" + + " hsl.x -= 1.0; // Hue\n" + + "}\n" + "\n" + "return hsl;\n" + - "}\n" + - - "lowp float HueToRGB(lowp float f1, lowp float f2, lowp float hue)\n" + - "{\n"+ - " if (hue < 0.0)\n"+ - " hue += 1.0;\n"+ - " else if (hue > 1.0)\n"+ - " hue -= 1.0;\n"+ - " lowp float res;\n"+ - " if ((6.0 * hue) < 1.0)\n"+ - " res = f1 + (f2 - f1) * 6.0 * hue;\n"+ - " else if ((2.0 * hue) < 1.0)\n"+ - " res = f2;\n"+ - " else if ((3.0 * hue) < 2.0)\n"+ - " res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0;\n"+ - " else\n"+ - " res = f1;\n"+ - " return res;\n"+ - "}\n"+ - - "lowp vec3 HSLToRGB(lowp vec3 hsl)\n"+ - "{\n" + - " lowp vec3 rgb;\n" + - - " if (hsl.y == 0.0)\n" + + "}\n" + + + "lowp float HueToRGB(lowp float f1, lowp float f2, lowp float hue)\n" + + "{\n" + + " if (hue < 0.0)\n" + + " hue += 1.0;\n" + + " else if (hue > 1.0)\n" + + " hue -= 1.0;\n" + + " lowp float res;\n" + + " if ((6.0 * hue) < 1.0)\n" + + " res = f1 + (f2 - f1) * 6.0 * hue;\n" + + " else if ((2.0 * hue) < 1.0)\n" + + " res = f2;\n" + + " else if ((3.0 * hue) < 2.0)\n" + + " res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0;\n" + + " else\n" + + " res = f1;\n" + + " return res;\n" + + "}\n" + + + "lowp vec3 HSLToRGB(lowp vec3 hsl)\n" + + "{\n" + + " lowp vec3 rgb;\n" + + + " if (hsl.y == 0.0)\n" + " rgb = vec3(hsl.z); // Luminance\n" + - " else\n" + - " {\n" + - " lowp float f2;\n" + + " else\n" + + " {\n" + + " lowp float f2;\n" + - " if (hsl.z < 0.5)\n" + + " if (hsl.z < 0.5)\n" + " f2 = hsl.z * (1.0 + hsl.y);\n" + - " else\n" + + " else\n" + " f2 = (hsl.z + hsl.y) - (hsl.y * hsl.z);\n" + - " lowp float f1 = 2.0 * hsl.z - f2;\n" + + " lowp float f1 = 2.0 * hsl.z - f2;\n" + - " rgb.r = HueToRGB(f1, f2, hsl.x + (1.0/3.0));\n" + - " rgb.g = HueToRGB(f1, f2, hsl.x);\n" + + " rgb.r = HueToRGB(f1, f2, hsl.x + (1.0/3.0));\n" + + " rgb.g = HueToRGB(f1, f2, hsl.x);\n" + " rgb.b= HueToRGB(f1, f2, hsl.x - (1.0/3.0));\n" + - " }\n" + + " }\n" + - " return rgb;\n "+ + " return rgb;\n " + "}\n" + - "lowp float RGBToL(lowp vec3 color)\n" + - "{\n" + - " lowp float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB\n" + - " lowp float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB\n" + + "lowp float RGBToL(lowp vec3 color)\n" + + "{\n" + + " lowp float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB\n" + + " lowp float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB\n" + - " return (fmax + fmin) / 2.0; // Luminance\n" + - "}\n" + + " return (fmax + fmin) / 2.0; // Luminance\n" + + "}\n" + - "void main()\n"+ - "{\n"+ - " lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + + "void main()\n" + + "{\n" + + " lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + " // Alternative way:\n" + - " //lowp vec3 lightness = RGBToL(textureColor.rgb);\n" + + " //lowp vec3 lightness = RGBToL(textureColor.rgb);\n" + " lowp vec3 lightness = textureColor.rgb;\n" + - " const lowp float a = 0.25;\n" + + " const lowp float a = 0.25;\n" + " const lowp float b = 0.333;\n" + - " const lowp float scale = 0.7;\n" + + " const lowp float scale = 0.7;\n" + - " lowp vec3 shadows = shadowsShift * (clamp((lightness - b) / -a + 0.5, 0.0, 1.0) * scale);\n" + - " lowp vec3 midtones = midtonesShift * (clamp((lightness - b) / a + 0.5, 0.0, 1.0) *\n" + + " lowp vec3 shadows = shadowsShift * (clamp((lightness - b) / -a + 0.5, 0.0, 1.0) * scale);\n" + + " lowp vec3 midtones = midtonesShift * (clamp((lightness - b) / a + 0.5, 0.0, 1.0) *\n" + " clamp((lightness + b - 1.0) / -a + 0.5, 0.0, 1.0) * scale);\n" + - " lowp vec3 highlights = highlightsShift * (clamp((lightness + b - 1.0) / a + 0.5, 0.0, 1.0) * scale);\n" + - - " mediump vec3 newColor = textureColor.rgb + shadows + midtones + highlights;\n"+ - " newColor = clamp(newColor, 0.0, 1.0);\n "+ - - " if (preserveLuminosity != 0) {\n "+ - " lowp vec3 newHSL = RGBToHSL(newColor);\n" + - " lowp float oldLum = RGBToL(textureColor.rgb);\n" + - " textureColor.rgb = HSLToRGB(vec3(newHSL.x, newHSL.y, oldLum));\n" + - " gl_FragColor = textureColor;\n" + - " } else {\n" + - " gl_FragColor = vec4(newColor.rgb, textureColor.w);\n" + + " lowp vec3 highlights = highlightsShift * (clamp((lightness + b - 1.0) / a + 0.5, 0.0, 1.0) * scale);\n" + + + " mediump vec3 newColor = textureColor.rgb + shadows + midtones + highlights;\n" + + " newColor = clamp(newColor, 0.0, 1.0);\n " + + + " if (preserveLuminosity != 0) {\n " + + " lowp vec3 newHSL = RGBToHSL(newColor);\n" + + " lowp float oldLum = RGBToL(textureColor.rgb);\n" + + " textureColor.rgb = HSLToRGB(vec3(newHSL.x, newHSL.y, oldLum));\n" + + " gl_FragColor = textureColor;\n" + + " } else {\n" + + " gl_FragColor = vec4(newColor.rgb, textureColor.w);\n" + " }\n" + "}\n"; @@ -192,6 +192,6 @@ public void setHighlights(float[] highlights) { public void setPreserveLuminosity(boolean preserveLuminosity) { this.preserveLuminosity = preserveLuminosity; - setInteger(mPreserveLuminosityLocation, preserveLuminosity ? 1: 0); + setInteger(mPreserveLuminosityLocation, preserveLuminosity ? 1 : 0); } } diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java index c49f55b1c..d17a08be7 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java @@ -44,7 +44,7 @@ public class GPUImageColorMatrixFilter extends GPUImageFilter { private int mIntensityLocation; public GPUImageColorMatrixFilter() { - this(1.0f, new float[] { + this(1.0f, new float[]{ 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java index e30d376f6..d97e85fda 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java @@ -25,16 +25,16 @@ */ public class GPUImageContrastFilter extends GPUImageFilter { public static final String CONTRAST_FRAGMENT_SHADER = "" + - "varying highp vec2 textureCoordinate;\n" + - " \n" + - " uniform sampler2D inputImageTexture;\n" + - " uniform lowp float contrast;\n" + - " \n" + - " void main()\n" + - " {\n" + - " lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + - " \n" + - " gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w);\n" + + "varying highp vec2 textureCoordinate;\n" + + " \n" + + " uniform sampler2D inputImageTexture;\n" + + " uniform lowp float contrast;\n" + + " \n" + + " void main()\n" + + " {\n" + + " lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + + " \n" + + " gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w);\n" + " }"; private int mContrastLocation; @@ -43,7 +43,7 @@ public class GPUImageContrastFilter extends GPUImageFilter { public GPUImageContrastFilter() { this(1.2f); } - + public GPUImageContrastFilter(float contrast) { super(NO_FILTER_VERTEX_SHADER, CONTRAST_FRAGMENT_SHADER); mContrast = contrast; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java index 7430bfaa8..51dbd0605 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDirectionalSobelEdgeDetectionFilter.java @@ -19,43 +19,43 @@ public class GPUImageDirectionalSobelEdgeDetectionFilter extends GPUImage3x3TextureSamplingFilter { public static final String DIRECTIONAL_SOBEL_EDGE_DETECTION_FRAGMENT_SHADER = "" + - "precision mediump float;\n" + + "precision mediump float;\n" + "\n" + - "varying vec2 textureCoordinate;\n" + - "varying vec2 leftTextureCoordinate;\n" + - "varying vec2 rightTextureCoordinate;\n" + + "varying vec2 textureCoordinate;\n" + + "varying vec2 leftTextureCoordinate;\n" + + "varying vec2 rightTextureCoordinate;\n" + "\n" + - "varying vec2 topTextureCoordinate;\n" + - "varying vec2 topLeftTextureCoordinate;\n" + - "varying vec2 topRightTextureCoordinate;\n" + - "\n" + - "varying vec2 bottomTextureCoordinate;\n" + - "varying vec2 bottomLeftTextureCoordinate;\n" + - "varying vec2 bottomRightTextureCoordinate;\n" + - "\n" + - "uniform sampler2D inputImageTexture;\n" + - "\n" + - "void main()\n" + - "{\n" + - " float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;\n" + - " float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;\n" + - " float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;\n" + - " float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;\n" + - " float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;\n" + - " float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;\n" + - " float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;\n" + - " float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;\n" + - "\n" + - " vec2 gradientDirection;\n" + - " gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;\n" + - " gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;\n" + - "\n" + - " float gradientMagnitude = length(gradientDirection);\n" + - " vec2 normalizedDirection = normalize(gradientDirection);\n" + - " normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away\n" + - " normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0\n" + - "\n" + - " gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0);\n" + + "varying vec2 topTextureCoordinate;\n" + + "varying vec2 topLeftTextureCoordinate;\n" + + "varying vec2 topRightTextureCoordinate;\n" + + "\n" + + "varying vec2 bottomTextureCoordinate;\n" + + "varying vec2 bottomLeftTextureCoordinate;\n" + + "varying vec2 bottomRightTextureCoordinate;\n" + + "\n" + + "uniform sampler2D inputImageTexture;\n" + + "\n" + + "void main()\n" + + "{\n" + + " float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;\n" + + " float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;\n" + + " float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;\n" + + " float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;\n" + + " float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;\n" + + " float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;\n" + + " float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;\n" + + " float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;\n" + + "\n" + + " vec2 gradientDirection;\n" + + " gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;\n" + + " gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;\n" + + "\n" + + " float gradientMagnitude = length(gradientDirection);\n" + + " vec2 normalizedDirection = normalize(gradientDirection);\n" + + " normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away\n" + + " normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0\n" + + "\n" + + " gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0);\n" + "}"; public GPUImageDirectionalSobelEdgeDetectionFilter() { diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java index 00125bc0b..819b8c753 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageDissolveBlendFilter.java @@ -19,7 +19,7 @@ /** * Mix ranges from 0.0 (only image 1) to 1.0 (only image 2), with 0.5 (half of either) as the normal level */ -public class GPUImageDissolveBlendFilter extends GPUImageMixBlendFilter{ +public class GPUImageDissolveBlendFilter extends GPUImageMixBlendFilter { public static final String DISSOLVE_BLEND_FRAGMENT_SHADER = "varying highp vec2 textureCoordinate;\n" + " varying highp vec2 textureCoordinate2;\n" + "\n" + diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java index ac7ea79ba..d42fc3e81 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageEmbossFilter.java @@ -41,7 +41,7 @@ public void onInit() { public void setIntensity(final float intensity) { mIntensity = intensity; - setConvolutionKernel(new float[] { + setConvolutionKernel(new float[]{ intensity * (-2.0f), -intensity, 0.0f, -intensity, 1.0f, intensity, 0.0f, intensity, intensity * 2.0f, diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java index 368312cf3..0022a4f60 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java @@ -127,7 +127,8 @@ public void onDraw(final int textureId, final FloatBuffer cubeBuffer, GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); } - protected void onDrawArraysPre() {} + protected void onDrawArraysPre() { + } protected void runPendingOnDrawTasks() { while (!mRunOnDraw.isEmpty()) { diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java index dddf531e3..41868a34a 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java @@ -18,7 +18,6 @@ import android.annotation.SuppressLint; import android.opengl.GLES20; -import jp.co.cyberagent.android.gpuimage.util.TextureRotationUtil; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -26,6 +25,8 @@ import java.util.ArrayList; import java.util.List; +import jp.co.cyberagent.android.gpuimage.util.TextureRotationUtil; + import static jp.co.cyberagent.android.gpuimage.GPUImageRenderer.CUBE; import static jp.co.cyberagent.android.gpuimage.util.TextureRotationUtil.TEXTURE_NO_ROTATION; @@ -178,7 +179,7 @@ public void onOutputSizeChanged(final int width, final int height) { * @see jp.co.cyberagent.android.gpuimage.GPUImageFilter#onDraw(int, * java.nio.FloatBuffer, java.nio.FloatBuffer) */ - @SuppressLint("WrongCall") + @SuppressLint("WrongCall") @Override public void onDraw(final int textureId, final FloatBuffer cubeBuffer, final FloatBuffer textureBuffer) { @@ -211,7 +212,7 @@ public void onDraw(final int textureId, final FloatBuffer cubeBuffer, } } } - } + } /** * Gets the filters. diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java index 52e27d046..b44a00cb0 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHalftoneFilter.java @@ -52,7 +52,7 @@ public void onInit() { @Override public void onOutputSizeChanged(final int width, final int height) { super.onOutputSizeChanged(width, height); - setAspectRatio((float)height / (float) width); + setAspectRatio((float) height / (float) width); } public void setFractionalWidthOfAPixel(final float fractionalWidthOfAPixel) { diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java index ba54c3cb4..2c6641de0 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHazeFilter.java @@ -20,7 +20,7 @@ /** * The haze filter can be used to add or remove haze. - * + *

* This is similar to a UV filter. */ public class GPUImageHazeFilter extends GPUImageFilter { diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java index 7081d6b66..53f98aebb 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHighlightShadowFilter.java @@ -78,7 +78,7 @@ public void setHighlights(final float highlights) { mHighlights = highlights; setFloat(mHighlightsLocation, mHighlights); } - + public void setShadows(final float shadows) { mShadows = shadows; setFloat(mShadowsLocation, mShadows); diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java index 01f3a7ad9..3c520e388 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageHueFilter.java @@ -20,49 +20,49 @@ public class GPUImageHueFilter extends GPUImageFilter { public static final String HUE_FRAGMENT_SHADER = "" + - "precision highp float;\n" + - "varying highp vec2 textureCoordinate;\n" + - "\n" + - "uniform sampler2D inputImageTexture;\n" + - "uniform mediump float hueAdjust;\n" + - "const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0);\n" + - "const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0);\n" + - "const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0);\n" + - "\n" + - "const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0);\n" + - "const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0);\n" + - "const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0);\n" + - "\n" + - "void main ()\n" + - "{\n" + - " // Sample the input pixel\n" + - " highp vec4 color = texture2D(inputImageTexture, textureCoordinate);\n" + - "\n" + - " // Convert to YIQ\n" + - " highp float YPrime = dot (color, kRGBToYPrime);\n" + - " highp float I = dot (color, kRGBToI);\n" + - " highp float Q = dot (color, kRGBToQ);\n" + - "\n" + - " // Calculate the hue and chroma\n" + - " highp float hue = atan (Q, I);\n" + - " highp float chroma = sqrt (I * I + Q * Q);\n" + - "\n" + - " // Make the user's adjustments\n" + - " hue += (-hueAdjust); //why negative rotation?\n" + - "\n" + - " // Convert back to YIQ\n" + - " Q = chroma * sin (hue);\n" + - " I = chroma * cos (hue);\n" + - "\n" + - " // Convert back to RGB\n" + - " highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0);\n" + - " color.r = dot (yIQ, kYIQToR);\n" + - " color.g = dot (yIQ, kYIQToG);\n" + - " color.b = dot (yIQ, kYIQToB);\n" + - "\n" + - " // Save the result\n" + - " gl_FragColor = color;\n" + - "}\n"; + "precision highp float;\n" + + "varying highp vec2 textureCoordinate;\n" + + "\n" + + "uniform sampler2D inputImageTexture;\n" + + "uniform mediump float hueAdjust;\n" + + "const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0);\n" + + "const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0);\n" + + "const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0);\n" + + "\n" + + "const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0);\n" + + "const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0);\n" + + "const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0);\n" + + "\n" + + "void main ()\n" + + "{\n" + + " // Sample the input pixel\n" + + " highp vec4 color = texture2D(inputImageTexture, textureCoordinate);\n" + + "\n" + + " // Convert to YIQ\n" + + " highp float YPrime = dot (color, kRGBToYPrime);\n" + + " highp float I = dot (color, kRGBToI);\n" + + " highp float Q = dot (color, kRGBToQ);\n" + + "\n" + + " // Calculate the hue and chroma\n" + + " highp float hue = atan (Q, I);\n" + + " highp float chroma = sqrt (I * I + Q * Q);\n" + + "\n" + + " // Make the user's adjustments\n" + + " hue += (-hueAdjust); //why negative rotation?\n" + + "\n" + + " // Convert back to YIQ\n" + + " Q = chroma * sin (hue);\n" + + " I = chroma * cos (hue);\n" + + "\n" + + " // Convert back to RGB\n" + + " highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0);\n" + + " color.r = dot (yIQ, kYIQToR);\n" + + " color.g = dot (yIQ, kYIQToG);\n" + + " color.b = dot (yIQ, kYIQToB);\n" + + "\n" + + " // Save the result\n" + + " gl_FragColor = color;\n" + + "}\n"; private float mHue; private int mHueLocation; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java index 9ef7a124f..66953f1cc 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageLevelsFilter.java @@ -5,27 +5,27 @@ /** * Created by vashisthg 30/05/14. */ -public class GPUImageLevelsFilter extends GPUImageFilter{ +public class GPUImageLevelsFilter extends GPUImageFilter { private static final String LOGTAG = GPUImageLevelsFilter.class.getSimpleName(); public static final String LEVELS_FRAGMET_SHADER = " varying highp vec2 textureCoordinate;\n" + - " \n" + - " uniform sampler2D inputImageTexture;\n" + - " uniform mediump vec3 levelMinimum;\n" + - " uniform mediump vec3 levelMiddle;\n" + - " uniform mediump vec3 levelMaximum;\n" + - " uniform mediump vec3 minOutput;\n" + - " uniform mediump vec3 maxOutput;\n" + - " \n" + - " void main()\n" + - " {\n" + - " mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + - " \n" + - " gl_FragColor = vec4( mix(minOutput, maxOutput, pow(min(max(textureColor.rgb -levelMinimum, vec3(0.0)) / (levelMaximum - levelMinimum ), vec3(1.0)), 1.0 /levelMiddle)) , textureColor.a);\n" + - " }\n"; + " \n" + + " uniform sampler2D inputImageTexture;\n" + + " uniform mediump vec3 levelMinimum;\n" + + " uniform mediump vec3 levelMiddle;\n" + + " uniform mediump vec3 levelMaximum;\n" + + " uniform mediump vec3 minOutput;\n" + + " uniform mediump vec3 maxOutput;\n" + + " \n" + + " void main()\n" + + " {\n" + + " mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + + " \n" + + " gl_FragColor = vec4( mix(minOutput, maxOutput, pow(min(max(textureColor.rgb -levelMinimum, vec3(0.0)) / (levelMaximum - levelMinimum ), vec3(1.0)), 1.0 /levelMiddle)) , textureColor.a);\n" + + " }\n"; private int mMinLocation; private float[] mMin; @@ -39,7 +39,7 @@ public class GPUImageLevelsFilter extends GPUImageFilter{ private float[] mMaxOutput; public GPUImageLevelsFilter() { - this(new float[] {0.0f,0.0f,0.0f}, new float[] {1.0f, 1.0f, 1.0f }, new float[] {1.0f, 1.0f ,1.0f}, new float[] {0.0f, 0.0f, 0.0f}, new float[] {1.0f,1.0f,1.0f}); + this(new float[]{0.0f, 0.0f, 0.0f}, new float[]{1.0f, 1.0f, 1.0f}, new float[]{1.0f, 1.0f, 1.0f}, new float[]{0.0f, 0.0f, 0.0f}, new float[]{1.0f, 1.0f, 1.0f}); } private GPUImageLevelsFilter(final float[] min, final float[] mid, final float[] max, final float[] minOUt, final float[] maxOut) { @@ -70,7 +70,7 @@ public void onInitialized() { } - public void updateUniforms () { + public void updateUniforms() { setFloatVec3(mMinLocation, mMin); setFloatVec3(mMidLocation, mMid); setFloatVec3(mMaxLocation, mMax); @@ -78,17 +78,17 @@ public void updateUniforms () { setFloatVec3(mMaxOutputLocation, mMaxOutput); } - public void setMin(float min, float mid , float max ,float minOut , float maxOut) { + public void setMin(float min, float mid, float max, float minOut, float maxOut) { setRedMin(min, mid, max, minOut, maxOut); setGreenMin(min, mid, max, minOut, maxOut); setBlueMin(min, mid, max, minOut, maxOut); } - public void setMin(float min, float mid , float max ) { + public void setMin(float min, float mid, float max) { setMin(min, mid, max, 0.0f, 1.0f); } - public void setRedMin(float min, float mid , float max ,float minOut , float maxOut) { + public void setRedMin(float min, float mid, float max, float minOut, float maxOut) { mMin[0] = min; mMid[0] = mid; mMax[0] = max; @@ -97,11 +97,11 @@ public void setRedMin(float min, float mid , float max ,float minOut , float max updateUniforms(); } - public void setRedMin(float min, float mid , float max ){ + public void setRedMin(float min, float mid, float max) { setRedMin(min, mid, max, 0, 1); } - public void setGreenMin(float min, float mid , float max ,float minOut , float maxOut) { + public void setGreenMin(float min, float mid, float max, float minOut, float maxOut) { mMin[1] = min; mMid[1] = mid; mMax[1] = max; @@ -110,11 +110,11 @@ public void setGreenMin(float min, float mid , float max ,float minOut , float m updateUniforms(); } - public void setGreenMin(float min, float mid , float max ){ + public void setGreenMin(float min, float mid, float max) { setGreenMin(min, mid, max, 0, 1); } - public void setBlueMin(float min, float mid , float max ,float minOut , float maxOut) { + public void setBlueMin(float min, float mid, float max, float minOut, float maxOut) { mMin[2] = min; mMid[2] = mid; mMax[2] = max; @@ -123,7 +123,7 @@ public void setBlueMin(float min, float mid , float max ,float minOut , float ma updateUniforms(); } - public void setBlueMin(float min, float mid , float max ){ + public void setBlueMin(float min, float mid, float max) { setBlueMin(min, mid, max, 0, 1); } } diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java index bd9b617b6..81e2dcc75 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageMonochromeFilter.java @@ -61,7 +61,7 @@ public class GPUImageMonochromeFilter extends GPUImageFilter { private float[] mColor; public GPUImageMonochromeFilter() { - this(1.0f, new float[] {0.6f, 0.45f, 0.3f, 1.0f}); + this(1.0f, new float[]{0.6f, 0.45f, 0.3f, 1.0f}); } public GPUImageMonochromeFilter(final float intensity, final float[] color) { @@ -81,21 +81,21 @@ public void onInit() { public void onInitialized() { super.onInitialized(); setIntensity(1.0f); - setColor(new float[]{ 0.6f, 0.45f, 0.3f, 1.f }); + setColor(new float[]{0.6f, 0.45f, 0.3f, 1.f}); } public void setIntensity(final float intensity) { mIntensity = intensity; setFloat(mIntensityLocation, mIntensity); } - + public void setColor(final float[] color) { mColor = color; setColorRed(mColor[0], mColor[1], mColor[2]); - + } - + public void setColorRed(final float red, final float green, final float blue) { - setFloatVec3(mFilterColorLocation, new float[]{ red, green, blue }); + setFloatVec3(mFilterColorLocation, new float[]{red, green, blue}); } } diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java index 8e275c542..9fcd28f98 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageNormalBlendFilter.java @@ -18,15 +18,15 @@ /** * This equation is a simplification of the general blending equation. It assumes the destination color is opaque, and therefore drops the destination color's alpha term. - * + *

* D = C1 * C1a + C2 * C2a * (1 - C1a) * where D is the resultant color, C1 is the color of the first element, C1a is the alpha of the first element, C2 is the second element color, C2a is the alpha of the second element. The destination alpha is calculated with: - * + *

* Da = C1a + C2a * (1 - C1a) * The resultant color is premultiplied with the alpha. To restore the color to the unmultiplied values, just divide by Da, the resultant alpha. - * + *

* http://stackoverflow.com/questions/1724946/blend-mode-on-a-transparent-and-semi-transparent-background - * + *

* For some reason Photoshop behaves * D = C1 + C2 * C2a * (1 - C1a) */ diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java index 4c0dea398..fb7cc5515 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageOpacityFilter.java @@ -21,7 +21,7 @@ /** * Adjusts the alpha channel of the incoming image * opacity: The value to multiply the incoming alpha channel for each pixel by (0.0 - 1.0, with 1.0 as the default) -*/ + */ public class GPUImageOpacityFilter extends GPUImageFilter { public static final String OPACITY_FRAGMENT_SHADER = "" + " varying highp vec2 textureCoordinate;\n" + diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java index 9c4af4b70..356a4e69b 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImagePixelationFilter.java @@ -17,6 +17,7 @@ package jp.co.cyberagent.android.gpuimage; import android.opengl.GLES20; + /** * Applies a grayscale effect to the image. */ @@ -45,7 +46,7 @@ public class GPUImagePixelationFilter extends GPUImageFilter { private int mImageHeightFactorLocation; private float mPixel; private int mPixelLocation; - + public GPUImagePixelationFilter() { super(NO_FILTER_VERTEX_SHADER, PIXELATION_FRAGMENT_SHADER); mPixel = 1.0f; @@ -68,7 +69,7 @@ public void onOutputSizeChanged(final int width, final int height) { } public void setPixel(final float pixel) { - mPixel = pixel; - setFloat(mPixelLocation, mPixel); + mPixel = pixel; + setFloat(mPixelLocation, mPixel); } } diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java index 76cea73dd..0efbf75ce 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageRGBFilter.java @@ -26,19 +26,19 @@ */ public class GPUImageRGBFilter extends GPUImageFilter { public static final String RGB_FRAGMENT_SHADER = "" + - " varying highp vec2 textureCoordinate;\n" + - " \n" + - " uniform sampler2D inputImageTexture;\n" + - " uniform highp float red;\n" + - " uniform highp float green;\n" + - " uniform highp float blue;\n" + - " \n" + - " void main()\n" + - " {\n" + - " highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + - " \n" + - " gl_FragColor = vec4(textureColor.r * red, textureColor.g * green, textureColor.b * blue, 1.0);\n" + - " }\n"; + " varying highp vec2 textureCoordinate;\n" + + " \n" + + " uniform sampler2D inputImageTexture;\n" + + " uniform highp float red;\n" + + " uniform highp float green;\n" + + " uniform highp float blue;\n" + + " \n" + + " void main()\n" + + " {\n" + + " highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" + + " \n" + + " gl_FragColor = vec4(textureColor.r * red, textureColor.g * green, textureColor.b * blue, 1.0);\n" + + " }\n"; private int mRedLocation; private float mRed; @@ -77,14 +77,14 @@ public void setRed(final float red) { setFloat(mRedLocation, mRed); } } - + public void setGreen(final float green) { mGreen = green; if (mIsInitialized) { setFloat(mGreenLocation, mGreen); } } - + public void setBlue(final float blue) { mBlue = blue; if (mIsInitialized) { diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java index 244398172..b4a2684e5 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSepiaFilter.java @@ -26,7 +26,7 @@ public GPUImageSepiaFilter() { } public GPUImageSepiaFilter(final float intensity) { - super(intensity, new float[] { + super(intensity, new float[]{ 0.3588f, 0.7044f, 0.1368f, 0.0f, 0.2990f, 0.5870f, 0.1140f, 0.0f, 0.2392f, 0.4696f, 0.0912f, 0.0f, diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java index 35cfc04a4..8190211ff 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSharpenFilter.java @@ -59,28 +59,28 @@ public class GPUImageSharpenFilter extends GPUImageFilter { "}"; public static final String SHARPEN_FRAGMENT_SHADER = "" + - "precision highp float;\n" + - "\n" + - "varying highp vec2 textureCoordinate;\n" + - "varying highp vec2 leftTextureCoordinate;\n" + - "varying highp vec2 rightTextureCoordinate; \n" + - "varying highp vec2 topTextureCoordinate;\n" + - "varying highp vec2 bottomTextureCoordinate;\n" + - "\n" + - "varying highp float centerMultiplier;\n" + - "varying highp float edgeMultiplier;\n" + - "\n" + - "uniform sampler2D inputImageTexture;\n" + - "\n" + - "void main()\n" + - "{\n" + - " mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb;\n" + - " mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb;\n" + - " mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb;\n" + - " mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb;\n" + - " mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb;\n" + - "\n" + - " gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w);\n" + + "precision highp float;\n" + + "\n" + + "varying highp vec2 textureCoordinate;\n" + + "varying highp vec2 leftTextureCoordinate;\n" + + "varying highp vec2 rightTextureCoordinate; \n" + + "varying highp vec2 topTextureCoordinate;\n" + + "varying highp vec2 bottomTextureCoordinate;\n" + + "\n" + + "varying highp float centerMultiplier;\n" + + "varying highp float edgeMultiplier;\n" + + "\n" + + "uniform sampler2D inputImageTexture;\n" + + "\n" + + "void main()\n" + + "{\n" + + " mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb;\n" + + " mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb;\n" + + " mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb;\n" + + " mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb;\n" + + " mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb;\n" + + "\n" + + " gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w);\n" + "}"; private int mSharpnessLocation; @@ -91,7 +91,7 @@ public class GPUImageSharpenFilter extends GPUImageFilter { public GPUImageSharpenFilter() { this(0.0f); } - + public GPUImageSharpenFilter(final float sharpness) { super(SHARPEN_VERTEX_SHADER, SHARPEN_FRAGMENT_SHADER); mSharpness = sharpness; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java index 07c220425..0e1d97ce4 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSmoothToonFilter.java @@ -17,8 +17,8 @@ package jp.co.cyberagent.android.gpuimage; /** - * This uses a similar process as the GPUImageToonFilter, only it precedes the toon effect - * with a Gaussian blur to smooth out noise. + * This uses a similar process as the GPUImageToonFilter, only it precedes the toon effect + * with a Gaussian blur to smooth out noise. */ public class GPUImageSmoothToonFilter extends GPUImageFilterGroup { GPUImageGaussianBlurFilter blurFilter; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java index b755627f9..dad5fdec9 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelEdgeDetection.java @@ -21,38 +21,38 @@ */ public class GPUImageSobelEdgeDetection extends GPUImageFilterGroup { public static final String SOBEL_EDGE_DETECTION = "" + - "precision mediump float;\n" + - "\n" + - "varying vec2 textureCoordinate;\n" + - "varying vec2 leftTextureCoordinate;\n" + - "varying vec2 rightTextureCoordinate;\n" + - "\n" + - "varying vec2 topTextureCoordinate;\n" + - "varying vec2 topLeftTextureCoordinate;\n" + - "varying vec2 topRightTextureCoordinate;\n" + - "\n" + - "varying vec2 bottomTextureCoordinate;\n" + - "varying vec2 bottomLeftTextureCoordinate;\n" + - "varying vec2 bottomRightTextureCoordinate;\n" + - "\n" + - "uniform sampler2D inputImageTexture;\n" + - "\n" + - "void main()\n" + - "{\n" + - " float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;\n" + - " float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;\n" + - " float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;\n" + - " float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;\n" + - " float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;\n" + - " float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;\n" + - " float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;\n" + - " float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;\n" + - " float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;\n" + - " float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;\n" + - "\n" + - " float mag = length(vec2(h, v));\n" + - "\n" + - " gl_FragColor = vec4(vec3(mag), 1.0);\n" + + "precision mediump float;\n" + + "\n" + + "varying vec2 textureCoordinate;\n" + + "varying vec2 leftTextureCoordinate;\n" + + "varying vec2 rightTextureCoordinate;\n" + + "\n" + + "varying vec2 topTextureCoordinate;\n" + + "varying vec2 topLeftTextureCoordinate;\n" + + "varying vec2 topRightTextureCoordinate;\n" + + "\n" + + "varying vec2 bottomTextureCoordinate;\n" + + "varying vec2 bottomLeftTextureCoordinate;\n" + + "varying vec2 bottomRightTextureCoordinate;\n" + + "\n" + + "uniform sampler2D inputImageTexture;\n" + + "\n" + + "void main()\n" + + "{\n" + + " float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;\n" + + " float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;\n" + + " float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;\n" + + " float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;\n" + + " float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;\n" + + " float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;\n" + + " float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;\n" + + " float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;\n" + + " float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;\n" + + " float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;\n" + + "\n" + + " float mag = length(vec2(h, v));\n" + + "\n" + + " gl_FragColor = vec4(vec3(mag), 1.0);\n" + "}"; public GPUImageSobelEdgeDetection() { diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java index f1dcf64e7..97d73cc6b 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageSobelThresholdFilter.java @@ -3,72 +3,72 @@ import android.opengl.GLES20; public class GPUImageSobelThresholdFilter extends - GPUImage3x3TextureSamplingFilter { + GPUImage3x3TextureSamplingFilter { public static final String SOBEL_THRESHOLD_EDGE_DETECTION = "" + - "precision mediump float;\n" + - "\n" + - "varying vec2 textureCoordinate;\n" + - "varying vec2 leftTextureCoordinate;\n" + - "varying vec2 rightTextureCoordinate;\n" + - "\n" + - "varying vec2 topTextureCoordinate;\n" + - "varying vec2 topLeftTextureCoordinate;\n" + - "varying vec2 topRightTextureCoordinate;\n" + - "\n" + - "varying vec2 bottomTextureCoordinate;\n" + - "varying vec2 bottomLeftTextureCoordinate;\n" + - "varying vec2 bottomRightTextureCoordinate;\n" + - "\n" + - "uniform sampler2D inputImageTexture;\n" + - "uniform lowp float threshold;\n" + - "\n" + - "const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);\n" + - "\n" + - "void main()\n" + - "{\n" + - " float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;\n" + - " float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;\n" + - " float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;\n" + - " float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;\n" + - " float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;\n" + - " float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;\n" + - " float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;\n" + - " float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;\n" + - " float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;\n" + - " float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;\n" + - "\n" + - " float mag = 1.0 - length(vec2(h, v));\n" + - " mag = step(threshold, mag);\n" + - "\n" + - " gl_FragColor = vec4(vec3(mag), 1.0);\n" + - "}\n"; + "precision mediump float;\n" + + "\n" + + "varying vec2 textureCoordinate;\n" + + "varying vec2 leftTextureCoordinate;\n" + + "varying vec2 rightTextureCoordinate;\n" + + "\n" + + "varying vec2 topTextureCoordinate;\n" + + "varying vec2 topLeftTextureCoordinate;\n" + + "varying vec2 topRightTextureCoordinate;\n" + + "\n" + + "varying vec2 bottomTextureCoordinate;\n" + + "varying vec2 bottomLeftTextureCoordinate;\n" + + "varying vec2 bottomRightTextureCoordinate;\n" + + "\n" + + "uniform sampler2D inputImageTexture;\n" + + "uniform lowp float threshold;\n" + + "\n" + + "const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);\n" + + "\n" + + "void main()\n" + + "{\n" + + " float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;\n" + + " float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;\n" + + " float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;\n" + + " float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;\n" + + " float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;\n" + + " float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;\n" + + " float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;\n" + + " float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;\n" + + " float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;\n" + + " float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;\n" + + "\n" + + " float mag = 1.0 - length(vec2(h, v));\n" + + " mag = step(threshold, mag);\n" + + "\n" + + " gl_FragColor = vec4(vec3(mag), 1.0);\n" + + "}\n"; private int mUniformThresholdLocation; private float mThreshold = 0.9f; - + public GPUImageSobelThresholdFilter() { - this(0.9f); + this(0.9f); } - + public GPUImageSobelThresholdFilter(float threshold) { - super(SOBEL_THRESHOLD_EDGE_DETECTION); - mThreshold = threshold; + super(SOBEL_THRESHOLD_EDGE_DETECTION); + mThreshold = threshold; } - + @Override public void onInit() { - super.onInit(); - mUniformThresholdLocation = GLES20.glGetUniformLocation(getProgram(), "threshold"); + super.onInit(); + mUniformThresholdLocation = GLES20.glGetUniformLocation(getProgram(), "threshold"); } - + @Override public void onInitialized() { - super.onInitialized(); - setThreshold(mThreshold); + super.onInitialized(); + setThreshold(mThreshold); } - + public void setThreshold(final float threshold) { - mThreshold = threshold; - setFloat(mUniformThresholdLocation, threshold); + mThreshold = threshold; + setFloat(mUniformThresholdLocation, threshold); } } diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java index 38dd04b14..af9ca9d16 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageToneCurveFilter.java @@ -20,7 +20,8 @@ import android.graphics.PointF; import android.opengl.GLES20; -import java.io.*; +import java.io.IOException; +import java.io.InputStream; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java index e2dee7034..91cd7a0b0 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageTwoInputFilter.java @@ -16,13 +16,14 @@ package jp.co.cyberagent.android.gpuimage; +import android.graphics.Bitmap; +import android.opengl.GLES20; + import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import jp.co.cyberagent.android.gpuimage.util.TextureRotationUtil; -import android.graphics.Bitmap; -import android.opengl.GLES20; public class GPUImageTwoInputFilter extends GPUImageFilter { private static final String VERTEX_SHADER = "attribute vec4 position;\n" + @@ -62,11 +63,11 @@ public void onInit() { mFilterInputTextureUniform2 = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture2"); // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader GLES20.glEnableVertexAttribArray(mFilterSecondTextureCoordinateAttribute); - if (mBitmap != null&&!mBitmap.isRecycled()) { + if (mBitmap != null && !mBitmap.isRecycled()) { setBitmap(mBitmap); } } - + public void setBitmap(final Bitmap bitmap) { if (bitmap != null && bitmap.isRecycled()) { return; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java index 1ee6be2b5..bfdfec901 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageView.java @@ -23,7 +23,11 @@ import android.net.Uri; import android.opengl.GLES20; import android.opengl.GLSurfaceView; -import android.os.*; +import android.os.AsyncTask; +import android.os.Build; +import android.os.Environment; +import android.os.Handler; +import android.os.Looper; import android.util.AttributeSet; import android.view.Gravity; import android.view.ViewTreeObserver; @@ -97,9 +101,9 @@ public GPUImage getGPUImage() { /** * Sets the background color * - * @param red red color value + * @param red red color value * @param green green color value - * @param blue red color value + * @param blue red color value */ public void setBackgroundColor(float red, float green, float blue) { mGPUImage.setBackgroundColor(red, green, blue); @@ -190,8 +194,8 @@ public void requestRender() { * listener. * * @param folderName the folder name - * @param fileName the file name - * @param listener the listener + * @param fileName the file name + * @param listener the listener */ public void saveToPictures(final String folderName, final String fileName, final OnPictureSavedListener listener) { @@ -292,6 +296,7 @@ public void run() { /** * Capture the current image with the size as it is displayed and retrieve it as Bitmap. + * * @return current output as Bitmap * @throws InterruptedException */ diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java index 316333a95..78e341dfc 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageVignetteFilter.java @@ -57,18 +57,18 @@ public class GPUImageVignetteFilter extends GPUImageFilter { private float mVignetteStart; private int mVignetteEndLocation; private float mVignetteEnd; - + public GPUImageVignetteFilter() { - this(new PointF(), new float[] {0.0f, 0.0f, 0.0f}, 0.3f, 0.75f); + this(new PointF(), new float[]{0.0f, 0.0f, 0.0f}, 0.3f, 0.75f); } - + public GPUImageVignetteFilter(final PointF vignetteCenter, final float[] vignetteColor, final float vignetteStart, final float vignetteEnd) { super(NO_FILTER_VERTEX_SHADER, VIGNETTING_FRAGMENT_SHADER); mVignetteCenter = vignetteCenter; mVignetteColor = vignetteColor; mVignetteStart = vignetteStart; mVignetteEnd = vignetteEnd; - + } @Override @@ -78,7 +78,7 @@ public void onInit() { mVignetteColorLocation = GLES20.glGetUniformLocation(getProgram(), "vignetteColor"); mVignetteStartLocation = GLES20.glGetUniformLocation(getProgram(), "vignetteStart"); mVignetteEndLocation = GLES20.glGetUniformLocation(getProgram(), "vignetteEnd"); - + setVignetteCenter(mVignetteCenter); setVignetteColor(mVignetteColor); setVignetteStart(mVignetteStart); @@ -95,12 +95,12 @@ public void setVignetteColor(final float[] vignetteColor) { mVignetteColor = vignetteColor; setFloatVec3(mVignetteColorLocation, mVignetteColor); } - + public void setVignetteStart(final float vignetteStart) { mVignetteStart = vignetteStart; setFloat(mVignetteStartLocation, mVignetteStart); } - + public void setVignetteEnd(final float vignetteEnd) { mVignetteEnd = vignetteEnd; setFloat(mVignetteEndLocation, mVignetteEnd); diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java index a60e6a5a8..f5a5e10cc 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/GPUImageWhiteBalanceFilter.java @@ -21,7 +21,7 @@ /** * Adjusts the white balance of incoming image.
*
- * temperature: + * temperature: * tint: */ public class GPUImageWhiteBalanceFilter extends GPUImageFilter { @@ -61,7 +61,7 @@ public class GPUImageWhiteBalanceFilter extends GPUImageFilter { public GPUImageWhiteBalanceFilter() { this(5000.0f, 0.0f); } - + public GPUImageWhiteBalanceFilter(final float temperature, final float tint) { super(NO_FILTER_VERTEX_SHADER, WHITE_BALANCE_FRAGMENT_SHADER); mTemperature = temperature; @@ -81,11 +81,11 @@ public void onInit() { public void setTemperature(final float temperature) { mTemperature = temperature; - setFloat(mTemperatureLocation, mTemperature < 5000 ? (float)(0.0004 * (mTemperature-5000.0)) : (float)(0.00006 * (mTemperature-5000.0))); + setFloat(mTemperatureLocation, mTemperature < 5000 ? (float) (0.0004 * (mTemperature - 5000.0)) : (float) (0.00006 * (mTemperature - 5000.0))); } - + public void setTint(final float tint) { mTint = tint; - setFloat(mTintLocation, (float)(mTint/100.0)); + setFloat(mTintLocation, (float) (mTint / 100.0)); } } diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java index c23892c61..b5ba8fbb7 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/OpenGlUtils.java @@ -16,8 +16,6 @@ package jp.co.cyberagent.android.gpuimage; -import java.nio.IntBuffer; - import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.hardware.Camera.Size; @@ -25,6 +23,8 @@ import android.opengl.GLUtils; import android.util.Log; +import java.nio.IntBuffer; + public class OpenGlUtils { public static final int NO_TEXTURE = -1; diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java index 12a07eb2c..d7fc98195 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/PixelBuffer.java @@ -1,13 +1,26 @@ /* * Copyright (C) 2018 CyberAgent, Inc. - * Copyright (C) 2010 jsemler - * + * Copyright (C) 2010 jsemler + * * Original publication without License * http://www.anddev.org/android-2d-3d-graphics-opengl-tutorials-f2/possible-to-do-opengl-off-screen-rendering-in-android-t13232.html#p41662 */ package jp.co.cyberagent.android.gpuimage; +import android.graphics.Bitmap; +import android.opengl.GLSurfaceView; +import android.util.Log; + +import java.nio.IntBuffer; + +import javax.microedition.khronos.egl.EGL10; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.egl.EGLContext; +import javax.microedition.khronos.egl.EGLDisplay; +import javax.microedition.khronos.egl.EGLSurface; +import javax.microedition.khronos.opengles.GL10; + import static javax.microedition.khronos.egl.EGL10.EGL_ALPHA_SIZE; import static javax.microedition.khronos.egl.EGL10.EGL_BLUE_SIZE; import static javax.microedition.khronos.egl.EGL10.EGL_DEFAULT_DISPLAY; @@ -22,19 +35,6 @@ import static javax.microedition.khronos.opengles.GL10.GL_RGBA; import static javax.microedition.khronos.opengles.GL10.GL_UNSIGNED_BYTE; -import java.nio.IntBuffer; - -import javax.microedition.khronos.egl.EGL10; -import javax.microedition.khronos.egl.EGLConfig; -import javax.microedition.khronos.egl.EGLContext; -import javax.microedition.khronos.egl.EGLDisplay; -import javax.microedition.khronos.egl.EGLSurface; -import javax.microedition.khronos.opengles.GL10; - -import android.graphics.Bitmap; -import android.opengl.GLSurfaceView; -import android.util.Log; - public class PixelBuffer { final static String TAG = "PixelBuffer"; final static boolean LIST_CONFIGS = false; @@ -58,7 +58,7 @@ public PixelBuffer(final int width, final int height) { mHeight = height; int[] version = new int[2]; - int[] attribList = new int[] { + int[] attribList = new int[]{ EGL_WIDTH, mWidth, EGL_HEIGHT, mHeight, EGL_NONE @@ -69,7 +69,7 @@ public PixelBuffer(final int width, final int height) { mEGLDisplay = mEGL.eglGetDisplay(EGL_DEFAULT_DISPLAY); mEGL.eglInitialize(mEGLDisplay, version); mEGLConfig = chooseConfig(); // Choosing a config is a little more - // complicated + // complicated // mEGLContext = mEGL.eglCreateContext(mEGLDisplay, mEGLConfig, // EGL_NO_CONTEXT, null); @@ -136,7 +136,7 @@ public void destroy() { } private EGLConfig chooseConfig() { - int[] attribList = new int[] { + int[] attribList = new int[]{ EGL_DEPTH_SIZE, 0, EGL_STENCIL_SIZE, 0, EGL_RED_SIZE, 8, @@ -202,7 +202,7 @@ private void convertToBitmap() { iat[(mHeight - i - 1) * mWidth + j] = ia[i * mWidth + j]; } } - + mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); mBitmap.copyPixelsFromBuffer(IntBuffer.wrap(iat)); diff --git a/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java b/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java index 74203ac96..6e5b9a8a6 100644 --- a/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java +++ b/library/src/main/java/jp/co/cyberagent/android/gpuimage/Rotation.java @@ -26,11 +26,16 @@ public enum Rotation { */ public int asInt() { switch (this) { - case NORMAL: return 0; - case ROTATION_90: return 90; - case ROTATION_180: return 180; - case ROTATION_270: return 270; - default: throw new IllegalStateException("Unknown Rotation!"); + case NORMAL: + return 0; + case ROTATION_90: + return 90; + case ROTATION_180: + return 180; + case ROTATION_270: + return 270; + default: + throw new IllegalStateException("Unknown Rotation!"); } } @@ -42,13 +47,19 @@ public int asInt() { */ public static Rotation fromInt(int rotation) { switch (rotation) { - case 0: return NORMAL; - case 90: return ROTATION_90; - case 180: return ROTATION_180; - case 270: return ROTATION_270; - case 360: return NORMAL; - default: throw new IllegalStateException( - rotation + " is an unknown rotation. Needs to be either 0, 90, 180 or 270!"); + case 0: + return NORMAL; + case 90: + return ROTATION_90; + case 180: + return ROTATION_180; + case 270: + return ROTATION_270; + case 360: + return NORMAL; + default: + throw new IllegalStateException( + rotation + " is an unknown rotation. Needs to be either 0, 90, 180 or 270!"); } } } diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java index 6cf7a3aab..2de127c65 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java @@ -26,11 +26,86 @@ import java.util.LinkedList; import java.util.List; -import jp.co.cyberagent.android.gpuimage.*; +import jp.co.cyberagent.android.gpuimage.GPUImage3x3ConvolutionFilter; +import jp.co.cyberagent.android.gpuimage.GPUImage3x3TextureSamplingFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageAddBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageAlphaBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageBilateralFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageBoxBlurFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageBrightnessFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageBulgeDistortionFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageCGAColorspaceFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageChromaKeyBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageColorBalanceFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageColorBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageColorBurnBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageColorDodgeBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageColorInvertFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageContrastFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageCrosshatchFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageDarkenBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageDifferenceBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageDilationFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageDirectionalSobelEdgeDetectionFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageDissolveBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageDivideBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageEmbossFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageExclusionBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageExposureFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageFalseColorFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageFilterGroup; +import jp.co.cyberagent.android.gpuimage.GPUImageGammaFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageGaussianBlurFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageGlassSphereFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageGrayscaleFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageHalftoneFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageHardLightBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageHazeFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageHighlightShadowFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageHueBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageHueFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageKuwaharaFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageLaplacianFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageLevelsFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageLightenBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageLinearBurnBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageLookupFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageLuminosityBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageMonochromeFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageMultiplyBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageNonMaximumSuppressionFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageNormalBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageOpacityFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageOverlayBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImagePixelationFilter; +import jp.co.cyberagent.android.gpuimage.GPUImagePosterizeFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageRGBDilationFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageRGBFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSaturationBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSaturationFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageScreenBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSepiaFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSharpenFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSketchFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSmoothToonFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSobelEdgeDetection; +import jp.co.cyberagent.android.gpuimage.GPUImageSoftLightBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSourceOverBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSphereRefractionFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSubtractBlendFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageSwirlFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageToneCurveFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageToonFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageTransformFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageTwoInputFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageVignetteFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageWeakPixelInclusionFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageWhiteBalanceFilter; public class GPUImageFilterTools { public static void showDialog(final Context context, - final OnGpuImageFilterChosenListener listener) { + final OnGpuImageFilterChosenListener listener) { final FilterList filters = new FilterList(); filters.addFilter("Contrast", FilterType.CONTRAST); filters.addFilter("Invert", FilterType.INVERT); @@ -109,7 +184,7 @@ public static void showDialog(final Context context, filters.addFilter("Levels Min (Mid Adjust)", FilterType.LEVELS_FILTER_MIN); - filters. addFilter("Bilateral Blur", FilterType.BILATERAL_BLUR); + filters.addFilter("Bilateral Blur", FilterType.BILATERAL_BLUR); filters.addFilter("Transform (2-D)", FilterType.TRANSFORM2D); @@ -153,7 +228,7 @@ private static GPUImageFilter createFilterForType(final Context context, final F return new GPUImageSobelEdgeDetection(); case THREE_X_THREE_CONVOLUTION: GPUImage3x3ConvolutionFilter convolution = new GPUImage3x3ConvolutionFilter(); - convolution.setConvolutionKernel(new float[] { + convolution.setConvolutionKernel(new float[]{ -1.0f, 0.0f, 1.0f, -2.0f, 0.0f, 2.0f, -1.0f, 0.0f, 1.0f @@ -174,9 +249,9 @@ private static GPUImageFilter createFilterForType(final Context context, final F case EXPOSURE: return new GPUImageExposureFilter(0.0f); case HIGHLIGHT_SHADOW: - return new GPUImageHighlightShadowFilter(0.0f, 1.0f); + return new GPUImageHighlightShadowFilter(0.0f, 1.0f); case MONOCHROME: - return new GPUImageMonochromeFilter(1.0f, new float[]{0.6f, 0.45f, 0.3f, 1.0f}); + return new GPUImageMonochromeFilter(1.0f, new float[]{0.6f, 0.45f, 0.3f, 1.0f}); case OPACITY: return new GPUImageOpacityFilter(1.0f); case RGB: @@ -187,7 +262,7 @@ private static GPUImageFilter createFilterForType(final Context context, final F PointF centerPoint = new PointF(); centerPoint.x = 0.5f; centerPoint.y = 0.5f; - return new GPUImageVignetteFilter(centerPoint, new float[] {0.0f, 0.0f, 0.0f}, 0.3f, 0.75f); + return new GPUImageVignetteFilter(centerPoint, new float[]{0.0f, 0.0f, 0.0f}, 0.3f, 0.75f); case TONE_CURVE: GPUImageToneCurveFilter toneCurveFilter = new GPUImageToneCurveFilter(); toneCurveFilter.setFromCurveFileInputStream( @@ -409,8 +484,7 @@ public FilterAdjuster(final GPUImageFilter filter) { adjuster = new BilateralAdjuster().filter(filter); } else if (filter instanceof GPUImageTransformFilter) { adjuster = new RotateAdjuster().filter(filter); - } - else { + } else { adjuster = null; } @@ -458,17 +532,17 @@ public void adjust(final int percentage) { } private class PixelationAdjuster extends Adjuster { - @Override - public void adjust(final int percentage) { - getFilter().setPixel(range(percentage, 1.0f, 100.0f)); - } + @Override + public void adjust(final int percentage) { + getFilter().setPixel(range(percentage, 1.0f, 100.0f)); + } } private class HueAdjuster extends Adjuster { - @Override - public void adjust(final int percentage) { - getFilter().setHue(range(percentage, 0.0f, 360.0f)); - } + @Override + public void adjust(final int percentage) { + getFilter().setHue(range(percentage, 0.0f, 360.0f)); + } } private class ContrastAdjuster extends Adjuster { diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java index 3a4ca4465..9d9dd7e39 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityCamera.java @@ -165,7 +165,7 @@ public void onPictureTaken(byte[] data, final Camera camera) { @Override public void onPictureSaved(final Uri - uri) { + uri) { pictureFile.delete(); camera.startPreview(); view.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); @@ -222,7 +222,7 @@ private void switchFilterTo(final GPUImageFilter filter) { @Override public void onProgressChanged(final SeekBar seekBar, final int progress, - final boolean fromUser) { + final boolean fromUser) { if (mFilterAdjuster != null) { mFilterAdjuster.adjust(progress); } @@ -274,7 +274,9 @@ private void setUpCamera(final int id) { mGPUImage.setUpCamera(mCameraInstance, orientation, flipHorizontal, false); } - /** A safe way to get an instance of the Camera object. */ + /** + * A safe way to get an instance of the Camera object. + */ private Camera getCameraInstance(final int id) { Camera c = null; try { diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java index 49c62a7c9..f8ddd68d6 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityGallery.java @@ -16,12 +16,6 @@ package jp.co.cyberagent.android.gpuimage.sample.activity; -import jp.co.cyberagent.android.gpuimage.GPUImageFilter; -import jp.co.cyberagent.android.gpuimage.GPUImageView; -import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools; -import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools.FilterAdjuster; -import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools.OnGpuImageFilterChosenListener; -import jp.co.cyberagent.android.gpuimage.sample.R; import android.app.Activity; import android.content.Intent; import android.net.Uri; @@ -32,6 +26,13 @@ import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.Toast; +import jp.co.cyberagent.android.gpuimage.GPUImageFilter; +import jp.co.cyberagent.android.gpuimage.GPUImageView; +import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools; +import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools.FilterAdjuster; +import jp.co.cyberagent.android.gpuimage.sample.GPUImageFilterTools.OnGpuImageFilterChosenListener; +import jp.co.cyberagent.android.gpuimage.sample.R; + public class ActivityGallery extends Activity implements OnSeekBarChangeListener, OnClickListener, GPUImageView.OnPictureSavedListener { diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java index 940328339..24c20bde5 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/activity/ActivityMain.java @@ -30,25 +30,28 @@ public class ActivityMain extends Activity implements OnClickListener { - @Override public void onCreate(final Bundle savedInstanceState) { + @Override + public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button_gallery).setOnClickListener(this); findViewById(R.id.button_camera).setOnClickListener(this); } - @Override public void onClick(final View v) { + @Override + public void onClick(final View v) { if (PermissionChecker.checkSelfPermission(this, Manifest.permission.CAMERA) - == PackageManager.PERMISSION_DENIED) { - ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.CAMERA }, - v.getId()); + == PackageManager.PERMISSION_DENIED) { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, + v.getId()); } else { startActivity(v.getId()); } } - @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, - int[] grantResults) { + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, + int[] grantResults) { if (grantResults.length != 1 || grantResults[0] == PackageManager.PERMISSION_GRANTED) { startActivity(requestCode); } else { diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java index 8dcfbc0d4..3e634512c 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelper.java @@ -16,14 +16,15 @@ package jp.co.cyberagent.android.gpuimage.sample.utils; -import static android.os.Build.VERSION.SDK_INT; -import static android.os.Build.VERSION_CODES.GINGERBREAD; import android.app.Activity; import android.content.Context; import android.hardware.Camera; import android.hardware.Camera.CameraInfo; import android.view.Surface; +import static android.os.Build.VERSION.SDK_INT; +import static android.os.Build.VERSION_CODES.GINGERBREAD; + public class CameraHelper { private final CameraHelperImpl mImpl; @@ -82,7 +83,7 @@ public void getCameraInfo(final int cameraId, final CameraInfo2 cameraInfo) { } public void setCameraDisplayOrientation(final Activity activity, - final int cameraId, final Camera camera) { + final int cameraId, final Camera camera) { int result = getCameraDisplayOrientation(activity, cameraId); camera.setDisplayOrientation(result); } diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java index f20fd3500..7e1de49a8 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperBase.java @@ -16,13 +16,14 @@ package jp.co.cyberagent.android.gpuimage.sample.utils; -import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraHelperImpl; -import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraInfo2; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.Camera; import android.hardware.Camera.CameraInfo; +import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraHelperImpl; +import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraInfo2; + public class CameraHelperBase implements CameraHelperImpl { private final Context mContext; diff --git a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java index 17f5944de..0a86616be 100644 --- a/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java +++ b/sample/src/main/java/jp/co/cyberagent/android/gpuimage/sample/utils/CameraHelperGB.java @@ -16,12 +16,13 @@ package jp.co.cyberagent.android.gpuimage.sample.utils; -import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraHelperImpl; -import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraInfo2; import android.annotation.TargetApi; import android.hardware.Camera; import android.hardware.Camera.CameraInfo; +import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraHelperImpl; +import jp.co.cyberagent.android.gpuimage.sample.utils.CameraHelper.CameraInfo2; + @TargetApi(9) public class CameraHelperGB implements CameraHelperImpl { diff --git a/sample/src/main/res/layout/activity_camera.xml b/sample/src/main/res/layout/activity_camera.xml index 16a64d0d1..1f321aea5 100644 --- a/sample/src/main/res/layout/activity_camera.xml +++ b/sample/src/main/res/layout/activity_camera.xml @@ -1,7 +1,7 @@ + android:orientation="vertical"> + android:orientation="horizontal"> + android:layout_height="wrap_content" + android:layout_gravity="center" /> + android:layout_height="match_parent"> + android:orientation="vertical">