Mapper  0.9.0
API documentation
Public Member Functions | Protected Slots | Protected Member Functions | Protected Attributes | List of all members
OpenOrienteering::DrawRectangleTool Class Reference

Tool to draw rectangular PathObjects (but also 45 degree angles). More...

#include <draw_rectangle_tool.h>

Inheritance diagram for OpenOrienteering::DrawRectangleTool:
Inheritance graph
[legend]
Collaboration diagram for OpenOrienteering::DrawRectangleTool:
Collaboration graph
[legend]

Public Member Functions

 DrawRectangleTool (MapEditorController *editor, QAction *tool_action, bool is_helper_tool)
 
 ~DrawRectangleTool () override
 
void init () override
 Performs initialization when the tool becomes active. More...
 
const QCursorgetCursor () const override
 Returns the cursor which should be used for the tool in the editor windows. More...
 
bool mousePressEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) override
 
bool mouseMoveEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) override
 
bool mouseReleaseEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) override
 
bool mouseDoubleClickEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) override
 
bool keyPressEvent (QKeyEvent *event) override
 
bool keyReleaseEvent (QKeyEvent *event) override
 
void draw (QPainter *painter, MapWidget *widget) override
 Draws the tool's visualisation for a map widget. More...
 
- Public Member Functions inherited from OpenOrienteering::DrawLineAndAreaTool
 DrawLineAndAreaTool (MapEditorController *editor, Type type, QAction *tool_action, bool is_helper_tool)
 
 ~DrawLineAndAreaTool () override
 
void leaveEvent (QEvent *event) override
 
void finishEditing () override
 Finishes editing if it is currently in progress. More...
 
- Public Member Functions inherited from OpenOrienteering::MapEditorTool
 MapEditorTool (MapEditorController *editor, Type type, QAction *tool_action=nullptr)
 Constructs a new MapEditorTool. More...
 
 ~MapEditorTool () override
 Destructs the MapEditorTool. More...
 
virtual void deactivate ()
 Makes this tool inactive in the editor. More...
 
virtual void switchToDefaultDrawTool (const Symbol *symbol) const
 Switch to a default draw tool for the given symbol. More...
 
virtual void focusOutEvent (QFocusEvent *event)
 
virtual bool inputMethodEvent (QInputMethodEvent *event)
 
virtual QVariant inputMethodQuery (Qt::InputMethodQuery property, const QVariant &argument) const
 
virtual bool gestureEvent (QGestureEvent *event, MapWidget *widget)
 
virtual void gestureStarted ()
 This is called to signal the start of a gesture. More...
 
Type toolType () const
 Returns the type of this tool. More...
 
QActiontoolAction () const
 Returns the action which represents this tool. More...
 
bool usesTouchCursor () const
 Returns whether to use the touch helper cursor for this tool. More...
 
Mapmap () const
 Returns the map being edited. More...
 
MapWidgetmapWidget () const
 Returns the map widget being operated on. More...
 
MainWindowmainWindow () const
 Returns the main window the controller is attached to. More...
 
QWidgetwindow () const
 Returns the main window the controller is attached to as a QWidget. More...
 
bool drawOnRightClickEnabled () const
 Returns true if Mapper is configured to finish drawing on right click. More...
 
bool editingInProgress () const
 Returns whether an editing operation is currently in progress. More...
 
bool isDrawTool () const
 Returns true if the given tool is for drawing new objects. More...
 
const PointHandlespointHandles () const
 Returns the point handles utility for this tool. More...
 
unsigned int scaleFactor () const
 The factor by which all drawing shall be scaled. More...
 
qreal clickTolerance () const
 A value representing how close the user must click or hover to select a point. More...
 
int startDragDistance () const
 The number of pixels the mouse has to be moved to start dragging. More...
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
 QObject (QObject *parent)
 
virtual ~QObject ()
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectListchildren () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
qobject_cast (QObject *object)
 
qobject_cast (const QObject *object)
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
 Q_CLASSINFO (Name, Value)
 
 Q_INTERFACES (...)
 
 Q_PROPERTY (...)
 
 Q_ENUMS (...)
 
 Q_FLAGS (...)
 
 Q_ENUM (...)
 
 Q_FLAG (...)
 
 Q_ENUM_NS (...)
 
 Q_FLAG_NS (...)
 
 Q_OBJECT Q_OBJECT
 
 Q_GADGET Q_GADGET
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SLOTS Q_SLOTS
 
 Q_SLOT Q_SLOT
 
 Q_EMIT Q_EMIT
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 

Protected Slots

