PixelDroid-App-Android/mediaEditor/src/main/java/org/pixeldroid/media_editor/photoEdit/EditImageFragment.kt

89 lines
3.0 KiB
Kotlin

package org.pixeldroid.media_editor.photoEdit
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.SeekBar
import org.pixeldroid.media_editor.databinding.FragmentEditImageBinding
class EditImageFragment : Fragment(), SeekBar.OnSeekBarChangeListener {
private var listener: PhotoEditActivity? = null
private lateinit var binding: FragmentEditImageBinding
private var BRIGHTNESS_MAX = 200
private var SATURATION_MAX = 20
private var CONTRAST_MAX= 30
private var BRIGHTNESS_START = BRIGHTNESS_MAX/2
private var SATURATION_START = SATURATION_MAX/2
private var CONTRAST_START = CONTRAST_MAX/2
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
binding = FragmentEditImageBinding.inflate(inflater, container, false)
binding.seekbarBrightness.max = BRIGHTNESS_MAX
binding.seekbarBrightness.progress = BRIGHTNESS_START
binding.seekbarContrast.max = CONTRAST_MAX
binding.seekbarContrast.progress = CONTRAST_START
binding.seekbarSaturation.max = SATURATION_MAX
binding.seekbarSaturation.progress = SATURATION_START
setOnSeekBarChangeListeners(this)
return binding.root
}
private fun setOnSeekBarChangeListeners(listener: EditImageFragment?){
binding.seekbarBrightness.setOnSeekBarChangeListener(listener)
binding.seekbarContrast.setOnSeekBarChangeListener(listener)
binding.seekbarSaturation.setOnSeekBarChangeListener(listener)
}
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
var prog = progress
listener?.let {
when(seekBar) {
binding.seekbarBrightness -> it.onBrightnessChange(progress - 100)
binding.seekbarSaturation -> {
prog += 10
it.onSaturationChange(.10f * prog)
}
binding.seekbarContrast -> {
it.onContrastChange(.10f * prog)
}
}
}
}
fun resetControl() {
// Make sure to ignore seekbar change events, since we don't want to have the reset cause
// filter applications due to the onProgressChanged calls
setOnSeekBarChangeListeners(null)
binding.seekbarBrightness.progress = BRIGHTNESS_START
binding.seekbarContrast.progress = CONTRAST_START
binding.seekbarSaturation.progress = SATURATION_START
setOnSeekBarChangeListeners(this)
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
listener?.onEditStarted()
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
listener?.onEditCompleted()
}
fun setListener(listener: PhotoEditActivity) {
this.listener = listener
}
}