Engauge Digitizer  2
Public Slots | Signals | Public Member Functions | Protected Member Functions | List of all members
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(). More...
 

Signals

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

Public Member Functions

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

Protected Member Functions

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

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. More...
 
static int MINIMUM_PREVIEW_HEIGHT = 100
 Dialog layout constant that guarantees preview has sufficent room. More...
 

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",
39  mainWindow),
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 }
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
void finishPanel(QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
const int MINIMUM_DIALOG_WIDTH_COLOR_FILTER
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
log4cpp::Category * mainCat
Definition: Logger.cpp:14
Abstract base class for all Settings dialogs.
MainWindow & mainWindow()
Get method for MainWindow.

◆ ~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 }
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
log4cpp::Category * mainCat
Definition: Logger.cpp:14

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 }
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
log4cpp::Category * mainCat
Definition: Logger.cpp:14

◆ 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 
222  cmdMediator ().document(),
223  *m_modelColorFilterBefore,
224  *m_modelColorFilterAfter);
225  cmdMediator ().push (cmd);
226 
227  hide ();
228 }
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
Command for DlgSettingsColorFilter.
log4cpp::Category * mainCat
Definition: Logger.cpp:14
MainWindow & mainWindow()
Get method for MainWindow.
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 }
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
DocumentModelColorFilter modelColorFilter() const
Get method for DocumentModelColorFilter.
Definition: Document.cpp:688
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
Document & document()
Provide the Document to commands, primarily for undo/redo processing.
Definition: CmdMediator.cpp:72
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
log4cpp::Category * mainCat
Definition: Logger.cpp:14
void enableOk(bool enable)
Let leaf subclass control the Ok button.
MainWindow & mainWindow()
Get method for MainWindow.
QStringList curvesGraphsNames() const
See CurvesGraphs::curvesGraphsNames.
Definition: CmdMediator.cpp:62
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
const QString AXIS_CURVE_NAME

◆ 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: