Programmable real-time audio signal processing application
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cmGrTksbFltk.h 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //| Copyright: (C) 2019-2020 Kevin Larke <contact AT larke DOT org>
  2. //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file.
  3. #ifndef cmGrTksbFltk_h
  4. #define cmGrTksbFltk_h
  5. class Fl_Menu_Bar;
  6. class cmdIf;
  7. class cmGrTksbFltk : public cmGrPlotFltk, public gvHashFuncArg
  8. {
  9. public:
  10. cmGrTksbFltk(cmCtx_t* ctx, cmdIf* cp, Fl_Menu_Bar* menuBar, int x, int y, int w, int h);
  11. virtual ~cmGrTksbFltk();
  12. void setTksbHandle( void* vp );
  13. virtual cmScMsgTypeId_t recvScoreMsg( const void* msg, unsigned msgByteCnt );
  14. virtual double sampleRate() const;
  15. virtual bool on_plot_object( cmGrPlotCbArg_t* arg );
  16. typedef enum
  17. {
  18. kInvalidTId,
  19. kSelectTId,
  20. kRefreshTId,
  21. } cbTId_t;
  22. cbTId_t cbTypeId() const;
  23. virtual unsigned scoreSelectedEleIndex() const;
  24. virtual void setScoreLocation( unsigned locIdx, unsigned vel, unsigned smpIdx );
  25. private:
  26. enum
  27. {
  28. kOkRC,
  29. kInsertObjFailRC
  30. };
  31. enum
  32. {
  33. kPitchMId,
  34. kAttrMId,
  35. kDynMId,
  36. kLocIdxMId,
  37. kFracMId,
  38. kSectEvenMId,
  39. kSectDynMId,
  40. kSectTempoMId,
  41. kMenuItemCnt
  42. };
  43. typedef struct
  44. {
  45. cmGrTksbFltk* p;
  46. int id;
  47. } item_t;
  48. typedef enum
  49. {
  50. kEventTksbId,
  51. kSectionTksbId,
  52. kTakeTksbId
  53. } tksbId_t;
  54. typedef struct scObj_str
  55. {
  56. tksbId_t id;
  57. union
  58. {
  59. const cmScoreEvt_t* ep;
  60. const cmScoreSection_t* sp;
  61. unsigned tlMarkerUid;
  62. } u;
  63. scObj_str( const cmScoreEvt_t* e) : id(kEventTksbId) { u.ep=e;}
  64. scObj_str( const cmScoreSection_t* s) : id(kSectionTksbId) { u.sp=s;}
  65. scObj_str( unsigned i ) : id(kTakeTksbId) { u.tlMarkerUid=i;}
  66. } scObj_t;
  67. cmErr_t _err;
  68. //cmdIf* _cmdIf;
  69. cmTakeSeqBldrH_t _tksbH;
  70. Fl_Menu_Bar* _menuBar;
  71. unsigned _samplesMetricId;
  72. unsigned _secondsMetricId;
  73. double _objSecs;
  74. unsigned _objId;
  75. bool _togFl;
  76. cmGrPlObjH_t _lastBarPlotObjH;
  77. item_t _menuArray[ kMenuItemCnt ];
  78. unsigned _nextTakeY;
  79. cbTId_t _curCbTId;
  80. void _insertSection( const cmScoreSection_t* s );
  81. void _insertEvent( const cmScoreEvt_t* m );
  82. void _insertTake( const cmTksbScTrkTake_t* take );
  83. void _createMenu();
  84. bool _isMenuChecked( int id );
  85. void _setEventLabels();
  86. void _setSectionLabels();
  87. cmGrPlObjH_t _scEvtIdxToPlotObj( unsigned scEvtIdx );
  88. static void _s_menuCallback(Fl_Widget* w, void* arg);
  89. };
  90. #endif