void updateDirtyRect ()
 
- Protected Slots inherited from OpenOrienteering::DrawLineAndAreaTool
virtual void setDrawingSymbol (const OpenOrienteering::Symbol *symbol)
 

Protected Member Functions

void finishDrawing () override
 Finishes drawing, creating a new undo step. More...
 
void abortDrawing () override
 Aborts drawing. More...
 
void undoLastPoint ()
 Deletes the last drawn point. More...
 
void pickDirection (const MapCoordF &coord, MapWidget *widget)
 Picks a direction from an existing object. More...
 
bool drawingParallelTo (double angle) const
 Checks if the current drawing direction is parallel to the angle. More...
 
void updateHover (bool mouse_down)
 Updates the preview after cursor position changes. More...
 
MapCoordF calculateClosingVector () const
 Calculates the closing vector. More...
 
void deleteClosePoint ()
 Deletes all points from the preview path which were introduced to close it temporarily (for preview visualization). More...
 
void updateRectangle ()
 Recalculates the rectangle shape based on the current input. More...
 
void updateStatusText ()
 
- Protected Member Functions inherited from OpenOrienteering::DrawLineAndAreaTool
void createPreviewPoints ()
 Creates point objects and symbols which serve as a preview for drawing the selected symbol. More...
 
void addPreviewPointSymbols (const Symbol *symbol)
 Creates preview point symbols for the given symbol. More...
 
void addPreviewPointSymbolsForBorder (const LineSymbol *line, const LineSymbolBorder *border)
 Creates preview point symbols for the border of the given line symbol. More...
 
void setPreviewPointsPosition (const MapCoordF &map_coord, int points_index=0)
 Sets the position of the preview objects (after cursor movements). More...
 
void hidePreviewPoints ()
 Hides all preview points. More...
 
void startDrawing ()
 Does necessary preparations to start drawing. More...
 
virtual void updatePreviewPath ()
 Calls update() on the preview path, correctly handling its renderables. More...
 
void finishDrawing (PathObject *append_to_object)
 Finishes drawing, appending to the given object if not nullptr. More...
 
void deletePreviewObjects ()
 Deletes preview all objects and points. More...
 
void includePreviewRects (QRectF &rect)
 Extends the rect to conver all preview objects. More...
 
void drawPreviewObjects (QPainter *painter, MapWidget *widget)
 Draws the preview objects. More...
 
- Protected Member Functions inherited from OpenOrienteering::MapEditorTool
void useTouchCursor (bool enabled)
 Sets the flag which indicates whether the touch cursor shall be used. More...
 
void setEditingInProgress (bool state)
 Sets a flag which indicates an active editing operation. More...
 
void setStatusBarText (const QString &text)
 Sends text to the window's status bar. More...
 
void drawSelectionBox (QPainter *painter, MapWidget *widget, const MapCoordF &corner1, const MapCoordF &corner2) const
 Draws a selection box for the given corner points. More...
 
MapCoordVector::size_type findHoverPoint (const QPointF &cursor, const MapWidget *widget, const Object *object, bool include_curve_handles, MapCoordF *out_handle_pos=nullptr) const
 Finds and returns the point of the given object over which the cursor hovers. More...
 
bool containsDrawingButtons (Qt::MouseButtons buttons) const
 Checks if the given buttons contain one which controls drawing. More...
 
bool isDrawingButton (Qt::MouseButton button) const
 Checks if the given event was triggered by press or release of a mouse button for drawing. More...
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 

Protected Attributes

QPoint click_pos
 
MapCoordF click_pos_map
 
QPoint cur_pos
 
MapCoordF cur_pos_map
 
MapCoordF constrained_pos_map
 
bool dragging
 
bool draw_dash_points = true
 
bool shift_pressed = false
 
bool ctrl_pressed = false
 
bool picked_direction = false
 
bool snapped_to_line = false
 
MapCoord snapped_to_line_a
 
MapCoord snapped_to_line_b
 
bool no_more_effect_on_click = false
 This can be set to true when a mouse button is pressed down to disable all actions for the next mouse button release. More...
 
std::vector< double > angles
 List of angles for first, second, etc. More...
 
MapCoordF forward_vector
 Vector in forward drawing direction. More...
 
QScopedPointer< ConstrainAngleToolHelperangle_helper
 
QScopedPointer< SnappingToolHelpersnap_helper
 
MapWidgetcur_map_widget
 
QPointer< KeyButtonBarkey_button_bar
 
QPointer< QToolButtondash_points_button
 
