A multi thread Qt4 widget to control the display of a set of layers. More...
#include <MultiThreadMapDisplay.h>
Public Types | |
enum | ResizePolicy { Fixed, Cut, Center } |
Defines the resize policy for map display. More... | |
Signals | |
void | displayPaintEvent (QPainter *) |
void | displaySridChanged () |
void | drawLayersFinished (const QMap< QString, QString > &errors) |
This signal is emitted when the draw process ends. i.e. when all layers have been drawn. More... | |
void | extentChanged () |
Public Member Functions | |
virtual QColor | getBackgroundColor () |
Gets the map display background color. More... | |
virtual QPixmap * | getDisplayPixmap () const |
It returns the map display pixmap. More... | |
virtual QPixmap * | getDraftPixmap () const |
It returns the map display draft pixmap. More... | |
virtual const te::gm::Envelope & | getExtent () const |
It returns the world extent showned by the MapDisplay. More... | |
virtual te::map::AlignType | getHAlign () const |
It returns the MapDisplay current horizontal align. More... | |
virtual int | getSRID () const |
It return the Spatial Reference System used by the Map Display. More... | |
virtual te::map::AlignType | getVAlign () const |
It returns the MapDisplay current vertical align. More... | |
bool | isDrawing () const |
Returns if the map display is drawing. More... | |
virtual void | setAlign (te::map::AlignType h, te::map::AlignType v) |
It will set the align rendering of objects into the map display. Just successive drawings will be affected by this modification. More... | |
virtual void | setBackgroundColor (const QColor &color) |
Sets the map display background color. More... | |
virtual void | setLayerList (const std::list< te::map::AbstractLayerPtr > &layers) |
It sets the layer list to be showed in the Map Display. More... | |
virtual void | setResizeInterval (int msec) |
Sets the timeout interval in milliseconds to redraw on resize event. More... | |
virtual void | setResizePolicy (const ResizePolicy &policy) |
Sets the resize policy to this map display. More... | |
void | setSynchronous (bool on) |
virtual QPointF | transform (const QPointF &p) |
Transforms the given point, in screen coordinates, to a point in world coordinates. More... | |
Initializer Methods | |
Methods related to instantiation and destruction. | |
MultiThreadMapDisplay (const QSize &size, const bool &showFeedback=true, QWidget *parent=0, Qt::WindowFlags f=0) | |
It constructs an empty multi thread map display with the given dimensions which is a child of parent, with widget flags set to f. More... | |
MultiThreadMapDisplay (QWidget *parent=0, const bool &showFeedback=true, Qt::WindowFlags f=0) | |
~MultiThreadMapDisplay () | |
Destructor. More... | |
AbstractMapDisplay Methods | |
void | setExtent (te::gm::Envelope &e, bool doRefresh=true) |
It sets the world visible area and refreshes the contents in the map display. More... | |
void | refresh () |
It updates the contents in the map display. More... | |
AbstractMapDisplay Methods | |
virtual void | changeData (te::map::AbstractLayerPtr, int nsrid=TE_UNKNOWN_SRS) |
unsigned int | getWidth () const |
It returns the MapDisplay current width in pixels. More... | |
unsigned int | getHeight () const |
It returns the MapDisplay current height in pixels. More... | |
double | getWidthMM () const |
It returns the MapDisplay current width in millimeters. More... | |
double | getHeightMM () const |
It returns the MapDisplay current height in millimeters. More... | |
virtual void | setSRID (const int &srid, bool doRefresh=true) |
It sets a new Spatial Reference System to be used by the Map Display. More... | |
Protected Slots | |
void | onDrawLayerFinished (const int &index, const QImage &image) |
virtual void | onResizeTimeout () |
void | showFeedback (const QImage &image) |
Protected Member Functions | |
virtual void | adjustExtent (const QSize &oldSize, const QSize &size) |
It adjusts the map display extent based on resize policy. More... | |
virtual void | draw (te::map::AbstractLayer *layer, QPainter &painter) |
It displays the given layer. More... | |
virtual te::qt::widgets::Canvas * | getCanvas (te::map::AbstractLayer *layer, int type=QInternal::Pixmap) |
It retrieves an associated canvas to the given layer. More... | |
virtual void | paintEvent (QPaintEvent *e) |
It assembles the final image and draws the widget. More... | |
virtual void | resizeAllCanvas () |
It resizes all canvas of map display. More... | |
virtual void | resizeEvent (QResizeEvent *e) |
This event handler receives widget resize events wich are passed in the event parameter. More... | |
Protected Attributes | |
QColor | m_backgroundColor |
Background color. More... | |
QPixmap * | m_displayPixmap |
This pixmap will be the result of all canvas pixmap drawing, i. e., the result of drawing all visible layers. More... | |
QPixmap * | m_draftPixmap |
The draft pixmap can be used to draw some feedback on map display. More... | |
te::gm::Envelope | m_extent |
The display extent. More... | |
te::map::AlignType | m_hAlign |
The display horizontal align. More... | |
std::map< int, QImage > | m_images |
The set of images built by each thread. It will be used to compose the final result, keeping the layer list order. More... | |
int | m_interval |
Timeout interval in milliseconds to redraw. More... | |
bool | m_isDrawing |
A flag that indicates if the map display is drawing. More... | |
std::map < te::map::AbstractLayer *, te::qt::widgets::Canvas * > | m_layerCanvasMap |
A map that associates a layer to a canvas. More... | |
std::list < te::map::AbstractLayerPtr > | m_layerList |
The layer list to be displayed. More... | |
QMatrix | m_matrix |
Used to convert screen coordinates to world coordinates. More... | |
QSize | m_oldSize |
Stores the last size of map display on start resize event. More... | |
ResizePolicy | m_resizePolicy |
Resize policy for this map display. More... | |
bool | m_showFeedback |
A flag that indicates if the map display will show drawing feedback. More... | |
int | m_srid |
The display SRS. More... | |
bool | m_synchronous |
A flag that indicates if the map display is synchronous or asynchronous. More... | |
std::vector< DrawLayerThread * > | m_threads |
The set of threads used to draw the layer list. More... | |
QTimer * | m_timer |
Timer to execute redraw on resize action. More... | |
te::map::AlignType | m_vAlign |
The display vertical align. More... | |
std::list < te::map::AbstractLayerPtr > | m_visibleLayers |
The set of visible layers. More... | |
Private Member Functions | |
void | updateTransform () |
Copy Constructor and Assignment Operator | |
Copy constructor and assignment operator not allowed. | |
MultiThreadMapDisplay (const MultiThreadMapDisplay &rhs) | |
Copy constructor not allowed. More... | |
MultiThreadMapDisplay & | operator= (const MultiThreadMapDisplay &rhs) |
Assignment operator not allowed. More... | |
A multi thread Qt4 widget to control the display of a set of layers.
Definition at line 58 of file MultiThreadMapDisplay.h.
|
inherited |
Defines the resize policy for map display.
Enumerator | |
---|---|
Fixed |
Document-me! |
Cut |
Document-me! |
Center |
Document-me! |
Definition at line 77 of file MapDisplay.h.
te::qt::widgets::MultiThreadMapDisplay::MultiThreadMapDisplay | ( | const QSize & | size, |
const bool & | showFeedback = true , |
||
QWidget * | parent = 0 , |
||
Qt::WindowFlags | f = 0 |
||
) |
It constructs an empty multi thread map display with the given dimensions which is a child of parent, with widget flags set to f.
size | The map display size. |
showFeedback | A flag that indicates if the map display will show drawing feedback. |
parent | The widget's parent. |
f | Widget window flags. |
Definition at line 37 of file MultiThreadMapDisplay.cpp.
te::qt::widgets::MultiThreadMapDisplay::MultiThreadMapDisplay | ( | QWidget * | parent = 0 , |
const bool & | showFeedback = true , |
||
Qt::WindowFlags | f = 0 |
||
) |
Definition at line 45 of file MultiThreadMapDisplay.cpp.
te::qt::widgets::MultiThreadMapDisplay::~MultiThreadMapDisplay | ( | ) |
Destructor.
Definition at line 53 of file MultiThreadMapDisplay.cpp.
References te::common::FreeContents().
|
private |
Copy constructor not allowed.
rhs | The right-hand-side copy that would be used to copy from. |
|
protectedvirtualinherited |
It adjusts the map display extent based on resize policy.
oldSize | The size before the resize. |
size | The size after the resize. |
Definition at line 369 of file MapDisplay.cpp.
References te::qt::widgets::MapDisplay::Center, te::qt::widgets::MapDisplay::Cut, te::qt::widgets::MapDisplay::Fixed, te::gm::Envelope::getCenter(), te::gm::Envelope::m_llx, te::gm::Envelope::m_lly, te::gm::Envelope::m_urx, te::gm::Envelope::m_ury, te::gm::Coord2D::x, and te::gm::Coord2D::y.
|
virtualinherited |
Definition at line 97 of file MapDisplay.cpp.
References te::map::Canvas::clear(), te::map::GetVisibleLayers(), TE_UNKNOWN_SRS, te::gm::Envelope::transform(), and te::gm::Envelope::Union().
|
signalinherited |
this signal is issued to others draw on this display.
|
signalinherited |
This signal is sent to others know that the projection was changed.
|
protectedvirtualinherited |
It displays the given layer.
layer | The layer that will be drawn. |
painter | The painter that will composed the draw result. |
Definition at line 237 of file MapDisplay.cpp.
References te::map::AbstractLayer::draw(), te::common::TreeItem::getChild(), te::common::TreeItem::getChildrenCount(), te::qt::widgets::Canvas::getDevice(), te::map::AbstractLayer::getVisibility(), and te::map::NOT_VISIBLE.
|
signal |
This signal is emitted when the draw process ends. i.e. when all layers have been drawn.
errors | A map that indicates the errors that could be occurred during the draw process. i.e layer id -> error message |
|
signalinherited |
This signal is emitted when the map display extent changed.
|
virtualinherited |
Gets the map display background color.
Definition at line 333 of file MapDisplay.cpp.
|
protectedvirtualinherited |
It retrieves an associated canvas to the given layer.
layer | The layer for wich we want to get an associated canvas. |
Definition at line 269 of file MapDisplay.cpp.
References te::qt::widgets::Canvas::calcAspectRatio().
|
virtualinherited |
It returns the map display pixmap.
Definition at line 217 of file MapDisplay.cpp.
|
virtualinherited |
It returns the map display draft pixmap.
Definition at line 222 of file MapDisplay.cpp.
Referenced by te::qt::widgets::ClippingWizardPage::drawGeom(), te::qt::widgets::MixtureModelWizardPage::drawMarks(), te::qt::widgets::ROIManagerWidget::drawROISet(), te::qt::widgets::TiePointLocatorWidget::drawTiePoints(), te::qt::widgets::TiePointsLocatorDialog::on_mapDisplay1_extentChanged(), te::qt::widgets::TiePointsLocatorDialog::on_mapDisplay2_extentChanged(), and te::qt::widgets::ROIManagerWidget::onROITreItemClicked().
|
virtualinherited |
It returns the world extent showned by the MapDisplay.
Implements te::map::AbstractMapDisplay.
Definition at line 63 of file MapDisplay.cpp.
Referenced by te::qt::widgets::ClippingWizardPage::drawGeom(), te::qt::widgets::MixtureModelWizardPage::drawMarks(), te::qt::widgets::ROIManagerWidget::drawROISet(), te::qt::widgets::TiePointLocatorWidget::drawTiePoints(), te::qt::widgets::TiePointsLocatorDialog::on_autoAcquireTiePointsPushButton_clicked(), te::qt::widgets::TiePointsLocatorDialog::on_mapDisplay1_extentChanged(), te::qt::widgets::TiePointsLocatorDialog::on_mapDisplay2_extentChanged(), te::qt::plugins::edit::ApplicationListener::onApplicationTriggered(), te::qt::af::BaseApplication::onLayerPanToSelectedOnMapDisplayTriggered(), te::qt::widgets::ROIManagerWidget::onROITreItemClicked(), te::qt::widgets::TiePointsLocatorDialog::refreshMapDisplay1(), te::qt::widgets::TiePointsLocatorDialog::refreshMapDisplay2(), and te::qt::widgets::TimeSliderWidget::TimeSliderWidget().
|
virtualinherited |
It returns the MapDisplay current horizontal align.
Implements te::map::AbstractMapDisplay.
Definition at line 47 of file MapDisplay.cpp.
|
virtualinherited |
It returns the MapDisplay current height in pixels.
Implements te::map::AbstractMapDisplay.
Definition at line 196 of file MapDisplay.cpp.
Referenced by te::qt::plugins::edit::ApplicationListener::onApplicationTriggered().
|
virtualinherited |
It returns the MapDisplay current height in millimeters.
Implements te::map::AbstractMapDisplay.
Definition at line 206 of file MapDisplay.cpp.
|
virtualinherited |
It return the Spatial Reference System used by the Map Display.
Implements te::map::AbstractMapDisplay.
Definition at line 73 of file MapDisplay.cpp.
Referenced by te::qt::widgets::Measure::Measure(), te::qt::af::BaseApplication::onLayerFitOnMapDisplayTriggered(), te::qt::af::BaseApplication::onLayerPanToSelectedOnMapDisplayTriggered(), te::qt::widgets::ROIManagerWidget::onPointPicked(), and te::qt::widgets::TimeSliderWidget::TimeSliderWidget().
|
virtualinherited |
It returns the MapDisplay current vertical align.
Implements te::map::AbstractMapDisplay.
Definition at line 52 of file MapDisplay.cpp.
|
virtualinherited |
It returns the MapDisplay current width in pixels.
Implements te::map::AbstractMapDisplay.
Definition at line 191 of file MapDisplay.cpp.
Referenced by te::qt::plugins::edit::ApplicationListener::onApplicationTriggered().
|
virtualinherited |
It returns the MapDisplay current width in millimeters.
Implements te::map::AbstractMapDisplay.
Definition at line 201 of file MapDisplay.cpp.
|
inherited |
Returns if the map display is drawing.
Definition at line 343 of file MapDisplay.cpp.
|
protectedslot |
|
protectedvirtualslotinherited |
Definition at line 348 of file MapDisplay.cpp.
Referenced by te::qt::widgets::MapDisplay::MapDisplay().
|
private |
Assignment operator not allowed.
rhs | The right-hand-side copy that would be used to copy from. |
|
protectedvirtualinherited |
It assembles the final image and draws the widget.
e | The event received by this widget. |
Definition at line 294 of file MapDisplay.cpp.
|
virtual |
It updates the contents in the map display.
Reimplemented from te::qt::widgets::MapDisplay.
Definition at line 75 of file MultiThreadMapDisplay.cpp.
References te::map::GetVisibleLayers().
|
protectedvirtualinherited |
It resizes all canvas of map display.
Definition at line 287 of file MapDisplay.cpp.
|
protectedvirtualinherited |
This event handler receives widget resize events wich are passed in the event parameter.
e | The resize event. |
Definition at line 304 of file MapDisplay.cpp.
|
virtualinherited |
It will set the align rendering of objects into the map display. Just successive drawings will be affected by this modification.
h | The new horizontal align. |
v | The new vertical align. |
Implements te::map::AbstractMapDisplay.
Definition at line 57 of file MapDisplay.cpp.
|
virtualinherited |
Sets the map display background color.
color | The color. |
Definition at line 338 of file MapDisplay.cpp.
Referenced by te::qt::af::MapDisplay::MapDisplay().
|
virtual |
It sets the world visible area and refreshes the contents in the map display.
If the given area is not proportional to the device width and height, the MapDisplay will change it in order to preserve the aspect ratio.
e | The world visible area. |
doRefresh | If true the display will refresh its contents. |
Reimplemented from te::qt::widgets::MapDisplay.
Definition at line 58 of file MultiThreadMapDisplay.cpp.
References te::map::MapDisplay::setExtent().
|
virtualinherited |
It sets the layer list to be showed in the Map Display.
layers | The layer list. |
Implements te::map::AbstractMapDisplay.
Definition at line 42 of file MapDisplay.cpp.
Referenced by te::qt::widgets::MixtureModelDialog::MixtureModelDialog(), and te::qt::widgets::TiePointsLocatorDialog::TiePointsLocatorDialog().
|
virtualinherited |
Sets the timeout interval in milliseconds to redraw on resize event.
msec | The timeout interval in milliseconds. |
Definition at line 232 of file MapDisplay.cpp.
|
virtualinherited |
Sets the resize policy to this map display.
policy | The resize policy. |
Definition at line 227 of file MapDisplay.cpp.
Referenced by te::qt::widgets::EyeBirdMapDisplayWidget::EyeBirdMapDisplayWidget(), te::qt::af::BaseApplication::makeDialog(), te::qt::widgets::MixtureModelDialog::MixtureModelDialog(), te::qt::widgets::RasterNavigatorWidget::RasterNavigatorWidget(), te::qt::widgets::TiePointsLocatorDialog::TiePointsLocatorDialog(), and te::qt::widgets::ZoomInMapDisplayWidget::ZoomInMapDisplayWidget().
|
virtualinherited |
It sets a new Spatial Reference System to be used by the Map Display.
It will also convert the current envelope coordinates to the new SRS. This may cause changes to the world visible area. In this case, the extent will be updated and new internal transformation function will be calculated.
srid | The new Spatial Reference System to be used by the Map Display. |
doRefresh | If true the display will refresh its contents. |
Reimplemented from te::map::MapDisplay.
Definition at line 211 of file MapDisplay.cpp.
References te::map::MapDisplay::setSRID().
Referenced by te::qt::af::MapDisplay::MapDisplay(), te::qt::widgets::MixtureModelDialog::MixtureModelDialog(), te::qt::af::BaseApplication::onLayerFitOnMapDisplayTriggered(), te::qt::widgets::TiePointsLocatorDialog::TiePointsLocatorDialog(), and te::qt::widgets::TimeSliderWidget::TimeSliderWidget().
void te::qt::widgets::MultiThreadMapDisplay::setSynchronous | ( | bool | on | ) |
Definition at line 135 of file MultiThreadMapDisplay.cpp.
|
protectedslot |
Definition at line 174 of file MultiThreadMapDisplay.cpp.
|
virtual |
Transforms the given point, in screen coordinates, to a point in world coordinates.
p | A point in screen coordinates. |
Reimplemented from te::qt::widgets::MapDisplay.
Definition at line 127 of file MultiThreadMapDisplay.cpp.
|
private |
Definition at line 140 of file MultiThreadMapDisplay.cpp.
|
protectedinherited |
Background color.
Definition at line 288 of file MapDisplay.h.
Referenced by te::qt::widgets::MapDisplay::MapDisplay().
|
protectedinherited |
This pixmap will be the result of all canvas pixmap drawing, i. e., the result of drawing all visible layers.
Definition at line 286 of file MapDisplay.h.
Referenced by te::qt::widgets::MapDisplay::MapDisplay().
|
protectedinherited |
The draft pixmap can be used to draw some feedback on map display.
Definition at line 287 of file MapDisplay.h.
Referenced by te::qt::widgets::MapDisplay::MapDisplay().
|
protectedinherited |
The display extent.
Definition at line 73 of file MapDisplay.h.
|
protectedinherited |
The display horizontal align.
Definition at line 76 of file MapDisplay.h.
|
protected |
The set of images built by each thread. It will be used to compose the final result, keeping the layer list order.
Definition at line 161 of file MultiThreadMapDisplay.h.
|
protectedinherited |
Timeout interval in milliseconds to redraw.
Definition at line 292 of file MapDisplay.h.
|
protectedinherited |
A flag that indicates if the map display is drawing.
Definition at line 293 of file MapDisplay.h.
|
protectedinherited |
A map that associates a layer to a canvas.
Definition at line 294 of file MapDisplay.h.
|
protectedinherited |
The layer list to be displayed.
Definition at line 74 of file MapDisplay.h.
|
protected |
Used to convert screen coordinates to world coordinates.
Definition at line 163 of file MultiThreadMapDisplay.h.
|
protectedinherited |
Stores the last size of map display on start resize event.
Definition at line 290 of file MapDisplay.h.
|
protectedinherited |
Resize policy for this map display.
Definition at line 289 of file MapDisplay.h.
|
protected |
A flag that indicates if the map display will show drawing feedback.
Definition at line 162 of file MultiThreadMapDisplay.h.
|
protectedinherited |
The display SRS.
Definition at line 75 of file MapDisplay.h.
|
protected |
A flag that indicates if the map display is synchronous or asynchronous.
Definition at line 164 of file MultiThreadMapDisplay.h.
|
protected |
The set of threads used to draw the layer list.
Definition at line 160 of file MultiThreadMapDisplay.h.
|
protectedinherited |
Timer to execute redraw on resize action.
Definition at line 291 of file MapDisplay.h.
Referenced by te::qt::widgets::MapDisplay::MapDisplay().
|
protectedinherited |
The display vertical align.
Definition at line 77 of file MapDisplay.h.
|
protected |
The set of visible layers.
Definition at line 159 of file MultiThreadMapDisplay.h.