Giter Site home page Giter Site logo

twisterrob / net.twisterrob.colorfilters Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 15.6 MB

Color Filters in Android SDK https://play.google.com/store/apps/details?id=net.twisterrob.colorfilters

Home Page: https://www.twisterrob.net/project/color-filters/

License: The Unlicense

Kotlin 89.42% Java 10.58%
android android-application andriod-development

net.twisterrob.colorfilters's Introduction

net.twisterrob.colorfilters's People

Contributors

renovate[bot] avatar twisterrob avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

net.twisterrob.colorfilters's Issues

CI is full of "Module was compiled with an incompatible version of Kotlin" from lint

> Task :feature:matrix:lintAnalyzeRelease
e: /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.0/8ee15ef0c67dc83d874f412d84378d7f0eb50b63/kotlin-stdlib-1.9.0.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.
e: /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.9.0/cd65c21cfd1eec4d44ef09f9f52b6d9f8a720636/kotlin-stdlib-common-1.9.0.jar!/META-INF/kotlin-stdlib-common.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.
e: /home/runner/work/net.twisterrob.colorfilters/net.twisterrob.colorfilters/feature/matrix/build/tmp/kotlin-classes/release/META-INF/matrix_release.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.

> Task :feature:palette:generateReleaseLintModel
e: /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.0/8ee15ef0c67dc83d874f412d84378d7f0eb50b63/kotlin-stdlib-1.9.0.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.
e: /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.0/8ee15ef0c67dc83d874f412d84378d7f0eb50b63/kotlin-stdlib-1.9.0.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.

Request storage permissions

0-21 15:05:04.663 29936-29936/net.twisterrob.colorfilters.debug E/LOGO: /storage/emulated/0/Pictures/colorfilters_logo_512.png: open failed: EACCES (Permission denied)
    java.io.FileNotFoundException: /storage/emulated/0/Pictures/colorfilters_logo_512.png: open failed: EACCES (Permission denied)
        at libcore.io.IoBridge.open(IoBridge.java:452)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
        at net.twisterrob.colorfilters.android.image.LogoWriter.write(LogoWriter.kt:32)
        at net.twisterrob.colorfilters.android.image.LogoWriter.write(LogoWriter.kt:24)
        at net.twisterrob.colorfilters.android.MainActivity.onOptionsItemSelected(MainActivity.kt:151)
10-21 15:05:59.063 31930-31930/net.twisterrob.colorfilters.debug E/MediaStore: Failed to insert image
    java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=31930, uid=10283 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
        at android.os.Parcel.readException(Parcel.java:1620)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
        at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
        at android.content.ContentResolver.insert(ContentResolver.java:1284)
        at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:986)
        at net.twisterrob.colorfilters.android.MainActivity.renderCurrentView(MainActivity.kt:246)
        at net.twisterrob.colorfilters.android.ColorFilterFragment.onOptionsItemSelected(ColorFilterFragment.kt:71)

Color Filter Presets

// http://code.tutsplus.com/tutorials/manipulate-visual-effects-with-the-colormatrixfilter-and-convolutionfilter--active-3221

    private static final Preset[] presets = new Preset[]{
            new Preset("Invert", new float[]{
                    -1, 0, 0, 0, 1,
                    0, -1, 0, 0, 1,
                    0, 0, -1, 0, 1,
                    0, 0, 0, 1, 0
            }),
            new Preset("Invert Hue", new float[]{
                    0.0f, 0.5f, 0.5f, 0.0f, 0.0f,
                    0.5f, 0.0f, 0.5f, 0.0f, 0.0f,
                    0.5f, 0.5f, 0.0f, 0.0f, 0.0f,
                    0.0f, 0.0f, 0.0f, 1.0f, 0.0f
            }),
            new Preset("Invert Brightness", new float[]{
                    0.0f, -0.5f, -0.5f, 1.0f, 0.0f,
                    -0.5f, 0.0f, -0.5f, 1.0f, 0.0f,
                    -0.5f, -0.5f, 0.0f, 1.0f, 0.0f,
                    0.0f, 0.0f, 0.0f, 1.0f, 0.0f
            }),
            new Preset("Grayscale (sat=0)", new float[]{
                    0.213f, 0.715f, 0.072f, 0.0f, 0.0f,
                    0.213f, 0.715f, 0.072f, 0.0f, 0.0f,
                    0.213f, 0.715f, 0.072f, 0.0f, 0.0f,
                    0.0f, 0.0f, 0.0f, 1.0f, 0.0f
            }),
            new Preset("Invert Grayscale", new float[]{
                    -0.213f, -0.715f, -0.072f, 1.0f, 0.0f,
                    -0.213f, -0.715f, -0.072f, 1.0f, 0.0f,
                    -0.213f, -0.715f, -0.072f, 1.0f, 0.0f,
                    0.0f, 0.0f, 0.0f, 1.0f, 0.0f
            }),
            new Preset("Another Invert", new float[]{
                    -1.0f, 0.0f, 0.0f, 1.0f, 0.0f,
                    0.0f, -1.0f, 0.0f, 1.0f, 0.0f,
                    0.0f, 0.0f, -1.0f, 1.0f, 0.0f,
                    1.0f, 1.0f, 1.0f, 1.0f, 0.0f
            }),
            new Preset("Weird-scale", new float[]{
                    0.5f, 0.5f, 0.5f, 0, 1,
                    0.5f, 0.5f, 0.5f, 0, 1,
                    0.5f, 0.5f, 0.5f, 0, 1,
                    0, 0, 0, 1, 0
            })
    };

