Programmable real-time audio signal processing application
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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