Untitled
unknown
plain_text
a year ago
3.6 kB
6
Indexable
package ja.burhanrashid52.photoeditor
import android.content.Context
import android.media.Image
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import com.caps.photoeditor.R
import ja.burhanrashid52.photoeditor.MultiTouchListener.OnGestureControl
import java.util.UUID
/**
* Created by Burhanuddin Rashid on 14/05/21.
*
* @author <https:></https:>//github.com/burhanrashid52>
*/
internal abstract class Graphic(
val context: Context,
val layoutId: Int,
val viewType: ViewType,
val graphicManager: GraphicManager?,
val uniqueId: String) {
val rootView: View
open fun updateView(view: View) {
//Optional for subclass to override
}
init {
if (layoutId == 0) {
throw UnsupportedOperationException("Layout id cannot be zero. Please define a layout")
}
rootView = LayoutInflater.from(context).inflate(layoutId, null)
setupView(rootView)
setupRemoveView(rootView)
setupZoomInView(rootView)
setupZoomOutView(rootView)
}
private fun setupRemoveView(rootView: View) {
//We are setting tag as ViewType to identify what type of the view it is
//when we remove the view from stack i.e onRemoveViewListener(ViewType viewType, int numberOfAddedViews);
rootView.tag = Pair(uniqueId, viewType)
val imgClose = rootView.findViewById<ImageView>(R.id.imgPhotoEditorClose)
imgClose?.setOnClickListener { graphicManager?.removeView(this@Graphic) }
}
private fun setupZoomInView(rootView: View) {
rootView.tag = Pair(uniqueId, viewType)
val imgZoomIn = rootView.findViewById<ImageView>(R.id.imgPhotoEditorZoomIn)
imgZoomIn?.setOnClickListener {
graphicManager?.zoomInView(this@Graphic)}
}
private fun setupZoomOutView(rootView: View) {
rootView.tag = Pair(uniqueId, viewType)
val imgZoomOut = rootView.findViewById<ImageView>(R.id.imgPhotoEditorZoomOut)
imgZoomOut?.setOnClickListener {
graphicManager?.zoomOutView(this@Graphic)
}
}
protected fun toggleSelection() {
val frmBorder = rootView.findViewById<View>(R.id.frmBorder)
val imgClose = rootView.findViewById<View>(R.id.imgPhotoEditorClose)
val imgZoomIn = rootView.findViewById<View>(R.id.imgPhotoEditorZoomIn)
val imgZoomOut = rootView.findViewById<View>(R.id.imgPhotoEditorZoomOut)
if (frmBorder != null) {
frmBorder.setBackgroundResource(R.drawable.rounded_border_tv)
frmBorder.tag = true
}
if (imgClose != null) {
imgClose.visibility = View.VISIBLE
}
if (imgZoomIn != null) {
imgZoomIn.visibility = View.VISIBLE
}
if (imgZoomOut != null) {
imgZoomOut.visibility = View.VISIBLE
}
}
protected fun buildGestureController(
photoEditorView: PhotoEditorView,
viewState: PhotoEditorViewState
): OnGestureControl {
val boxHelper = BoxHelper(photoEditorView, viewState)
return object : OnGestureControl {
override fun onClick() {
boxHelper.clearHelperBox()
toggleSelection()
// Change the in-focus view
viewState.currentSelectedView = rootView
}
override fun onLongClick() {
updateView(rootView)
}
}
}
open fun setupView(rootView: View) {}
}Editor is loading...
Leave a Comment