All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
te::qt::widgets::MultiThreadMapDisplay Class Reference

A multi thread Qt4 widget to control the display of a set of layers. More...

#include <MultiThreadMapDisplay.h>

Inheritance diagram for te::qt::widgets::MultiThreadMapDisplay:
te::qt::widgets::MapDisplay te::map::MapDisplay te::map::AbstractMapDisplay

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::EnvelopegetExtent () 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::CanvasgetCanvas (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...
 
MultiThreadMapDisplayoperator= (const MultiThreadMapDisplay &rhs)
 Assignment operator not allowed. More...
 

Detailed Description

A multi thread Qt4 widget to control the display of a set of layers.

See also
MapDisplay, te::map::AbstractMapDisplay, te::map::MapDisplay

Definition at line 58 of file MultiThreadMapDisplay.h.

Member Enumeration Documentation

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.

Constructor & Destructor Documentation

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.

Parameters
sizeThe map display size.
showFeedbackA flag that indicates if the map display will show drawing feedback.
parentThe widget's parent.
fWidget 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().

te::qt::widgets::MultiThreadMapDisplay::MultiThreadMapDisplay ( const MultiThreadMapDisplay rhs)
private

Copy constructor not allowed.

Parameters
rhsThe right-hand-side copy that would be used to copy from.

Member Function Documentation

void te::qt::widgets::MapDisplay::adjustExtent ( const QSize &  oldSize,
const QSize &  size 
)
protectedvirtualinherited

It adjusts the map display extent based on resize policy.

Parameters
oldSizeThe size before the resize.
sizeThe 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.

void te::qt::widgets::MapDisplay::changeData ( te::map::AbstractLayerPtr  al,
int  nsrid = TE_UNKNOWN_SRS 
)
virtualinherited
void te::qt::widgets::MapDisplay::displayPaintEvent ( QPainter *  )
signalinherited

this signal is issued to others draw on this display.

void te::qt::widgets::MapDisplay::displaySridChanged ( )
signalinherited

This signal is sent to others know that the projection was changed.

void te::qt::widgets::MapDisplay::draw ( te::map::AbstractLayer layer,
QPainter &  painter 
)
protectedvirtualinherited

It displays the given layer.

Parameters
layerThe layer that will be drawn.
painterThe painter that will composed the draw result.
Note
This method is called recursively for each child of the given layer.
It may need to retrieve data in order top display the layers.

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.

void te::qt::widgets::MultiThreadMapDisplay::drawLayersFinished ( const QMap< QString, QString > &  errors)
signal

This signal is emitted when the draw process ends. i.e. when all layers have been drawn.

Parameters
errorsA map that indicates the errors that could be occurred during the draw process. i.e layer id -> error message
Note
The signal parameter maps the layer id (that generated the error) to an error message.
The signal parameter can be empty. It indicates that no error occurred.
void te::qt::widgets::MapDisplay::extentChanged ( )
signalinherited

This signal is emitted when the map display extent changed.

QColor te::qt::widgets::MapDisplay::getBackgroundColor ( )
virtualinherited

Gets the map display background color.

Returns
The map display background color.

Definition at line 333 of file MapDisplay.cpp.

te::qt::widgets::Canvas * te::qt::widgets::MapDisplay::getCanvas ( te::map::AbstractLayer layer,
int  type = QInternal::Pixmap 
)
protectedvirtualinherited

It retrieves an associated canvas to the given layer.

Parameters
layerThe layer for wich we want to get an associated canvas.
Note
If there is not a canvas associated to the given layer, one will be created.
Returns
A canvas associated to the layer.

Definition at line 269 of file MapDisplay.cpp.

References te::qt::widgets::Canvas::calcAspectRatio().

QPixmap * te::qt::widgets::MapDisplay::getDisplayPixmap ( ) const
virtualinherited

It returns the map display pixmap.

Returns
The map display pixmap.
Note
The caller of this method will NOT take the ownership of the returned pixmap.

Definition at line 217 of file MapDisplay.cpp.

QPixmap * te::qt::widgets::MapDisplay::getDraftPixmap ( ) const
virtualinherited

It returns the map display draft pixmap.

Returns
The map display draft pixmap.
Note
This pixmap can be used to draw some feedback on map display.
The caller of this method will NOT take the ownership of the returned 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().

te::map::AlignType te::map::MapDisplay::getHAlign ( ) const
virtualinherited

It returns the MapDisplay current horizontal align.

Returns
The MapDisplay current horizontal align.

Implements te::map::AbstractMapDisplay.

Definition at line 47 of file MapDisplay.cpp.

unsigned int te::qt::widgets::MapDisplay::getHeight ( ) const
virtualinherited

It returns the MapDisplay current height in pixels.

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().

double te::qt::widgets::MapDisplay::getHeightMM ( ) const
virtualinherited

It returns the MapDisplay current height in millimeters.

Returns
The MapDisplay current height in millimeters.

Implements te::map::AbstractMapDisplay.

Definition at line 206 of file MapDisplay.cpp.

int te::map::MapDisplay::getSRID ( ) const
virtualinherited
te::map::AlignType te::map::MapDisplay::getVAlign ( ) const
virtualinherited

It returns the MapDisplay current vertical align.

Returns
The MapDisplay current vertical align.

Implements te::map::AbstractMapDisplay.

Definition at line 52 of file MapDisplay.cpp.

unsigned int te::qt::widgets::MapDisplay::getWidth ( ) const
virtualinherited

It returns the MapDisplay current width in pixels.

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().

double te::qt::widgets::MapDisplay::getWidthMM ( ) const
virtualinherited

It returns the MapDisplay current width in millimeters.

Returns
The MapDisplay current width in millimeters.

Implements te::map::AbstractMapDisplay.

Definition at line 201 of file MapDisplay.cpp.

bool te::qt::widgets::MapDisplay::isDrawing ( ) const
inherited

Returns if the map display is drawing.

Definition at line 343 of file MapDisplay.cpp.

void te::qt::widgets::MultiThreadMapDisplay::onDrawLayerFinished ( const int &  index,
const QImage &  image 
)
protectedslot
void te::qt::widgets::MapDisplay::onResizeTimeout ( )
protectedvirtualslotinherited

Definition at line 348 of file MapDisplay.cpp.

Referenced by te::qt::widgets::MapDisplay::MapDisplay().

MultiThreadMapDisplay& te::qt::widgets::MultiThreadMapDisplay::operator= ( const MultiThreadMapDisplay rhs)
private

Assignment operator not allowed.

Parameters
rhsThe right-hand-side copy that would be used to copy from.
Returns
A reference to this object.
void te::qt::widgets::MapDisplay::paintEvent ( QPaintEvent *  e)
protectedvirtualinherited

It assembles the final image and draws the widget.

Parameters
eThe event received by this widget.

Definition at line 294 of file MapDisplay.cpp.

void te::qt::widgets::MultiThreadMapDisplay::refresh ( )
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().

void te::qt::widgets::MapDisplay::resizeAllCanvas ( )
protectedvirtualinherited

It resizes all canvas of map display.

Definition at line 287 of file MapDisplay.cpp.

void te::qt::widgets::MapDisplay::resizeEvent ( QResizeEvent *  e)
protectedvirtualinherited

This event handler receives widget resize events wich are passed in the event parameter.

Parameters
eThe resize event.

Definition at line 304 of file MapDisplay.cpp.

void te::map::MapDisplay::setAlign ( te::map::AlignType  h,
te::map::AlignType  v 
)
virtualinherited

It will set the align rendering of objects into the map display. Just successive drawings will be affected by this modification.

Parameters
hThe new horizontal align.
vThe new vertical align.
Note
It will not automatically redraw the objects, you must explicit call the setExtent method.

Implements te::map::AbstractMapDisplay.

Definition at line 57 of file MapDisplay.cpp.

void te::qt::widgets::MapDisplay::setBackgroundColor ( const QColor &  color)
virtualinherited

Sets the map display background color.

Parameters
colorThe color.

Definition at line 338 of file MapDisplay.cpp.

Referenced by te::qt::af::MapDisplay::MapDisplay().

void te::qt::widgets::MultiThreadMapDisplay::setExtent ( te::gm::Envelope e,
bool  doRefresh = true 
)
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.

Parameters
eThe world visible area.
doRefreshIf true the display will refresh its contents.
Precondition
The world coordinates must be in the map display SRS.

Reimplemented from te::qt::widgets::MapDisplay.

Definition at line 58 of file MultiThreadMapDisplay.cpp.

References te::map::MapDisplay::setExtent().

void te::map::MapDisplay::setLayerList ( const std::list< te::map::AbstractLayerPtr > &  layers)
virtualinherited

It sets the layer list to be showed in the Map Display.

Parameters
layersThe 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().

void te::qt::widgets::MapDisplay::setResizeInterval ( int  msec)
virtualinherited

Sets the timeout interval in milliseconds to redraw on resize event.

Parameters
msecThe timeout interval in milliseconds.

Definition at line 232 of file MapDisplay.cpp.

void te::qt::widgets::MapDisplay::setSRID ( const int &  srid,
bool  doRefresh = true 
)
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.

Parameters
sridThe new Spatial Reference System to be used by the Map Display.
doRefreshIf 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.

void te::qt::widgets::MultiThreadMapDisplay::showFeedback ( const QImage &  image)
protectedslot

Definition at line 174 of file MultiThreadMapDisplay.cpp.

QPointF te::qt::widgets::MultiThreadMapDisplay::transform ( const QPointF &  p)
virtual

Transforms the given point, in screen coordinates, to a point in world coordinates.

Parameters
pA point in screen coordinates.
Returns
The point in world coordinates.
Note
This method will return a null point if the transform can not be done.

Reimplemented from te::qt::widgets::MapDisplay.

Definition at line 127 of file MultiThreadMapDisplay.cpp.

void te::qt::widgets::MultiThreadMapDisplay::updateTransform ( )
private

Definition at line 140 of file MultiThreadMapDisplay.cpp.

Member Data Documentation

QColor te::qt::widgets::MapDisplay::m_backgroundColor
protectedinherited

Background color.

Definition at line 288 of file MapDisplay.h.

Referenced by te::qt::widgets::MapDisplay::MapDisplay().

QPixmap* te::qt::widgets::MapDisplay::m_displayPixmap
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().

QPixmap* te::qt::widgets::MapDisplay::m_draftPixmap
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().

te::gm::Envelope te::map::MapDisplay::m_extent
protectedinherited

The display extent.

Definition at line 73 of file MapDisplay.h.

te::map::AlignType te::map::MapDisplay::m_hAlign
protectedinherited

The display horizontal align.

Definition at line 76 of file MapDisplay.h.

std::map<int, QImage> te::qt::widgets::MultiThreadMapDisplay::m_images
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.

int te::qt::widgets::MapDisplay::m_interval
protectedinherited

Timeout interval in milliseconds to redraw.

Definition at line 292 of file MapDisplay.h.

bool te::qt::widgets::MapDisplay::m_isDrawing
protectedinherited

A flag that indicates if the map display is drawing.

Definition at line 293 of file MapDisplay.h.

std::map<te::map::AbstractLayer*, te::qt::widgets::Canvas*> te::qt::widgets::MapDisplay::m_layerCanvasMap
protectedinherited

A map that associates a layer to a canvas.

Definition at line 294 of file MapDisplay.h.

std::list<te::map::AbstractLayerPtr> te::map::MapDisplay::m_layerList
protectedinherited

The layer list to be displayed.

Definition at line 74 of file MapDisplay.h.

QMatrix te::qt::widgets::MultiThreadMapDisplay::m_matrix
protected

Used to convert screen coordinates to world coordinates.

Definition at line 163 of file MultiThreadMapDisplay.h.

QSize te::qt::widgets::MapDisplay::m_oldSize
protectedinherited

Stores the last size of map display on start resize event.

Definition at line 290 of file MapDisplay.h.

ResizePolicy te::qt::widgets::MapDisplay::m_resizePolicy
protectedinherited

Resize policy for this map display.

Definition at line 289 of file MapDisplay.h.

bool te::qt::widgets::MultiThreadMapDisplay::m_showFeedback
protected

A flag that indicates if the map display will show drawing feedback.

Definition at line 162 of file MultiThreadMapDisplay.h.

int te::map::MapDisplay::m_srid
protectedinherited

The display SRS.

Definition at line 75 of file MapDisplay.h.

bool te::qt::widgets::MultiThreadMapDisplay::m_synchronous
protected

A flag that indicates if the map display is synchronous or asynchronous.

Definition at line 164 of file MultiThreadMapDisplay.h.

std::vector<DrawLayerThread*> te::qt::widgets::MultiThreadMapDisplay::m_threads
protected

The set of threads used to draw the layer list.

Definition at line 160 of file MultiThreadMapDisplay.h.

QTimer* te::qt::widgets::MapDisplay::m_timer
protectedinherited

Timer to execute redraw on resize action.

Definition at line 291 of file MapDisplay.h.

Referenced by te::qt::widgets::MapDisplay::MapDisplay().

te::map::AlignType te::map::MapDisplay::m_vAlign
protectedinherited

The display vertical align.

Definition at line 77 of file MapDisplay.h.

std::list<te::map::AbstractLayerPtr> te::qt::widgets::MultiThreadMapDisplay::m_visibleLayers
protected

The set of visible layers.

Definition at line 159 of file MultiThreadMapDisplay.h.


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