- Protected Attributes inherited from OpenOrienteering::DrawLineAndAreaTool
std::vector< PointSymbol * > preview_point_symbols
 
std::vector< boolpreview_point_symbols_external
 
std::vector< PointObject * > preview_points [2]
 
std::unique_ptr< CombinedSymbolpath_combination
 
std::unique_ptr< MapRenderablesrenderables
 
const Symboldrawing_symbol = nullptr
 
PathObjectpreview_path = nullptr
 
int preview_point_radius = 0
 
bool preview_points_shown = false
 
bool is_helper_tool = false
 
- Protected Attributes inherited from OpenOrienteering::MapEditorTool
MapEditorController *const editor
 The map editor which uses this tool. More...
 

Additional Inherited Members

- Public Types inherited from OpenOrienteering::MapEditorTool
enum  Type {
  EditPoint = 1, EditLine = 2, DrawPoint = 3, DrawPath = 4,
  DrawCircle = 5, DrawRectangle = 6, DrawText = 7, DrawFreehand = 8,
  Pan = 9, Scribble = 10, Other = 0
}
 Types of tool. More...
 
- Signals inherited from OpenOrienteering::DrawLineAndAreaTool
void dirtyRectChanged (const QRectF &rect)
 
void pathAborted ()
 
void pathFinished (OpenOrienteering::PathObject *path)
 
- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Static Public Attributes inherited from OpenOrienteering::MapEditorTool
static const QRgb inactive_color = qRgb(0, 0, 255)
 Color for normal (not active) elements. More...
 
static const QRgb active_color = qRgb(255, 150, 0)
 Color for active elements (which are hovered over by the cursor) More...
 
static const QRgb selection_color = qRgb(210, 0, 229)
 Color for selected elements. More...
 
- Static Protected Member Functions inherited from OpenOrienteering::MapEditorTool
static QCursor scaledToScreen (const QCursor &unscaled_cursor)
 Returns a cursor which is scaled to the screen's resolution. More...
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Tool to draw rectangular PathObjects (but also 45 degree angles).

Constructor & Destructor Documentation

◆ DrawRectangleTool()

OpenOrienteering::DrawRectangleTool::DrawRectangleTool ( MapEditorController editor,
QAction tool_action,
bool  is_helper_tool 
)

◆ ~DrawRectangleTool()

OpenOrienteering::DrawRectangleTool::~DrawRectangleTool ( )
override

Member Function Documentation

◆ abortDrawing()

void OpenOrienteering::DrawRectangleTool::abortDrawing ( )
overrideprotectedvirtual

Aborts drawing.

Reimplemented from OpenOrienteering::DrawLineAndAreaTool.

◆ calculateClosingVector()

MapCoordF OpenOrienteering::DrawRectangleTool::calculateClosingVector ( ) const
protected

Calculates the closing vector.

The "closing vector" gives the direction from the current drawing position perpendicular to the start point.

◆ deleteClosePoint()

void OpenOrienteering::DrawRectangleTool::deleteClosePoint ( )
protected

Deletes all points from the preview path which were introduced to close it temporarily (for preview visualization).

◆ draw()

void OpenOrienteering::DrawRectangleTool::draw ( QPainter painter,
MapWidget widget 
)
overridevirtual

Draws the tool's visualisation for a map widget.

All dynamic drawing must be done here using the given painter. Drawing is only possible in the area specified by calling map->setDrawingBoundingBox().

Reimplemented from OpenOrienteering::MapEditorTool.

◆ drawingParallelTo()

bool OpenOrienteering::DrawRectangleTool::drawingParallelTo ( double  angle) const
protected

Checks if the current drawing direction is parallel to the angle.

◆ finishDrawing()

void OpenOrienteering::DrawRectangleTool::finishDrawing ( )
overrideprotectedvirtual

Finishes drawing, creating a new undo step.

Reimplemented from OpenOrienteering::DrawLineAndAreaTool.

◆ getCursor()

const QCursor & OpenOrienteering::DrawRectangleTool::getCursor ( ) const
overridevirtual

Returns the cursor which should be used for the tool in the editor windows.

Todo:
How to change the cursor for all map widgets while a tool is active?

Implements OpenOrienteering::MapEditorTool.

◆ init()

void OpenOrienteering::DrawRectangleTool::init ( )
overridevirtual

Performs initialization when the tool becomes active.

This method is called by the map editor when the tool shall become active. Reimplementations may make changes to the map editor or window (e.g. set status bar text) which are not allowed in the constructor.

Note that this method by call several times, without any deinitialization in between.

Reimplementations shall call parent implementations.