Run junit5 ui tests on API <26

@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
package net.twisterrob.colorfilters.android.test.ui
import android.util.Log
import org.junit.runner.Runner
import de.mannodermaus.junit5.internal.extensions.jupiterTestMethods
/**
 * @see de.mannodermaus.junit5.AndroidJUnit5Builder
 */
class MyBuilder : org.junit.runners.model.RunnerBuilder() {
	override fun runnerForClass(testClass: Class<*>): Runner? {
...
		return de.mannodermaus.junit5.internal.runners.AndroidJUnit5(testClass)

then error

org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:160)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverSafely(EngineDiscoveryOrchestrator.java:132)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:107)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:78)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:110)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:78)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.discover(DefaultLauncherSession.java:81)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.discover(SessionPerRequestLauncher.java:46)
at de.mannodermaus.junit5.internal.runners.AndroidJUnit5.generateTestTree(AndroidJUnit5.kt:71)
at de.mannodermaus.junit5.internal.runners.AndroidJUnit5.<init>(AndroidJUnit5.kt:33)
at de.mannodermaus.junit5.internal.runners.AndroidJUnit5.<init>(AndroidJUnit5.kt:27)
at net.twisterrob.colorfilters.android.test.ui.MyBuilder.runnerForClass(MyBuilder.kt:50)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
at androidx.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:143)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
at androidx.test.internal.runner.DirectTestLoader.doCreateRunner(DirectTestLoader.java:45)
at androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:64)
at androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:835)
at androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:650)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:418)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1879)
Caused by: org.junit.platform.commons.JUnitException: ClassSelector [className = 'net.twisterrob.colorfilters.android.MainActivityTest'] resolution failed
at org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener.selectorProcessed(AbortOnFailureLauncherDiscoveryListener.java:39)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:103)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution.java:83)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:113)
at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:46)
at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:152)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverSafely(EngineDiscoveryOrchestrator.java:132) 
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:107) 
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:78) 
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:110) 
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:78) 
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.discover(DefaultLauncherSession.java:81) 
at org.junit.platform.launcher.core.SessionPerRequestLauncher.discover(SessionPerRequestLauncher.java:46) 
at de.mannodermaus.junit5.internal.runners.AndroidJUnit5.generateTestTree(AndroidJUnit5.kt:71) 
at de.mannodermaus.junit5.internal.runners.AndroidJUnit5.<init>(AndroidJUnit5.kt:33) 
at de.mannodermaus.junit5.internal.runners.AndroidJUnit5.<init>(AndroidJUnit5.kt:27) 
at net.twisterrob.colorfilters.android.test.ui.MyBuilder.runnerForClass(MyBuilder.kt:50) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 
at androidx.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:143) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 
at androidx.test.internal.runner.DirectTestLoader.doCreateRunner(DirectTestLoader.java:45) 
at androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:64) 
at androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:835) 
at androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:650) 
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:418) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1879) 
Caused by: java.lang.NoSuchMethodError: No virtual method isDefault()Z in class Ljava/lang/reflect/Method; or its super classes (declaration of 'java.lang.reflect.Method' appears in /system/framework/core-libart.jar)
at org.junit.platform.commons.util.ReflectionUtils$$ExternalSyntheticLambda43.test(D8$$SyntheticClass)
at j$.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at j$.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at j$.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at j$.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at j$.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at j$.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at j$.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
import com.android.build.api.instrumentation.AsmClassVisitorFactory
import com.android.build.api.instrumentation.ClassContext
import com.android.build.api.instrumentation.ClassData
import com.android.build.api.instrumentation.FramesComputationMode
import com.android.build.api.instrumentation.InstrumentationParameters.None
import com.android.build.api.instrumentation.InstrumentationScope
import net.twisterrob.gradle.android.androidComponents
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.MethodVisitor
import org.objectweb.asm.Opcodes

