package zenproject.meditation.android.sketch.painting;
import android.view.MotionEvent;
import com.juankysoriano.rainbow.core.drawing.RainbowDrawer;
import com.juankysoriano.rainbow.core.event.RainbowInputController;
import zenproject.meditation.android.sketch.ZenSketch;
import zenproject.meditation.android.sketch.actions.StepPerformer;
public class SketchInteractionListener implements RainbowInputController.RainbowInteractionListener {
private ZenSketch.PaintListener paintListener;
private final StepPerformer inkPerformer;
protected SketchInteractionListener(StepPerformer inkPerformer) {
this.inkPerformer = inkPerformer;
}
public static SketchInteractionListener newInstance(StepPerformer inkPerformer) {
return new SketchInteractionListener(inkPerformer);
}
@Override
public void onSketchTouched(MotionEvent event, RainbowDrawer rainbowDrawer) {
if (hasPaintListener()) {
paintListener.onPaintingStart();
}
inkPerformer.reset();
}
@Override
public void onSketchReleased(MotionEvent event, RainbowDrawer rainbowDrawer) {
if (hasPaintListener()) {
paintListener.onPaintingEnd();
}
}
@Override
public void onFingerDragged(MotionEvent event, RainbowDrawer rainbowDrawer) {
inkPerformer.doStep();
}
@Override
public void onMotionEvent(MotionEvent event, RainbowDrawer rainbowDrawer) {
//no-op
}
public void setPaintListener(ZenSketch.PaintListener paintListener) {
this.paintListener = paintListener;
}
private boolean hasPaintListener() {
return paintListener != null;
}
}