Lumiera  0.pre.03
»edit your freedom«
display-evaluation.hpp
Go to the documentation of this file.
1 /*
2  DISPLAY-EVALUATION.hpp - recursive interwoven timeline layout allocation
3 
4  Copyright (C)
5  2020, Hermann Vosseler <Ichthyostega@web.de>
6 
7   **Lumiera** is free software; you can redistribute it and/or modify it
8   under the terms of the GNU General Public License as published by the
9   Free Software Foundation; either version 2 of the License, or (at your
10   option) any later version. See the file COPYING for further details.
11 
12 */
13 
14 
61 #ifndef STAGE_TIMELINE_DISPLAY_EVALUATION_H
62 #define STAGE_TIMELINE_DISPLAY_EVALUATION_H
63 
64 
65 #include "lib/error.hpp"
66 #include "lib/nocopy.hpp"
67 //#include "lib/util.hpp"
68 
69 //#include <sigc++/signal.h>
70 #include <vector>
71 
72 
73 
74 namespace stage {
75 namespace timeline {
76 
77 //using util::max;
78 
79 //using model::ViewHooked;
80 //class TrackHeadWidget;
81 //class TrackBody;
82  class DisplayEvaluation;
83 
84 
87  {
88  public:
89  virtual ~LayoutElement();
90 
91  virtual void establishLayout (DisplayEvaluation&) =0;
92  virtual void completeLayout (DisplayEvaluation&) =0;
93  };
94 
95 
102  {
103  std::vector<LayoutElement*> elms_;
104 
105  bool collectLayout_{true};
106 
107  public:
108  void attach(LayoutElement& e) { elms_.push_back(&e); }
109  void perform();
110 
111  bool isCollectPhase() const { return this->collectLayout_; }
112 
113  private:/* ===== Internals ===== */
114  void reset();
115  };
116 
117 
118 }}// namespace stage::timeline
119 #endif /*STAGE_TIMELINE_DISPLAY_EVALUATION_H*/
Any copy and copy construction prohibited.
Definition: nocopy.hpp:37
Visitor and state holder for a collaborative layout adjustment pass.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
virtual ~LayoutElement()
this is an interface
Lumiera GTK UI implementation root.
Definition: guifacade.cpp:37
Lumiera error handling (C++ interface).