abstract class MethodIsDefaultVisitorFactory : AsmClassVisitorFactory<None> {
	override fun isInstrumentable(classData: ClassData): Boolean =
		classData.className == "org/junit/platform/commons/util/ReflectionUtils"

	override fun createClassVisitor(
		classContext: ClassContext,
		nextClassVisitor: ClassVisitor,
	): ClassVisitor =
		object : ClassVisitor(instrumentationContext.apiVersion.get(), nextClassVisitor) {
			override fun visitMethod(
				access: Int,
				name: String?,
				descriptor: String?,
				signature: String?,
				exceptions: Array<out String>?,
			): MethodVisitor =
				if (name == "getDefaultMethods" && descriptor == "(Ljava/lang/Class;)Ljava/util/List;") {
					object : MethodVisitor(api, super.visitMethod(access, name, descriptor, signature, exceptions)) {
						override fun visitMethodInsn(
							opcode: Int,
							owner: String?,
							name: String?,
							descriptor: String?,
							isInterface: Boolean,
						) {
							// m.isDefault() is not supported < API 26, stub it out.
							// INVOKEVIRTUAL java/lang/reflect/Method.isDefault ()Z
							if (opcode == Opcodes.INVOKEVIRTUAL
								&& owner == "java/lang/reflect/Method"
								&& name == "isDefault"
								&& descriptor == "()Z"
							) {
								super.visitInsn(Opcodes.POP) // Pop the Method object.
								super.visitInsn(Opcodes.ICONST_0) // Push false.
								return
							}
							super.visitMethodInsn(opcode, owner, name, descriptor, isInterface)
						}
					}
				} else {
					super.visitMethod(access, name, descriptor, signature, exceptions)
				}
		}
}

androidComponents.onVariants { variant ->
	variant.instrumentation.apply {
		transformClassesWith(MethodIsDefaultVisitorFactory::class.java, InstrumentationScope.ALL) { }
		setAsmFramesComputationMode(FramesComputationMode.COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS)
	}
}

next goal:

class x {
	private static List<Method> getDefaultMethods1(Class<?> clazz) {
		List<Method> visibleDefaultMethods = Arrays
				.stream(clazz.getMethods())
				.filter(Method::isDefault)
				.collect(toCollection(ArrayList::new));
		return visibleDefaultMethods;
	}
   private static List<Method> getDefaultMethods2(Class<?> clazz) {
      List<Method> visibleDefaultMethods = Arrays
              .stream(clazz.getMethods())
              .collect(toCollection(ArrayList::new));
      return visibleDefaultMethods;
   }
}

Add named matrices

Enable desugaring if needed

Disabled for now, because it's only needed for lower API levels.
And Android-JUnit5 has a 26 lower bound.

desugar = "2.0.3"
android-desugar = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar" }
//<editor-fold desc="Desugaring">
// Desugaring setup so that we can use Java 8/11 features on lower APIs.
// e.g. to support Mockito 5.x on API 23 and lower.
plugins.withId("com.android.base") {
	android {
		compileOptions {
			isCoreLibraryDesugaringEnabled = true
		}
		dependencies {
			add("coreLibraryDesugaring", libs.android.desugar)
		}
		(this@android as? AppExtension)?.apply {
			defaultConfig.multiDexEnabled = true
		}
	}
}
//</editor-fold>

Report lint:MissingRegistered issues

<!-- REPORT MissingRegistered lint only shows one result with checkDependencies = true
     to repro remove ignore from `<ColorPickerView />` and run :app:lint. -->
<!-- REPORT MissingRegistered doesn't find classes for library modules, even though checkDependencies = true -->

55789ed

SwatchChooser.onTouch NullPointerException

