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