| #pragma once |
| |
| #ifndef HISTOGRAM_H |
| #define HISTOGRAM_H |
| |
| #include "tcommon.h" |
| #include "traster.h" |
| #include "ttoonzimage.h" |
| #include "tpalette.h" |
| |
| #include <QWidget> |
| #include <QStackedWidget> |
| |
| #undef DVAPI |
| #undef DVVAR |
| #ifdef TOONZQT_EXPORTS |
| #define DVAPI DV_EXPORT_API |
| #define DVVAR DV_EXPORT_VAR |
| #else |
| #define DVAPI DV_IMPORT_API |
| #define DVVAR DV_IMPORT_VAR |
| #endif |
| |
| #ifdef _WIN32 |
| #pragma warning(disable : 4251) |
| #endif |
| |
| class QStackedWidget; |
| class QString; |
| class QComboBox; |
| class QColor; |
| |
| |
| |
| |
| |
| class DVAPI HistogramGraph final : public QWidget { |
| Q_OBJECT |
| |
| QColor m_color; |
| |
| int m_height; |
| |
| QVector<int> m_values, m_viewValues, m_logViewValues; |
| bool m_logScale; |
| |
| public: |
| static const int drawMargin; |
| |
| public: |
| HistogramGraph(QWidget *parent = 0, QColor m_color = QColor()); |
| ~HistogramGraph(); |
| |
| void setAlphaMask(int value); |
| |
| void setHeight(int height) { m_height = height; } |
| int getHeight() { return m_height; } |
| |
| void setValues(const int values[]); |
| const QVector<int> &values() const { return m_values; } |
| |
| void setLogScale(bool onOff) { m_logScale = onOff; } |
| bool logScale() const { return m_logScale; } |
| |
| void draw(QPainter *painter, QPoint translation = QPoint(0, 0)); |
| |
| protected: |
| void paintEvent(QPaintEvent *pe) override; |
| }; |
| |
| |
| |
| |
| |
| class DVAPI ChannelBar final : public QWidget { |
| Q_OBJECT |
| |
| QColor m_color; |
| int m_colorBarLength; |
| |
| bool m_isHorizontal; |
| bool m_drawNumbers; |
| |
| public: |
| ChannelBar(QWidget *parent = 0, QColor m_color = QColor(), |
| bool isHorizontal = true); |
| ~ChannelBar(); |
| |
| QColor getColor() const { return m_color; } |
| |
| void setDrawNumbers(bool onOff); |
| bool drawNumbers() const { return m_drawNumbers; } |
| |
| void draw(QPainter *painter, QPoint translation = QPoint(0, 0)); |
| |
| protected: |
| void paintEvent(QPaintEvent *event) override; |
| }; |
| |
| |
| |
| |
| |
| class DVAPI HistogramView final : public QWidget { |
| Q_OBJECT |
| |
| HistogramGraph *m_histogramGraph; |
| ChannelBar *m_colorBar; |
| |
| QWidget *m_drawnWidget; |
| |
| public: |
| HistogramView(QWidget *parent = 0, QColor color = Qt::black); |
| ~HistogramView(); |
| |
| const HistogramGraph *histogramGraph() const { return m_histogramGraph; } |
| HistogramGraph *histogramGraph() { return m_histogramGraph; } |
| |
| const ChannelBar *channelBar() const { return m_colorBar; } |
| ChannelBar *channelBar() { return m_colorBar; } |
| |
| QColor getChannelBarColor() const { return m_colorBar->getColor(); } |
| |
| |
| void setGraphHeight(int height) { m_histogramGraph->setHeight(height); } |
| void setGraphAlphaMask(int value) { m_histogramGraph->setAlphaMask(value); } |
| void setDrawnWidget(QWidget *widget); |
| |
| void setValues(const int values[]); |
| const QVector<int> &values() const { return m_histogramGraph->values(); } |
| |
| void draw(QPainter *painter, QPoint translation = QPoint(0, 0)); |
| }; |
| |
| |
| |
| |
| |
| class DVAPI Histograms final : public QStackedWidget { |
| Q_OBJECT |
| |
| TRasterP m_raster; |
| TPaletteP m_palette; |
| int m_channelValue[6][256]; |
| int m_channelsCount; |
| bool m_computeAlsoRGBA; |
| |
| public: |
| Histograms(QWidget *parent = 0, bool rgba = false); |
| ~Histograms(); |
| |
| TRasterP getRaster() const { return m_raster; } |
| void setRaster(const TRasterP &raster, const TPaletteP &palette = 0); |
| |
| HistogramView *getHistogramView(int indexType) const; |
| int channelsCount() const { return m_channelsCount; } |
| |
| protected: |
| void computeChannelsValue(); |
| }; |
| |
| |
| |
| |
| |
| class DVAPI Histogram final : public QWidget { |
| Q_OBJECT |
| |
| QComboBox *m_channelsListBox; |
| Histograms *m_histograms; |
| |
| public: |
| Histogram(QWidget *parent = 0); |
| ~Histogram() {} |
| |
| Histograms *getHistograms() const { return m_histograms; } |
| |
| TRasterP getRaster() const { return m_histograms->getRaster(); } |
| void setRaster(const TRasterP &raster, const TPaletteP &palette = 0); |
| |
| public slots: |
| |
| void setLogScale(bool onOff); |
| |
| private: |
| void updateChannelsList(); |
| }; |
| |
| #endif // HISTOGRAM_H |