File indexing completed on 2025-09-14 03:43:27

0001 /*
0002     File                 : DatapickerImageWidget.h
0003     Project              : LabPlot
0004     Description          : widget for datapicker properties
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2015 Ankit Wagadre <wagadre.ankit@gmail.com>
0007     SPDX-FileCopyrightText: 2015-2021 Alexander Semke <alexander.semke@web.de>
0008 
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #ifndef DATAPICKERIMAGEWIDGET_H
0013 #define DATAPICKERIMAGEWIDGET_H
0014 
0015 #include <QGraphicsView>
0016 
0017 #include "backend/datapicker/DatapickerImage.h"
0018 #include "kdefrontend/dockwidgets/BaseDock.h"
0019 #include "ui_datapickerimagewidget.h"
0020 
0021 class SymbolWidget;
0022 class SpanSlider;
0023 
0024 class HistogramView : public QGraphicsView {
0025     Q_OBJECT
0026 
0027 public:
0028     explicit HistogramView(QWidget*, int);
0029     void setScalePixmap(const QString&);
0030     int* bins{nullptr};
0031 
0032 public Q_SLOTS:
0033     void setSpan(int, int);
0034 
0035 private:
0036     void resizeEvent(QResizeEvent* event) override;
0037     void drawBackground(QPainter*, const QRectF&) override;
0038     QGraphicsRectItem* m_lowerSlider;
0039     QGraphicsRectItem* m_upperSlider;
0040     QGraphicsScene* m_scene;
0041     int m_range;
0042 };
0043 
0044 class DatapickerImageWidget : public BaseDock {
0045     Q_OBJECT
0046 
0047 public:
0048     explicit DatapickerImageWidget(QWidget*);
0049 
0050     void setImages(QList<DatapickerImage*>);
0051     void load();
0052     void updateLocale() override;
0053     void updateXPositionWidgets(bool datetime);
0054 
0055 private:
0056     Ui::DatapickerImageWidget ui;
0057 
0058     DatapickerImage* m_image;
0059     QList<DatapickerImage*> m_imagesList;
0060     SymbolWidget* symbolWidget{nullptr};
0061 
0062     SpanSlider* ssIntensity;
0063     SpanSlider* ssForeground;
0064     SpanSlider* ssHue;
0065     SpanSlider* ssSaturation;
0066     SpanSlider* ssValue;
0067 
0068     HistogramView* gvIntensity;
0069     HistogramView* gvForeground;
0070     HistogramView* gvHue;
0071     HistogramView* gvSaturation;
0072     HistogramView* gvValue;
0073 
0074 private Q_SLOTS:
0075     // SLOTs for changes triggered in DatapickerImageWidget
0076     //"General"-tab
0077     void embeddedChanged(bool embedded);
0078     void fileNameChanged();
0079     void relativeChanged(bool checked);
0080     void selectFile();
0081     void plotImageTypeChanged(int);
0082 
0083     //"Edit image"-tab
0084     void rotationChanged(double);
0085     void intensitySpanChanged(int, int);
0086     void foregroundSpanChanged(int, int);
0087     void hueSpanChanged(int, int);
0088     void saturationSpanChanged(int, int);
0089     void valueSpanChanged(int, int);
0090 
0091     void minSegmentLengthChanged(int);
0092     void pointSeparationChanged(int);
0093     void graphTypeChanged(int);
0094     void ternaryScaleChanged(double);
0095     void logicalPositionChanged();
0096     void dateTimeUsageChanged(bool checked);
0097 
0098     // symbol properties
0099     void pointsVisibilityChanged(bool);
0100 
0101     // SLOTs for changes triggered in DatapickerImageWidget
0102     void imageFileNameChanged(const QString&);
0103     void imageRotationAngleChanged(float);
0104     void imageAxisPointsChanged(const DatapickerImage::ReferencePoints&);
0105     void imageEditorSettingsChanged(const DatapickerImage::EditorSettings&);
0106     void imageMinSegmentLengthChanged(const int);
0107     void updateSymbolWidgets();
0108     void handleWidgetActions();
0109     void symbolVisibleChanged(bool);
0110     void imageReferencePointSelected(int);
0111     void imageEmbeddedChanged(bool embedded);
0112     void imageRelativeChanged(bool);
0113 
0114     void updateFileRelativePathCheckBoxEnable();
0115 
0116     friend class DatapickerTest;
0117 };
0118 
0119 #endif // DATAPICKERIMAGEWIDGET_H