SciDAVis
1.D4
|
Draw images on a QwtPlot. More...
#include <ImageMarker.h>
Public Member Functions | |
double | bottom () |
virtual QwtDoubleRect | boundingRect () const |
Return bounding rectangle in plot coordinates. | |
QString | fileName () |
Return d_file_name. | |
ImageMarker (const QString &fn) | |
Construct an image marker from a file name. | |
QPoint | origin () const |
Return position in paint coordinates. | |
QPixmap | pixmap () const |
Return the pixmap to be drawn, d_pic. | |
QRect | rect () const |
Return bounding rectangle in paint coordinates. | |
double | right () |
void | setBoundingRect (double left, double top, double right, double bottom) |
Set position (xValue() and yValue()), right and bottom values giving everything in plot coordinates. | |
void | setFileName (const QString &fn) |
Set d_file_name. | |
void | setOrigin (const QPoint &p) |
Set QwtPlotMarker::value() in paint coordinates. | |
void | setRect (int x, int y, int w, int h) |
Set value (position) and d_size, giving everything in paint coordinates. | |
void | setSize (const QSize &size) |
Set d_size. | |
void | setSize (int w, int h) |
Set d_size. Provided for convenience in scripts. | |
QSize | size () |
Return d_size. | |
void | updateBoundingRect () |
Public Member Functions inherited from PlotEnrichement | |
PlotEnrichement () |
Private Member Functions | |
void | draw (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRect &r) const |
Does the actual drawing; see QwtPlotItem::draw. |
Private Attributes | |
QString | d_file_name |
The file from which the image was loaded. | |
QPixmap | d_pic |
The pixmap to be drawn. | |
QPoint | d_pos |
The position in paint coordiantes. | |
QSize | d_size |
The size (in paint coordinates) to which d_pic will be scaled in draw(). | |
double | d_x_right |
The right side position in scale coordinates. | |
double | d_y_bottom |
The bottom side position in scale coordinates. |
Draw images on a QwtPlot.
ImageMarker draws d_pic at the position specified by d_pos, scaled to d_size. d_file_name isn't used internally, but only provided to help Graph manage save/restore.
Add a QwtPlotItem subclass (PlotEnrichment ?) and make ImageMarker, Legend and ArrowMarker subclasses of that. These (usually) don't really mark a specific point in a plot and they don't use the symbol/label functionality of QwtPlotMarker. Instead, it would make sense to provide a unified move/resize (or even general affine transformations via QMatrix) interface and support for positioning them either at fixed plot coordinates (like QwtPlotMarker) or at a fixed drawing position within a QwtPlot (like a QWidget child); leaving the choice of positioning policy to the user. If PlotEnrichment (ideas for a better name?) inherits from both QWidget and QwtPlotItem (which is luckily no QObject) and provides a unified drawing framework, its instances could be added directly to MultiLayer without the need for a dummy Graph in between. Could also help to avoid the hack in MultiLayer::updateMarkersBoundingRect().
Following the above thoughts, it might help clarify the purpose of ImageMarker, Legend and ArrowMarker if they are renamed according to the new superclasse's name (e.g. ImageEnrichment, TextEnrichment and LineEnrichment).
See the documentation of SelectionMoveResizer for other advantages of this approach.
ImageMarker::ImageMarker | ( | const QString & | fn | ) |
Construct an image marker from a file name.
References d_file_name, d_pic, and d_size.
|
inline |
Reimplemented from PlotEnrichement.
References d_y_bottom.
Referenced by Graph::addImage(), Graph::saveMarkers(), and setBoundingRect().
|
virtual |
Return bounding rectangle in plot coordinates.
Reimplemented from PlotEnrichement.
References d_x_right, and d_y_bottom.
|
private |
Does the actual drawing; see QwtPlotItem::draw.
References d_pic, d_x_right, and d_y_bottom.
|
inline |
Return d_file_name.
References d_file_name.
Referenced by Graph::addImage(), Graph::copyMarker(), ApplicationWindow::copyMarker(), Graph::saveMarkers(), and Graph::showIntensityTable().
|
inline |
Return position in paint coordinates.
Reimplemented from PlotEnrichement.
References rect().
Referenced by LineProfileTool::calculateLineProfile(), Graph::copyMarker(), and ApplicationWindow::showImageDialog().
|
inline |
Return the pixmap to be drawn, d_pic.
References d_pic.
Referenced by Graph::addImage(), and LineProfileTool::calculateLineProfile().
|
virtual |
Return bounding rectangle in paint coordinates.
Reimplemented from PlotEnrichement.
References d_x_right, and d_y_bottom.
Referenced by LineProfileTool::calculateLineProfile(), Graph::copyMarker(), SelectionMoveResizer::operateOnTargets(), origin(), CanvasPicker::selectMarker(), setBoundingRect(), and size().
|
inline |
Reimplemented from PlotEnrichement.
References d_x_right.
Referenced by Graph::addImage(), Graph::saveMarkers(), and setBoundingRect().
|
virtual |
Set position (xValue() and yValue()), right and bottom values giving everything in plot coordinates.
Reimplemented from PlotEnrichement.
References bottom(), d_pos, d_size, d_x_right, d_y_bottom, rect(), and right().
Referenced by Graph::addImage(), and Graph::insertImageMarker().
|
inline |
Set d_file_name.
References d_file_name.
void ImageMarker::setOrigin | ( | const QPoint & | p | ) |
Set QwtPlotMarker::value() in paint coordinates.
Reimplemented from PlotEnrichement.
References d_pos, d_size, size(), and updateBoundingRect().
Referenced by Graph::insertImageMarker(), SelectionMoveResizer::operateOnTargets(), and Graph::pasteMarker().
|
virtual |
Set value (position) and d_size, giving everything in paint coordinates.
Reimplemented from PlotEnrichement.
References d_pos, d_size, and updateBoundingRect().
Referenced by Graph::updateImageMarker().
void ImageMarker::setSize | ( | const QSize & | size | ) |
Set d_size.
Reimplemented from PlotEnrichement.
References d_size, size(), and updateBoundingRect().
Referenced by Graph::addImage(), Graph::insertImageMarker(), SelectionMoveResizer::operateOnTargets(), and Graph::pasteMarker().
|
inline |
|
inline |
Return d_size.
Reimplemented from PlotEnrichement.
References rect().
Referenced by LineProfileTool::calculateLineProfile(), setOrigin(), setSize(), and ApplicationWindow::showImageDialog().
|
virtual |
Reimplemented from PlotEnrichement.
References d_pos, d_size, d_x_right, and d_y_bottom.
Referenced by setOrigin(), setRect(), setSize(), and Graph::updateMarkersBoundingRect().
|
private |
The file from which the image was loaded.
Referenced by fileName(), ImageMarker(), and setFileName().
|
private |
The pixmap to be drawn.
Referenced by draw(), ImageMarker(), and pixmap().
|
private |
The position in paint coordiantes.
Reimplemented from PlotEnrichement.
Referenced by setBoundingRect(), setOrigin(), setRect(), and updateBoundingRect().
|
private |
The size (in paint coordinates) to which d_pic will be scaled in draw().
Reimplemented from PlotEnrichement.
Referenced by ImageMarker(), setBoundingRect(), setOrigin(), setRect(), setSize(), and updateBoundingRect().
|
private |
The right side position in scale coordinates.
Reimplemented from PlotEnrichement.
Referenced by boundingRect(), draw(), rect(), right(), setBoundingRect(), and updateBoundingRect().
|
private |
The bottom side position in scale coordinates.
Reimplemented from PlotEnrichement.
Referenced by bottom(), boundingRect(), draw(), rect(), setBoundingRect(), and updateBoundingRect().