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 void getDPI (int &dpiX, int &dpiY) const
 Returns the current values of the DPI in X-axis and in Y-axis. 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 double getScale () const
 Calculates and return the current scale. 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 restoreDPI ()
 Returns the default value of the DPI. In this case, the values from the device will be acquired. 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 setOverrideDPI (int dpiX, int dpiY)
 Overrides the values of the DPI that had been acquired from the device. This is done in order to make the scale be correctly computed and allows the correct computation of sizes in millimeters. 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...
 
virtual bool setScale (const double &scale)
 Defines the scale and calculates envelope based on the requested scale. 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...
 
void updateLayer (te::map::AbstractLayerPtr layer)
 
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::AbstractLayerPtrm_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...
 
int m_overridedDpiX
 Overrided value of the DPI in the X-axis, so the scale can be correctly computed. More...
 
int m_overridedDpiY
 Overrided value of the DPI in the X-axis, so the scale can be correctly computed. More...
 
ResizePolicy m_resizePolicy
 Resize policy for this map display. More...
 
double m_scale
 Current calculated scale. 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::AbstractLayerPtrm_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.
te::qt::widgets::MultiThreadMapDisplay::MultiThreadMapDisplay ( QWidget *  parent = 0,
const bool &  showFeedback = true,
Qt::WindowFlags  f = 0 
)
te::qt::widgets::MultiThreadMapDisplay::~MultiThreadMapDisplay ( )

Destructor.

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

virtual 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.
virtual void te::qt::widgets::MapDisplay::changeData ( te::map::AbstractLayerPtr  ,
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.

virtual 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.
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.

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

Gets the map display background color.

Returns
The map display background color.
virtual 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.
virtual 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.
virtual void te::qt::widgets::MapDisplay::getDPI ( int &  dpiX,
int &  dpiY 
) const
virtualinherited

Returns the current values of the DPI in X-axis and in Y-axis.

virtual 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.
virtual const te::gm::Envelope& te::map::MapDisplay::getExtent ( ) const
virtualinherited

It returns the world extent showned by the MapDisplay.

Returns
The world extent showned by the MapDisplay or NULL if none is set.
Note
The extent coordinates are in the Map Display SRS.

Implements te::map::AbstractMapDisplay.

virtual 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.

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.

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.

virtual double te::qt::widgets::MapDisplay::getScale ( ) const
virtualinherited

Calculates and return the current scale.

virtual int te::map::MapDisplay::getSRID ( ) const
virtualinherited

It return the Spatial Reference System used by the Map Display.

Returns
The Spatial Reference System used by the Map Display.

Implements te::map::AbstractMapDisplay.

virtual 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.

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.

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.

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

Returns if the map display is drawing.

void te::qt::widgets::MultiThreadMapDisplay::onDrawLayerFinished ( const int &  index,
const QImage &  image 
)
protectedslot
virtual void te::qt::widgets::MapDisplay::onResizeTimeout ( )
protectedvirtualslotinherited
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.
virtual 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.
void te::qt::widgets::MultiThreadMapDisplay::refresh ( )
virtual

It updates the contents in the map display.

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

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

It resizes all canvas of map display.

virtual 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.
virtual void te::qt::widgets::MapDisplay::restoreDPI ( )
virtualinherited

Returns the default value of the DPI. In this case, the values from the device will be acquired.

virtual 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.

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

Sets the map display background color.

Parameters
colorThe color.
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.

virtual 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.

virtual void te::qt::widgets::MapDisplay::setOverrideDPI ( int  dpiX,
int  dpiY 
)
virtualinherited

Overrides the values of the DPI that had been acquired from the device. This is done in order to make the scale be correctly computed and allows the correct computation of sizes in millimeters.

virtual 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.
virtual void te::qt::widgets::MapDisplay::setResizePolicy ( const ResizePolicy policy)
virtualinherited

Sets the resize policy to this map display.

Parameters
policyThe resize policy.
virtual bool te::qt::widgets::MapDisplay::setScale ( const double &  scale)
virtualinherited

Defines the scale and calculates envelope based on the requested scale.

virtual 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.

void te::qt::widgets::MultiThreadMapDisplay::setSynchronous ( bool  on)
void te::qt::widgets::MultiThreadMapDisplay::showFeedback ( const QImage &  image)
protectedslot
virtual 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.

void te::qt::widgets::MultiThreadMapDisplay::updateLayer ( te::map::AbstractLayerPtr  layer)
void te::qt::widgets::MultiThreadMapDisplay::updateTransform ( )
private

Member Data Documentation

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

Background color.

Definition at line 314 of file MapDisplay.h.

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 312 of file MapDisplay.h.

QPixmap* te::qt::widgets::MapDisplay::m_draftPixmap
protectedinherited

The draft pixmap can be used to draw some feedback on map display.

Definition at line 313 of file MapDisplay.h.

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 163 of file MultiThreadMapDisplay.h.

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

Timeout interval in milliseconds to redraw.

Definition at line 318 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 319 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 320 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 165 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 316 of file MapDisplay.h.

int te::qt::widgets::MapDisplay::m_overridedDpiX
protectedinherited

Overrided value of the DPI in the X-axis, so the scale can be correctly computed.

Definition at line 322 of file MapDisplay.h.

int te::qt::widgets::MapDisplay::m_overridedDpiY
protectedinherited

Overrided value of the DPI in the X-axis, so the scale can be correctly computed.

Definition at line 323 of file MapDisplay.h.

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

Resize policy for this map display.

Definition at line 315 of file MapDisplay.h.

double te::qt::widgets::MapDisplay::m_scale
mutableprotectedinherited

Current calculated scale.

Definition at line 321 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 164 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 166 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 162 of file MultiThreadMapDisplay.h.

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

Timer to execute redraw on resize action.

Definition at line 317 of file MapDisplay.h.

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 161 of file MultiThreadMapDisplay.h.


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