Exception java.lang.NullPointerException:
  at net.twisterrob.android.view.color.SwatchChooser.onTouch (SwatchChooser.kt:153)
  at net.twisterrob.android.view.color.ColorPickerView$Touchy.onTouch (ColorPickerView.kt:163)
  at android.view.View.dispatchTouchEvent (View.java:15046)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3121)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2745)
  at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:500)
  at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1912)
  at android.app.Activity.dispatchTouchEvent (Activity.java:4299)
  at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:69)
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:458)
  at android.view.View.dispatchPointerEvent (View.java:15309)
  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:6778)
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:6578)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6034)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6091)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6057)
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:6222)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6065)
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:6279)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6038)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6091)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6057)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6065)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6038)
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:9206)
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:9157)
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:9126)
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:9329)
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:267)
  at android.os.MessageQueue.nativePollOnce
  at android.os.MessageQueue.next (MessageQueue.java:335)
  at android.os.Looper.loopOnce (Looper.java:161)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7918)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

image
image
image
image

Drag and drop text crashes the app

Repro:

  1. Change to Matrix
  2. Select some text
  3. Drag and drop text to another matrix cell
java.lang.NullPointerException: 
  at android.widget.Editor.onDrop (Editor.java:2646)
  at android.widget.TextView.onDragEvent (TextView.java:13384)
  at android.view.View.callDragEventHandler (View.java:24395)
  at android.view.View.dispatchDragEvent (View.java:24383)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewGroup.dispatchDragEvent (ViewGroup.java:1689)
  at android.view.ViewRootImpl.handleDragEvent (ViewRootImpl.java:6868)
  at android.view.ViewRootImpl.-wrap12 (Unknown Source)
  at android.view.ViewRootImpl$ViewRootHandler.handleMessage (ViewRootImpl.java:4613)
  at android.os.Handler.dispatchMessage (Handler.java:105)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6938)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

