X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=include%2Fmouse_cursor_tracker.h;h=ca667a9fef04e57c47c084bab8d5d9260c0e6619;hb=6de300a6af39c7781918f90574995a9a10f2ca7d;hp=a53713f517e202d9f254ba469f3764b6f86b4ef1;hpb=126d8fa4d0ea5d05ed56d2b318e747426317808d;p=mouse-tracker-for-cubism.git diff --git a/include/mouse_cursor_tracker.h b/include/mouse_cursor_tracker.h index a53713f..ca667a9 100644 --- a/include/mouse_cursor_tracker.h +++ b/include/mouse_cursor_tracker.h @@ -26,8 +26,18 @@ SOFTWARE. ****/ #include -#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + extern "C" { #include @@ -37,28 +47,38 @@ extern "C" class MouseCursorTracker { public: - MouseCursorTracker(std::string cfgPath); + MouseCursorTracker(std::string cfgPath, + std::vector > motions = {}, + std::vector expressions = {}); ~MouseCursorTracker(); + enum class MotionPriority + { + // See LAppDefine.cpp in Demo + none, + idle, + normal, + force + }; + struct Params { - double leftEyeOpenness; - double rightEyeOpenness; - double leftEyeSmile; - double rightEyeSmile; - double mouthOpenness; - double mouthForm; - double faceXAngle; - double faceYAngle; - double faceZAngle; + std::map live2d; + bool autoBlink; bool autoBreath; - bool randomMotion; + bool randomIdleMotion; bool useLipSync; double lipSyncParam; + + MotionPriority motionPriority; + std::string motionGroup; + int motionNumber; + + std::string expression; }; - Params getParams(void) const; + Params getParams(void); void stop(void); @@ -76,7 +96,7 @@ private: int sleepMs; bool autoBlink; bool autoBreath; - bool randomMotion; + bool randomIdleMotion; bool useLipSync; double lipSyncGain; double lipSyncCutOff; @@ -87,9 +107,11 @@ private: int left; int right; int screen; - Coord middle; + Coord origin; } m_cfg; + std::map m_overrideMap; + bool m_stop; Coord m_curPos; @@ -97,12 +119,39 @@ private: xdo_t *m_xdo; std::thread m_getVolumeThread; + std::thread m_parseCommandThread; + std::thread m_guiThread; void audioLoop(void); + void cliLoop(void); + void guiLoop(void); + void processCommand(std::string); double m_currentVol; pa_simple *m_pulse; + MotionPriority m_motionPriority; + std::string m_motionGroup; + int m_motionNumber; + std::mutex m_motionMutex; + std::string m_expression; + void populateDefaultConfig(void); void parseConfig(std::string cfgPath); + + Glib::RefPtr m_gtkapp; + Glib::RefPtr m_builder; + + std::vector m_onClearResettingParams; + + // GUI signal handlers + void onMotionStartButton(void); + void onExpressionStartButton(void); + void onParamUpdateButton(Gtk::Scale *scale, bool isInc); + void onParamValChanged(Glib::RefPtr adj, std::string paramName); + void onAutoToggle(Gtk::CheckButton *check, Gtk::Scale *scale, + Gtk::Button *buttonDec, Gtk::Button *buttonInc, + std::string paramName); + void onClearButton(Glib::RefPtr button, std::string paramName, Glib::RefPtr adj); + void onExpanderChange(Gtk::Window *window); }; #endif