1 #pragma once
2 
3 #ifndef ADJUST_LEVELS_POPUP_H
4 #define ADJUST_LEVELS_POPUP_H
5 
6 // tnzcore includes
7 #include "traster.h"
8 
9 // toonzQt includes
10 #include "toonzqt/dvdialog.h"
11 #include "toonzqt/planeviewer.h"
12 #include "toonzqt/marksbar.h"
13 
14 class Histogram;
15 namespace DVGui {
16 class IntLineEdit;
17 }
18 
19 class QShowEvent;
20 class QHideEvent;
21 class QPushButton;
22 
23 //**************************************************************
24 //    EditableMarksBar  declaration
25 //**************************************************************
26 
27 class EditableMarksBar final : public QFrame {
28   Q_OBJECT
29 
30   MarksBar *m_marksBar;
31   DVGui::IntLineEdit *m_fields[2];
32 
33 public:
34   EditableMarksBar(QWidget *parent = 0);
35   ~EditableMarksBar();
36 
37 public:
marks()38   const QVector<int> &marks() const { return m_marksBar->values(); }
39 
marksBar()40   const MarksBar *marksBar() const { return m_marksBar; }
marksBar()41   MarksBar *marksBar() { return m_marksBar; }
42 
43   void getValues(int *values) const;
44 
45 signals:
46 
47   void paramsChanged();
48 
49 protected slots:
50 
51   void onFieldEdited();
52 
53 public slots:
54 
55   void updateFields();
56 };
57 
58 //**************************************************************
59 //    Adjust-Levels Popup  declaration
60 //**************************************************************
61 
62 class AdjustLevelsPopup final : public DVGui::Dialog {
63   Q_OBJECT
64 
65   Histogram *m_histogram;
66   QPushButton *m_okBtn;
67 
68   EditableMarksBar *m_marksBar[10];
69 
70   TRasterP m_inputRas;
71 
72   double m_thresholdD;
73   int m_threshold;
74 
75 private:
76   class Swatch;
77   Swatch *m_viewer;
78 
79 public:
80   AdjustLevelsPopup();
81 
82 protected:
83   void showEvent(QShowEvent *se) override;
84   void hideEvent(QHideEvent *se) override;
85 
86   void acquireRaster();
87   void updateProcessedImage();
88   void getParameters(int *in0, int *in1, int *out0, int *out1);
89 
90   void setThreshold(double t);
91 
92 protected slots:
93 
94   void clampRange();
95   void autoAdjust();
96   void reset();
97 
98   void onSelectionChanged();
99   void onParamsChanged();
100 
101   void apply();
102 };
103 
104 #endif  // ADJUST_LEVELS_POPUP_H
105