OpendTect  6.6
flatauxdataeditor.h
Go to the documentation of this file.
1 #pragma once
2 /*+
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: Kris
7  Date: Mar 2007
8  RCS: $Id$
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "generalmod.h"
14 #include "flatview.h"
15 #include "callback.h"
16 #include "geometry.h"
17 #include "keyenum.h"
18 #include "posidxpair2coord.h"
19 
20 class MouseEventHandler;
21 class MouseEvent;
22 class MenuHandler;
23 
24 namespace FlatView
25 {
26 
27 class AuxDataEditor;
28 
29 #define mCtrlLeftButton ( (OD::ButtonState) (OD::LeftButton+OD::ControlButton) )
30 
35 mExpClass(General) Sower : public CallBacker
36 {
37  friend class AuxDataEditor;
38 
39 public:
40  enum SowingMode { Lasering=-2, Erasing=-1, Idle=0,
41  Furrowing, FirstSowing, SequentSowing };
42 
43  SowingMode mode() { return mode_; }
44 
46 
47  void reverseSowingOrder(bool yn=true);
48  void alternateSowingOrder(bool yn=true);
49  void intersow(bool yn=true);
50 
51  bool moreToSow() const;
52  void stopSowing();
53 
55 
56  bool accept(const MouseEvent&,bool released=false);
57  bool activate(const Color&,const MouseEvent&);
58  bool activate(const OD::LineStyle&,const MouseEvent&);
59 
60  void setSequentSowMask(bool yn=true,
62  void setIfDragInvertMask(bool yn=true,
64  void setLaserMask(bool yn=true,
66  void setEraserMask(bool yn=true,
70 
71 protected:
73  ~Sower();
74 
75  void setView(const Rect& wv,
76  const Geom::Rectangle<int>& mouserect);
77 
78  bool acceptMouse(const MouseEvent&,bool released);
79  bool acceptTablet(const MouseEvent&,bool released);
80  bool acceptLaser(const MouseEvent&,bool released);
81  bool acceptEraser(const MouseEvent&,bool released);
82 
83  void reset();
84 
94 
97  bool intersow_;
98 
103 
108 };
109 
110 
119 {
120  friend class Sower;
121 
122 public:
124  virtual ~AuxDataEditor();
125  int addAuxData(FlatView::AuxData*,bool doedit);
130  void removeAuxData(int id);
131  void enableEdit(int id,bool allowadd,bool allowmove,
132  bool allowdelete);
133  void enablePolySel(int id,bool allowsel);
134  void setAddAuxData(int id);
136  int getAddAuxData() const;
140 
141  void setView(const Rect& wv,
142  const Geom::Rectangle<int>& mouserect);
146  const Geom::PixRectangle<int>& getMouseArea() const { return mousearea_; }
147  Rect getWorldRect(int dataid) const;
148  void limitMovement(const Rect*);
152  bool isDragging() const { return mousedown_; }
153 
154  int getSelPtDataID() const;
155  const TypeSet<int>& getSelPtIdx() const;
156  const Point& getSelPtPos() const;
157 
177  const OD::LineStyle&);
179  TypeSet<int>& idxs) const;
183  const Viewer& viewer() const { return viewer_; }
184  Viewer& viewer() { return viewer_; }
185 
186  Sower& sower() { return *sower_; }
187 
188  void setSelActive( bool yn );
189  bool isSelActive() const { return isselactive_; }
190  const TypeSet<int>& getIds() const;
192 
193  void removePolygonSelected(int dataid);
197 
198  MouseEventHandler& mouseEventHandler() { return mousehandler_; }
199 
200  const Point* markerPosAt(const Geom::Point2D<int>& mousepos) const;
203 
204 protected:
206  TypeSet<int>& ids, TypeSet<int>& idxs) const;
215 
217  int& seldatasetidx,
218  TypeSet<int>* selptidxlist) const;
221 
222  int dataSetIdxAt(const Geom::Point2D<int>&) const;
223 
233 
241 
246  bool hasmoved_;
247 
252 
254 };
255 
256 
257 }; // namespace FlatView
258 
FlatView::AuxDataEditor::setSelectionPolygonLineStyle
void setSelectionPolygonLineStyle(const OD::LineStyle &)
FlatView::AuxDataEditor::seldatasetidx_
int seldatasetidx_
Definition: flatauxdataeditor.h:248
FlatView::AuxDataEditor::dataSetIdxAt
int dataSetIdxAt(const Geom::Point2D< int > &) const
FlatView::Sower::alternatesowingorder_
bool alternatesowingorder_
Definition: flatauxdataeditor.h:96
FlatView::Sower::reset
void reset()
FlatView::AuxDataEditor::getSelPtPos
const Point & getSelPtPos() const
OD::LineStyle
Definition: draw.h:118
FlatView::Sower::setSequentSowMask
void setSequentSowMask(bool yn=true, OD::ButtonState mask=OD::LeftButton)
FlatView::Sower::curknotstamp_
int curknotstamp_
Definition: flatauxdataeditor.h:106
FlatView::AuxDataEditor::polygonselrect_
bool polygonselrect_
Definition: flatauxdataeditor.h:237
flatview.h
FlatView::Sower::mode_
SowingMode mode_
Definition: flatauxdataeditor.h:90
FlatView::AuxDataEditor::allowremove_
BoolTypeSet allowremove_
Definition: flatauxdataeditor.h:230
FlatView::AuxDataEditor::addAuxData
int addAuxData(FlatView::AuxData *, bool doedit)
FlatView::Sower::eventlist_
ObjectSet< MouseEvent > eventlist_
Definition: flatauxdataeditor.h:91
FlatView::AuxDataEditor::getAddAuxData
int getAddAuxData() const
FlatView::AuxDataEditor::findSelection
void findSelection(const Geom::Point2D< int > &, int &seldatasetidx, TypeSet< int > *selptidxlist) const
geometry.h
FlatView::Sower::sequentsowmask_
OD::ButtonState sequentsowmask_
Definition: flatauxdataeditor.h:99
ObjectSet< MouseEvent >
FlatView::AuxDataEditor::viewer_
Viewer & viewer_
Definition: flatauxdataeditor.h:224
FlatView::AuxDataEditor::movementStarted
Notifier< AuxDataEditor > movementStarted
Definition: flatauxdataeditor.h:158
FlatView::Sower::mode
SowingMode mode()
Definition: flatauxdataeditor.h:43
MenuHandler
Definition: menuhandler.h:187
FlatView::Sower::curknotid_
int curknotid_
Definition: flatauxdataeditor.h:105
FlatView::Sower::mouserectangle_
Geom::PixRectangle< int > mouserectangle_
Definition: flatauxdataeditor.h:89
FlatView::Sower::reInitSettings
void reInitSettings()
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
FlatView::Sower::setIfDragInvertMask
void setIfDragInvertMask(bool yn=true, OD::ButtonState mask=OD::ShiftButton)
FlatView::Sower::SowingMode
SowingMode
Definition: flatauxdataeditor.h:40
FlatView::Sower::pivotPos
Geom::Point2D< int > pivotPos() const
FlatView::Sower::lasermask_
OD::ButtonState lasermask_
Definition: flatauxdataeditor.h:101
FlatView::Sower::mousecoords_
TypeSet< Coord > mousecoords_
Definition: flatauxdataeditor.h:92
posidxpair2coord.h
FlatView::AuxDataEditor::sower_
Sower * sower_
Definition: flatauxdataeditor.h:225
FlatView::AuxDataEditor::selptidx_
TypeSet< int > selptidx_
Definition: flatauxdataeditor.h:249
callback.h
FlatView::Sower::~Sower
~Sower()
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
FlatView::Sower::intersow_
bool intersow_
Definition: flatauxdataeditor.h:97
FlatView::AuxDataEditor::releaseSelection
Notifier< AuxDataEditor > releaseSelection
Definition: flatauxdataeditor.h:202
FlatView::Viewer
Flat Viewer using FlatView::Data and FlatView::Appearance.
Definition: flatview.h:349
OD::ButtonState
ButtonState
Definition: keyenum.h:20
keyenum.h
FlatView::Sower::moreToSow
bool moreToSow() const
FlatView::Sower::furrowstamp_
int furrowstamp_
Definition: flatauxdataeditor.h:107
FlatView::AuxDataEditor::getWorldRect
Rect getWorldRect(int dataid) const
FlatView::AuxDataEditor::ids_
TypeSet< int > ids_
Definition: flatauxdataeditor.h:227
FlatView::Sower::mouseeventhandler_
MouseEventHandler & mouseeventhandler_
Definition: flatauxdataeditor.h:88
FlatView::AuxDataEditor::removePolygonSelected
void removePolygonSelected(int dataid)
If dataid ==-1, all pts inside polygon is removed.
FlatView::AuxDataEditor::AuxDataEditor
AuxDataEditor(Viewer &, MouseEventHandler &)
FlatView::Sower::bendpoints_
TypeSet< int > bendpoints_
Definition: flatauxdataeditor.h:93
FlatView::AuxDataEditor::polygonsel_
ObjectSet< AuxData > polygonsel_
Definition: flatauxdataeditor.h:235
FlatView
Definition: bitmap2rgb.h:17
FlatView::Sower::accept
bool accept(const MouseEvent &, bool released=false)
FlatView::Sower::reversesowingorder_
bool reversesowingorder_
Definition: flatauxdataeditor.h:95
FlatView::AuxDataEditor::setMenuHandler
void setMenuHandler(MenuHandler *)
FlatView::AuxDataEditor::getSelectionPolygonRectangle
bool getSelectionPolygonRectangle() const
If not rectangle, it's a polygon.
FlatView::AuxDataEditor::menuhandler_
MenuHandler * menuhandler_
Definition: flatauxdataeditor.h:253
FlatView::Sower::acceptMouse
bool acceptMouse(const MouseEvent &, bool released)
FlatView::Sower::ifdraginvertmask_
OD::ButtonState ifdraginvertmask_
Definition: flatauxdataeditor.h:100
FlatView::AuxDataEditor::getAuxData
const ObjectSet< AuxData > & getAuxData() const
FlatView::Sower::setView
void setView(const Rect &wv, const Geom::Rectangle< int > &mouserect)
OD::LeftButton
@ LeftButton
Definition: keyenum.h:22
Geom::PosRectangle< double >
FlatView::AuxDataEditor::setSelActive
void setSelActive(bool yn)
FlatView::AuxDataEditor::allowadd_
BoolTypeSet allowadd_
Definition: flatauxdataeditor.h:228
FlatView::AuxDataEditor::isselactive_
bool isselactive_
Definition: flatauxdataeditor.h:238
FlatView::AuxDataEditor::getSelPtDataID
int getSelPtDataID() const
FlatView::AuxDataEditor::getSelPtIdx
const TypeSet< int > & getSelPtIdx() const
FlatView::AuxDataEditor::allowmove_
BoolTypeSet allowmove_
Definition: flatauxdataeditor.h:229
FlatView::AuxDataEditor::doedit_
BoolTypeSet doedit_
Definition: flatauxdataeditor.h:232
FlatView::AuxDataEditor::isSelActive
bool isSelActive() const
Definition: flatauxdataeditor.h:189
FlatView::AuxDataEditor
Editor for FlatView::AuxData. Allows the end-user to click-drag-release the points in data....
Definition: flatauxdataeditor.h:119
FlatView::AuxDataEditor::hasmoved_
bool hasmoved_
Definition: flatauxdataeditor.h:246
FlatView::AuxDataEditor::mousePressCB
void mousePressCB(CallBacker *)
FlatView::Sower::acceptTablet
bool acceptTablet(const MouseEvent &, bool released)
Notifier
Class to help setup a callback handling.
Definition: notify.h:126
FlatView::Sower::stopSowing
void stopSowing()
FlatView::AuxDataEditor::allowpolysel_
BoolTypeSet allowpolysel_
Definition: flatauxdataeditor.h:231
OD::ShiftButton
@ ShiftButton
Definition: keyenum.h:26
FlatView::Sower::reverseSowingOrder
void reverseSowingOrder(bool yn=true)
FlatView::AuxDataEditor::mousehandler_
MouseEventHandler & mousehandler_
Definition: flatauxdataeditor.h:244
FlatView::AuxDataEditor::sower
Sower & sower()
Definition: flatauxdataeditor.h:186
FlatView::AuxDataEditor::removeSelectionPolygon
bool removeSelectionPolygon()
Returns true if viewer must be notified.
FlatView::AuxDataEditor::polygonsellst_
OD::LineStyle polygonsellst_
Definition: flatauxdataeditor.h:236
FlatView::AuxDataEditor::setSelectionPolygonRectangle
void setSelectionPolygonRectangle(bool)
If not rectangle, it's a polygon.
FlatView::AuxDataEditor::markerPosAt
const Point * markerPosAt(const Geom::Point2D< int > &mousepos) const
FlatView::Sower::acceptEraser
bool acceptEraser(const MouseEvent &, bool released)
Geom::PixRectangle< int >
FlatView::Sower::alternateSowingOrder
void alternateSowingOrder(bool yn=true)
FlatView::AuxDataEditor::mouseEventHandler
MouseEventHandler & mouseEventHandler()
Definition: flatauxdataeditor.h:198
FlatView::AuxDataEditor::addAuxDataChange
Notifier< AuxDataEditor > addAuxDataChange
Definition: flatauxdataeditor.h:139
FlatView::Sower::editor_
AuxDataEditor & editor_
Definition: flatauxdataeditor.h:85
FlatView::AuxDataEditor::enablePolySel
void enablePolySel(int id, bool allowsel)
FlatView::AuxDataEditor::isDragging
bool isDragging() const
Definition: flatauxdataeditor.h:152
FlatView::AuxData
Class that represents non-bitmap data to be displayed in a flatviewer, such as markers,...
Definition: flatview.h:34
FlatView::AuxDataEditor::setSelectionPolygonVisible
void setSelectionPolygonVisible(bool)
MouseEventHandler
Definition: mouseevent.h:189
FlatView::AuxDataEditor::viewer
const Viewer & viewer() const
Definition: flatauxdataeditor.h:183
FlatView::Sower::acceptLaser
bool acceptLaser(const MouseEvent &, bool released)
FlatView::AuxDataEditor::~AuxDataEditor
virtual ~AuxDataEditor()
Geom::Point2D< int >
FlatView::AuxDataEditor::curview_
Rect curview_
Definition: flatauxdataeditor.h:243
FlatView::AuxDataEditor::removeSelected
CNotifier< AuxDataEditor, bool > removeSelected
Definition: flatauxdataeditor.h:167
FlatView::AuxDataEditor::setView
void setView(const Rect &wv, const Geom::Rectangle< int > &mouserect)
FlatView::AuxDataEditor::auxdata_
ObjectSet< AuxData > auxdata_
Definition: flatauxdataeditor.h:226
mCtrlLeftButton
#define mCtrlLeftButton
Definition: flatauxdataeditor.h:29
FlatView::AuxDataEditor::mouseMoveCB
void mouseMoveCB(CallBacker *)
FlatView::AuxDataEditor::getSelectionPolygonLineStyle
const OD::LineStyle & getSelectionPolygonLineStyle() const
FlatView::AuxDataEditor::removeAuxData
void removeAuxData(int id)
FlatView::Sower::sowing
Notifier< Sower > sowing
Definition: flatauxdataeditor.h:69
FlatView::Sower
Class to sow/select points with mouse.
Definition: flatauxdataeditor.h:36
FlatView::Sower::sowingline_
AuxData * sowingline_
Definition: flatauxdataeditor.h:87
FlatView::AuxDataEditor::getMouseArea
const Geom::PixRectangle< int > & getMouseArea() const
Definition: flatauxdataeditor.h:146
FlatView::AuxDataEditor::selptcoord_
Point selptcoord_
Definition: flatauxdataeditor.h:250
FlatView::Sower::activate
bool activate(const OD::LineStyle &, const MouseEvent &)
FlatView::Sower::Sower
Sower(AuxDataEditor &, MouseEventHandler &)
FlatView::AuxDataEditor::getMenuHandler
MenuHandler * getMenuHandler()
FlatView::AuxDataEditor::feedback_
AuxData * feedback_
Definition: flatauxdataeditor.h:239
Pos::IdxPair2Coord
Encapsulates linear transform from (i,j) index to (x,y) coordinates.
Definition: posidxpair2coord.h:26
FlatView::AuxDataEditor::enableEdit
void enableEdit(int id, bool allowadd, bool allowmove, bool allowdelete)
FlatView::Sower::singleseeded_
bool singleseeded_
Definition: flatauxdataeditor.h:104
FlatView::Sower::setEraserMask
void setEraserMask(bool yn=true, OD::ButtonState mask=((OD::ButtonState)(OD::LeftButton+OD::ControlButton)))
FlatView::AuxDataEditor::updateSelection
bool updateSelection(const Geom::Point2D< int > &)
FlatView::AuxDataEditor::mouseReleaseCB
void mouseReleaseCB(CallBacker *)
FlatView::AuxDataEditor::viewer
Viewer & viewer()
Definition: flatauxdataeditor.h:184
FlatView::Sower::setLaserMask
void setLaserMask(bool yn=true, OD::ButtonState mask=OD::LeftButton)
FlatView::Sower::erasermask_
OD::ButtonState erasermask_
Definition: flatauxdataeditor.h:102
FlatView::AuxDataEditor::mousedown_
bool mousedown_
Definition: flatauxdataeditor.h:245
FlatView::AuxDataEditor::setAddAuxData
void setAddAuxData(int id)
Added points will be added to this set.
FlatView::Sower::transformation_
Pos::IdxPair2Coord transformation_
Definition: flatauxdataeditor.h:86
FlatView::Sower::activate
bool activate(const Color &, const MouseEvent &)
FlatView::AuxDataEditor::movementlimit_
Rect * movementlimit_
Definition: flatauxdataeditor.h:251
Geom::Rectangle< int >
MouseEvent
Definition: mouseevent.h:73
FlatView::AuxDataEditor::limitMovement
void limitMovement(const Rect *)
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
FlatView::AuxDataEditor::movementFinished
Notifier< AuxDataEditor > movementFinished
Definition: flatauxdataeditor.h:159
CNotifier
Notifier with automatic capsule creation.
Definition: notify.h:171
FlatView::AuxDataEditor::prevpt_
Geom::Point2D< int > prevpt_
Definition: flatauxdataeditor.h:240
FlatView::AuxDataEditor::addauxdataid_
int addauxdataid_
Definition: flatauxdataeditor.h:234
FlatView::Sower::intersow
void intersow(bool yn=true)
FlatView::AuxDataEditor::getIds
const TypeSet< int > & getIds() const
FlatView::AuxDataEditor::mousearea_
Geom::PixRectangle< int > mousearea_
Definition: flatauxdataeditor.h:242
FlatView::Sower::sowingEnd
Notifier< Sower > sowingEnd
Definition: flatauxdataeditor.h:68
FlatView::AuxDataEditor::getPointSelections
void getPointSelections(const ObjectSet< AuxData > &polygon, TypeSet< int > &ids, TypeSet< int > &idxs) const
FlatView::AuxDataEditor::getPointSelections
void getPointSelections(TypeSet< int > &ids, TypeSet< int > &idxs) const
TypeSet< Coord >

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021