Isis 3 Programmer Reference
|
Rubber banding tool. More...
#include <RubberBandTool.h>
Public Types | |
enum | RubberBandMode { AngleMode, CircleMode, EllipseMode, LineMode, RectangleMode, RotatedRectangleMode, PolygonMode, SegmentedLineMode } |
Public Slots | |
void | escapeKeyPress () |
void | activate (bool) |
Activates the tool. More... | |
virtual void | updateTool () |
Updates the tool. More... | |
void | setCubeViewport (MdiCubeViewport *cvp) |
Sets the current viewport to the given cvp. More... | |
Signals | |
void | modeChanged () |
void | bandingComplete () |
void | measureChange () |
void | clearWarningSignal () |
void | toolActivated () |
void | viewportChanged () |
Public Member Functions | |
RubberBandTool (QWidget *parent=NULL) | |
This is the constructor. More... | |
void | enable (RubberBandMode mode, bool showIndicatorColors=false) |
This is called when changing modes or turning on. More... | |
void | disable () |
This is called when something is not using me, so turn off events, reset & repaint to clear the clear. More... | |
void | setDrawActiveViewportOnly (bool activeOnly=false) |
This called to set whether rubber band is drawn on active viewport only rather than all linked viewports. More... | |
QList< QPoint > | vertices () |
This method returns the vertices. More... | |
RubberBandMode | currentMode () |
double | area () |
Angle | angle () |
geos::geom::Geometry * | geometry () |
QRect | rectangle () |
This method returns a rectangle from the vertices set by the RubberBandTool. More... | |
Qt::MouseButton | mouseButton () |
This method returns the mouse button modifier. More... | |
void | paintViewport (MdiCubeViewport *vp, QPainter *painter) |
This is the main paint method for the rubber bands. More... | |
bool | isValid () |
This returns true if we can return complete & valid data. More... | |
bool | figureComplete () |
bool | figureValid () |
bool | figureIsPoint () |
void | enablePoints (unsigned int pixTolerance=2) |
void | enableAllClicks () |
void | clear () |
clears the rubber band! More... | |
void | addTo (ViewportMainWindow *mw) |
Adds the tool to the application. More... | |
void | addTo (ToolPad *toolpad) |
Adds the tool to the toolpad. More... | |
virtual void | addTo (QMenu *menu) |
virtual void | addTo (Workspace *ws) |
Adds the given workspace to the cubeviewport list. More... | |
virtual QString | menuName () const |
Anytime a tool is created, you must give it a name for the menu. More... | |
virtual void | addToPermanent (QToolBar *toolbar) |
void | addToActive (QToolBar *toolbar) |
QString | toolIconDir () const |
returns the path to the icon directory. More... | |
RubberBandTool * | rubberBandTool () |
void | setList (ToolList *currentList) |
Protected Types | |
typedef QVector< MdiCubeViewport *> | CubeViewportList |
A list of cubeviewports. More... | |
Protected Slots | |
void | mouseMove (QPoint p, Qt::MouseButton) |
If tracking is not enabled, this does nothing. More... | |
void | mouseDoubleClick (QPoint p) |
This triggers on a second mouse press. More... | |
void | mouseButtonPress (QPoint p, Qt::MouseButton s) |
If the click is not the left mouse button, this does nothing. More... | |
void | mouseButtonRelease (QPoint p, Qt::MouseButton s) |
If this is not the left mouse button, this does nothing. More... | |
virtual void | rubberBandComplete () |
virtual void | screenPixelsChanged () |
This is called when actions change which pixels from the cube are displayed. More... | |
virtual void | mouseEnter () |
virtual void | mouseMove (QPoint p) |
virtual void | mouseLeave () |
Protected Member Functions | |
void | enableRubberBandTool () |
Anytime a tool is created, you may use the rubber band tool. More... | |
void | scaleChanged () |
virtual void | updateMeasure () |
virtual void | stretchRequested (MdiCubeViewport *, int) |
void | registerTool (MdiCubeViewport *viewport) |
Registers the tool to the viewport. More... | |
MdiCubeViewport * | cubeViewport () const |
Return the current cubeviewport. More... | |
CubeViewportList * | cubeViewportList () const |
Return the list of cubeviewports. More... | |
virtual QAction * | toolPadAction (ToolPad *toolpad) |
Anytime a tool is created, you must setup a tool pad action with it. More... | |
virtual QWidget * | createToolBarWidget (QStackedWidget *parent) |
Anytime a tool is created, you must add it to the tool bar. More... | |
virtual void | addConnections (MdiCubeViewport *cvp) |
Anytime a tool is created, you must add the connections for it. More... | |
virtual void | removeConnections (MdiCubeViewport *cvp) |
Anytime a tool is created, you must be able to remove it's connections. More... | |
Workspace * | workspace () |
Private Member Functions | |
QPoint | snapMouse (QPoint) |
moves the mouse's location p to the nearest axis More... | |
void | repaint () |
This method will call the viewport's repaint if there is a current cube viewport. More... | |
void | paintVerticesConnected (QPainter *painter) |
This paints connecting lines to p_vertices. More... | |
void | paintRectangle (QPoint upperLeft, QPoint lowerRight, QPainter *painter) |
Given opposite corners, the other two are interpolated and the rectangle is drawn. More... | |
void | paintRectangle (QPoint upperLeft, QPoint upperRight, QPoint lowerLeft, QPoint lowerRight, QPainter *painter) |
This draws a box around the 4 points using the painter. More... | |
void | calcRectCorners (QPoint corner1, QPoint corner2, QPoint &corner3, QPoint &corner4) |
Given two set corners, and the mouse location, this method will interpolate the last two corners. More... | |
void | reset () |
This initializes the class except for the current mode, which is set on enable. More... | |
Private Attributes | |
bool | p_mouseDown |
bool | p_doubleClicking |
bool | p_tracking |
bool | p_allClicks |
bool | p_drawActiveOnly |
RubberBandMode | p_bandingMode |
QList< QPoint > * | p_vertices |
QPoint * | p_mouseLoc |
Qt::MouseButton | p_mouseButton |
bool | p_indicatorColors |
unsigned int | p_pointTolerance |
Rubber banding tool.
2007-09-11 Steven Lambright Original version
2008-01-03 Steven Lambright bug fix on the polygons
2008-05-23 Noah Hilt added getRectangle method
2008-08-18 Steven Koechle updated to work with Geos 3.0.0
2008-09-26 Steven Lambright Added Segmented line
2010-05-24 Eric Hyer - Added clear() method
2010-06-03 Eric Hyer - Fixed bug in getInstance method
2010-06-26 Eric Hyer - Now uses MdiCubeViewport
2010-11-08 Eric Hyer - Added mouse snapping
2011-09-20 Steven Lambright - Segmented lines now have updates while the user is still drawing them instead of just a complete state.
2012-02-08 Tracie Sucharski - Added method to set drawing on the active viewport only.
2012-09-18 Steven Lambright - This is no longer a singleton, which prevented it from working with multiple workspaces. Brought method naming closer to current coding standards.
Definition at line 50 of file RubberBandTool.h.
|
protectedinherited |
Isis::RubberBandTool::RubberBandTool | ( | QWidget * | parent = NULL | ) |
This is the constructor.
It's private because this class is a singleton.
parent |
Definition at line 35 of file RubberBandTool.cpp.
References Isis::Tool::activate(), and repaint().
|
slotinherited |
Activates the tool.
on |
Definition at line 131 of file Tool.cpp.
References Isis::Tool::addViewportConnections(), Isis::Tool::disableToolBar(), Isis::Tool::enableToolBar(), Isis::Tool::m_active, Isis::Tool::m_toolPadAction, and Isis::Tool::removeViewportConnections().
Referenced by Isis::Tool::addTo(), Isis::AdvancedTrackTool::AdvancedTrackTool(), disable(), enable(), Isis::AdvancedTrackTool::eventFilter(), Isis::FileTool::FileTool(), RubberBandTool(), Isis::TrackTool::TrackTool(), Isis::WindowTool::WindowTool(), and Isis::Workspace::Workspace().
|
inlineprotectedvirtualinherited |
Anytime a tool is created, you must add the connections for it.
cvp |
Reimplemented in Isis::TrackTool, and Isis::WindowTool.
Definition at line 253 of file Tool.h.
Referenced by Isis::Tool::addViewportConnections().
|
inherited |
Adds the tool to the application.
pViewPortMnWin |
Definition at line 78 of file Tool.cpp.
References Isis::ViewportMainWindow::activeToolBar(), Isis::Tool::addToActive(), Isis::Tool::addToPermanent(), Isis::ViewportMainWindow::getMenu(), Isis::Tool::menuName(), Isis::ViewportMainWindow::permanentToolBar(), Isis::ViewportMainWindow::toolPad(), and Isis::ViewportMainWindow::workspace().
Referenced by Isis::WindowTool::addTo(), Isis::SpecialPixelTool::addTo(), Isis::FileTool::addTo(), Isis::EditTool::addTo(), Isis::ViewportMainWindow::ViewportMainWindow(), and Isis::Workspace::Workspace().
|
inherited |
Adds the tool to the toolpad.
toolpad |
Definition at line 98 of file Tool.cpp.
References Isis::Tool::activate(), Isis::ToolPad::addAction(), Isis::Tool::m_toolPadAction, and Isis::Tool::toolPadAction().
|
inlinevirtualinherited |
menu |
Reimplemented in Isis::FindTool, Isis::FeatureNomenclatureTool, Isis::AdvancedTrackTool, Isis::StretchTool, Isis::QnetFileTool, Isis::ZoomTool, Isis::FileTool, Isis::SpectralPlotTool, Isis::MeasureTool, Isis::SunShadowTool, Isis::HelpTool, Isis::SpecialPixelTool, Isis::BlinkTool, Isis::WindowTool, and Isis::PanTool.
|
virtualinherited |
Adds the given workspace to the cubeviewport list.
ws |
Reimplemented in Isis::EditTool, Isis::FileTool, Isis::SpecialPixelTool, and Isis::WindowTool.
Definition at line 45 of file Tool.cpp.
References Isis::Tool::registerTool(), and Isis::Tool::setCubeViewport().
|
inherited |
toolbar |
Definition at line 112 of file Tool.cpp.
References Isis::Tool::createToolBarWidget(), Isis::Tool::disableToolBar(), and Isis::Tool::m_toolBarWidget.
Referenced by Isis::Tool::addTo(), and Isis::Workspace::Workspace().
|
inlinevirtualinherited |
toolbar |
Reimplemented in Isis::AdvancedTrackTool, Isis::FileTool, Isis::HelpTool, Isis::SpecialPixelTool, Isis::BlinkTool, and Isis::WindowTool.
Definition at line 111 of file Tool.h.
Referenced by Isis::Tool::addTo(), and Isis::Workspace::Workspace().
|
private |
Given two set corners, and the mouse location, this method will interpolate the last two corners.
corner1 | Known point |
corner2 | Known point |
corner3 | Guessed corner (point to interpolate to). |
corner4 | Unknown corner. |
Definition at line 190 of file RubberBandTool.cpp.
Referenced by paintViewport(), and vertices().
void Isis::RubberBandTool::clear | ( | ) |
clears the rubber band!
Definition at line 1155 of file RubberBandTool.cpp.
|
inlineprotectedvirtualinherited |
Anytime a tool is created, you must add it to the tool bar.
parent |
Reimplemented in Isis::StretchTool, Isis::FindTool, Isis::StatisticsTool, Isis::FeatureNomenclatureTool, Isis::EditTool, Isis::ZoomTool, Isis::StereoTool, Isis::MeasureTool, Isis::SpatialPlotTool, Isis::SpectralPlotTool, Isis::AbstractPlotTool, Isis::BandTool, Isis::SunShadowTool, Isis::HistogramTool, Isis::ScatterPlotTool, and Isis::PanTool.
Definition at line 243 of file Tool.h.
Referenced by Isis::Tool::addToActive().
|
inlineprotectedinherited |
Return the current cubeviewport.
Definition at line 211 of file Tool.h.
References Isis::Tool::m_cvp.
Referenced by Isis::WindowTool::addConnections(), Isis::TrackTool::addConnections(), Isis::StretchTool::advancedStretchChanged(), Isis::FindTool::centerLinkedViewports(), Isis::StretchTool::changeStretch(), Isis::BandTool::changeView(), Isis::BandTool::copyLinkedViewports(), Isis::FileTool::discard(), Isis::Tool::enableToolBar(), Isis::FileTool::exportToList(), Isis::FileTool::exportView(), Isis::StatisticsTool::getStatistics(), Isis::FindTool::handleRecordClicked(), Isis::EditTool::LineToPoints(), Isis::TrackTool::locateCursor(), Isis::SunShadowTool::mouseButtonPress(), Isis::ControlNetTool::mouseButtonRelease(), mouseButtonRelease(), Isis::EditTool::mouseButtonRelease(), Isis::FeatureNomenclatureTool::mouseButtonRelease(), Isis::FindTool::mouseButtonRelease(), Isis::StretchTool::mouseButtonRelease(), Isis::MatchTool::mouseButtonRelease(), Isis::QnetTool::mouseButtonRelease(), Isis::AdvancedTrackTool::mouseLeave(), Isis::ScatterPlotTool::mouseMove(), Isis::SunShadowTool::mouseMove(), Isis::TrackTool::mouseMove(), mouseMove(), Isis::SunShadowTool::paintViewport(), paintViewport(), Isis::FindTool::paintViewport(), Isis::FileTool::print(), Isis::SunShadowTool::recalculateShadowHeight(), Isis::EditTool::redoEdit(), Isis::FindTool::refresh(), Isis::HistogramTool::refreshPlot(), Isis::SpatialPlotTool::refreshPlot(), Isis::SpectralPlotTool::refreshPlot(), Isis::WindowTool::removeConnections(), Isis::TrackTool::removeConnections(), repaint(), Isis::WindowTool::resizeWindows(), Isis::HistogramTool::rubberBandComplete(), Isis::MeasureTool::rubberBandComplete(), Isis::ZoomTool::rubberBandComplete(), Isis::EditTool::rubberBandComplete(), Isis::StretchTool::rubberBandComplete(), Isis::FileTool::save(), Isis::FileTool::saveAs(), Isis::FileTool::saveAsCubeByOption(), Isis::FileTool::saveAsReducedCube(), Isis::FileTool::saveInfo(), Isis::BandTool::setBandBin(), Isis::BandTool::setList(), Isis::StretchTool::setStretchAcrossBands(), Isis::StretchTool::setStretchAllViewports(), Isis::StretchTool::showAdvancedDialog(), Isis::ScatterPlotTool::showNewScatterPlotConfig(), Isis::StretchTool::stretchChanged(), Isis::StretchTool::stretchGlobal(), Isis::StretchTool::stretchGlobalAllBands(), Isis::StretchTool::stretchRegional(), Isis::EditTool::undoEdit(), Isis::StretchTool::updateAdvStretchDialogforAll(), Isis::StretchTool::updateHistograms(), Isis::TrackTool::updateLabels(), Isis::MeasureTool::updateMeasure(), Isis::AdvancedTrackTool::updateRow(), Isis::WindowTool::updateTool(), Isis::BlinkTool::updateTool(), Isis::SpecialPixelTool::updateTool(), Isis::BandTool::updateTool(), Isis::SunShadowTool::updateTool(), Isis::AbstractPlotTool::updateTool(), Isis::ZoomTool::updateTool(), Isis::FileTool::updateTool(), Isis::EditTool::updateTool(), Isis::FindTool::updateTool(), Isis::StretchTool::updateTool(), Isis::AbstractPlotTool::viewportsToPlot(), Isis::EditTool::writeToCube(), Isis::ZoomTool::zoomBy(), Isis::ZoomTool::zoomFit(), Isis::ZoomTool::zoomFitHeight(), Isis::ZoomTool::zoomFitWidth(), and Isis::ZoomTool::zoomManual().
|
protectedinherited |
Return the list of cubeviewports.
Definition at line 390 of file Tool.cpp.
References Isis::Workspace::cubeViewportList().
Referenced by Isis::BlinkTool::advance(), Isis::SpecialPixelTool::apply(), Isis::FindTool::centerLinkedViewports(), Isis::WindowTool::changeCursor(), Isis::FileTool::closeAll(), Isis::BandTool::copyAllViewports(), Isis::BandTool::copyLinkedViewports(), Isis::MatchTool::createPoint(), Isis::BlinkTool::eventFilter(), Isis::FeatureNomenclatureTool::featuresIdentified(), Isis::FeatureNomenclatureTool::findMissingNomenclature(), Isis::FeatureNomenclatureTool::findNomenclatureStateChanged(), Isis::FindTool::handleLinkClicked(), Isis::WindowTool::linkWindows(), mouseButtonRelease(), mouseMove(), Isis::QnetTool::openGround(), Isis::StereoTool::paintAllViewports(), Isis::ControlNetTool::paintAllViewports(), Isis::MatchTool::paintAllViewports(), Isis::QnetTool::paintAllViewports(), Isis::FindTool::refresh(), Isis::ScatterPlotTool::repaintViewports(), Isis::AbstractPlotTool::repaintViewports(), Isis::WindowTool::resizeWindows(), Isis::BlinkTool::reverse(), Isis::ZoomTool::rubberBandComplete(), Isis::MatchTool::serialNumberList(), Isis::ControlNetTool::setControlNet(), Isis::FeatureNomenclatureTool::setFontColor(), Isis::FeatureNomenclatureTool::setFontSize(), Isis::FeatureNomenclatureTool::setShowApprovedOnly(), Isis::StretchTool::setStretchAllViewports(), Isis::FeatureNomenclatureTool::setVectorType(), Isis::StretchTool::stretchGlobalAllViewports(), Isis::BlinkTool::toggleLink(), Isis::WindowTool::unlinkWindows(), Isis::MeasureTool::updateMeasure(), Isis::AdvancedTrackTool::updateRow(), Isis::WindowTool::updateTool(), Isis::BlinkTool::updateTool(), Isis::FindTool::updateTool(), Isis::AbstractPlotTool::viewportsToPlot(), Isis::ZoomTool::zoomBy(), Isis::ZoomTool::zoomFit(), Isis::ZoomTool::zoomFitHeight(), Isis::ZoomTool::zoomFitWidth(), and Isis::ZoomTool::zoomManual().
void Isis::RubberBandTool::disable | ( | ) |
This is called when something is not using me, so turn off events, reset & repaint to clear the clear.
Definition at line 322 of file RubberBandTool.cpp.
References Isis::Tool::activate(), repaint(), and reset().
Referenced by Isis::EditTool::enableRubberBandTool(), Isis::Tool::enableRubberBandTool(), and Isis::RubberBandComboBox::selectionChanged().
void Isis::RubberBandTool::enable | ( | RubberBandMode | mode, |
bool | showIndicatorColors = false |
||
) |
This is called when changing modes or turning on.
So, set the mode, reset, and activate our event handlers.
mode | |
showIndicatorColors | Color the first side of figures differently |
Definition at line 302 of file RubberBandTool.cpp.
References Isis::Tool::activate(), and reset().
Referenced by Isis::StereoTool::enableRubberBandTool(), Isis::ZoomTool::enableRubberBandTool(), Isis::EditTool::enableRubberBandTool(), Isis::StretchTool::enableRubberBandTool(), Isis::RubberBandComboBox::showAngle(), Isis::RubberBandComboBox::showCircle(), Isis::RubberBandComboBox::showEllipse(), Isis::RubberBandComboBox::showLine(), Isis::RubberBandComboBox::showPolygon(), Isis::RubberBandComboBox::showRectangle(), Isis::RubberBandComboBox::showRotatedRectangle(), and Isis::RubberBandComboBox::showSegmentedLine().
|
inlineprotectedvirtual |
Anytime a tool is created, you may use the rubber band tool.
Enable the use of the rubberband tool.
Reimplemented from Isis::Tool.
Definition at line 107 of file RubberBandTool.h.
geos::geom::Geometry * Isis::RubberBandTool::geometry | ( | ) |
Definition at line 823 of file RubberBandTool.cpp.
References vertices().
Referenced by Isis::HistogramTool::refreshPlot(), and Isis::MeasureTool::updateDist().
bool Isis::RubberBandTool::isValid | ( | ) |
This returns true if we can return complete & valid data.
Definition at line 1016 of file RubberBandTool.cpp.
Referenced by Isis::EditTool::rubberBandComplete().
|
inlinevirtualinherited |
Anytime a tool is created, you must give it a name for the menu.
Reimplemented in Isis::FindTool, Isis::StretchTool, Isis::FeatureNomenclatureTool, Isis::AdvancedTrackTool, Isis::FileTool, Isis::ZoomTool, Isis::MeasureTool, Isis::BandTool, Isis::HelpTool, Isis::SpecialPixelTool, Isis::BlinkTool, Isis::WindowTool, and Isis::PanTool.
Definition at line 97 of file Tool.h.
Referenced by Isis::Tool::addTo(), and Isis::Workspace::Workspace().
Qt::MouseButton Isis::RubberBandTool::mouseButton | ( | ) |
This method returns the mouse button modifier.
Definition at line 1012 of file RubberBandTool.cpp.
Referenced by mouseMove().
|
protectedslot |
If the click is not the left mouse button, this does nothing.
This will set mouseDown as true. When the calculations are complete, p_mouseDown is set to true.
For drag-only, A press means starting a new rubber band so reset & record the point. This applies to CircleModes, Eliipsoids, LineModes and RectangleModes.
For Rotated RectangleModes, A mount press means we're starting over, setting the first point, or completing. For the first two, simply reset and record the point. For the latter, figure out the corners and store those points.
For polygons, A press means record the current point. Reset first if we're not currently drawing.
p | |
s |
Definition at line 386 of file RubberBandTool.cpp.
References reset().
|
protectedslot |
If this is not the left mouse button, this does nothing.
This will set mouseDown as false. When the calculations are complete, p_doubleClicking is set to false. The double click event occurs with `the press event so it's safe to set that flag here.
The implementation differs, based on the mode, as follows:
For angles, This signifies a click. We're always setting one of the three vertexes, but if there is an already complete vertex go ahead and reset first to start a new angle.
For circles, Since this is a drag-only rubber band, a release signifies a complete. Figure out the corner, based on the mouse location, and push it onto the back of the vertex list and emit a complete.
For EllipseModes, Since this is a drag-only rubber band, a release signifies a complete. We know the corner, it's the mouse loc, push it onto the back of the vertex list and emit a complete.
For lines, Since this is a drag-only rubber band, a release signifies a complete. We know the end point, push it onto the back of the vertex list and emit a complete.
For rectangles, Since this is a drag-only rubber band, a release signifies a complete. We know the opposite corner, figure out the others and push them onto the back of the vertex list and emit a complete.
For rotated rectangles, If we're finishing dragging the first side, store the end point.
For polygons, Do nothing, this is taken care of on press.
p | Current mouse Location |
s | Which mouse button was released |
Definition at line 475 of file RubberBandTool.cpp.
References Isis::Tool::cubeViewport(), Isis::Tool::cubeViewportList(), Isis::MdiCubeViewport::isLinked(), reset(), snapMouse(), and vertices().
|
protectedslot |
This triggers on a second mouse press.
Only polygons care about this, and it signifies an end of shape. So, if we're in polygon mode, stop tracking the mouse and emit a complete.
p |
Definition at line 343 of file RubberBandTool.cpp.
References repaint().
|
protectedslot |
If tracking is not enabled, this does nothing.
This will first update the mouse location for painting purposes.
Most of the implementation is a matter of emitting measureChanges: For angles, if the first two vertices are specified a measureChange will be emitted. For circles, if the center of the circle is known a measureChange will be emitted. For EllipseModes, if the center of the EllipseMode is known a measureChange will be emitted. For lines, if the first point of the line is known a measureChange will be emitted. For rectangles, if the starting point is known a measureChange will be emitted. For rotated rectangles, if the first side is specified a measureChange will be emitted.
However, there is one exception: For polygons, if the mouse button is pressed the mouse location is recorded as a valid vertex.
p | Current mouse Location |
Definition at line 589 of file RubberBandTool.cpp.
References Isis::Tool::cubeViewport(), Isis::Tool::cubeViewportList(), Isis::MdiCubeViewport::isLinked(), mouseButton(), and snapMouse().
|
protectedvirtualslotinherited |
p |
Definition at line 352 of file Tool.cpp.
Referenced by Isis::Tool::addViewportConnections(), and Isis::Tool::removeViewportConnections().
|
private |
Given opposite corners, the other two are interpolated and the rectangle is drawn.
upperLeft | Corner opposite of lowerRight |
lowerRight | Corner opposite of upperLeft |
painter |
Definition at line 271 of file RubberBandTool.cpp.
Referenced by paintViewport().
|
private |
This draws a box around the 4 points using the painter.
upperLeft | Initial corner |
upperRight | Corner connected to upperLeft, lowerRight |
lowerLeft | Corner connected to lowerRight, upperLeft |
lowerRight | Corner connected to lowerLeft, upperRight |
painter |
Definition at line 287 of file RubberBandTool.cpp.
|
private |
This paints connecting lines to p_vertices.
If tracking, a line is also drawn to the mouse location.
painter |
Definition at line 248 of file RubberBandTool.cpp.
Referenced by paintViewport().
|
virtual |
This is the main paint method for the rubber bands.
For angles and lines, simply connect the known vertices.vertices[0].x() For polygons, paint the vertices & close if completed the shape. For circles, figure out the circle's square and draw the circle inside of it. For EllipseModes, figure out the EllipseMode's rectangle and draw the circle inside of it. For rectangles, paint the rectangle either to the mouse or back to the start depending on if the shape is complete. For rotated rectangles, if we can interpolate extra sides draw them and draw all known sides.
vp | |
painter |
Reimplemented from Isis::Tool.
Definition at line 73 of file RubberBandTool.cpp.
References calcRectCorners(), Isis::Tool::cubeViewport(), Isis::MdiCubeViewport::isLinked(), paintRectangle(), paintVerticesConnected(), and vertices().
QRect Isis::RubberBandTool::rectangle | ( | ) |
This method returns a rectangle from the vertices set by the RubberBandTool.
It calculates the upper left and bottom right points for the rectangle and properly initializes a QRect object with these vertices. If the RubberBandTool is in the incorrect mode, or the rectangle is not valid it will return an error message.
Definition at line 966 of file RubberBandTool.cpp.
References vertices().
Referenced by Isis::ZoomTool::rubberBandComplete(), Isis::EditTool::rubberBandComplete(), and Isis::StretchTool::rubberBandComplete().
|
protectedinherited |
Registers the tool to the viewport.
viewport |
Definition at line 327 of file Tool.cpp.
References Isis::Tool::m_cvp, and Isis::MdiCubeViewport::registerTool().
Referenced by Isis::Tool::addTo().
|
inlineprotectedvirtualinherited |
Anytime a tool is created, you must be able to remove it's connections.
cvp |
Reimplemented in Isis::MeasureTool, Isis::TrackTool, and Isis::WindowTool.
Definition at line 261 of file Tool.h.
Referenced by Isis::Tool::removeViewportConnections().
|
private |
This method will call the viewport's repaint if there is a current cube viewport.
Definition at line 812 of file RubberBandTool.cpp.
References Isis::Tool::cubeViewport().
Referenced by clear(), disable(), mouseDoubleClick(), reset(), RubberBandTool(), and setDrawActiveViewportOnly().
|
private |
This initializes the class except for the current mode, which is set on enable.
Definition at line 752 of file RubberBandTool.cpp.
References repaint().
Referenced by clear(), disable(), enable(), mouseButtonPress(), and mouseButtonRelease().
|
inlineprotectedvirtualslotinherited |
This is called when actions change which pixels from the cube are displayed.
Definition at line 162 of file Tool.h.
Referenced by Isis::Tool::addViewportConnections(), Isis::Tool::removeViewportConnections(), and Isis::FeatureNomenclatureTool::viewportDone().
|
slotinherited |
Sets the current viewport to the given cvp.
cvp |
Definition at line 160 of file Tool.cpp.
References Isis::Tool::addViewportConnections(), Isis::Tool::enableToolBar(), Isis::Tool::m_active, Isis::Tool::m_cvp, Isis::Tool::removeViewportConnections(), and Isis::Tool::updateTool().
Referenced by Isis::Tool::addTo(), and Isis::FileTool::closeAll().
void Isis::RubberBandTool::setDrawActiveViewportOnly | ( | bool | activeOnly = false | ) |
This called to set whether rubber band is drawn on active viewport only rather than all linked viewports.
Definition at line 333 of file RubberBandTool.cpp.
References repaint().
Referenced by Isis::HistogramTool::enableRubberBandTool(), Isis::SpectralPlotTool::enableRubberBandTool(), Isis::SpatialPlotTool::enableRubberBandTool(), Isis::StereoTool::enableRubberBandTool(), Isis::MeasureTool::enableRubberBandTool(), Isis::ZoomTool::enableRubberBandTool(), Isis::EditTool::enableRubberBandTool(), and Isis::StretchTool::enableRubberBandTool().
|
private |
moves the mouse's location p to the nearest axis
p | The mouse's current location |
Definition at line 554 of file RubberBandTool.cpp.
Referenced by mouseButtonRelease(), and mouseMove().
|
inlineinherited |
returns the path to the icon directory.
Definition at line 127 of file Tool.h.
References Isis::Tool::m_toolIconDir.
Referenced by Isis::AdvancedTrackTool::AdvancedTrackTool(), Isis::BlinkTool::BlinkTool(), Isis::MatchTool::createActions(), Isis::QnetTool::createActions(), Isis::StereoTool::createMenus(), Isis::PanTool::createToolBarWidget(), Isis::BandTool::createToolBarWidget(), Isis::StereoTool::createToolBarWidget(), Isis::ZoomTool::createToolBarWidget(), Isis::EditTool::createToolBarWidget(), Isis::FindTool::createToolBarWidget(), Isis::StretchTool::createToolBarWidget(), Isis::FileTool::FileTool(), Isis::FindTool::FindTool(), Isis::HistogramTool::HistogramTool(), Isis::SpecialPixelTool::SpecialPixelTool(), Isis::RubberBandComboBox::toolIconDir(), Isis::PanTool::toolPadAction(), Isis::ScatterPlotTool::toolPadAction(), Isis::HistogramTool::toolPadAction(), Isis::BandTool::toolPadAction(), Isis::SunShadowTool::toolPadAction(), Isis::SpectralPlotTool::toolPadAction(), Isis::SpatialPlotTool::toolPadAction(), Isis::MeasureTool::toolPadAction(), Isis::StereoTool::toolPadAction(), Isis::ControlNetTool::toolPadAction(), Isis::ZoomTool::toolPadAction(), Isis::EditTool::toolPadAction(), Isis::FeatureNomenclatureTool::toolPadAction(), Isis::StatisticsTool::toolPadAction(), Isis::FindTool::toolPadAction(), Isis::StretchTool::toolPadAction(), Isis::MatchTool::toolPadAction(), Isis::QnetTool::toolPadAction(), Isis::WindowTool::WindowTool(), and Isis::ZoomTool::ZoomTool().
Anytime a tool is created, you must setup a tool pad action with it.
toolpad |
Reimplemented in Isis::QnetTool, Isis::MatchTool, Isis::StretchTool, Isis::FindTool, Isis::StatisticsTool, Isis::FeatureNomenclatureTool, Isis::EditTool, Isis::ZoomTool, Isis::ControlNetTool, Isis::StereoTool, Isis::MeasureTool, Isis::SpatialPlotTool, Isis::SpectralPlotTool, Isis::SunShadowTool, Isis::BandTool, Isis::HistogramTool, Isis::ScatterPlotTool, and Isis::PanTool.
Definition at line 231 of file Tool.h.
Referenced by Isis::Tool::addTo().
|
virtualslotinherited |
Updates the tool.
Reimplemented in Isis::StretchTool, Isis::FindTool, Isis::FeatureNomenclatureTool, Isis::EditTool, Isis::FileTool, Isis::ZoomTool, Isis::MeasureTool, Isis::SpatialPlotTool, Isis::SpectralPlotTool, Isis::AbstractPlotTool, Isis::SunShadowTool, Isis::BandTool, Isis::HistogramTool, Isis::SpecialPixelTool, Isis::BlinkTool, and Isis::WindowTool.
Definition at line 318 of file Tool.cpp.
Referenced by Isis::Tool::enableToolBar(), and Isis::Tool::setCubeViewport().
QList< QPoint > Isis::RubberBandTool::vertices | ( | ) |
This method returns the vertices.
The return value is mode-specific, and the return will be consistent whether in a measureChange or bandingComplete slot.
The return values are always in pixels.
The return values are as follows: For angles, the return will always be of size 3. The elements at 0 and 2 are the edges of the angle, while the element at 1 is the vertex of the angle.
For circles, the return will always be of size 2. The element at 0 is the center of the circle, and the element at 1 is offset by the radius in both directions.
For EllipseModes, the return will always be of size 2. The element at 0 is the center of the circle, and the element at 1 is offset by the radius in both directions.
For lines, the return will always be of size 2. The elements are the start and end points.
For rectangles, the return will always be of size 4. The elements will be the corners, in either a clockwise or counter-clockwise direction.
For rotated rectangles, the same applies.
For polygons, the return will be a list of vertices in the order that the user drew them.
**It is NOT valid to call this unless you're in a measureChange or bandingComplete slot.
Definition at line 672 of file RubberBandTool.cpp.
References calcRectCorners().
Referenced by geometry(), Isis::SpatialPlotTool::getSpatialStatistics(), Isis::SpectralPlotTool::getSpectralStatistics(), mouseButtonRelease(), paintViewport(), rectangle(), Isis::HistogramTool::refreshPlot(), Isis::SpatialPlotTool::refreshPlot(), Isis::SpectralPlotTool::refreshPlot(), Isis::ZoomTool::rubberBandComplete(), and Isis::MeasureTool::updateDist().