Publish source code

  • Create issue in target repo (#16)
  • Link it here (TWiStErRob/TWiStErRob-env#8)
  • Clean up local copy
  • Use svn2git
  • Optional: Build CI
  • Delete from SVN (Last SVN commit: 55789ed, removed in r3334)
  • Replace p:\projects\workspace\x (.svn) with p:\project\workspace\repo.name.x (.git)
  • recreate/tag existing releases on GH (#28)

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/ci-build.yml
  • actions/setup-java v4
  • actions/checkout v4
  • actions/github-script v7
  • actions/upload-artifact v4
  • actions/upload-artifact v4
  • actions/upload-artifact v4
  • EnricoMi/publish-unit-test-result-action v2
  • actions/upload-artifact v4
  • actions/upload-artifact v4
  • github/codeql-action v3
.github/workflows/ci-instrumentation.yml
  • TWiStErRob/github-workflows v3@943fa2f540b5a8cc631ac443c265a3aa59ebcb7c
.github/workflows/ci.yml
  • TWiStErRob/github-workflows v3@943fa2f540b5a8cc631ac443c265a3aa59ebcb7c
gradle
gradle.properties
settings.gradle.kts
  • com.gradle.develocity 3.17.2
build.gradle.kts
app/build.gradle
component/core/build.gradle
component/test-base-ui/build.gradle
component/test-base-unit/build.gradle
feature/about/build.gradle
feature/about/test-fixtures/build.gradle
feature/base/build.gradle
feature/image/build.gradle
feature/keyboard/build.gradle
feature/keyboard/contract/build.gradle
feature/lighting/build.gradle
feature/lighting/test-fixtures/build.gradle
feature/matrix/build.gradle
feature/matrix/test-fixtures/build.gradle
feature/palette/build.gradle
feature/palette/test-fixtures/build.gradle
feature/porterduff/build.gradle
feature/porterduff/test-fixtures/build.gradle
feature/resfont/build.gradle
feature/resfont/test-fixtures/build.gradle
gradle/libs.versions.toml
  • org.jetbrains.kotlin:kotlin-bom 1.9.23
  • org.jetbrains.kotlin:kotlin-gradle-plugin 1.9.23
  • org.jetbrains.kotlin:kotlin-stdlib-jdk8 1.9.23
  • io.gitlab.arturbosch.detekt:detekt-gradle-plugin 1.23.6
  • com.android.tools.build:gradle 8.3.2
  • net.twisterrob.gradle:twister-quality 0.16
  • net.twisterrob.gradle:twister-convention-plugins 0.16
  • com.github.bumptech.glide:glide 4.16.0
  • androidx.annotation:annotation 1.7.1
  • androidx.core:core-ktx 1.12.0
  • androidx.appcompat:appcompat 1.6.1
  • androidx.fragment:fragment-ktx 1.6.2
  • androidx.fragment:fragment-testing 1.6.2
  • androidx.drawerlayout:drawerlayout 1.2.0
  • androidx.preference:preference-ktx 1.2.1
  • androidx.palette:palette 1.0.0
  • androidx.palette:palette-ktx 1.0.0
  • androidx.multidex:multidex 2.0.1
  • androidx.multidex:multidex-instrumentation 2.0.0
  • androidx.test:rules 1.5.0
  • androidx.test:runner 1.5.2
  • androidx.test.espresso:espresso-core 3.5.1
  • junit:junit 4.13.2
  • org.junit:junit-bom 5.10.2
  • org.junit.jupiter:junit-jupiter-engine 5.10.2
  • org.junit.jupiter:junit-jupiter-api 5.10.2
  • org.junit.platform:junit-platform-launcher 1.10.2
  • de.mannodermaus.junit5:android-test-core 1.4.0
  • de.mannodermaus.junit5:android-test-runner 1.4.0
  • org.mockito:mockito-core 5.11.0
  • org.mockito:mockito-android 5.11.0
  • org.mockito.kotlin:mockito-kotlin 5.3.1
  • org.hamcrest:hamcrest 2.2
  • org.openjdk.jmh:jmh-core 1.37
  • org.openjdk.jmh:jmh-generator-annprocess 1.37
gradle/plugins/gradle.properties
gradle/plugins/settings.gradle.kts
gradle/plugins/build.gradle.kts
gradle/plugins/src/main/kotlin/net.twisterrob.colorfilters.app.gradle.kts
gradle/plugins/src/main/kotlin/net.twisterrob.colorfilters.component.gradle.kts
gradle/plugins/src/main/kotlin/net.twisterrob.colorfilters.feature.gradle.kts
gradle/plugins/src/main/kotlin/net.twisterrob.colorfilters.test-fixtures.gradle.kts
gradle/plugins/src/main/kotlin/net/twisterrob/colorfilters/build/android.androidTest.gradle.kts
gradle/plugins/src/main/kotlin/net/twisterrob/colorfilters/build/android.base.gradle.kts
gradle/plugins/src/main/kotlin/net/twisterrob/colorfilters/build/android.dex-limit.gradle.kts
gradle/plugins/src/main/kotlin/net/twisterrob/colorfilters/build/android.unitTest.gradle.kts
gradle/plugins/src/main/kotlin/net/twisterrob/colorfilters/build/detekt.gradle.kts
gradle/plugins/src/main/kotlin/net/twisterrob/colorfilters/build/kotlin.gradle.kts
gradle-wrapper
gradle/plugins/gradle/wrapper/gradle-wrapper.properties
  • gradle 8.7
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.7

  • Check this box to trigger a request for Renovate to run again on this repository

IllegalStateException for unknown reason

Feb 12, 12:17 PM on app version 20002722
Samsung Galaxy J2 Prime (grandpplte), Android 6.0

Caused by: java.lang.IllegalStateException: 
  at net.twisterrob.colorfilters.android.image.ImageFragment.getCurrent (ImageFragment.java:251)
  at net.twisterrob.colorfilters.android.MainActivity.getCurrentBitmap (MainActivity.java:48)
  at net.twisterrob.colorfilters.android.ColorFilterFragment.getCurrentBitmap (ColorFilterFragment.java:38)
  at net.twisterrob.colorfilters.android.palette.PaletteFragment.imageChanged (PaletteFragment.java:85)
  at net.twisterrob.colorfilters.android.MainActivity.imageChanged (MainActivity.java:256)
  at net.twisterrob.colorfilters.android.MainActivity.fragmentOnResume (MainActivity.java:278)
  at net.twisterrob.colorfilters.android.ColorFilterFragment.onResume (ColorFilterFragment.java:55)

Error in ImageFragment

Samsung Galaxy A10e Android 11 (SDK 30) 20002722.apk

java.lang.IllegalStateException: 
  at net.twisterrob.colorfilters.android.image.ImageFragment.getCurrent (ImageFragment.java:251)
  at net.twisterrob.colorfilters.android.MainActivity.getCurrentBitmap (MainActivity.java:48)
  at net.twisterrob.colorfilters.android.ColorFilterFragment.getCurrentBitmap (ColorFilterFragment.java:38)
  at net.twisterrob.colorfilters.android.palette.PaletteFragment.imageChanged (PaletteFragment.java:85)
  at net.twisterrob.colorfilters.android.MainActivity.imageChanged (MainActivity.java:256)
  at net.twisterrob.colorfilters.android.MainActivity.fragmentOnResume (MainActivity.java:278)
  at net.twisterrob.colorfilters.android.ColorFilterFragment.onResume (ColorFilterFragment.java:55)
  at android.support.v4.app.Fragment.performResume (Fragment.java:2498)
  at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1501)
  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManagerImpl.java:1784)
  at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1852)
  at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:802)
  at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManagerImpl.java:2625)
  at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManagerImpl.java:2411)
  at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManagerImpl.java:2366)
  at android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManagerImpl.java:2273)
  at android.support.v4.app.FragmentManagerImpl$1.run (FragmentManagerImpl.java:733)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8587)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)

