5#ifndef DCPP_I_ATTRIBUTES_HPP_INCLUDED
6#define DCPP_I_ATTRIBUTES_HPP_INCLUDED
8#include <duckcpp/core/engine/IReferenceCounted.hpp>
9#include <duckcpp/core/engine/SColor.hpp>
10#include <duckcpp/core/engine/vector3d.hpp>
11#include <duckcpp/core/engine/vector2d.hpp>
12#include <duckcpp/core/engine/line2d.hpp>
13#include <duckcpp/core/engine/line3d.hpp>
14#include <duckcpp/core/engine/triangle3d.hpp>
15#include <duckcpp/core/engine/position2d.hpp>
16#include <duckcpp/core/engine/rect.hpp>
17#include <duckcpp/core/engine/dimension2d.hpp>
18#include <duckcpp/core/engine/matrix4.hpp>
19#include <duckcpp/core/engine/quaternion.hpp>
20#include <duckcpp/core/engine/plane3d.hpp>
21#include <duckcpp/core/engine/triangle3d.hpp>
22#include <duckcpp/core/engine/line2d.hpp>
23#include <duckcpp/core/engine/line3d.hpp>
24#include <duckcpp/core/engine/irrString.hpp>
25#include <duckcpp/core/engine/irrArray.hpp>
26#include <duckcpp/core/engine/IXMLReader.hpp>
27#include <duckcpp/core/engine/IXMLWriter.hpp>
28#include <duckcpp/core/engine/EAttributes.hpp>
29#include <duckcpp/core/engine/path.hpp>
Base class of most objects of the Duckcpp Engine.
Definition IReferenceCounted.hpp:46
Provides a generic interface for attributes and their values and the possibility to serialize them.
Definition IAttributes.hpp:42
virtual dcpp::video::ITexture * getAttributeAsTexture(const dcpp::char_kt *attributeName, dcpp::video::ITexture *defaultNotFound=0) const =0
virtual const wchar_t * getAttributeTypeString(const dcpp::char_kt *attributeName, const wchar_t *defaultNotFound=L"unknown") const =0
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::vector2df &v)=0
Sets an attribute as 2d vector.
virtual void getAttributeAsBinaryData(const dcpp::char_kt *attributeName, void *outData, dcpp::int32_kt maxSizeInBytes) const =0
Gets an attribute as binary data.
virtual void addVector3d(const dcpp::char_kt *attributeName, const dcpp::nub::vector3df &value)=0
Adds an attribute as 3d vector.
virtual dcpp::nub::line2df getAttributeAsLine2d(dcpp::int32_kt index) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, dcpp::float32_kt value)=0
Sets a attribute as float value.
virtual dcpp::nub::array< dcpp::nub::wstring > getAttributeAsArray(dcpp::int32_kt index) const =0
virtual dcpp::float32_kt getAttributeAsFloat(dcpp::int32_kt index) const =0
virtual E_ATTRIBUTE_TYPE getAttributeType(dcpp::int32_kt index) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::position2di &v)=0
Sets a attribute as 2d position.
virtual dcpp::nub::position2di getAttributeAsPosition2d(dcpp::int32_kt index) const =0
virtual void addString(const dcpp::char_kt *attributeName, const wchar_t *value)=0
Adds an attribute as string.
virtual void setAttribute(dcpp::int32_kt index, void *data, dcpp::int32_kt dataSizeInBytes)=0
Sets an attribute as binary data.
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::line3df &v)=0
Sets an attribute as a 3d line.
virtual void setAttribute(dcpp::int32_kt index, dcpp::video::SColor color)=0
Sets an attribute as color.
virtual dcpp::nub::triangle3df getAttributeAsTriangle3d(dcpp::int32_kt index) const =0
virtual dcpp::nub::dimension2du getAttributeAsDimension2d(dcpp::int32_kt index) const =0
virtual void addPlane3d(const dcpp::char_kt *attributeName, const dcpp::nub::plane3df &v)=0
Adds an attribute as 3d plane.
virtual void addBinary(const dcpp::char_kt *attributeName, void *data, dcpp::int32_kt dataSizeInBytes)=0
Adds an attribute as binary data.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::array< dcpp::nub::wstring > &value)=0
Sets an attribute as an array of wide strings.
virtual void addFloat(const dcpp::char_kt *attributeName, dcpp::float32_kt value)=0
Adds an attribute as float.
virtual dcpp::nub::wstring getAttributeAsWstring(dcpp::int32_kt index) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::line2df &v)=0
Sets an attribute as a 2d line.
virtual dcpp::nub::line3df getAttributeAsLine3d(dcpp::int32_kt index) const =0
virtual dcpp::nub::plane3df getAttributeAsPlane3d(const dcpp::char_kt *attributeName, const dcpp::nub::plane3df &defaultNotFound=dcpp::nub::plane3df(0, 0, 0, 0, 1, 0)) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::recti &v)=0
Sets an attribute as rectangle.
virtual void clear()=0
Removes all attributes.
virtual dcpp::nub::line3df getAttributeAsLine3d(const dcpp::char_kt *attributeName, const dcpp::nub::line3df &defaultNotFound=dcpp::nub::line3df(0, 0, 0, 0, 0, 0)) const =0
virtual dcpp::nub::string getAttributeAsString(const dcpp::char_kt *attributeName, const dcpp::nub::string &defaultNotFound=dcpp::nub::string()) const =0
virtual void addLine2d(const dcpp::char_kt *attributeName, const dcpp::nub::line2df &v)=0
Adds an attribute as a 2d line.
virtual void setAttribute(const dcpp::char_kt *attributeName, void *data, dcpp::int32_kt dataSizeInBytes)=0
Sets an attribute as binary data.
virtual void addRect(const dcpp::char_kt *attributeName, const dcpp::nub::recti &value)=0
Adds an attribute as rectangle.
virtual dcpp::nub::array< dcpp::nub::wstring > getAttributeAsArray(const dcpp::char_kt *attributeName, const dcpp::nub::array< dcpp::nub::wstring > &defaultNotFound=dcpp::nub::array< dcpp::nub::wstring >()) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::vector2df &v)=0
Sets a attribute as 2d vector.
virtual void addVector2d(const dcpp::char_kt *attributeName, const dcpp::nub::vector2df &value)=0
Adds an attribute as 2d vector.
virtual void setAttribute(const dcpp::char_kt *attributeName, void *userPointer)=0
Sets an attribute as user pointer.
virtual dcpp::nub::matrix4 getAttributeAsMatrix(const dcpp::char_kt *attributeName, const dcpp::nub::matrix4 &defaultNotFound=dcpp::nub::matrix4()) const =0
virtual void addString(const dcpp::char_kt *attributeName, const dcpp::char_kt *value)=0
Adds an attribute as string.
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::dimension2du &v)=0
Sets an attribute as dimension2d.
virtual void addQuaternion(const dcpp::char_kt *attributeName, const dcpp::nub::quaternion &v)=0
Adds an attribute as quaternion.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::char_kt *enumValue, const dcpp::char_kt *const *enumerationLiterals)=0
Sets an attribute as enumeration.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::char_kt *value)=0
virtual E_ATTRIBUTE_TYPE getAttributeType(const dcpp::char_kt *attributeName) const =0
virtual void addEnum(const dcpp::char_kt *attributeName, const dcpp::char_kt *enumValue, const dcpp::char_kt *const *enumerationLiterals)=0
Adds an attribute as enum.
virtual void setAttribute(const dcpp::char_kt *attributeName, dcpp::video::ITexture *texture, const dcpp::io::path &filename="")=0
Sets an attribute as texture reference.
virtual void getAttributeEnumerationLiteralsOfEnumeration(const dcpp::char_kt *attributeName, dcpp::nub::array< dcpp::nub::string > &outLiterals) const =0
virtual void getAttributeEnumerationLiteralsOfEnumeration(dcpp::int32_kt index, dcpp::nub::array< dcpp::nub::string > &outLiterals) const =0
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::recti &v)=0
Sets an attribute as rectangle.
virtual dcpp::video::SColorf getAttributeAsColorf(dcpp::int32_kt index) const =0
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::triangle3df &v)=0
Sets an attribute as 3d triangle.
virtual void addColor(const dcpp::char_kt *attributeName, dcpp::video::SColor value)=0
Adds an attribute as color.
virtual const wchar_t * getAttributeTypeString(dcpp::int32_kt index, const wchar_t *defaultNotFound=L"unknown") const =0
virtual void setAttribute(dcpp::int32_kt index, dcpp::float32_kt value)=0
Sets an attribute as float value.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::matrix4 &v)=0
Sets an attribute as matrix.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::aabbox3df &v)=0
Sets an attribute as axis aligned bounding box.
virtual bool existsAttribute(const dcpp::char_kt *attributeName) const =0
Returns if an attribute with a name exists.
virtual void addUserPointer(const dcpp::char_kt *attributeName, void *userPointer)=0
Adds an attribute as user pointer.
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::array< dcpp::nub::wstring > &value)=0
virtual void addDimension2d(const dcpp::char_kt *attributeName, const dcpp::nub::dimension2du &value)=0
Adds an attribute as dimension2d.
virtual dcpp::video::SColor getAttributeAsColor(dcpp::int32_kt index) const =0
virtual dcpp::nub::string getAttributeAsString(dcpp::int32_kt index) const =0
virtual dcpp::nub::vector2df getAttributeAsVector2d(dcpp::int32_kt index) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, dcpp::video::SColorf color)=0
Sets a attribute as floating point color.
virtual dcpp::float32_kt getAttributeAsFloat(const dcpp::char_kt *attributeName, dcpp::float32_kt defaultNotFound=0.f) const =0
virtual void addEnum(const dcpp::char_kt *attributeName, dcpp::int32_kt enumValue, const dcpp::char_kt *const *enumerationLiterals)=0
Adds an attribute as enum.
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::plane3df &v)=0
Sets an attribute as 3d plane.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::line3df &v)=0
Sets an attribute as a 3d line.
virtual void addLine3d(const dcpp::char_kt *attributeName, const dcpp::nub::line3df &v)=0
Adds an attribute as a 3d line.
virtual dcpp::nub::triangle3df getAttributeAsTriangle3d(const dcpp::char_kt *attributeName, const dcpp::nub::triangle3df &defaultNotFound=dcpp::nub::triangle3df(dcpp::nub::vector3df(0, 0, 0), dcpp::nub::vector3df(0, 0, 0), dcpp::nub::vector3df(0, 0, 0))) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::matrix4 &v)=0
Sets an attribute as matrix.
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::char_kt *enumValue, const dcpp::char_kt *const *enumerationLiterals)=0
Sets an attribute as enumeration.
virtual dcpp::int32_kt findAttribute(const dcpp::char_kt *attributeName) const =0
Returns attribute index from name, -1 if not found.
virtual dcpp::video::SColor getAttributeAsColor(const dcpp::char_kt *attributeName, const dcpp::video::SColor &defaultNotFound=dcpp::video::SColor(0)) const =0
virtual dcpp::nub::matrix4 getAttributeAsMatrix(dcpp::int32_kt index) const =0
virtual dcpp::nub::quaternion getAttributeAsQuaternion(dcpp::int32_kt index) const =0
virtual dcpp::nub::aabbox3df getAttributeAsBox3d(const dcpp::char_kt *attributeName, const dcpp::nub::aabbox3df &defaultNotFound=dcpp::nub::aabbox3df(0, 0, 0, 0, 0, 0)) const =0
virtual dcpp::nub::dimension2du getAttributeAsDimension2d(const dcpp::char_kt *attributeName, const dcpp::nub::dimension2du &defaultNotFound=dcpp::nub::dimension2du()) const =0
virtual dcpp::nub::wstring getAttributeAsWstring(const dcpp::char_kt *attributeName, const dcpp::nub::wstring &defaultNotFound=dcpp::nub::wstring()) const =0
virtual void addInt(const dcpp::char_kt *attributeName, dcpp::int32_kt value)=0
Adds an attribute as integer.
virtual void addColorf(const dcpp::char_kt *attributeName, dcpp::video::SColorf value)=0
Adds an attribute as floating point color.
virtual void setAttribute(dcpp::int32_kt index, void *userPointer)=0
Sets an attribute as user pointer.
virtual void setAttribute(const dcpp::char_kt *attributeName, dcpp::int32_kt value)=0
Sets an attribute as integer value.
virtual dcpp::int32_kt getAttributeAsInt(dcpp::int32_kt index) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::quaternion &v)=0
Sets an attribute as quaternion.
virtual void getAttributeAsWstring(const dcpp::char_kt *attributeName, wchar_t *target) const =0
virtual bool getAttributeAsBool(const dcpp::char_kt *attributeName, bool defaultNotFound=false) const =0
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::plane3df &v)=0
Sets an attribute as 3d plane.
virtual void addPosition2d(const dcpp::char_kt *attributeName, const dcpp::nub::position2di &value)=0
Adds an attribute as 2d position.
virtual dcpp::nub::line2df getAttributeAsLine2d(const dcpp::char_kt *attributeName, const dcpp::nub::line2df &defaultNotFound=dcpp::nub::line2df(0, 0, 0, 0)) const =0
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::line2df &v)=0
Sets an attribute as a 2d line.
virtual void setAttribute(dcpp::int32_kt index, dcpp::video::ITexture *texture, const dcpp::io::path &filename="")=0
Sets an attribute as texture reference.
virtual dcpp::int32_kt getAttributeAsEnumeration(const dcpp::char_kt *attributeName, const dcpp::char_kt *const *enumerationLiteralsToUse, dcpp::int32_kt defaultNotFound=-1) const =0
Gets an attribute as enumeration.
virtual dcpp::nub::aabbox3df getAttributeAsBox3d(dcpp::int32_kt index) const =0
virtual dcpp::nub::quaternion getAttributeAsQuaternion(const dcpp::char_kt *attributeName, const dcpp::nub::quaternion &defaultNotFound=dcpp::nub::quaternion(0, 1, 0, 0)) const =0
virtual bool write(dcpp::io::IXMLWriter *writer, bool writeXMLHeader=false, const wchar_t *elementName=0)=0
virtual void setAttribute(const dcpp::char_kt *attributeName, bool value)=0
Sets an attribute as boolean value.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::dimension2du &v)=0
Sets an attribute as dimension2d.
virtual void setAttribute(dcpp::int32_kt index, dcpp::int32_kt value)=0
Sets an attribute as integer value.
virtual void setAttribute(dcpp::int32_kt index, const wchar_t *value)=0
virtual void * getAttributeAsUserPointer(dcpp::int32_kt index) const =0
virtual dcpp::nub::vector3df getAttributeAsVector3d(dcpp::int32_kt index) const =0
virtual dcpp::nub::position2di getAttributeAsPosition2d(const dcpp::char_kt *attributeName, const dcpp::nub::position2di &defaultNotFound=dcpp::nub::position2di(0, 0)) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::vector3df &v)=0
Sets a attribute as 3d vector.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::position2di &v)=0
Sets an attribute as 2d position.
virtual void addArray(const dcpp::char_kt *attributeName, const dcpp::nub::array< dcpp::nub::wstring > &value)=0
Adds an attribute as wide string array.
virtual dcpp::int32_kt getAttributeAsEnumeration(dcpp::int32_kt index, const dcpp::char_kt *const *enumerationLiteralsToUse, dcpp::int32_kt defaultNotFound=-1) const =0
Gets an attribute as enumeration.
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::aabbox3df &v)=0
Sets an attribute as axis aligned bounding box.
virtual void setAttribute(dcpp::int32_kt index, dcpp::video::SColorf color)=0
Sets an attribute as floating point color.
virtual dcpp::nub::vector3df getAttributeAsVector3d(const dcpp::char_kt *attributeName, const dcpp::nub::vector3df &defaultNotFound=dcpp::nub::vector3df(0, 0, 0)) const =0
virtual void addMatrix(const dcpp::char_kt *attributeName, const dcpp::nub::matrix4 &v)=0
Adds an attribute as matrix.
virtual void addTexture(const dcpp::char_kt *attributeName, dcpp::video::ITexture *texture, const dcpp::io::path &filename="")=0
Adds an attribute as texture reference.
virtual void * getAttributeAsUserPointer(const dcpp::char_kt *attributeName, void *defaultNotFound=0) const =0
virtual dcpp::nub::recti getAttributeAsRect(const dcpp::char_kt *attributeName, const dcpp::nub::recti &defaultNotFound=dcpp::nub::recti()) const =0
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::quaternion &v)=0
Sets an attribute as quaternion.
virtual void addBool(const dcpp::char_kt *attributeName, bool value)=0
Adds an attribute as bool.
virtual void setAttribute(dcpp::int32_kt index, bool value)=0
Sets an attribute as boolean value.
virtual dcpp::nub::vector2df getAttributeAsVector2d(const dcpp::char_kt *attributeName, const dcpp::nub::vector2df &defaultNotFound=dcpp::nub::vector2df(0, 0)) const =0
virtual dcpp::uint32_kt getAttributeCount() const =0
Returns amount of attributes in this collection of attributes.
virtual void setAttribute(const dcpp::char_kt *attributeName, dcpp::video::SColor color)=0
Sets a attribute as color.
virtual bool getAttributeAsBool(dcpp::int32_kt index) const =0
virtual bool read(dcpp::io::IXMLReader *reader, bool readCurrentElementOnly=false, const wchar_t *elementName=0)=0
virtual dcpp::nub::recti getAttributeAsRect(dcpp::int32_kt index) const =0
virtual dcpp::nub::plane3df getAttributeAsPlane3d(dcpp::int32_kt index) const =0
virtual dcpp::video::SColorf getAttributeAsColorf(const dcpp::char_kt *attributeName, const dcpp::video::SColorf &defaultNotFound=dcpp::video::SColorf(0)) const =0
virtual dcpp::video::ITexture * getAttributeAsTexture(dcpp::int32_kt index) const =0
virtual void addBox3d(const dcpp::char_kt *attributeName, const dcpp::nub::aabbox3df &v)=0
Adds an attribute as axis aligned bounding box.
virtual void getAttributeAsBinaryData(dcpp::int32_kt index, void *outData, dcpp::int32_kt maxSizeInBytes) const =0
Gets an attribute as binary data.
virtual void setAttribute(dcpp::int32_kt index, const dcpp::nub::vector3df &v)=0
Sets an attribute as vector.
virtual void setAttribute(const dcpp::char_kt *attributeName, const wchar_t *value)=0
virtual void getAttributeAsString(const dcpp::char_kt *attributeName, dcpp::char_kt *target) const =0
virtual const dcpp::char_kt * getAttributeAsEnumeration(const dcpp::char_kt *attributeName, const dcpp::char_kt *defaultNotFound=0) const =0
virtual const dcpp::char_kt * getAttributeAsEnumeration(dcpp::int32_kt index) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::char_kt *value)=0
virtual void addTriangle3d(const dcpp::char_kt *attributeName, const dcpp::nub::triangle3df &v)=0
Adds an attribute as 3d triangle.
virtual dcpp::int32_kt getAttributeAsInt(const dcpp::char_kt *attributeName, dcpp::int32_kt defaultNotFound=0) const =0
virtual const dcpp::char_kt * getAttributeName(dcpp::int32_kt index) const =0
virtual void setAttribute(const dcpp::char_kt *attributeName, const dcpp::nub::triangle3df &v)=0
Sets an attribute as 3d trianle.
Interface providing easy read access to a XML file.
Definition irrXML.hpp:277
Interface providing methods for making it easier to write XML files.
Definition irrXML.hpp:377
4x4 matrix. Mostly used as transformation matrix for 3d calculations.
Definition matrix4.hpp:49
Axis aligned bounding box in 3d dimensional space.
Definition aabbox3d.hpp:22
2D line between two points with intersection methods.
Definition line2d.hpp:26
3D line between two points with intersection methods.
Definition line3d.hpp:19
Template plane class with some intersection testing methods.
Definition plane3d.hpp:34
Quaternion class for representing rotations.
Definition quaternion.hpp:32
Rectangle template.
Definition rect.hpp:27
2d vector template class with lots of operators and methods.
Definition vector2d.hpp:22
3d vector template class with lots of operators and methods.
Definition vector3d.hpp:32
Interface of a Video Driver dependent Texture.
Definition ITexture.hpp:186
Class representing a 32 bit ARGB color.
Definition SColor.hpp:317
Class representing a color with four floats.
Definition SColor.hpp:574
E_ATTRIBUTE_TYPE
Types of attributes available for IAttributes.
Definition EAttributes.hpp:15
As of Duckcpp 1.6, position2d is a synonym for vector2d.
Definition shared_device.hpp:34
char char_kt
8 bit character variable.
Definition irrTypes.hpp:37
unsigned int uint32_kt
32 bit unsigned variable.
Definition irrTypes.hpp:64
float float32_kt
32 bit floating point variable.
Definition irrTypes.hpp:108
signed int int32_kt
32 bit signed variable.
Definition irrTypes.hpp:72