#pragma once #ifndef COMBOHISTOGRAM_H #define COMBOHISTOGRAM_H #include "tcommon.h" #include "traster.h" #include "ttoonzimage.h" #include "tpalette.h" #include #include #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 _MSC_VER #pragma warning(disable : 4251) #endif class QStackedWidget; class QString; class QComboBox; class QColor; class RGBLabel; class QLabel; #define COMBOHIST_RESOLUTION_W 256 #define COMBOHIST_RESOLUTION_H 100 //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // 120405 //----------------------------------------------------------------------------- class DVAPI ComboHistoRGBLabel final : public QWidget { Q_OBJECT QColor m_color; public: ComboHistoRGBLabel(QColor color, QWidget *parent); ~ComboHistoRGBLabel() {} void setColorAndUpdate(QColor color); protected: void paintEvent(QPaintEvent *pe) override; }; //----------------------------------------------------------------------------- class DVAPI ChannelHistoGraph : public QWidget { Q_OBJECT QVector m_values; int m_pickedValue; public: int *m_channelValuePtr; ChannelHistoGraph(QWidget *parent = 0, int *channelValue = 0); ~ChannelHistoGraph(); virtual void setValues(); void showCurrentChannelValue(int val); protected: void paintEvent(QPaintEvent *event) override; }; //----------------------------------------------------------------------------- class DVAPI RGBHistoGraph final : public ChannelHistoGraph { Q_OBJECT QVector m_rgbValues[3]; QImage m_histoImg; public: RGBHistoGraph(QWidget *parent = 0, int *channelValue = 0); ~RGBHistoGraph(); void setValues() override; protected: void paintEvent(QPaintEvent *event) override; }; //----------------------------------------------------------------------------- class DVAPI ChannelColorBar final : public QWidget { Q_OBJECT QColor m_color; public: ChannelColorBar(QWidget *parent = 0, QColor m_color = QColor()); ~ChannelColorBar() {} protected: void paintEvent(QPaintEvent *event) override; }; //----------------------------------------------------------------------------- class DVAPI ChannelHisto final : public QWidget { Q_OBJECT ChannelHistoGraph *m_histogramGraph; ChannelColorBar *m_colorBar; public: ChannelHisto(int channelIndex, int *channelValue, QWidget *parent = 0); ~ChannelHisto() {} void refleshValue() { m_histogramGraph->setValues(); } void showCurrentChannelValue(int val); protected slots: void onShowAlphaButtonToggled(bool visible); }; //----------------------------------------------------------------------------- class DVAPI ComboHistogram final : public QWidget { Q_OBJECT TRasterP m_raster; TPaletteP m_palette; // rgba channels int m_channelValue[4][COMBOHIST_RESOLUTION_W]; // rgba channels + composited ChannelHisto *m_histograms[5]; ComboHistoRGBLabel *m_rgbLabel; ComboHistoRGBLabel *m_rectAverageRgbLabel; QLabel *m_xPosLabel; QLabel *m_yPosLabel; public: ComboHistogram(QWidget *parent = 0); ~ComboHistogram(); TRasterP getRaster() const { return m_raster; } void setRaster(const TRasterP &raster, const TPaletteP &palette = 0); void updateInfo(const TPixel32 &pix, const TPointD &imagePos); void updateAverageColor(const TPixel32 &pix); protected: void computeChannelsValue(); }; #endif