Huawei honor 6C Pro Android 7.0 (SDK 24) 20002722.apk

java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3744)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3784)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1685)
  at android.os.Handler.dispatchMessage (Handler.java:113)
  at android.os.Looper.loop (Looper.java:205)
  at android.app.ActivityThread.main (ActivityThread.java:6783)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1225)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1086)
Caused by: java.lang.IllegalStateException: 
  at net.twisterrob.colorfilters.android.image.ImageFragment.getCurrent (ImageFragment.java:251)
  at net.twisterrob.colorfilters.android.MainActivity.getCurrentBitmap (MainActivity.java:48)
  at net.twisterrob.colorfilters.android.ColorFilterFragment.getCurrentBitmap (ColorFilterFragment.java:38)
  at net.twisterrob.colorfilters.android.palette.PaletteFragment.imageChanged (PaletteFragment.java:85)
  at net.twisterrob.colorfilters.android.MainActivity.imageChanged (MainActivity.java:256)
  at net.twisterrob.colorfilters.android.MainActivity.fragmentOnResume (MainActivity.java:278)
  at net.twisterrob.colorfilters.android.ColorFilterFragment.onResume (ColorFilterFragment.java:55)
  at android.support.v4.app.Fragment.performResume (Fragment.java:2498)
  at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1501)
  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManagerImpl.java:1784)
  at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1852)
  at android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManagerImpl.java:3269)
  at android.support.v4.app.FragmentManagerImpl.dispatchResume (FragmentManagerImpl.java:3241)
  at android.support.v4.app.FragmentController.dispatchResume (FragmentController.java:223)
  at android.support.v4.app.FragmentActivity.onResumeFragments (FragmentActivity.java:538)
  at android.support.v4.app.FragmentActivity.onPostResume (FragmentActivity.java:527)
  at android.support.v7.app.AppCompatActivity.onPostResume (AppCompatActivity.java:172)
  at android.app.Activity.performResume (Activity.java:7045)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3712)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3784)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1685)
  at android.os.Handler.dispatchMessage (Handler.java:113)
  at android.os.Looper.loop (Looper.java:205)
  at android.app.ActivityThread.main (ActivityThread.java:6783)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1225)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1086)

Build warning

Configure project :app
Warning: 'kapt.use.worker.api' is deprecated and scheduled to be removed in Kotlin 1.8 release.

By default Kapt plugin is using Gradle workers to run annotation processing. Running annotation processing
directly in the Kotlin compiler is deprecated.

NPE in MainActivity

Crash in 11001636 on Android 8.1

java.lang.NullPointerException: 
  at net.twisterrob.colorfilters.android.MainActivity.renderCurrentView (MainActivity.java:231)
  at net.twisterrob.colorfilters.android.ColorFilterFragment.onOptionsItemSelected (ColorFilterFragment.java:72)
  at android.support.v4.app.FragmentManagerImpl.dispatchOptionsItemSelected (FragmentManagerImpl.java:2046)
  at android.support.v4.app.FragmentActivity.onMenuItemSelected (FragmentActivity.java:359)
  at android.support.v7.app.AppCompatActivity.onMenuItemSelected (AppCompatActivity.java:144)
  at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected (WindowCallbackWrapper.java:99)
  at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected (AppCompatDelegateImplV7.java:538)
  at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected (MenuBuilder.java:802)
  at android.support.v7.internal.view.menu.MenuItemImpl.invoke (MenuItemImpl.java:153)
  at android.support.v7.internal.view.menu.MenuBuilder.performItemAction (MenuBuilder.java:949)
  at android.support.v7.widget.ActionMenuView.invokeItem (ActionMenuView.java:598)
  at android.support.v7.internal.view.menu.ActionMenuItemView.onClick (ActionMenuItemView.java:139)
  at android.view.View.performClick (View.java:6367)
  at android.view.View$PerformClick.run (View.java:25032)
  at android.os.Handler.handleCallback (Handler.java:790)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6753)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:482)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:807)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.