Graphite  Version 3
An experimental 3D geometry processing program
camera.h
1 /*
2  * OGF/Graphite: Geometry and Graphics Programming Library + Utilities
3  * Copyright (C) 2000 Bruno Levy
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  *
19  * If you modify this software, you should include a notice giving the
20  * name of the person performing the modification, the date of modification,
21  * and the reason for such modification.
22  *
23  * Contact: Bruno Levy
24  *
25  * levy@loria.fr
26  *
27  * ISA Project
28  * LORIA, INRIA Lorraine,
29  * Campus Scientifique, BP 239
30  * 54506 VANDOEUVRE LES NANCY CEDEX
31  * FRANCE
32  *
33  * Note that the GNU General Public License does not permit incorporating
34  * the Software into proprietary programs.
35  */
36 
37 #ifndef H_SKIN_IMGUI_CAMERA_H
38 #define H_SKIN_IMGUI_CAMERA_H
39 
42 #include <OGF/gom/types/node.h>
43 #include <geogram/image/color.h>
44 
45 namespace OGF {
46 
47  class SceneGraphShaderManager;
48  class Application;
49  class FullScreenEffect;
50 
55  class Clipping;
56 
62 
72  gom_class SKIN_IMGUI_API Camera : public Object {
73  public:
79 
83  ~Camera() override;
84 
85  gom_properties:
93  void set_auto_focus(bool value);
94 
102  bool get_auto_focus() const;
103 
109  void set_draw_selected_only(bool value);
110 
117 
118 
123  void set_bkg_color_1(const Color& value);
124 
129  const Color& get_bkg_color_1() const;
130 
137  void set_bkg_color_2(const Color& value);
138 
144  const Color& get_bkg_color_2() const;
145 
150  void set_effect(const FullScreenEffectName& effect);
151 
157 
162  gom_attribute(aggregate_properties,"true")
163  FullScreenEffect* get_effect_object() const;
164 
176  void set_clipping(ClippingConfig value);
177 
188  ClippingConfig get_clipping() const;
189 
194  gom_attribute(visible,"false")
195  mat4 get_lighting_matrix() const;
196 
201  void set_lighting_matrix(const mat4& value);
202 
203  gom_slots:
204 
209  SceneGraphShaderManager* scene_graph_shader_manager() const;
210 
211  private:
212  Application* application_;
213  };
214 
215  typedef SmartPointer<Camera> Camera_var;
216 }
217 
218 #endif
A smart pointer with reference-counted copy semantics.
Definition: smart_pointer.h:76
Implementation of Skin application using ImGui.
Definition: application.h:56
Application attributes and methods related with camera management.
Definition: camera.h:72
void set_effect(const FullScreenEffectName &effect)
Sets the full screen effect.
const Color & get_bkg_color_1() const
Gets the background color.
const Color & get_bkg_color_2() const
Gets the secondary background color.
bool get_auto_focus() const
Tests whether autofocus is active.
const FullScreenEffectName & get_effect() const
Gets the full screen effect.
~Camera() override
Camera destructor.
Camera(Application *app)
Camera constructor.
void set_draw_selected_only(bool value)
Sets whether only the selected object should be drawn.
void set_bkg_color_1(const Color &value)
Sets the primary background color.
bool get_draw_selected_only() const
Tests whether only the selected object should be drawn.
void set_bkg_color_2(const Color &value)
Sets the secondary background color.
A Full screen effect.
A template class for strings that need to have a specific type in the GOM system.
Definition: properties.h:218
Base class for all objects in the GOM system.
Definition: object.h:65
Manages the shaders and full screen effects for the entire SceneGraph.
Color types.
Global Graphite namespace.
Definition: common.h:76
Name< Clipping * > ClippingConfig
An autogui string type for clipping configuration.
Definition: camera.h:55
The base class for all composite objects in the GOM system.
Definitions common to all include files in the skin_imgui library.