OBSBasicTransform.hpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include "ui_OBSBasicTransform.h"
  3. #include <obs.hpp>
  4. #include <components/AlignmentSelector.hpp>
  5. #include <QDialog>
  6. #include <QPointer>
  7. class OBSBasic;
  8. class QListWidgetItem;
  9. class OBSBasicTransform : public QDialog {
  10. Q_OBJECT
  11. private:
  12. std::unique_ptr<Ui::OBSBasicTransform> ui;
  13. QPointer<AlignmentSelector> positionAlignment;
  14. QPointer<AlignmentSelector> boundsAlignment;
  15. OBSBasic *main;
  16. OBSSceneItem item;
  17. std::vector<OBSSignal> sigs;
  18. std::string undo_data;
  19. bool ignoreTransformSignal = false;
  20. bool ignoreItemChange = false;
  21. template<typename Widget, typename WidgetParent, typename... SignalArgs, typename... SlotArgs>
  22. void hookWidget(Widget *widget, void (WidgetParent::*signal)(SignalArgs...),
  23. void (OBSBasicTransform::*slot)(SlotArgs...))
  24. {
  25. QObject::connect(widget, signal, this, slot);
  26. }
  27. void setScene(OBSScene scene);
  28. void setItem(OBSSceneItem newItem);
  29. static void OBSSceneItemTransform(void *param, calldata_t *data);
  30. static void OBSSceneItemRemoved(void *param, calldata_t *data);
  31. static void OBSSceneItemSelect(void *param, calldata_t *data);
  32. static void OBSSceneItemDeselect(void *param, calldata_t *data);
  33. static void OBSSceneItemLocked(void *param, calldata_t *data);
  34. private slots:
  35. void refreshControls();
  36. void setItemQt(OBSSceneItem newItem);
  37. void onAlignChanged(int index);
  38. void onBoundsType(int index);
  39. void onControlChanged();
  40. void onCropChanged();
  41. void setEnabled(bool enable);
  42. public:
  43. OBSBasicTransform(OBSSceneItem item, OBSBasic *parent);
  44. ~OBSBasicTransform();
  45. public slots:
  46. void onSceneChanged(QListWidgetItem *current, QListWidgetItem *prev);
  47. };