digiKam
Loading...
Searching...
No Matches
histogramwidget.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2004-07-21
7 * Description : a widget to display an image histogram.
8 *
9 * SPDX-FileCopyrightText: 2004-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QWidget>
20#include <QEvent>
21#include <QMouseEvent>
22#include <QPaintEvent>
23
24// Local includes
25
26#include "dimg.h"
27#include "dcolor.h"
28#include "digikam_debug.h"
29#include "digikam_export.h"
30#include "digikam_globals.h"
31
32namespace Digikam
33{
34
35class ImageHistogram;
36
37class DIGIKAM_EXPORT HistogramWidget : public QWidget
38{
39 Q_OBJECT
40 Q_PROPERTY(int animationState READ animationState WRITE setAnimationState)
41
42public:
43
47 HistogramWidget(int w, int h, // Widget size.
48 QWidget* const parent = nullptr,
49 bool selectMode = true,
50 bool showProgress = true,
51 bool statisticsVisible = false);
52
53 ~HistogramWidget() override;
54
58 void stopHistogramComputation();
59
63 void updateData(const DImg& img, // full image data.
64 const DImg& sel = DImg(), // selection image data
65 bool showProgress = true);
66
70 void updateSelectionData(const DImg& sel, bool showProgress = true);
71
72 void setDataLoading();
73 void setLoadingFailed();
74
75 void setHistogramGuideByColor(const DColor& color);
76 void setStatisticsVisible(bool b);
77
78 void reset();
79
80 HistogramScale scaleType() const;
81 ChannelType channelType() const;
82
83 int animationState() const;
84 void setAnimationState(int animationState);
85
86 void setRenderingType(HistogramRenderingType type);
87 HistogramRenderingType renderingType() const;
88
91 ImageHistogram* currentHistogram() const;
92
93Q_SIGNALS:
94
95 void signalIntervalChanged(int min, int max);
99
100public Q_SLOTS:
101
102 void slotMinValueChanged(int min);
103 void slotMaxValueChanged(int max);
104 void setChannelType(ChannelType channel);
105 void setScaleType(HistogramScale scale);
106
107protected Q_SLOTS:
108
109 void slotCalculationAboutToStart();
110 void slotCalculationFinished(bool success);
111
112protected:
113
114 void paintEvent(QPaintEvent*) override;
115 void mousePressEvent(QMouseEvent*) override;
116 void mouseReleaseEvent(QMouseEvent*) override;
117 void mouseMoveEvent(QMouseEvent*) override;
118
119private:
120
121 void notifyValuesChanged();
122 void connectHistogram(const ImageHistogram* const histogram);
123 void setup(int w, int h, bool selectMode, bool statisticsVisible);
124 void setState(int state);
125 void startWaitingAnimation();
126 void stopWaitingAnimation();
127
128private:
129
130 class Private;
131 Private* const d = nullptr;
132};
133
134} // namespace Digikam
Definition dcolor.h:33
Definition dimg.h:52
Definition histogramwidget.h:38
void signalMaximumValueChanged(int)
void signalHistogramComputationDone(bool)
void signalHistogramComputationFailed()
void signalIntervalChanged(int min, int max)
Definition imagehistogram.h:34
Definition datefolderview.cpp:34
ChannelType
Definition digikam_globals.h:146
HistogramRenderingType
Definition digikam_globals.h:138
HistogramScale
Definition digikam_globals.h:132