MGCL V10  V10
MGCL V10
 全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 フレンド グループ ページ
Appearance.h
1 /********************************************************************/
2 /* Copyright (c) 2015 DG Technologies Inc. and Yuzi Mizuno */
3 /* All rights reserved. */
4 /********************************************************************/
5 
6 #ifndef _MGAppearance_HH_
7 #define _MGAppearance_HH_
8 
9 #include <iosfwd>
10 #include "mg/MGCL.h"
11 #include "mg/Group.h"
12 #include "mgGL/RenderAttr.h"
13 
14 //
15 //Define MGAppearance Class.
16 class MGOfstream;
17 class MGIfstream;
18 class MGGLAttrib;
19 class MGLight;
20 
25 
33 class MG_DLL_DECLR MGAppearance: public MGAttrib{
34 
35 public:
36 
39 
40 MGAppearance():m_no_display(false){;};
41 
42 MGAppearance& operator=(const MGGel& gel2);
43 MGAppearance& operator=(const MGAppearance& gel2);
44 
46 bool operator<(const MGAppearance& gel2)const;
47 bool operator<(const MGGel& gel2)const;
48 
50 
51 std::ostream& out(
52  std::ostream& ostrm
53 )const;
54 
55 MGAttrib* back(){return static_cast<MGAttrib*>(m_glattribs.back());};
56 const MGAttrib* back()const{return static_cast<const MGAttrib*>(m_glattribs.back());};
57 iterator begin(){return m_glattribs.begin();};
58 const_iterator begin()const{return m_glattribs.begin();};
59 void clear(){m_glattribs.clear();};
60 bool empty()const{return m_glattribs.empty();};
61 iterator end(){return m_glattribs.end();};
62 const_iterator end()const{return m_glattribs.end();};
63 MGAttrib* front(){return static_cast<MGAttrib*>(m_glattribs.front());};
64 const MGAttrib* front()const{return static_cast<const MGAttrib*>(m_glattribs.front());};
65 void pop_back(){m_glattribs.pop_back();};
66 void pop_front(){m_glattribs.pop_front();};
67 int size()const{return m_glattribs.size();};
68 
72 int add_light(MGLight* light);
73 
75 bool can_be_removed()const;
76 
79 MGAppearance* clone()const;
80 
82 void drawAttrib(
83  mgVBO& vbo,
84  bool no_color=false
85 )const;
86 
89 virtual mgVBO* dlist_name()const{return 0;};
90 
92 bool displayList_is_made(MGCL::VIEWMODE vmode)const{return true;};
93 
96 iterator erase(iterator i){return m_glattribs.erase(i);};
97 
99 int get_draw_attrib_mask()const;
100 int get_render_attrib_mask()const;
101 
103 long identify_type() const{return MGAPPEARANCE_TID;};
104 
107 int manifold_dimension() const{return -1;};
108 
110 bool no_display()const{return m_no_display;};
111 
114 MGGLAttrib* release_attrib(long tid);
115 
117 void render(mgVBO& vbo)const;
118 
122 iterator search(const MGGLAttrib* atr);
123 iterator search_by_id(MGGEL_TID tid);
124 const_iterator search(const MGGLAttrib* atr)const;
125 const_iterator search_by_id(MGGEL_TID tid)const;
126 
129 void set_attrib(MGGLAttrib* attr);
130 void set_attrib(MGGLAttribs& attrs);
131 
136 MGGLAttrib* set_attrib_with_old(MGGLAttrib* attr);
137 
138 void set_color(const MGColor& color);
139 void set_color(const float color[4]);
140 void set_color(float red, float green, float blue, float alpha=1.);
141 
142 void set_display(){ m_no_display=false;};
143 void set_no_display(){ m_no_display=true;}
144 
145 void set_light_disabled();
146 void set_light_enabled();
147 
151 void set_material(
153  const float ambient[3],
154  const float diffuse[3],
155  const float specular[3],
156  const float emission[3],
157  float shininess=0.,
158  float transparency=0.
159 );
160 
165 void set_back_material(
166  const float ambient[3],
167  const float diffuse[3],
168  const float specular[3],
169  const float emission[3],
170  float shininess=0.,
171  float transparency=0.
172 );
173 
179 void setLineStipple(short int factor,unsigned short pattern);
180 
181 void setLineWidth(float width);
182 
183 virtual std::string whoami()const{return "Appearance";};
184 
185 protected:
186 
187  MGGroup m_glattribs;
189 
191 void ReadMembers(MGIfstream& buf);
192 
194 void WriteMembers(MGOfstream& buf) const;
195 
196 private:
197 iterator insert(iterator i, MGAttrib* atr){return m_glattribs.insert(i,atr);};
198 void push_back(MGAttrib* atr){m_glattribs.push_back(atr);};
199 void push_front(MGAttrib* atr){m_glattribs.push_front(atr);};
200 
201 };
202  // end of DisplayHandling group
204 #endif //#ifndef _MGAppearance_HH_
virtual mgVBO * dlist_name() const
Definition: Appearance.h:89
iterator end()
Definition: Appearance.h:61
MGGroup::const_iterator const_iterator
Definition: Appearance.h:38
virtual std::string whoami() const
Definition: Appearance.h:183
bool m_no_display
True if not to display, false if to display.
Definition: Appearance.h:188
virtual MGAttrib & operator=(const MGAttrib &gel2)
Definition: Attrib.h:37
void push_back(MGGel *x)
push element x at the end.
MGGLAttrib is an abstract class which defines the enum of undefined or disabled.
Definition: GLAttrib.h:35
MGAttrib * front()
Definition: Appearance.h:63
int size() const
Definition: Appearance.h:67
virtual bool operator<(const MGGel &gel2) const
bool empty() const
Definition: Appearance.h:60
const MGAttrib * back() const
Definition: Appearance.h:56
bool no_display() const
Test this is no_display MGAppearance.
Definition: Appearance.h:110
RENDERSIDE
Definition: RenderAttr.h:32
const MGAttrib * front() const
Definition: Appearance.h:64
MGIfstream is a class to read the serialized data generated by MGOfstream.
Definition: Ifstream.h:30
virtual void ReadMembers(MGIfstream &buf)
Read all member data.
iterator erase(iterator i)
Definition: Appearance.h:96
iterator insert(iterator it, MGGel *x)
Definition: Group.h:214
iterator begin()
Definition: Appearance.h:57
MGAttrib * back()
Definition: Appearance.h:55
MGColor defines the OpenGL color (R,G,B,A).
Definition: Color.h:26
MGLight is an abstract base class for light sources.
Definition: Light.h:27
virtual std::ostream & out(std::ostream &) const =0
Output virtual function.
MGGel is an abstract class which represents a group element.
Definition: Gel.h:53
const_iterator begin() const
Definition: Appearance.h:58
MGPlist< MGGel >::iterator iterator
別名定義
Definition: Group.h:39
VIEWMODE
Definition: MGCL.h:271
const_iterator end() const
Definition: Appearance.h:62
int manifold_dimension() const
Definition: Appearance.h:107
MGOfstream is a class to serialize all of the subclasses of MGGel.
Definition: Ofstream.h:31
long identify_type() const
Return This object's typeID.
Definition: Appearance.h:103
virtual void WriteMembers(MGOfstream &buf) const
Write all member data.
void pop_back()
Definition: Appearance.h:65
void set_no_display()
Definition: Appearance.h:143
bool displayList_is_made(MGCL::VIEWMODE vmode) const
Judge if the display list for vmode is made or not.
Definition: Appearance.h:92
MGGroup is a class which constains MGGel elements.
Definition: Group.h:35
A container class to hold MGGLAttrib objects.
Definition: Appearance.h:33
MGPlist< MGGel >::const_iterator const_iterator
Definition: Group.h:40
void clear()
Definition: Appearance.h:59
void pop_front()
Definition: Appearance.h:66
MGAppearance()
Definition: Appearance.h:40
MGGroup::iterator iterator
Definition: Appearance.h:37
OpenGL 4 用描画のためのクラス, in other words, display list.
Definition: VBO.h:76
void push_front(MGGel *x)
Defines Vector of newed object pointers.
Definition: Pvector.h:27
virtual MGGel * clone() const =0
virtual void drawAttrib(mgVBO &vbo, bool no_color=false) const
draw attribute data.
Definition: Gel.h:106
void set_display()
Definition: Appearance.h:142
MGAttrib is an abstract class that defines attribute elements of MGGel.
Definition: Attrib.h:28