GL Studio C++ Runtime API
group.h
Go to the documentation of this file.
1 /*! \file
2  \brief The disti::Group class. Implements groups of objects.
3 
4  \par Copyright Information
5 
6  Copyright (c) 2017 by The DiSTI Corporation.<br>
7  11301 Corporate Blvd; Suite 100<br>
8  Orlando, Florida 32817<br>
9  USA<br>
10  <br>
11  All rights reserved.<br>
12 
13  This Software contains proprietary trade secrets of DiSTI and may not be
14 reproduced, in whole or part, in any form, or by any means of electronic,
15 mechanical, or otherwise, without the written permission of DiSTI. Said
16 permission may be derived through the purchase of applicable DiSTI product
17 licenses which detail the distribution rights of this content and any
18 Derivative Works based on this or other copyrighted DiSTI Software.
19 
20  NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21 AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22 PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23 AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24 IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25 PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26 
27  LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28 IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29 INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30 DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31 INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32 INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33 OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34 EXCEED FIVE DOLLARS (US$5.00).
35 
36  The aforementioned terms and restrictions are governed by the laws of the
37 State of Florida and the United States of America.
38 
39 */
40 #ifndef INCLUDED_DISTI_GROUP_H
41 #define INCLUDED_DISTI_GROUP_H
42 
43 #include "display.h"
44 #include "dynamic_array.h"
45 #include "gls_cpp_lang_support.h"
46 
47 namespace disti
48 {
49 /**
50  * The Group class. Implements groups of objects
51  */
52 class Group : public DisplayObject
53 {
54 public:
55  typedef DisplayObject _BaseClass;
56 
57 private:
58  /** If true, this object will be eligible for culling based on its static extents.
59  * IMPORTANT: The cull will only be acturate within the STATIC extents of the group
60  * If any child moves outside the static extents using Dynamic operations, it will
61  * be over-culled.
62  * The default is false, and only leaf nodes (non-groups) will cull.
63  */
64  bool _performGroupCullCheck;
65 
66  /** If true, cull checking will pass on to children of this group.
67  * If false, children will not be culled (if this group is not culled) */
68  bool _cullTestChildren;
69 
70  DisplayObject* BestPick( const Vector& winLoc, const Vector& logicalCoords, float scale, const Vector& directionVector, Vector& collisionWinLoc /*Returned*/, const OpenGLMatrices& drawnMatrices );
71  DisplayObject* FirstPick( const Vector& winLoc, const Vector& logicalCoords, float scale, const Vector& directionVector, Vector& collisionWinLoc /*Returned*/, const OpenGLMatrices& drawnMatrices );
72 
73  virtual GLS_EXPORT void onVertexchanged( void );
74 
75  // GLS-8709 - There should be an attribute type that doesn't require a dummy setter and also does not write the GLS file.
76  void DummySetUnsignedInt( const unsigned int& ) {} // Used for making a read only property
77  Group& operator=( const Group& ) DISTI_SPECIAL_MEM_FUN_DELETE;
78  Group( const Group& that ) DISTI_SPECIAL_MEM_FUN_DELETE;
79 
80 protected:
81  DisplayObjectArray _objects; /** The objects contained in this group */
82 
83  /** Helper method for child classes of group that don't want to call Group::SetAvailableAttributes */
84  virtual GLS_EXPORT void AddAvailableAttributes( unsigned int availableAttributes );
85 
86  /** Grow bounding box to accomodate new object
87  * \param obj The new object in the group
88  * \pre obj Must already be added to the group
89  */
90  virtual GLS_EXPORT void GrowBoundingBox( DisplayObject* obj );
91 
92 public:
93  friend class GroupEditor;
94 
95 #ifndef GLES
96  /* See base class */
97  virtual GLS_EXPORT InterfaceListType* GetCppInterfaceDescription( InterfaceListType* addToThisList = NULL );
98 
99  /* See base class */
100  virtual GLS_EXPORT void GetCppInterfaceDescriptionFree( InterfaceListType* array );
101 #endif
102 
103  /** Finds a pointer to the display object in the group, using the object's
104  * instance name as a key.
105  * \note If there are multiple DisplayObjects within the group with the same name,
106  * only the first instance will be found. This can be an issue if a sub-component
107  * contains objects with the same name as the object you are searching for.
108  * \param name Instance name of the object to find
109  * \return A pointer to the object if it is in the group, otherwise NULL
110  */
111  GLS_EXPORT DisplayObject* FindByName( const char* name );
112 
113  /** Finds a pointer to the display object in the group, using the object's
114  * instance name as a key.
115  * This does not desend into components, as they are different frames
116  * with possibility for duplicate names as the current frame.
117  * \param name Instance name of the object to find
118  * \return A pointer to the object if it is in the group, otherwise NULL
119  */
120  virtual GLS_EXPORT DisplayObject* FindByNameSameFrame( const char* name );
121 
122  /** Finds a pointer to the display object in the group, using the object's
123  * instance name as a key.
124  * \param obj Pointer to the object to find
125  * \return A pointer to the object if it is in the group, otherwise NULL
126  */
128 
129  /** Finds a pointer to the DisplayObject in the group using a qualified instance name.
130  * This allows precise searches for an object contained within a sub-component.
131  * (e.g. "cockpit.altimeter.needle"). To find an object in the same DisplayFrame
132  * use just the instance name. (e.g. "cockpit")
133  * The dot denotes crossing of DisplayFrame boundaries.
134  * \sa GetQualifiedInstanceName
135  * \param name Qualified instance name of the object to find
136  * \returns A pointer to the object if it is in the group, otherwise NULL
137  */
138  GLS_EXPORT DisplayObject* FindByQualifiedName( const char* name );
139 
140  /** Finds a pointer to the display object in the group, using the object's address as a key
141  * \param obj Pointer to the object to find
142  * \return A pointer to the object if it is in the group, otherwise NULL
143  */
144  GLS_EXPORT DisplayObject* FindNonRecursive( DisplayObject* obj );
145 
146  /** Returns a reference to the object array for this group */
147  DisplayObjectArray& Objects( void ) { return _objects; }
148 
149  /** Returns the DisplayObject at the given group index
150  * \param index The index of the object to find
151  * \return A pointer to the object if it is in the group, otherwise NULL
152  */
153  GLS_EXPORT DisplayObject* Item( unsigned int index );
154 
155  /** Returns whether or not this group should be considered for culling */
156  bool PerformGroupCullCheck( void ) const { return _performGroupCullCheck; }
157 
158  /** Sets whether or not this group should be considered for culling */
159  GLS_EXPORT void PerformGroupCullCheck( bool mode );
160 
161  /** Returns whether or not this group's children should be considered for culling */
162  bool CullTestChildren( void ) const { return _cullTestChildren; }
163 
164  /** Sets whether or not this group's children should be considered for culling */
165  GLS_EXPORT void CullTestChildren( bool mode );
166 
167  /** \return The number of objects in this group. (Non recursive count) */
168  unsigned int Count( void ) const { return _objects.Count(); }
169 
170  /** Overload of the array index operator to allow you to treat this Group as an array of objects */
171  DisplayObjectPtr operator[]( unsigned int index ) { return _objects[ index ]; }
172 
173  /** \return pointer to the first element in the group, or NULL if it doesn't exist */
174  GLS_EXPORT DisplayObject* FirstObject();
175 
176  /** \return pointer to the last element in the group, or NULL if it doesn't exist */
177  GLS_EXPORT DisplayObject* LastObject( void );
178 
179  /** \return True if this group is empty */
180  bool IsEmpty() const { return ( Count() == 0 ); }
181 
182  /** Get the index position of the specified object in the list
183  * \param obj The object to find
184  * \return The index of the object in the list, -1 if it isn't in the list
185  */
186  GLS_EXPORT int Position( DisplayObject* obj );
187 
188  /** Construct a new group.
189  * \param generateInstance Whether or not to generate an instance name for this group
190  */
191  GLS_EXPORT explicit Group( int generateInstance = FALSE );
192 
193  /** Copy construct a new group, performing a "deep copy" by cloning objects in the group.
194  * \param group The group to clone.
195  * \param generateNames Whether or not to generate a new instance name for this group and its children.
196  */
197  GLS_EXPORT Group( const Group& group, bool generateNames );
198 
199  /** Sets the initial number of entries in a group
200  * \param cnt The initial number of entries
201  */
202  GLS_EXPORT void InitialGroupCount( unsigned int cnt );
203 
204  static GLS_EXPORT DisplayObject* CreateInstance();
205 
206  /** Destroy a group object */
207  virtual GLS_EXPORT ~Group();
208 
209  /** Actually delete all the children of the group.
210  * This does a recursive "delete" on all the children.
211  * This does NOT just remove them from the group.
212  */
213  virtual GLS_EXPORT void DeleteAllChildren();
214 
215  virtual GLS_EXPORT void SetAvailableAttributes( unsigned int value );
216 
217  /* See base class */
218  virtual GLS_EXPORT DisplayObject* CloneObject( bool generateNames = false );
219 
220  /* See base class */
221  virtual GLS_EXPORT void CopyGeometry( DisplayObject* src );
222 
223  /* See base class */
224  virtual GLS_EXPORT void CopyProperties( DisplayObject* src );
225 
226  /* See base class */
227  virtual GLS_EXPORT void Draw( void );
228 
229  /* See base class */
230  virtual GLS_EXPORT void PreDraw( const OpenGLMatrices& current, Culler& culler );
231 
232  /* See base class */
233  virtual GLS_EXPORT bool Hit( float x, float y, float z, float scale, const Vector& directionVector, Vector* collisionPoint );
234 
235  /* See base class */
236  virtual GLS_EXPORT DisplayObject* Pick3D( const Vector& winLoc,
237  const Vector& logicalCoords,
238  float scale,
239  const Vector& directionVector,
240  Vector& collisionWinLoc /*Returned*/,
241  const OpenGLMatrices& drawnMatrices );
242 
243  using _BaseClass::Parent;
244 
245  /* See base class */
246  virtual GLS_EXPORT void Parent( DisplayFrame* par );
247 
248  /* See base class */
249  GLS_EXPORT void SetPainter( GlsPainter* painter ) DISTI_METHOD_OVERRIDE;
250 
251  /* See base class */
252  virtual GLS_EXPORT void CalculateBoundingBox( void );
253 
254  /* Unhides base class implementation. */
255  using _BaseClass::Location;
256 
257  /* See base class */
258  virtual GLS_EXPORT void Location( const Vertex& v ) DISTI_METHOD_OVERRIDE;
259  virtual GLS_EXPORT void Location( float x, float y, float z );
260 
261  /* See base class */
262  virtual GLS_EXPORT void Translate( float x, float y, float z );
263 
264  /* See base class */
265  virtual GLS_EXPORT void Translate( float transAmount[] );
266 
267  /* See base class */
268  virtual GLS_EXPORT void TranslateVertices( float x, float y, float z );
269 
270  /* See base class */
271  virtual GLS_EXPORT void TranslateVertices( float transAmount[] );
272 
273  /* See base class */
274  virtual GLS_EXPORT void GetExtents( float& x, float& y, float& z, float& x1, float& y1, float& z1 );
275 
276  /* See base class */
277  virtual GLS_EXPORT void GetTransformedExtents( Vector& min, Vector& max, const GlsMatrixType& matrix, bool resetMinMax = true );
278 
279  /* Unhides base class implementation. */
280  using _BaseClass::Rotate;
281 
282  /* See base class */
283  virtual GLS_EXPORT void Rotate( const Vector& orig, float angle, const Vector& axis );
284 
285  /* Unhides base class implementation. */
286  using _BaseClass::Scale;
287 
288  /* See base class */
289  virtual GLS_EXPORT void Scale( const float scale_x, const float scale_y );
290 
291  /* See base class */
292  virtual GLS_EXPORT void Scale( float scale_x, float scale_y, float scale_z, Vertex* anchor = NULL, int handle = 0 );
293 
294  /** Adds the specified object into the group, at the end of the list
295  * \param obj A pointer to the object to add
296  * \param reparent Whether or not the object parent should be set to this group
297  * \param recalculateBoundingbox Whether or not to recalculate the bounding box
298  * \param loc Where to insert it (defaults to -1 which means at the end of the list)
299  */
300  virtual GLS_EXPORT void InsertObject( DisplayObject* obj, bool reparent = true, bool recalculateBoundingbox = true, int loc = -1 );
301 
302  /** Removes the specified object from this group. Does not delete it.
303  * \param obj The display object to removed
304  * \param recalculateBoundingbox
305  * \return True if the object was found and removed from this group
306  */
307  virtual GLS_EXPORT bool DeleteObject( DisplayObject* obj, bool recalculateBoundingbox = true );
308 
309  /** Change the draw order of a child object within this group
310  * \param oldIndex The old index of the object
311  * \param newIndex The new index of the object
312  * \pre oldIndex and newIndex must be valid indices
313  */
314  virtual GLS_EXPORT void ReorderObject( unsigned int oldIndex, unsigned int newIndex );
315 
316  /** Adds the specified object into the group, at the head of the list
317  * Treats the list like a stack, hence the name Push
318  * \param obj A pointer to the object to add
319  */
320  virtual GLS_EXPORT void PushObject( DisplayObject* obj );
321 
322  /* Unhides base class implementation. */
324 
325  /** DeleteVertex is overloaded in group to disable it. It is not possible
326  * to delete a Group's Vertices
327  */
328  virtual GLS_EXPORT void DeleteVertex( unsigned int index );
329 
330  /* Unhides base class implementation. */
332 
333  /** InsertVertex is overloaded in group to disable it. It is not possible
334  * to insert into a Group's Vertices
335  */
336  virtual GLS_EXPORT void InsertVertex( unsigned int index );
337 
338  /** Copies the given vertex data into the group's location vertex
339  * thereby moving the group's location member without affecting
340  * its child objects.
341  * \param v - Given vertex
342  */
343  virtual GLS_EXPORT void SetGroupLocation( const Vertex& v );
344 
345  /* See base class */
346  virtual GLS_EXPORT void GetResources( std::ostream& outstr, GlsResourceFilter* filter = NULL ) DISTI_METHOD_OVERRIDE;
347 
348  /* See base class */
349  virtual GLS_EXPORT void CalculateTextureCoordinates( void ) DISTI_METHOD_OVERRIDE;
350 
351  virtual GLS_EXPORT void LineWidth( float width ) DISTI_METHOD_OVERRIDE;
352  virtual GLS_EXPORT float LineWidth( void ) DISTI_METHOD_OVERRIDE;
353 
354  virtual GLS_EXPORT void LineStipplePattern( int pattern ) DISTI_METHOD_OVERRIDE;
355  virtual GLS_EXPORT int LineStipplePattern( void ) DISTI_METHOD_OVERRIDE;
356 
357  virtual GLS_EXPORT void LineStippleMultiplier( int mult ) DISTI_METHOD_OVERRIDE;
358  virtual GLS_EXPORT int LineStippleMultiplier( void ) DISTI_METHOD_OVERRIDE;
359 
360  virtual GLS_EXPORT int PolygonMode( void ) DISTI_METHOD_OVERRIDE;
361  virtual GLS_EXPORT void PolygonMode( int mode ) DISTI_METHOD_OVERRIDE;
362 
363  virtual GLS_EXPORT void PolygonEnd( const int mode ) DISTI_METHOD_OVERRIDE;
364  virtual GLS_EXPORT int PolygonEnd( void ) DISTI_METHOD_OVERRIDE;
365 
366  virtual GLS_EXPORT void Shading( const int mode ) DISTI_METHOD_OVERRIDE;
367  virtual GLS_EXPORT int Shading( void ) DISTI_METHOD_OVERRIDE;
368 
369  virtual GLS_EXPORT void DepthTest( unsigned char mode ) DISTI_METHOD_OVERRIDE;
370  virtual GLS_EXPORT int DepthTest( void ) DISTI_METHOD_OVERRIDE;
371 
372  virtual GLS_EXPORT void AntiAlias( bool mode ) DISTI_METHOD_OVERRIDE;
373  virtual GLS_EXPORT bool AntiAlias( void ) DISTI_METHOD_OVERRIDE;
374 
375  virtual GLS_EXPORT void AlphaMode( int mode ) DISTI_METHOD_OVERRIDE;
376  virtual GLS_EXPORT int AlphaMode( void ) DISTI_METHOD_OVERRIDE;
377 
378  virtual GLS_EXPORT void CullBackFace( const bool mode ) DISTI_METHOD_OVERRIDE;
379  virtual GLS_EXPORT bool CullBackFace( void ) DISTI_METHOD_OVERRIDE;
380 
381  virtual GLS_EXPORT bool LightingEnabled() DISTI_METHOD_OVERRIDE;
382  virtual GLS_EXPORT void LightingEnabled( bool lighting ) DISTI_METHOD_OVERRIDE;
383 
384  /* Unhides base class implementation. */
385  using _BaseClass::SetBlendColor;
386 
387  virtual GLS_EXPORT void SetBlendColor( const GlsColor& color );
388 
389  /* Unhides base class implementation. */
390  using _BaseClass::GetBlendColor;
391 
392  virtual GLS_EXPORT GlsColor GetBlendColor( void );
393 
394  /* Unhides base class implementation. */
395  using _BaseClass::SetColor;
396 
397  virtual GLS_EXPORT void SetColor( const GlsColor& color );
398 
399  /* Unhides base class implementation. */
400  using _BaseClass::GetColor;
401 
402  virtual GLS_EXPORT GlsColor GetColor( void );
403 
404  /* Unhides base class implementation. */
405  using _BaseClass::SetFillColor;
406 
407  virtual GLS_EXPORT void SetFillColor( const GlsColor& color );
408 
409  /* Unhides base class implementation. */
410  using _BaseClass::GetFillColor;
411 
412  virtual GLS_EXPORT GlsColor GetFillColor( void );
413 
414  virtual GLS_EXPORT void TextureRepeat( const int rep );
415  using _BaseClass::TextureRepeat;
416 
417  virtual GLS_EXPORT void TextureMappingTechnique( const int map );
418  virtual GLS_EXPORT int TextureMappingTechnique( void );
419 
420  virtual GLS_EXPORT void TextureMinificationFilter( const int filter );
421  virtual GLS_EXPORT int TextureMinificationFilter( void );
422 
423  virtual GLS_EXPORT void TextureMagnificationFilter( const int filter );
424  virtual GLS_EXPORT int TextureMagnificationFilter( void );
425 
426  /** Call the Calculate method for all children
427  * \param time The current time
428  */
429  virtual GLS_EXPORT void Calculate( double time );
430 
431  /** The following class is provided for GL Studio 2.1 backward compatibility.
432  * This interface is deprecated and should only be used to support legacy code.
433  */
435  {
436  protected:
437  unsigned int _index;
438  Group* _parentGroup;
439 
440  public:
441  GLS_EXPORT CompatabilityListItem();
442 
443  GLS_EXPORT CompatabilityListItem* Next();
444 
445  GLS_EXPORT CompatabilityListItem* Prev();
446 
447  GLS_EXPORT DisplayObject* DataPtr();
448 
449  static GLS_EXPORT void RecalcCompatabilityList( Group* whichGroup );
450  };
451 
452  /** \return The first object in this group
453  */
454  GLS_EXPORT CompatabilityListItem* First();
455 
456  /** \return The last object in this group
457  */
458  GLS_EXPORT CompatabilityListItem* Last();
459 
460  DynamicArray<CompatabilityListItem> _compatList; /** Use for 2.1 compatibility only */
461 
462 private:
463  /** Sets the texturing repeat mode for this object without affecting
464  * the settings of its children.
465  * \param rep The new texture repeat mode for this object (boolean)
466  */
467  virtual GLS_EXPORT void SetGroupTextureRepeat( const int mode );
468 };
469 
470 } // namespace disti
471 
472 #endif
Definition: cull.h:49
DisplayObject * FindNonRecursive(DisplayObject *obj)
Definition: display_frame.h:85
virtual int PolygonEnd(void)
virtual const Vertex & Location(void) const
unsigned int Count(void) const
Definition: group.h:168
virtual GlsColor GetBlendColor(void)
Definition: vertex.h:408
virtual void InsertVertex(unsigned int index)
virtual float LineWidth(void)
virtual void GrowBoundingBox(DisplayObject *obj)
virtual void GetTransformedExtents(Vector &min, Vector &max, const GlsMatrixType &matrix, bool resetMinMax=true)
virtual bool CullBackFace(void)
bool IsEmpty() const
Definition: group.h:180
virtual void InsertObject(DisplayObject *obj, bool reparent=true, bool recalculateBoundingbox=true, int loc=-1)
The disti::DynamicArray class. A templated array of objects capable of dynamically growing...
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:276
virtual void Calculate(double time)
virtual int DepthTest(void)
virtual int TextureMagnificationFilter(void)
virtual void GetExtents(float &x, float &y, float &z, float &x1, float &y1, float &z1)
DisplayFrame * Parent(void) const
Definition: display.h:898
Definition: display.h:98
DisplayObject * Item(unsigned int index)
virtual int TextureMappingTechnique(void)
virtual int PolygonMode(void)
virtual DisplayObject * CloneObject(bool generateNames=false)
virtual void DeleteAllChildren()
DisplayObject * FirstObject()
virtual bool Hit(float x, float y, float z, float scale, const Vector &directionVector, Vector *collisionPoint)
virtual GlsColor GetFillColor(void)
virtual DisplayObject * Pick3D(const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &drawnMatrices)
virtual void CopyGeometry(DisplayObject *src)
The disti::DisplayObject class and global enumerations.
virtual ~Group()
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL)
Definition: gls_painter.h:51
virtual int AlphaMode(void)
void SetPainter(GlsPainter *painter)
virtual void DeleteVertex(unsigned int index)
DisplayObjectPtr operator[](unsigned int index)
Definition: group.h:171
virtual void ReorderObject(unsigned int oldIndex, unsigned int newIndex)
virtual void PushObject(DisplayObject *obj)
virtual int Shading(void)
void Count(const unsigned int count)
Definition: dynamic_array.h:115
CompatabilityListItem * First()
virtual bool DeleteObject(DisplayObject *obj, bool recalculateBoundingbox=true)
virtual void PreDraw(const OpenGLMatrices &current, Culler &culler)
virtual GlsColor GetColor(void)
virtual int TextureMinificationFilter(void)
int Position(DisplayObject *obj)
CompatabilityListItem * Last()
bool CullTestChildren(void) const
Definition: group.h:162
DisplayObject * FindByName(const char *name)
virtual void SetFillColor(const GlsColor &color)
void InitialGroupCount(unsigned int cnt)
virtual void InsertVertex(unsigned int index)
virtual void Translate(float x, float y, float z)
bool PerformGroupCullCheck(void) const
Definition: group.h:156
virtual bool AntiAlias(void)
Definition: gls_color.h:53
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array)
virtual void Rotate(float angle, int axis=Z_AXIS)
char * InstanceName(void)
virtual bool LightingEnabled()
virtual void SetColor(const GlsColor &color)
virtual void SetAvailableAttributes(unsigned int value)
virtual void SetGroupLocation(const Vertex &v)
DisplayObject * LastObject(void)
virtual void DeleteVertex(unsigned int index)
virtual void CalculateTextureCoordinates(void)
DisplayObject * FindByName(DisplayObject *obj)
Definition: group.h:127
DisplayObject * FindByQualifiedName(const char *name)
Definition: group.h:52
void Scale(int handleBar, float px, float py, Vertex *anchor=NULL)
Definition: display.h:1112
Definition: vertex.h:83
virtual int LineStipplePattern(void)
virtual void Draw(void)
virtual void GetResources(std::ostream &outstr, GlsResourceFilter *filter=NULL)
virtual void TranslateVertices(float x, float y, float z)
virtual void SetBlendColor(const GlsColor &color)
virtual void Rotate(const Vector &orig, float angle, const Vector &axis)
virtual DisplayObject * FindByNameSameFrame(const char *name)
Definition: gls_resources.h:50
virtual bool TextureRepeat(void)
Macros and helper code to determine what subset of C++11/14/17 is available.
Definition: bmpimage.h:46
virtual int LineStippleMultiplier(void)
virtual void AddAvailableAttributes(unsigned int availableAttributes)
DisplayObjectArray & Objects(void)
Definition: group.h:147
virtual void CopyProperties(DisplayObject *src)
virtual DisplayObject * handle(DisplayEvent *ev)