OpendTect  6.3
flatview.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: A.H. Bril
7  Date: Dec 2005
8 ________________________________________________________________________
9 
10 -*/
11 
12 #include "generalmod.h"
13 #include "coltabmapper.h"
14 #include "datapackbase.h"
15 #include "draw.h"
16 #include "mousecursor.h"
17 
18 class FlatView_CB_Rcvr;
19 class ZAxisTransform;
20 namespace ZDomain { class Def; }
21 namespace FlatView
22 {
23 
26 
33 {
34 public:
35 
40  {
41  public:
42  EditPermissions();
43 
44  bool onoff_;
45  bool namepos_;
46  bool linestyle_;
47  bool linecolor_;
48  bool fillcolor_;
51  bool x1rg_;
52  bool x2rg_;
53  };
54 
55 
56  virtual ~AuxData();
57  virtual AuxData* clone() const { return new AuxData(*this); }
58  virtual void touch() {}
59 
61 
62  bool enabled_;
63  bool turnon_;
64 
67  int namepos_;
68  Interval<double>* x1rg_;
71 
85  int zvalue_;
87 
88  bool close_;
90 
91  void setFillPattern( const OD::FillPattern& fp )
92  { fillpattern_ = fp; }
93  bool isEmpty() const;
94  void empty();
95 
96  // should be protected, don't use.
97  AuxData( const char* nm );
98  AuxData( const AuxData& );
99  friend class Viewer;
100 };
101 
102 
108 {
109 public:
110 
111 
114  mStruct(General) AxisData
115  {
116  AxisData();
117 
118  BufferString name_;
119  SamplingData<float> sampling_;
120  bool showannot_;
121  bool showgridlines_;
122  bool reversed_;
123  bool annotinint_;
124  int factor_;
125  bool showauxannot_;
126  uiString auxlabel_;
127  OD::LineStyle auxlinestyle_;
128  OD::LineStyle auxhllinestyle_;
129  TypeSet<OD::PlotAnnotation> auxannot_;
130  int auxPosIdx(float pos,float eps) const;
131  void showAll(bool yn);
132  };
133 
134 
135  Annotation(bool darkbg);
136  ~Annotation();
137 
140  AxisData x1_;
141  AxisData x2_;
142 
143  bool showaux_;
144  bool editable_;
147 
148  inline void setAxesAnnot( bool yn )
149  { x1_.showAll(yn); x2_.showAll(yn); }
150  inline bool haveTitle() const
151  { return !title_.isEmpty(); }
152  inline bool haveAxisAnnot( bool x1dir ) const
153  { return color_.isVisible()
154  && ( ( x1dir && x1_.showannot_)
155  || (!x1dir && x2_.showannot_)); }
156  inline bool haveGridLines( bool x1dir ) const
157  { return color_.isVisible()
158  && ( ( x1dir && x1_.showgridlines_)
159  || (!x1dir && x2_.showgridlines_)); }
160  //bool haveAux() const;
161 
162  void fillPar(IOPar&) const;
163  void usePar(const IOPar&);
164 
165  static const char* sKeyAxes();
166  static const char* sKeyX1Sampl();
167  static const char* sKeyX2Sampl();
168  static const char* sKeyShwAnnot();
169  static const char* sKeyShwGridLines();
170  static const char* sKeyIsRev();
171  static const char* sKeyShwAux();
172 };
173 
174 
185 {
186 public:
187 
189  mExpClass(General) Common : public CallBacker
190  {
191  public:
192  Common();
193  Common(const Common&);
194  ~Common() { detachAllNotifiers(); }
195  Common& operator =(const Common&);
196 
197  bool show_; // default=true
198  bool blocky_; // default=false
201  RefMan<ColTab::Mapper> mapper_; // do not set to null
202  };
203 
205  mExpClass(General) VD : public Common
206  {
207  public:
208 
209  VD();
210 
212  bool lininterp_; // Use bi-linear interpol, not poly
213 
214  protected:
215 
216  void tabNmChg(CallBacker*);
217 
218  };
219 
221  mExpClass(General) WVA : public Common
222  {
223  public:
224 
225  WVA()
226  : wigg_(Color::Black())
227  , refline_(Color::NoColor())
228  , lowfill_(Color::NoColor())
229  , highfill_(Color::Black())
230  , overlap_(1)
231  , reflinevalue_(mUdf(float)) {}
232 
237  float overlap_;
239  };
240 
242 
245  void show( bool wva, bool vd )
246  { wva_.show_ = wva; vd_.show_ = vd; }
247 
248  void fillPar(IOPar&) const;
249  void usePar(const IOPar&);
250 
251  static const char* sKeyVD();
252  static const char* sKeyWVA();
253  static const char* sKeyShow();
254  static const char* sKeyDispRg();
255  static const char* sKeyColTab();
256  static const char* sKeyFlipSequence();
257  static const char* sKeyCyclicSequence();
258  static const char* sKeyLinearInter();
259  static const char* sKeyBlocky();
260  static const char* sKeyAutoScale();
261  static const char* sKeyClipPerc();
262  static const char* sKeyWiggCol();
263  static const char* sKeyRefLineCol();
264  static const char* sKeyLowFillCol();
265  static const char* sKeyHighFillCol();
266  static const char* sKeyOverlap();
267  static const char* sKeySymMidValue();
268  static const char* sKeyRefLineValue();
269 };
270 
271 
277 {
278 public:
279  Appearance( bool drkbg=true )
280  : darkbg_(drkbg)
281  , annot_(drkbg)
282  , secondsetaxes_(drkbg)
283  , anglewithset1_(0) {}
284 
285  virtual ~Appearance() {}
286 
287  virtual void fillPar(IOPar&) const;
288  virtual void usePar(const IOPar&);
289 
292 
293  //Second set of axes, especially handy in case flat viewer is horizontal
296 
297  void setDarkBG(bool yn);
298  bool darkBG() const { return darkbg_; }
299 
300  void setGeoDefaults(bool isvert);
301 
302 protected:
303 
304  bool darkbg_;
305 };
308 
309 
331 {
332 public:
333 
334  Viewer();
335  virtual ~Viewer();
336 
337  virtual Appearance& appearance();
338  const Appearance& appearance() const
339  { return const_cast<Viewer*>(this)->appearance(); }
340 
342  { return datatransform_; }
343  bool setZAxisTransform(ZAxisTransform*);
344  bool hasZAxisTransform() const
345  { return datatransform_; }
346  void setZDomain(const ZDomain::Def&);
347  const ZDomain::Info& zDomain() const;
348 
349  void addPack(::DataPack::ID);
353  void usePack(bool wva,::DataPack::ID,bool usedefs=true );
355  void removePack(::DataPack::ID);
357  void setPack( bool wva, ::DataPack::ID id, bool usedefs=true)
358  { addPack( id ); usePack( wva, id, usedefs ); }
359  void clearAllPacks();
360 
361  ConstRefMan<FlatDataPack> getPack(bool wva,bool checkother=false) const;
362  /*\param checkother if true, the datapack of other
363  display (i.e. variable density or wiggles) is returned
364  if the specified display has no datapack. */
365  bool hasPack(bool wva) const
366  { return packID(wva)!=DataPack::cNoID(); }
367  DataPack::ID packID(bool wva) const;
368 
369  const TypeSet< ::DataPack::ID>& availablePacks() const { return ids_; }
370 
371  virtual bool isVertical() const { return true; }
372  bool isVisible(bool wva) const;
373  void setVisible(bool wva, bool visibility);
376 
377  Coord3 getCoord(const Point&) const;
378 
379  enum DataChangeType { All=0xFFFFFFFF, BitmapData=0x0001, DisplayPars=0x0002,
380  Annot=0x0004, Auxdata=0x0008 };
381  virtual void handleChange(unsigned int datachangetype) = 0;
385  virtual void fillAppearancePar( IOPar& iop ) const
387  { appearance().fillPar( iop ); }
390  virtual void useAppearancePar( const IOPar& iop )
391  { appearance().usePar( iop ); }
392 
393  void storeDefaults(const char* key) const;
394  void useStoredDefaults(const char* key);
395 
396  void getAuxInfo(const Point&,IOPar&) const;
397  virtual void showAuxDataObjects(AuxData&,bool) {}
398  virtual void updateProperties(const AuxData&) {}
399  virtual void reGenerate(AuxData&) {}
400  virtual void remove(const AuxData&) {}
401 
402  StepInterval<double> getDataPackRange(bool forx1) const;
403  virtual Interval<float> getDataRange(bool wva) const;
404 
405  virtual AuxData* createAuxData(const char* nm) const = 0;
406 
407  virtual int nrAuxData() const = 0;
408  virtual AuxData* getAuxData(int idx) = 0;
409  virtual const AuxData* getAuxData(int idx) const = 0;
410  virtual void addAuxData(AuxData* a) = 0;
411  virtual AuxData* removeAuxData(AuxData* a) = 0;
412  virtual AuxData* removeAuxData(int idx) = 0;
413  void removeAuxDatas(ObjectSet<AuxData>&);
414  void removeAllAuxData();
415  virtual void setAnnotChoice(int selannot) {}
416  virtual int getAnnotChoice(BufferStringSet&) const
417  { return -1; }
419  { needstatusbarupd_ = true; }
421  { needstatusbarupd_ = false; }
422  bool needStatusBarUpdate() const
423  { return needstatusbarupd_; }
424  void setSeisGeomidsToViewer(TypeSet<Pos::GeomID>&);
425 
426  const TypeSet<Pos::GeomID>& getAllSeisGeomids() const { return geom2dids_; }
427 
428  mDeprecated const FlatDataPack* obtainPack(bool wva,
429  bool checkother=false) const;
438 protected:
439 
445  FlatView_CB_Rcvr* cbrcvr_;
448 
449  void addAuxInfo(bool,const Point&,IOPar&) const;
450 
451 private:
452 
455 
457 
458 };
459 
460 } // namespace FlatView
#define mExpClass(module)
Definition: commondefs.h:157
bool linestyle_
Definition: flatview.h:46
Color wigg_
Definition: flatview.h:233
ZDomain::Info * zdinfo_
Definition: flatview.h:444
Class that represents non-bitmap data to be displayed in a flatviewer, such as markers, lines and more.
Definition: flatview.h:32
BufferString colseqname_
Definition: flatview.h:211
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
bool isEmpty() const
WVA()
Definition: flatview.h:225
bool close_
Definition: flatview.h:88
bool show_
Definition: flatview.h:197
bool haveTitle() const
Definition: flatview.h:150
RefMan< ColTab::Mapper > mapper_
Definition: flatview.h:201
void show(bool wva, bool vd)
Definition: flatview.h:245
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file...
Definition: mousecursor.h:24
Appearance * defapp_
Definition: flatview.h:441
bool markerstyle_
Definition: flatview.h:49
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class...
Definition: threadlock.h:51
Color fillcolor_
Definition: flatview.h:83
TypeSet< OD::MarkerStyle2D > markerstyles_
Definition: flatview.h:73
static ID cNoID()
Definition: datapack.h:83
Annotation data for flatviewers.
Definition: flatview.h:107
#define mStruct(module)
Definition: commondefs.h:162
bool needStatusBarUpdate() const
Definition: flatview.h:422
bool turnon_
Turns on/off display.
Definition: flatview.h:63
const TypeSet< ::DataPack::ID > & availablePacks() const
Definition: flatview.h:369
Wiggle/Variable Area parameters.
Definition: flatview.h:221
bool darkBG() const
Definition: flatview.h:298
virtual int getAnnotChoice(BufferStringSet &) const
Definition: flatview.h:416
Common to VD and WVA.
Definition: flatview.h:189
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
BufferString name_
Definition: flatview.h:65
Definition: draw.h:119
Annotation secondsetaxes_
Definition: flatview.h:294
bool needstatusbarupd_
Definition: flatview.h:447
bool fillcolor_
Definition: flatview.h:48
EditPermissions * editpermissions_
If null no editing allowed.
Definition: flatview.h:60
WVA wva_
Definition: flatview.h:244
Explains what part of an AuxData&#39;s appearance may be edited by the user.
Definition: flatview.h:39
AxisData x1_
Definition: flatview.h:140
OD::FillPattern fillpattern_
Definition: flatview.h:84
bool namepos_
Definition: flatview.h:45
int zvalue_
overlay zvalue ( max=on top )
Definition: flatview.h:85
Definition: uistring.h:88
bool haveAxisAnnot(bool x1dir) const
Definition: flatview.h:152
const TypeSet< Pos::GeomID > & getAllSeisGeomids() const
Definition: flatview.h:426
Set of BufferString objects.
Definition: bufstringset.h:25
DataDispPars ddpars_
Definition: flatview.h:291
Threads::Lock lock_
Definition: flatview.h:446
~Common()
Definition: flatview.h:194
Data display parameters.
Definition: flatview.h:184
Color refline_
Definition: flatview.h:234
Flat Viewer using FlatView::Data and FlatView::Appearance.
Definition: flatview.h:330
bool allowuserchangedata_
Definition: flatview.h:200
void setAxesAnnot(bool yn)
Definition: flatview.h:148
Set of pointers to objects.
Definition: commontypes.h:28
bool x1rg_
Definition: flatview.h:51
Manages DataPacks.
Definition: datapack.h:174
FlatView_CB_Rcvr * cbrcvr_
Definition: flatview.h:445
Definition: draw.h:21
bool x2rg_
Definition: flatview.h:52
float anglewithset1_
Definition: flatview.h:295
3D point or vector
Definition: commontypes.h:57
TypeSet< ::DataPack::ID > ids_
Definition: flatview.h:440
Definition: vishorizonsectiondef.h:30
Color highfill_
Definition: flatview.h:236
const Appearance & appearance() const
Definition: flatview.h:338
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
void setPack(bool wva,::DataPack::ID id, bool usedefs=true)
Definition: flatview.h:357
Variable Density (=color-bar driven) parameters.
Definition: flatview.h:205
Interval< double > * x2rg_
if 0, use viewer&#39;s rg & zoom
Definition: flatview.h:70
Definition: draw.h:145
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
bool hasPack(bool wva) const
Definition: flatview.h:365
VD vd_
Definition: flatview.h:243
DataDispPars()
Definition: flatview.h:241
int namepos_
center=0, after last=1
Definition: flatview.h:67
DataPackMgr & dpm_
Definition: flatview.h:442
Appearance(bool drkbg=true)
Definition: flatview.h:279
FixedString All()
Definition: keystrs.h:34
MouseCursor cursor_
Definition: flatview.h:86
WeakPtr< FlatDataPack > vdpack_
Definition: flatview.h:454
bool enabled_
Turns on/off everything.
Definition: flatview.h:62
bool hasZAxisTransform() const
Definition: flatview.h:344
void disableStatusBarUpdate()
Definition: flatview.h:420
WeakPtr< FlatDataPack > wvapack_
Definition: flatview.h:453
Color color_
For axes.
Definition: flatview.h:139
DataChangeType
Definition: flatview.h:379
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
bool markercolor_
Definition: flatview.h:50
ZAxisTransform * datatransform_
Definition: flatview.h:443
void enableStatusBarUpdate()
Definition: flatview.h:418
OD::LineStyle linestyle_
Definition: flatview.h:82
Annotation annot_
Definition: flatview.h:290
float reflinevalue_
Definition: flatview.h:238
TypeSet< Pos::GeomID > geom2dids_
Definition: flatview.h:456
virtual void updateProperties(const AuxData &)
Definition: flatview.h:398
ZAxisTransform * getZAxisTransform() const
Definition: flatview.h:341
virtual void fillPar(IOPar &) const
void setFillPattern(const OD::FillPattern &fp)
Definition: flatview.h:91
#define mDeprecated
Definition: plfdefs.h:213
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
bool isEmpty(const char *)
TypeSet< Point > poly_
Definition: flatview.h:72
float overlap_
Definition: flatview.h:237
bool isVisible() const
virtual void setAnnotChoice(int selannot)
Definition: flatview.h:415
bool onoff_
Definition: flatview.h:44
bool allowuserchange_
Definition: flatview.h:199
uiString title_
color not settable
Definition: flatview.h:138
virtual bool isVertical() const
Definition: flatview.h:371
virtual void usePar(const IOPar &)
bool lininterp_
Definition: flatview.h:212
virtual ~Appearance()
Definition: flatview.h:285
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
bool darkbg_
Definition: flatview.h:304
DataPack for flat data.
Definition: datapackbase.h:61
OD::Alignment namealignment_
Definition: flatview.h:66
Flatviewer appearance.
Definition: flatview.h:276
virtual void touch()
Definition: flatview.h:58
bool allowuserchange_
Definition: flatview.h:145
Definition: groupedid.h:41
bool haveGridLines(bool x1dir) const
Definition: flatview.h:156
virtual void useAppearancePar(const IOPar &iop)
Definition: flatview.h:390
virtual void reGenerate(AuxData &)
Definition: flatview.h:399
Base class for z-axis transforms.
Definition: zaxistransform.h:35
Color lowfill_
Definition: flatview.h:235
Definition: bitmap2rgb.h:15
bool allowuserchangereversedaxis_
Definition: flatview.h:146
bool needsupdatelines_
Definition: flatview.h:89
bool showaux_
Definition: flatview.h:143
Definition of z-domain.
Definition: zdomain.h:39
virtual void showAuxDataObjects(AuxData &, bool)
Definition: flatview.h:397
bool editable_
Definition: flatview.h:144
virtual AuxData * clone() const
Definition: flatview.h:57
bool linecolor_
Definition: flatview.h:47
Information of z-domain.
Definition: zdomain.h:96
Geom::PosRectangle< double > Rect
Definition: flatview.h:25
AxisData x2_
Definition: flatview.h:141
Definition: zdomain.h:18
bool blocky_
Definition: flatview.h:198

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