|
@@ -34,17 +34,16 @@ import androidx.core.transition.doOnEnd
|
|
|
import androidx.core.view.WindowCompat
|
|
|
import androidx.core.view.WindowInsetsCompat
|
|
|
import androidx.core.view.WindowInsetsControllerCompat
|
|
|
-import androidx.core.view.isVisible
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
|
|
import com.google.android.material.elevation.SurfaceColors
|
|
|
import com.google.android.material.transition.platform.MaterialContainerTransform
|
|
|
import dev.chrisbanes.insetter.applyInsetter
|
|
|
import eu.kanade.domain.base.BasePreferences
|
|
|
-import eu.kanade.presentation.reader.BrightnessOverlay
|
|
|
import eu.kanade.presentation.reader.DisplayRefreshHost
|
|
|
import eu.kanade.presentation.reader.OrientationSelectDialog
|
|
|
import eu.kanade.presentation.reader.PageIndicatorText
|
|
|
+import eu.kanade.presentation.reader.ReaderContentOverlay
|
|
|
import eu.kanade.presentation.reader.ReaderPageActionsDialog
|
|
|
import eu.kanade.presentation.reader.ReadingModeSelectDialog
|
|
|
import eu.kanade.presentation.reader.appbars.ReaderAppBars
|
|
@@ -331,11 +330,24 @@ class ReaderActivity : BaseActivity() {
|
|
|
val isFullscreen by readerPreferences.fullscreen().collectAsState()
|
|
|
val flashOnPageChange by readerPreferences.flashOnPageChange().collectAsState()
|
|
|
|
|
|
+ val colorOverlayEnabled by readerPreferences.colorFilter().collectAsState()
|
|
|
+ val colorOverlay by readerPreferences.colorFilterValue().collectAsState()
|
|
|
+ val colorOverlayMode by readerPreferences.colorFilterMode().collectAsState()
|
|
|
+ val colorOverlayBlendMode = remember(colorOverlayMode) {
|
|
|
+ ReaderPreferences.ColorFilterMode.getOrNull(colorOverlayMode)?.second
|
|
|
+ }
|
|
|
+
|
|
|
val cropBorderPaged by readerPreferences.cropBorders().collectAsState()
|
|
|
val cropBorderWebtoon by readerPreferences.cropBordersWebtoon().collectAsState()
|
|
|
val isPagerType = ReadingMode.isPagerType(viewModel.getMangaReadingMode())
|
|
|
val cropEnabled = if (isPagerType) cropBorderPaged else cropBorderWebtoon
|
|
|
|
|
|
+ ReaderContentOverlay(
|
|
|
+ brightness = state.brightnessOverlayValue,
|
|
|
+ color = colorOverlay.takeIf { colorOverlayEnabled },
|
|
|
+ colorBlendMode = colorOverlayBlendMode,
|
|
|
+ )
|
|
|
+
|
|
|
ReaderAppBars(
|
|
|
visible = state.menuVisible,
|
|
|
fullscreen = isFullscreen,
|
|
@@ -378,10 +390,6 @@ class ReaderActivity : BaseActivity() {
|
|
|
onClickSettings = viewModel::openSettingsDialog,
|
|
|
)
|
|
|
|
|
|
- BrightnessOverlay(
|
|
|
- value = state.brightnessOverlayValue,
|
|
|
- )
|
|
|
-
|
|
|
if (flashOnPageChange) {
|
|
|
DisplayRefreshHost(
|
|
|
hostState = displayRefreshHost,
|
|
@@ -805,14 +813,6 @@ class ReaderActivity : BaseActivity() {
|
|
|
.onEach(::setCustomBrightness)
|
|
|
.launchIn(lifecycleScope)
|
|
|
|
|
|
- readerPreferences.colorFilter().changes()
|
|
|
- .onEach(::setColorFilter)
|
|
|
- .launchIn(lifecycleScope)
|
|
|
-
|
|
|
- readerPreferences.colorFilterMode().changes()
|
|
|
- .onEach { setColorFilter(readerPreferences.colorFilter().get()) }
|
|
|
- .launchIn(lifecycleScope)
|
|
|
-
|
|
|
merge(readerPreferences.grayscale().changes(), readerPreferences.invertedColors().changes())
|
|
|
.onEach { setLayerPaint(readerPreferences.grayscale().get(), readerPreferences.invertedColors().get()) }
|
|
|
.launchIn(lifecycleScope)
|
|
@@ -884,20 +884,6 @@ class ReaderActivity : BaseActivity() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Sets the color filter overlay according to [enabled].
|
|
|
- */
|
|
|
- private fun setColorFilter(enabled: Boolean) {
|
|
|
- if (enabled) {
|
|
|
- readerPreferences.colorFilterValue().changes()
|
|
|
- .sample(100)
|
|
|
- .onEach(::setColorFilterValue)
|
|
|
- .launchIn(lifecycleScope)
|
|
|
- } else {
|
|
|
- binding.colorOverlay.isVisible = false
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* Sets the brightness of the screen. Range is [-75, 100].
|
|
|
* From -75 to -1 a semi-transparent black view is overlaid with the minimum brightness.
|
|
@@ -919,15 +905,6 @@ class ReaderActivity : BaseActivity() {
|
|
|
|
|
|
viewModel.setBrightnessOverlayValue(value)
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the color filter [value].
|
|
|
- */
|
|
|
- private fun setColorFilterValue(value: Int) {
|
|
|
- binding.colorOverlay.isVisible = true
|
|
|
- binding.colorOverlay.setFilterColor(value, readerPreferences.colorFilterMode().get())
|
|
|
- }
|
|
|
-
|
|
|
private fun setLayerPaint(grayscale: Boolean, invertedColors: Boolean) {
|
|
|
val paint = if (grayscale || invertedColors) getCombinedPaint(grayscale, invertedColors) else null
|
|
|
binding.viewerContainer.setLayerType(LAYER_TYPE_HARDWARE, paint)
|