OpendTect  6.3
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 ________________________________________________________________________
9 
10 -*/
11 
12 #include "generalmod.h"
13 #include "flatview.h"
14 #include "callback.h"
15 #include "geometry.h"
16 #include "keyenum.h"
17 #include "posidxpair2coord.h"
18 
19 class MouseEventHandler;
20 class MouseEvent;
21 class MenuHandler;
22 
23 namespace FlatView
24 {
25 
26 class AuxDataEditor;
27 
28 #define mCtrlLeftButton ( (OD::ButtonState) (OD::LeftButton+OD::ControlButton) )
29 
34 mExpClass(General) Sower : public CallBacker
35 {
36  friend class AuxDataEditor;
37 
38 public:
39  enum SowingMode { Lasering=-2, Erasing=-1, Idle=0,
40  Furrowing, FirstSowing, SequentSowing };
41 
42  SowingMode mode() { return mode_; }
43 
44  void reInitSettings();
45 
46  void reverseSowingOrder(bool yn=true);
47  void alternateSowingOrder(bool yn=true);
48  void intersow(bool yn=true);
49 
50  bool moreToSow() const;
51  void stopSowing();
52 
53  Geom::Point2D<int> pivotPos() const;
54 
55  bool accept(const MouseEvent&,bool released=false);
56  bool activate(const Color&,const MouseEvent&);
57  bool activate(const OD::LineStyle&,const MouseEvent&);
58 
59  void setSequentSowMask(bool yn=true,
61  void setIfDragInvertMask(bool yn=true,
63  void setLaserMask(bool yn=true,
65  void setEraserMask(bool yn=true,
69 
70 protected:
72  ~Sower();
73 
74  void setView(const Rect& wv,
75  const Geom::Rectangle<int>& mouserect);
76 
77  bool acceptMouse(const MouseEvent&,bool released);
78  bool acceptTablet(const MouseEvent&,bool released);
79  bool acceptLaser(const MouseEvent&,bool released);
80  bool acceptEraser(const MouseEvent&,bool released);
81 
82  void reset();
83 
93 
96  bool intersow_;
97 
102 
107 };
108 
109 
118 {
119  friend class Sower;
120 
121 public:
123  virtual ~AuxDataEditor();
124  int addAuxData(FlatView::AuxData*,bool doedit);
129  void removeAuxData(int id);
130  void enableEdit(int id,bool allowadd,bool allowmove,
131  bool allowdelete);
132  void enablePolySel(int id,bool allowsel);
133  void setAddAuxData(int id);
135  int getAddAuxData() const;
139 
140  void setView(const Rect& wv,
141  const Geom::Rectangle<int>& mouserect);
145  const Geom::PixRectangle<int>& getMouseArea() const { return mousearea_; }
146  Rect getWorldRect(int dataid) const;
147  void limitMovement(const Rect*);
151  bool isDragging() const { return mousedown_; }
152 
153  int getSelPtDataID() const;
154  const TypeSet<int>& getSelPtIdx() const;
155  const Point& getSelPtPos() const;
156 
170  void setSelectionPolygonRectangle(bool);
172  bool getSelectionPolygonRectangle() const;
174  const OD::LineStyle& getSelectionPolygonLineStyle() const;
175  void setSelectionPolygonLineStyle(
176  const OD::LineStyle&);
177  void getPointSelections(TypeSet<int>& ids,
178  TypeSet<int>& idxs) const;
182  const Viewer& viewer() const { return viewer_; }
183  Viewer& viewer() { return viewer_; }
184 
185  Sower& sower() { return *sower_; }
186 
187  void setSelActive( bool yn );
188  bool isSelActive() const { return isselactive_; }
189  const TypeSet<int>& getIds() const;
190  const ObjectSet<AuxData>& getAuxData() const;
191 
192  void removePolygonSelected(int dataid);
194  void setMenuHandler(MenuHandler*);
195  MenuHandler* getMenuHandler();
196 
197  MouseEventHandler& mouseEventHandler() { return mousehandler_; }
198 
199  const Point* markerPosAt(const Geom::Point2D<int>& mousepos) const;
200  void setSelectionPolygonVisible(bool);
202 protected:
203  void getPointSelections( const ObjectSet<AuxData>& polygon,
204  TypeSet<int>& ids, TypeSet<int>& idxs) const;
208  bool removeSelectionPolygon();
210  void mousePressCB(CallBacker*);
211  void mouseReleaseCB(CallBacker*);
212  void mouseMoveCB(CallBacker*);
213 
214  void findSelection(const Geom::Point2D<int>&,
215  int& seldatasetidx,
216  TypeSet<int>* selptidxlist) const;
217  bool updateSelection(const Geom::Point2D<int>&);
219 
220  int dataSetIdxAt(const Geom::Point2D<int>&) const;
221 
231 
239 
244  bool hasmoved_;
245 
250 
252 };
253 
254 
255 }; // namespace FlatView
#define mExpClass(module)
Definition: commondefs.h:157
Class that represents non-bitmap data to be displayed in a flatviewer, such as markers, lines and more.
Definition: flatview.h:32
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
Notifier< AuxDataEditor > releaseSelection
Definition: flatauxdataeditor.h:201
Definition: menuhandler.h:185
OD::ButtonState sequentsowmask_
Definition: flatauxdataeditor.h:98
Geom::Point2D< int > prevpt_
Definition: flatauxdataeditor.h:238
int addauxdataid_
Definition: flatauxdataeditor.h:232
SowingMode mode_
Definition: flatauxdataeditor.h:89
Notifier< Sower > sowingEnd
Definition: flatauxdataeditor.h:67
Point selptcoord_
Definition: flatauxdataeditor.h:248
Rect * movementlimit_
Definition: flatauxdataeditor.h:249
TypeSet< int > selptidx_
Definition: flatauxdataeditor.h:247
SowingMode
Definition: flatauxdataeditor.h:39
Viewer & viewer_
Definition: flatauxdataeditor.h:222
Definition: draw.h:119
bool polygonselrect_
Definition: flatauxdataeditor.h:235
SowingMode mode()
Definition: flatauxdataeditor.h:42
TypeSet< int > bendpoints_
Definition: flatauxdataeditor.h:92
Sower * sower_
Definition: flatauxdataeditor.h:223
Geom::PixRectangle< int > mouserectangle_
Definition: flatauxdataeditor.h:88
CNotifier< AuxDataEditor, bool > removeSelected
Definition: flatauxdataeditor.h:166
ObjectSet< MouseEvent > eventlist_
Definition: flatauxdataeditor.h:90
Notifier< AuxDataEditor > movementStarted
Definition: flatauxdataeditor.h:157
bool isselactive_
Definition: flatauxdataeditor.h:236
int furrowstamp_
Definition: flatauxdataeditor.h:106
Definition: keyenum.h:25
int curknotid_
Definition: flatauxdataeditor.h:104
bool reversesowingorder_
Definition: flatauxdataeditor.h:94
bool intersow_
Definition: flatauxdataeditor.h:96
Flat Viewer using FlatView::Data and FlatView::Appearance.
Definition: flatview.h:330
Definition: keyenum.h:21
Class to help setup a callback handling.
Definition: notify.h:121
Rect curview_
Definition: flatauxdataeditor.h:241
OD::ButtonState lasermask_
Definition: flatauxdataeditor.h:100
TypeSet< Coord > mousecoords_
Definition: flatauxdataeditor.h:91
ButtonState
Definition: keyenum.h:18
Set of (small) copyable elements.
Definition: commontypes.h:26
const Geom::PixRectangle< int > & getMouseArea() const
Definition: flatauxdataeditor.h:145
BoolTypeSet doedit_
Definition: flatauxdataeditor.h:230
OD::ButtonState ifdraginvertmask_
Definition: flatauxdataeditor.h:99
int seldatasetidx_
Definition: flatauxdataeditor.h:246
bool isDragging() const
Definition: flatauxdataeditor.h:151
MouseEventHandler & mouseeventhandler_
Definition: flatauxdataeditor.h:87
MouseEventHandler & mousehandler_
Definition: flatauxdataeditor.h:242
bool mousedown_
Definition: flatauxdataeditor.h:243
MenuHandler * menuhandler_
Definition: flatauxdataeditor.h:251
MouseEventHandler & mouseEventHandler()
Definition: flatauxdataeditor.h:197
BoolTypeSet allowmove_
Definition: flatauxdataeditor.h:227
AuxDataEditor & editor_
Definition: flatauxdataeditor.h:84
Definition: mouseevent.h:166
Notifier< AuxDataEditor > movementFinished
Definition: flatauxdataeditor.h:158
Editor for FlatView::AuxData. Allows the end-user to click-drag-release the points in data...
Definition: flatauxdataeditor.h:117
Notifier< Sower > sowing
Definition: flatauxdataeditor.h:68
Class to sow/select points with mouse.
Definition: flatauxdataeditor.h:34
BoolTypeSet allowpolysel_
Definition: flatauxdataeditor.h:229
Sower & sower()
Definition: flatauxdataeditor.h:185
AuxData * feedback_
Definition: flatauxdataeditor.h:237
AuxData * sowingline_
Definition: flatauxdataeditor.h:86
Pos::IdxPair2Coord transformation_
Definition: flatauxdataeditor.h:85
BoolTypeSet allowadd_
Definition: flatauxdataeditor.h:226
Notifier< AuxDataEditor > addAuxDataChange
Definition: flatauxdataeditor.h:138
Notifier with automatic capsule creation.
Definition: notify.h:166
bool hasmoved_
Definition: flatauxdataeditor.h:244
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
OD::ButtonState erasermask_
Definition: flatauxdataeditor.h:101
Geom::PixRectangle< int > mousearea_
Definition: flatauxdataeditor.h:240
TypeSet< int > ids_
Definition: flatauxdataeditor.h:225
ObjectSet< AuxData > polygonsel_
Definition: flatauxdataeditor.h:233
ObjectSet< AuxData > auxdata_
Definition: flatauxdataeditor.h:224
bool singleseeded_
Definition: flatauxdataeditor.h:103
int curknotstamp_
Definition: flatauxdataeditor.h:105
Definition: bitmap2rgb.h:15
Viewer & viewer()
Definition: flatauxdataeditor.h:183
BoolTypeSet allowremove_
Definition: flatauxdataeditor.h:228
OD::LineStyle polygonsellst_
Definition: flatauxdataeditor.h:234
Definition: mouseevent.h:72
Encapsulates linear transform from (i,j) index to (x,y) coordinates.
Definition: posidxpair2coord.h:24
bool alternatesowingorder_
Definition: flatauxdataeditor.h:95
const Viewer & viewer() const
Definition: flatauxdataeditor.h:182
bool isSelActive() const
Definition: flatauxdataeditor.h:188
#define mCtrlLeftButton
Definition: flatauxdataeditor.h:28

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