The implementation in this class marks the tool's action as checked.

Reimplemented from OpenOrienteering::MapEditorTool.

◆ keyPressEvent()

bool OpenOrienteering::DrawRectangleTool::keyPressEvent ( QKeyEvent event)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ keyReleaseEvent()

bool OpenOrienteering::DrawRectangleTool::keyReleaseEvent ( QKeyEvent event)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ mouseDoubleClickEvent()

bool OpenOrienteering::DrawRectangleTool::mouseDoubleClickEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ mouseMoveEvent()

bool OpenOrienteering::DrawRectangleTool::mouseMoveEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ mousePressEvent()

bool OpenOrienteering::DrawRectangleTool::mousePressEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ mouseReleaseEvent()

bool OpenOrienteering::DrawRectangleTool::mouseReleaseEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ pickDirection()

void OpenOrienteering::DrawRectangleTool::pickDirection ( const MapCoordF coord,
MapWidget widget 
)
protected

Picks a direction from an existing object.

◆ undoLastPoint()

void OpenOrienteering::DrawRectangleTool::undoLastPoint ( )
protected

Deletes the last drawn point.

Calls updateRectangle() which will set the than-last point to constrained_pos_map.

◆ updateDirtyRect

void OpenOrienteering::DrawRectangleTool::updateDirtyRect ( )
protectedslot

◆ updateHover()

void OpenOrienteering::DrawRectangleTool::updateHover ( bool  mouse_down)
protected

Updates the preview after cursor position changes.

May call updateRectangle() internally.

◆ updateRectangle()

void OpenOrienteering::DrawRectangleTool::updateRectangle ( )
protected

Recalculates the rectangle shape based on the current input.

This will set the "last" point to constrained_pos_map.

◆ updateStatusText()

void OpenOrienteering::DrawRectangleTool::updateStatusText ( )
protected

Member Data Documentation

◆ angle_helper

QScopedPointer<ConstrainAngleToolHelper> OpenOrienteering::DrawRectangleTool::angle_helper
protected

◆ angles

std::vector< double > OpenOrienteering::DrawRectangleTool::angles
protected

List of angles for first, second, etc.

edge. Includes the currently edited angle. The index of currently edited point in preview_path is angles.size().

◆ click_pos

QPoint OpenOrienteering::DrawRectangleTool::click_pos
protected

◆ click_pos_map

MapCoordF OpenOrienteering::DrawRectangleTool::click_pos_map
protected

◆ constrained_pos_map

MapCoordF OpenOrienteering::DrawRectangleTool::constrained_pos_map
protected

◆ ctrl_pressed

bool OpenOrienteering::DrawRectangleTool::ctrl_pressed = false
protected

◆ cur_map_widget

MapWidget* OpenOrienteering::DrawRectangleTool::cur_map_widget
protected

◆ cur_pos

QPoint OpenOrienteering::DrawRectangleTool::cur_pos
protected

◆ cur_pos_map

MapCoordF OpenOrienteering::DrawRectangleTool::cur_pos_map
protected

◆ dash_points_button

QPointer<QToolButton> OpenOrienteering::DrawRectangleTool::dash_points_button
protected

◆ dragging

bool OpenOrienteering::DrawRectangleTool::dragging
protected

◆ draw_dash_points

bool OpenOrienteering::DrawRectangleTool::draw_dash_points = true
protected

◆ forward_vector

MapCoordF OpenOrienteering::DrawRectangleTool::forward_vector
protected

Vector in forward drawing direction.

◆ key_button_bar

QPointer<KeyButtonBar> OpenOrienteering::DrawRectangleTool::key_button_bar
protected

◆ no_more_effect_on_click

bool OpenOrienteering::DrawRectangleTool::no_more_effect_on_click = false
protected

This can be set to true when a mouse button is pressed down to disable all actions for the next mouse button release.

◆ picked_direction

bool OpenOrienteering::DrawRectangleTool::picked_direction = false
protected

◆ shift_pressed

bool OpenOrienteering::DrawRectangleTool::shift_pressed = false
protected

◆ snap_helper

QScopedPointer<SnappingToolHelper> OpenOrienteering::DrawRectangleTool::snap_helper
protected

◆ snapped_to_line

bool OpenOrienteering::DrawRectangleTool::snapped_to_line = false
protected

◆ snapped_to_line_a

MapCoord OpenOrienteering::DrawRectangleTool::snapped_to_line_a
protected

◆ snapped_to_line_b

MapCoord OpenOrienteering::DrawRectangleTool::snapped_to_line_b
protected

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