Irrlicht 3D Engine
IAttributes.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_ATTRIBUTES_H_INCLUDED__
6 #define __I_ATTRIBUTES_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "SColor.h"
10 #include "vector3d.h"
11 #include "vector2d.h"
12 #include "line2d.h"
13 #include "line3d.h"
14 #include "triangle3d.h"
15 #include "position2d.h"
16 #include "rect.h"
17 #include "dimension2d.h"
18 #include "matrix4.h"
19 #include "quaternion.h"
20 #include "plane3d.h"
21 #include "triangle3d.h"
22 #include "line2d.h"
23 #include "line3d.h"
24 #include "irrString.h"
25 #include "irrArray.h"
26 #include "IXMLReader.h"
27 #include "EAttributes.h"
28 #include "path.h"
29 
30 namespace irr
31 {
32 namespace video
33 {
34  class ITexture;
35 } // end namespace video
36 namespace io
37 {
38  class IXMLWriter;
39 
41 class IAttributes : public virtual IReferenceCounted
42 {
43 public:
44 
46  virtual u32 getAttributeCount() const = 0;
47 
50  virtual const c8* getAttributeName(s32 index) = 0;
51 
54  virtual E_ATTRIBUTE_TYPE getAttributeType(const c8* attributeName) = 0;
55 
58  virtual E_ATTRIBUTE_TYPE getAttributeType(s32 index) = 0;
59 
62  virtual const wchar_t* getAttributeTypeString(const c8* attributeName) = 0;
63 
66  virtual const wchar_t* getAttributeTypeString(s32 index) = 0;
67 
69  virtual bool existsAttribute(const c8* attributeName) = 0;
70 
72  virtual s32 findAttribute(const c8* attributeName) const =0;
73 
75  virtual void clear() = 0;
76 
83  virtual bool read(io::IXMLReader* reader, bool readCurrentElementOnly=false, const wchar_t* elementName=0) = 0;
84 
89  virtual bool write(io::IXMLWriter* writer, bool writeXMLHeader=false, const wchar_t* elementName=0) = 0;
90 
91 
92  /*
93 
94  Integer Attribute
95 
96  */
97 
99  virtual void addInt(const c8* attributeName, s32 value) = 0;
100 
102  virtual void setAttribute(const c8* attributeName, s32 value) = 0;
103 
107  virtual s32 getAttributeAsInt(const c8* attributeName) const =0;
108 
111  virtual s32 getAttributeAsInt(s32 index) const =0;
112 
114  virtual void setAttribute(s32 index, s32 value) = 0;
115 
116  /*
117 
118  Float Attribute
119 
120  */
121 
123  virtual void addFloat(const c8* attributeName, f32 value) = 0;
124 
126  virtual void setAttribute(const c8* attributeName, f32 value) = 0;
127 
131  virtual f32 getAttributeAsFloat(const c8* attributeName) = 0;
132 
135  virtual f32 getAttributeAsFloat(s32 index) = 0;
136 
138  virtual void setAttribute(s32 index, f32 value) = 0;
139 
140  /*
141 
142  String Attribute
143 
144  */
145 
147  virtual void addString(const c8* attributeName, const c8* value) = 0;
148 
152  virtual void setAttribute(const c8* attributeName, const c8* value) = 0;
153 
158  virtual core::stringc getAttributeAsString(const c8* attributeName) = 0;
159 
163  virtual void getAttributeAsString(const c8* attributeName, c8* target) = 0;
164 
167  virtual core::stringc getAttributeAsString(s32 index) = 0;
168 
172  virtual void setAttribute(s32 index, const c8* value) = 0;
173 
174  // wide strings
175 
177  virtual void addString(const c8* attributeName, const wchar_t* value) = 0;
178 
182  virtual void setAttribute(const c8* attributeName, const wchar_t* value) = 0;
183 
188  virtual core::stringw getAttributeAsStringW(const c8* attributeName) = 0;
189 
193  virtual void getAttributeAsStringW(const c8* attributeName, wchar_t* target) = 0;
194 
197  virtual core::stringw getAttributeAsStringW(s32 index) = 0;
198 
202  virtual void setAttribute(s32 index, const wchar_t* value) = 0;
203 
204  /*
205 
206  Binary Data Attribute
207 
208  */
209 
211  virtual void addBinary(const c8* attributeName, void* data, s32 dataSizeInBytes) = 0;
212 
214  virtual void setAttribute(const c8* attributeName, void* data, s32 dataSizeInBytes ) = 0;
215 
217 
221  virtual void getAttributeAsBinaryData(const c8* attributeName, void* outData, s32 maxSizeInBytes) = 0;
222 
224 
228  virtual void getAttributeAsBinaryData(s32 index, void* outData, s32 maxSizeInBytes) = 0;
229 
231  virtual void setAttribute(s32 index, void* data, s32 dataSizeInBytes ) = 0;
232 
233 
234  /*
235  Array Attribute
236  */
237 
239  virtual void addArray(const c8* attributeName, const core::array<core::stringw>& value) = 0;
240 
244  virtual void setAttribute(const c8* attributeName, const core::array<core::stringw>& value) = 0;
245 
250  virtual core::array<core::stringw> getAttributeAsArray(const c8* attributeName) = 0;
251 
254  virtual core::array<core::stringw> getAttributeAsArray(s32 index) = 0;
255 
257  virtual void setAttribute(s32 index, const core::array<core::stringw>& value) = 0;
258 
259 
260  /*
261 
262  Bool Attribute
263 
264  */
265 
267  virtual void addBool(const c8* attributeName, bool value) = 0;
268 
270  virtual void setAttribute(const c8* attributeName, bool value) = 0;
271 
275  virtual bool getAttributeAsBool(const c8* attributeName) = 0;
276 
279  virtual bool getAttributeAsBool(s32 index) = 0;
280 
282  virtual void setAttribute(s32 index, bool value) = 0;
283 
284  /*
285 
286  Enumeration Attribute
287 
288  */
289 
291  virtual void addEnum(const c8* attributeName, const c8* enumValue, const c8* const* enumerationLiterals) = 0;
292 
294  virtual void addEnum(const c8* attributeName, s32 enumValue, const c8* const* enumerationLiterals) = 0;
295 
297  virtual void setAttribute(const c8* attributeName, const c8* enumValue, const c8* const* enumerationLiterals) = 0;
298 
302  virtual const c8* getAttributeAsEnumeration(const c8* attributeName) = 0;
303 
305 
312  virtual s32 getAttributeAsEnumeration(const c8* attributeName, const c8* const* enumerationLiteralsToUse) = 0;
313 
315 
322  virtual s32 getAttributeAsEnumeration(s32 index, const c8* const* enumerationLiteralsToUse) = 0;
323 
326  virtual const c8* getAttributeAsEnumeration(s32 index) = 0;
327 
331  virtual void getAttributeEnumerationLiteralsOfEnumeration(const c8* attributeName, core::array<core::stringc>& outLiterals) = 0;
332 
336  virtual void getAttributeEnumerationLiteralsOfEnumeration(s32 index, core::array<core::stringc>& outLiterals) = 0;
337 
339  virtual void setAttribute(s32 index, const c8* enumValue, const c8* const* enumerationLiterals) = 0;
340 
341 
342  /*
343 
344  SColor Attribute
345 
346  */
347 
349  virtual void addColor(const c8* attributeName, video::SColor value) = 0;
350 
351 
353  virtual void setAttribute(const c8* attributeName, video::SColor color) = 0;
354 
358  virtual video::SColor getAttributeAsColor(const c8* attributeName) = 0;
359 
362  virtual video::SColor getAttributeAsColor(s32 index) = 0;
363 
365  virtual void setAttribute(s32 index, video::SColor color) = 0;
366 
367  /*
368 
369  SColorf Attribute
370 
371  */
372 
374  virtual void addColorf(const c8* attributeName, video::SColorf value) = 0;
375 
377  virtual void setAttribute(const c8* attributeName, video::SColorf color) = 0;
378 
382  virtual video::SColorf getAttributeAsColorf(const c8* attributeName) = 0;
383 
386  virtual video::SColorf getAttributeAsColorf(s32 index) = 0;
387 
389  virtual void setAttribute(s32 index, video::SColorf color) = 0;
390 
391 
392  /*
393 
394  Vector3d Attribute
395 
396  */
397 
399  virtual void addVector3d(const c8* attributeName, core::vector3df value) = 0;
400 
402  virtual void setAttribute(const c8* attributeName, core::vector3df v) = 0;
403 
407  virtual core::vector3df getAttributeAsVector3d(const c8* attributeName) = 0;
408 
411  virtual core::vector3df getAttributeAsVector3d(s32 index) = 0;
412 
414  virtual void setAttribute(s32 index, core::vector3df v) = 0;
415 
416  /*
417 
418  Vector2d Attribute
419 
420  */
421 
423  virtual void addVector2d(const c8* attributeName, core::vector2df value) = 0;
424 
426  virtual void setAttribute(const c8* attributeName, core::vector2df v) = 0;
427 
431  virtual core::vector2df getAttributeAsVector2d(const c8* attributeName) = 0;
432 
435  virtual core::vector2df getAttributeAsVector2d(s32 index) = 0;
436 
438  virtual void setAttribute(s32 index, core::vector2df v) = 0;
439 
440  /*
441 
442  Position2d Attribute
443 
444  */
445 
447  virtual void addPosition2d(const c8* attributeName, core::position2di value) = 0;
448 
450  virtual void setAttribute(const c8* attributeName, core::position2di v) = 0;
451 
455  virtual core::position2di getAttributeAsPosition2d(const c8* attributeName) = 0;
456 
459  virtual core::position2di getAttributeAsPosition2d(s32 index) = 0;
460 
462  virtual void setAttribute(s32 index, core::position2di v) = 0;
463 
464  /*
465 
466  Rectangle Attribute
467 
468  */
469 
471  virtual void addRect(const c8* attributeName, core::rect<s32> value) = 0;
472 
474  virtual void setAttribute(const c8* attributeName, core::rect<s32> v) = 0;
475 
479  virtual core::rect<s32> getAttributeAsRect(const c8* attributeName) = 0;
480 
483  virtual core::rect<s32> getAttributeAsRect(s32 index) = 0;
484 
486  virtual void setAttribute(s32 index, core::rect<s32> v) = 0;
487 
488 
489  /*
490 
491  Dimension2d Attribute
492 
493  */
494 
496  virtual void addDimension2d(const c8* attributeName, core::dimension2d<u32> value) = 0;
497 
499  virtual void setAttribute(const c8* attributeName, core::dimension2d<u32> v) = 0;
500 
504  virtual core::dimension2d<u32> getAttributeAsDimension2d(const c8* attributeName) = 0;
505 
508  virtual core::dimension2d<u32> getAttributeAsDimension2d(s32 index) = 0;
509 
511  virtual void setAttribute(s32 index, core::dimension2d<u32> v) = 0;
512 
513 
514  /*
515  matrix attribute
516  */
517 
519  virtual void addMatrix(const c8* attributeName, const core::matrix4& v) = 0;
520 
522  virtual void setAttribute(const c8* attributeName, const core::matrix4& v) = 0;
523 
527  virtual core::matrix4 getAttributeAsMatrix(const c8* attributeName) = 0;
528 
531  virtual core::matrix4 getAttributeAsMatrix(s32 index) = 0;
532 
534  virtual void setAttribute(s32 index, const core::matrix4& v) = 0;
535 
536  /*
537  quaternion attribute
538 
539  */
540 
542  virtual void addQuaternion(const c8* attributeName, core::quaternion v) = 0;
543 
545  virtual void setAttribute(const c8* attributeName, core::quaternion v) = 0;
546 
550  virtual core::quaternion getAttributeAsQuaternion(const c8* attributeName) = 0;
551 
554  virtual core::quaternion getAttributeAsQuaternion(s32 index) = 0;
555 
557  virtual void setAttribute(s32 index, core::quaternion v) = 0;
558 
559  /*
560 
561  3d bounding box
562 
563  */
564 
566  virtual void addBox3d(const c8* attributeName, core::aabbox3df v) = 0;
567 
569  virtual void setAttribute(const c8* attributeName, core::aabbox3df v) = 0;
570 
574  virtual core::aabbox3df getAttributeAsBox3d(const c8* attributeName) = 0;
575 
578  virtual core::aabbox3df getAttributeAsBox3d(s32 index) = 0;
579 
581  virtual void setAttribute(s32 index, core::aabbox3df v) = 0;
582 
583  /*
584 
585  plane
586 
587  */
588 
590  virtual void addPlane3d(const c8* attributeName, core::plane3df v) = 0;
591 
593  virtual void setAttribute(const c8* attributeName, core::plane3df v) = 0;
594 
598  virtual core::plane3df getAttributeAsPlane3d(const c8* attributeName) = 0;
599 
602  virtual core::plane3df getAttributeAsPlane3d(s32 index) = 0;
603 
605  virtual void setAttribute(s32 index, core::plane3df v) = 0;
606 
607 
608  /*
609 
610  3d triangle
611 
612  */
613 
615  virtual void addTriangle3d(const c8* attributeName, core::triangle3df v) = 0;
616 
618  virtual void setAttribute(const c8* attributeName, core::triangle3df v) = 0;
619 
623  virtual core::triangle3df getAttributeAsTriangle3d(const c8* attributeName) = 0;
624 
627  virtual core::triangle3df getAttributeAsTriangle3d(s32 index) = 0;
628 
630  virtual void setAttribute(s32 index, core::triangle3df v) = 0;
631 
632 
633  /*
634 
635  line 2d
636 
637  */
638 
640  virtual void addLine2d(const c8* attributeName, core::line2df v) = 0;
641 
643  virtual void setAttribute(const c8* attributeName, core::line2df v) = 0;
644 
648  virtual core::line2df getAttributeAsLine2d(const c8* attributeName) = 0;
649 
652  virtual core::line2df getAttributeAsLine2d(s32 index) = 0;
653 
655  virtual void setAttribute(s32 index, core::line2df v) = 0;
656 
657 
658  /*
659 
660  line 3d
661 
662  */
663 
665  virtual void addLine3d(const c8* attributeName, core::line3df v) = 0;
666 
668  virtual void setAttribute(const c8* attributeName, core::line3df v) = 0;
669 
673  virtual core::line3df getAttributeAsLine3d(const c8* attributeName) = 0;
674 
677  virtual core::line3df getAttributeAsLine3d(s32 index) = 0;
678 
680  virtual void setAttribute(s32 index, core::line3df v) = 0;
681 
682 
683  /*
684 
685  Texture Attribute
686 
687  */
688 
690  virtual void addTexture(const c8* attributeName, video::ITexture* texture, const io::path& filename = "") = 0;
691 
693  virtual void setAttribute(const c8* attributeName, video::ITexture* texture, const io::path& filename = "") = 0;
694 
697  virtual video::ITexture* getAttributeAsTexture(const c8* attributeName) = 0;
698 
701  virtual video::ITexture* getAttributeAsTexture(s32 index) = 0;
702 
704  virtual void setAttribute(s32 index, video::ITexture* texture, const io::path& filename = "") = 0;
705 
706 
707  /*
708 
709  User Pointer Attribute
710 
711  */
712 
714  virtual void addUserPointer(const c8* attributeName, void* userPointer) = 0;
715 
717  virtual void setAttribute(const c8* attributeName, void* userPointer) = 0;
718 
721  virtual void* getAttributeAsUserPointer(const c8* attributeName) = 0;
722 
725  virtual void* getAttributeAsUserPointer(s32 index) = 0;
726 
728  virtual void setAttribute(s32 index, void* userPointer) = 0;
729 
730 };
731 
732 } // end namespace io
733 } // end namespace irr
734 
735 #endif
736 
737 
738 
Interface providing methods for making it easier to write XML files.
Definition: IXMLWriter.h:20
Provides a generic interface for attributes and their values and the possiblity to serialize them...
Definition: IAttributes.h:41
float f32
32 bit floating point variable.
Definition: irrTypes.h:104
E_ATTRIBUTE_TYPE
Types of attributes available for IAttributes.
Definition: EAttributes.h:14
char c8
8 bit character variable.
Definition: irrTypes.h:31
3d triangle template class for doing collision detection and other things.
Definition: triangle3d.h:20
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
3D line between two points with intersection methods.
Definition: line3d.h:18
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
Interface providing easy read access to a XML file.
Definition: irrXML.h:275
Class representing a 32 bit ARGB color.
Definition: SColor.h:201
4x4 matrix. Mostly used as transformation matrix for 3d calculations.
Definition: matrix4.h:45
Self reallocating template array (like stl vector) with additional features.
Definition: irrArray.h:22
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:98
Base class of most objects of the Irrlicht Engine.
Quaternion class for representing rotations.
Definition: quaternion.h:26
2D line between two points with intersection methods.
Definition: line2d.h:18
Class representing a color with four floats.
Definition: SColor.h:458