Engauge Digitizer 2
Loading...
Searching...
No Matches
DlgSettingsColorFilter Class Reference

Dialog for editing filtering settings. More...

#include <DlgSettingsColorFilter.h>

Inheritance diagram for DlgSettingsColorFilter:
Inheritance graph
Collaboration diagram for DlgSettingsColorFilter:
Collaboration graph

Public Slots

void slotTransferPiece (int xLeft, QImage image)
 Receive processed piece of preview image, to be inserted at xLeft to xLeft+pixmap.width().
 

Signals

void signalApplyFilter (ColorFilterMode colorFilterMode, double low, double high)
 Send filter parameters to DlgFilterThread and DlgFilterWorker for processing.
 

Public Member Functions

 DlgSettingsColorFilter (MainWindow &mainWindow)
 Single constructor.
 
virtual ~DlgSettingsColorFilter ()
 
virtual void createOptionalSaveDefault (QHBoxLayout *layout)
 Let subclass define an optional Save As Default button.
 
virtual QWidget * createSubPanel ()
 Create dialog-specific panel to which base class will add Ok and Cancel buttons.
 
virtual void load (CmdMediator &cmdMediator)
 Load settings from Document.
 
virtual void setSmallDialogs (bool smallDialogs)
 If false then dialogs have a minimum size so all controls are visible.
 
- Public Member Functions inherited from DlgSettingsAbstractBase
 DlgSettingsAbstractBase (const QString &title, const QString &dialogName, MainWindow &mainWindow)
 Single constructor.
 
virtual ~DlgSettingsAbstractBase ()
 

Protected Member Functions

virtual void handleOk ()
 Process slotOk.
 
- Protected Member Functions inherited from DlgSettingsAbstractBase
CmdMediatorcmdMediator ()
 Provide access to Document information wrapped inside CmdMediator.
 
void enableOk (bool enable)
 Let leaf subclass control the Ok button.
 
