cgv
drawable.h
1 #pragma once
2 
3 #include <cgv/base/base.h>
4 #include <cgv/base/traverser.h>
5 #include <cgv/render/context.h>
6 #include <cgv/render/view.h>
7 
8 #include "lib_begin.h"
9 
10 namespace cgv {
11  namespace render {
12 
14 class CGV_API drawable : public base::traverse_policy, public render_types
15 {
16 private:
18  context* ctx;
19 public:
21  drawable();
22 
24  void hide();
26  void show();
28  bool is_visible() const;
29 
31  context* get_context() const;
33  void set_context(context* _ctx);
35 
36  cgv::render::view* find_view_as_node(size_t view_idx = 0) const;
38 
40  bool get_world_location(int x, int y, const cgv::render::view& V, cgv::math::fvec<double, 3>& world_location, double* window_z_ptr = 0) const;
42  void post_redraw();
44  void force_redraw();
45 
47  virtual bool init(context&);
49  virtual void resize(unsigned int w, unsigned int h);
51  virtual void init_frame(context&);
53  virtual void draw(context&);
55  virtual void finish_draw(context&);
57  virtual void finish_frame(context&);
59  virtual void after_finish(cgv::render::context&);
61  virtual void clear(context&);
62 };
63 
65 class CGV_API multi_pass_drawable : public drawable
66 {
67 protected:
68  // mark current render pass
69  int current_render_pass;
70  // store recursion depth on which render passes are initiated
71  unsigned render_pass_recursion_depth;
72 public:
76  bool initiate_render_pass_recursion(context& ctx);
78  void perform_render_pass(context& ctx, int rp_idx, RenderPass rp = RP_USER_DEFINED, int excluded_flags = RPF_HANDLE_SCREEN_SHOT, int included_flags = 0);
80  void initiate_terminal_render_pass(int rp_idx);
82  bool multi_pass_ignore_finish(const context& ctx);
84  bool multi_pass_terminate(const context& ctx);
85 };
86 
87  }
88 }
89 
90 #include <cgv/config/lib_end.h>
cgv::render::view
Definition: view.h:22
cgv::math::fvec< double, 3 >
cgv::base::traverse_policy
nodes should inherit from this policy class to allow selective tree traversals
Definition: traverser.h:24
cgv::render::multi_pass_drawable
Definition: drawable.h:66
cgv::render::RP_USER_DEFINED
@ RP_USER_DEFINED
in picking pass a small rectangle around the mouse is rendered
Definition: context.h:75
cgv::render::drawable
Definition: drawable.h:15
cgv
the cgv namespace
Definition: vr_calib.cxx:9
cgv::render::RenderPass
RenderPass
enumeration of different render passes, which can be queried from the context and used to specify a n...
Definition: context.h:66
cgv::render::context
Definition: context.h:525