/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package nl.jeroen_nieuwenhuis.faceosccomputercontrol.model; import nl.jeroen_nieuwenhuis.faceosccomputercontrol.KeyPresser.KeyPresser; import nl.jeroen_nieuwenhuis.faceosccomputercontrol.MainApp; /** * * @author Jeroen */ public class Face { private MainApp app; private KeyPresser presser; public Face(MainApp app, KeyPresser presser) { this.app = app; this.presser = presser; } private float leftEyebrowHeight = -1f; private float rightEyebrowHeight = -1f; private float mouthHeight = -1f; public float leftEyebrowUpTrigger = -1f; public float leftEyebrowDownTrigger = -1f; public float rightEyebrowUpTrigger = -1f; public float rightEyebrowDownTrigger = -1f; public float mouthOpenTrigger = -1f; public float mouthClosedTrigger = -1f; public boolean leftEyebrowUpTriggered = false; public boolean leftEyebrowDownTriggered = false; public boolean rightEyebrowUpTriggered = false; public boolean rightEyebrowDownTriggered = false; public boolean mouthOpenTriggered = false; public boolean mouthClosedTriggered = false; private boolean enabled = false; public boolean enable() { if (isReady()) { this.enabled = true; } return this.enabled; } public void disable() { this.enabled = false; } public boolean isEnabled() { return enabled; } public boolean isReady() { return leftEyebrowHeight != -1f && rightEyebrowHeight != -1f && mouthHeight != -1f && leftEyebrowUpTrigger != -1f && leftEyebrowDownTrigger != -1f && rightEyebrowUpTrigger != -1f && rightEyebrowDownTrigger != -1f && mouthOpenTrigger != -1f && mouthClosedTrigger != -1f; } public Trigger updateLeftEyebrowHeight(float value) { this.leftEyebrowHeight = value; app.updateLeftEyebrowCurrent(value); if (enabled) { if (leftEyebrowHeight > leftEyebrowUpTrigger && !leftEyebrowUpTriggered) { leftEyebrowUpTriggered = true; return Trigger.LEFT_EYEBROW_UP; } else if (leftEyebrowHeight < leftEyebrowDownTrigger && ! leftEyebrowDownTriggered) { leftEyebrowDownTriggered = true; return Trigger.LEFT_EYEBROW_DOWN; } else if (leftEyebrowHeight > leftEyebrowDownTrigger && leftEyebrowHeight < leftEyebrowUpTrigger){ if (leftEyebrowUpTriggered){ leftEyebrowUpTriggered = false; return Trigger.LEFT_EYEBROW_UP_RELEASED; } else if (leftEyebrowDownTriggered){ leftEyebrowDownTriggered = false; return Trigger.LEFT_EYEBROW_DOWN_RELEASED; } } } return Trigger.NONE; } public Trigger updateRightEyebrowHeight(float value) { app.updateRightEyebrowCurrent(value); this.rightEyebrowHeight = value; if (enabled) { if (rightEyebrowHeight > rightEyebrowUpTrigger && !rightEyebrowUpTriggered) { rightEyebrowUpTriggered = true; return Trigger.RIGHT_EYEBROW_UP; } else if (rightEyebrowHeight < rightEyebrowDownTrigger && ! rightEyebrowDownTriggered) { rightEyebrowDownTriggered = true; return Trigger.RIGHT_EYEBROW_DOWN; } else if (rightEyebrowHeight > rightEyebrowDownTrigger && rightEyebrowHeight < rightEyebrowUpTrigger){ if (rightEyebrowUpTriggered){ rightEyebrowUpTriggered = false; return Trigger.RIGHT_EYEBROW_UP_RELEASED; } else if (rightEyebrowDownTriggered){ rightEyebrowDownTriggered = false; return Trigger.RIGHT_EYEBROW_DOWN_RELEASED; } } } return Trigger.NONE; } public Trigger updateMouthHeight(float value) { app.updateMouthHeightCurrent(value); this.mouthHeight = value; if (enabled) { if (mouthHeight > mouthOpenTrigger && !mouthOpenTriggered) { mouthOpenTriggered = true; mouthClosedTriggered = false; return Trigger.MOUTH_OPEN; } else if (mouthHeight < mouthClosedTrigger && !mouthClosedTriggered) { mouthClosedTriggered = true; mouthOpenTriggered = false; return Trigger.MOUTH_CLOSED; } } return Trigger.NONE; } }