void finishPanel (QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
 Add Ok and Cancel buttons to subpanel to get the whole dialog.
 
MainWindowmainWindow ()
 Get method for MainWindow.
 
const MainWindowmainWindow () const
 Const get method for MainWindow.
 
void populateColorComboWithoutTransparent (QComboBox &combo)
 Add colors in color palette to combobox, without transparent entry at end.
 
void populateColorComboWithTransparent (QComboBox &combo)
 Add colors in color palette to combobox, with transparent entry at end.
 
void setCmdMediator (CmdMediator &cmdMediator)
 Store CmdMediator for easy access by the leaf class.
 
void setDisableOkAtStartup (bool disableOkAtStartup)
 Override the default Ok button behavior applied in showEvent.
 

Additional Inherited Members

- Static Protected Attributes inherited from DlgSettingsAbstractBase
static int MINIMUM_DIALOG_WIDTH = 380
 Dialog layout constant that guarantees every widget has sufficient room. Can be increased by finishPanel.
 
static int MINIMUM_PREVIEW_HEIGHT = 100
 Dialog layout constant that guarantees preview has sufficent room.
 

Detailed Description

Dialog for editing filtering settings.

Definition at line 29 of file DlgSettingsColorFilter.h.

Constructor & Destructor Documentation

◆ DlgSettingsColorFilter()

DlgSettingsColorFilter::DlgSettingsColorFilter ( MainWindow & mainWindow)

Single constructor.

Definition at line 36 of file DlgSettingsColorFilter.cpp.

36 :
37 DlgSettingsAbstractBase (tr ("Color Filter"),
38 "DlgSettingsColorFilter",
40 m_scenePreview (nullptr),
41 m_viewPreview (nullptr),
42 m_filterThread (nullptr),
43 m_modelColorFilterBefore (nullptr),
44 m_modelColorFilterAfter (nullptr)
45{
46 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsColorFilter::DlgSettingsColorFilter";
47
48 QWidget *subPanel = createSubPanel ();
49 finishPanel (subPanel,
51}
const int MINIMUM_DIALOG_WIDTH_COLOR_FILTER
log4cpp::Category * mainCat
Definition Logger.cpp:14
DlgSettingsAbstractBase(const QString &title, const QString &dialogName, MainWindow &mainWindow)
Single constructor.
void finishPanel(QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
MainWindow & mainWindow()
Get method for MainWindow.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18

◆ ~DlgSettingsColorFilter()

DlgSettingsColorFilter::~DlgSettingsColorFilter ( )
virtual

Definition at line 53 of file DlgSettingsColorFilter.cpp.

54{
55 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsColorFilter::~DlgSettingsColorFilter";
56
57 delete m_filterThread;
58}

Member Function Documentation

◆ createOptionalSaveDefault()

void DlgSettingsColorFilter::createOptionalSaveDefault ( QHBoxLayout * layout)
virtual

Let subclass define an optional Save As Default button.

Implements DlgSettingsAbstractBase.

Definition at line 116 of file DlgSettingsColorFilter.cpp.

117{
118}

◆ createSubPanel()

QWidget * DlgSettingsColorFilter::createSubPanel ( )
virtual

Create dialog-specific panel to which base class will add Ok and Cancel buttons.

Implements DlgSettingsAbstractBase.

Definition at line 166 of file DlgSettingsColorFilter.cpp.

167{
168 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsColorFilter::createSubPanel";
169
170 const int EMPTY_COLUMN_WIDTH = 40;
171
172 QWidget *subPanel = new QWidget ();
173 QGridLayout *layout = new QGridLayout (subPanel);
174 subPanel->setLayout (layout);
175
176 layout->setColumnStretch(0, 0); // Empty column
177 layout->setColumnMinimumWidth(0, EMPTY_COLUMN_WIDTH);
178 layout->setColumnStretch(1, 0); // Radio buttons
179 layout->setColumnMinimumWidth(1, 210);
180 layout->setColumnStretch(2, 0); // Empty column to put some space between previous and next columns, so they are not too close
181 layout->setColumnMinimumWidth(2, 15);
182 layout->setColumnStretch(3, 1); // Profile
183 layout->setColumnMinimumWidth(4, EMPTY_COLUMN_WIDTH); // Empty column
184 layout->setColumnStretch(4, 0);
185
186 int rowLeft = 0, rowRight = 0;
187 createControls (layout, rowLeft);
188 createProfileAndScale (layout, rowRight);
189
190 int row = qMax (rowLeft, rowRight);
191 createPreview (layout, row);
192
193 return subPanel;
194}

◆ handleOk()

void DlgSettingsColorFilter::handleOk ( )
protectedvirtual

Process slotOk.

Implements DlgSettingsAbstractBase.

Definition at line 217 of file DlgSettingsColorFilter.cpp.

218{
219 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsColorFilter::handleOk";
220
221 CmdSettingsColorFilter *cmd = new CmdSettingsColorFilter (mainWindow (),
222 cmdMediator ().document(),
223 *m_modelColorFilterBefore,
224 *m_modelColorFilterAfter);
225 cmdMediator ().push (cmd);
226
227 hide ();
228}
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.

◆ load()

void DlgSettingsColorFilter::load ( CmdMediator & cmdMediator)
virtual

Load settings from Document.

Implements DlgSettingsAbstractBase.

Definition at line 230 of file DlgSettingsColorFilter.cpp.

231{
232 LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsColorFilter::load";
233
235
236 // Flush old data
237 delete m_modelColorFilterBefore;
238 delete m_modelColorFilterAfter;
239
240 // Save new data
241 m_modelColorFilterBefore = new DocumentModelColorFilter (cmdMediator.document().modelColorFilter());
242 m_modelColorFilterAfter = new DocumentModelColorFilter (cmdMediator.document().modelColorFilter());
243
244 // Populate controls. First load curve name combobox. The curve-specific controls get loaded in slotCurveName
245 m_cmbCurveName->clear ();
246 m_cmbCurveName->addItem (AXIS_CURVE_NAME);
247 QStringList curveNames = cmdMediator.curvesGraphsNames();
248 QStringList::const_iterator itr;
249 for (itr = curveNames.begin (); itr != curveNames.end (); itr++) {
250
251 QString curveName = *itr;
252 m_cmbCurveName->addItem (curveName);
253 }
254
255 // This sets the curve name
256 m_cmbCurveName->setCurrentText (mainWindow().selectedGraphCurve());
257 loadForCurveName();
258
259 enableOk (false); // Disable Ok button since there not yet any changes
260}
const QString AXIS_CURVE_NAME
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
void enableOk(bool enable)
Let leaf subclass control the Ok button.

◆ setSmallDialogs()

void DlgSettingsColorFilter::setSmallDialogs ( bool smallDialogs)
virtual

If false then dialogs have a minimum size so all controls are visible.

Implements DlgSettingsAbstractBase.

Definition at line 292 of file DlgSettingsColorFilter.cpp.

293{
294 if (!smallDialogs) {
295 setMinimumHeight (MINIMUM_HEIGHT);
296 }
297}
const int MINIMUM_HEIGHT

◆ signalApplyFilter

void DlgSettingsColorFilter::signalApplyFilter ( ColorFilterMode colorFilterMode,
double low,
double high )
signal

Send filter parameters to DlgFilterThread and DlgFilterWorker for processing.

◆ slotTransferPiece

void DlgSettingsColorFilter::slotTransferPiece ( int xLeft,
QImage image )
slot

Receive processed piece of preview image, to be inserted at xLeft to xLeft+pixmap.width().

Definition at line 360 of file DlgSettingsColorFilter.cpp.

362{
363 // Overwrite one piece of the processed image. This approach is a bit slow because the entire QPixmap
364 // in the QGraphicsScene gets exchanged as part of each update, but that seems to be the only possible
365 // approach when using QGraphicsScene. If not fast enough or there is ugly flicker, we may replace
366 // QGraphicsScene by a simple QWidget and override the paint function - but that approach may get
367 // complicated when resizing the QGraphicsView
368 for (int xFrom = 0, xTo = xLeft; xFrom < image.width(); xFrom++, xTo++) {
369 for (int y = 0; y < image.height (); y++) {
370
371 QColor pixel = image.pixel (xFrom, y);
372 m_imagePreview.setPixel (xTo, y, pixel.rgb());
373 }
374 }
375
376 // Remove old pixmap
377 QGraphicsItem *itemPixmap = m_scenePreview->items().at(0);
378 m_scenePreview->removeItem (itemPixmap);
379 delete itemPixmap;
380
381 // Save new pixmap. Only visible change should be the area covered by the pixels in image
382 m_scenePreview->addPixmap (QPixmap::fromImage (m_imagePreview));
383}

The documentation for this class was generated from the following files: