Home | History | Annotate | Download | only in dom
      1 /*
      2 * Copyright 2006 Sony Computer Entertainment Inc.
      3 *
      4 * Licensed under the MIT Open Source License, for details please see license.txt or the website
      5 * http://www.opensource.org/licenses/mit-license.php
      6 *
      7 */
      8 
      9 #ifndef __domLines_h__
     10 #define __domLines_h__
     11 
     12 #include <dae/daeDocument.h>
     13 #include <dom/domTypes.h>
     14 #include <dom/domElements.h>
     15 
     16 #include <dom/domP.h>
     17 #include <dom/domExtra.h>
     18 #include <dom/domInputLocalOffset.h>
     19 class DAE;
     20 
     21 /**
     22  * The lines element provides the information needed to bind vertex attributes
     23  * together and then  organize those vertices into individual lines. Each
     24  * line described by the mesh has two vertices.  The first line is formed
     25  * from first and second vertices. The second line is formed from the  third
     26  * and fourth vertices and so on.
     27  */
     28 class domLines : public daeElement
     29 {
     30 public:
     31 	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::LINES; }
     32 	static daeInt ID() { return 618; }
     33 	virtual daeInt typeID() const { return ID(); }
     34 protected:  // Attributes
     35 /**
     36  *  The name attribute is the text string name of this element. Optional attribute.
     37  */
     38 	xsNCName attrName;
     39 /**
     40  *  The count attribute indicates the number of line primitives. Required
     41  * attribute.
     42  */
     43 	domUint attrCount;
     44 /**
     45  *  The material attribute declares a symbol for a material. This symbol is
     46  * bound to a material at  the time of instantiation. If the material attribute
     47  * is not specified then the lighting and  shading results are application
     48  * defined. Optional attribute.
     49  */
     50 	xsNCName attrMaterial;
     51 
     52 protected:  // Elements
     53 /**
     54  * The input element may occur any number of times. This input is a local
     55  * input with the offset  and set attributes. @see domInput
     56  */
     57 	domInputLocalOffset_Array elemInput_array;
     58 /**
     59  *  The p element may occur once.  @see domP
     60  */
     61 	domPRef elemP;
     62 /**
     63  *  The extra element may appear any number of times.  @see domExtra
     64  */
     65 	domExtra_Array elemExtra_array;
     66 
     67 public:	//Accessors and Mutators
     68 	/**
     69 	 * Gets the name attribute.
     70 	 * @return Returns a xsNCName of the name attribute.
     71 	 */
     72 	xsNCName getName() const { return attrName; }
     73 	/**
     74 	 * Sets the name attribute.
     75 	 * @param atName The new value for the name attribute.
     76 	 */
     77 	void setName( xsNCName atName ) { *(daeStringRef*)&attrName = atName; _validAttributeArray[0] = true; }
     78 
     79 	/**
     80 	 * Gets the count attribute.
     81 	 * @return Returns a domUint of the count attribute.
     82 	 */
     83 	domUint getCount() const { return attrCount; }
     84 	/**
     85 	 * Sets the count attribute.
     86 	 * @param atCount The new value for the count attribute.
     87 	 */
     88 	void setCount( domUint atCount ) { attrCount = atCount; _validAttributeArray[1] = true; }
     89 
     90 	/**
     91 	 * Gets the material attribute.
     92 	 * @return Returns a xsNCName of the material attribute.
     93 	 */
     94 	xsNCName getMaterial() const { return attrMaterial; }
     95 	/**
     96 	 * Sets the material attribute.
     97 	 * @param atMaterial The new value for the material attribute.
     98 	 */
     99 	void setMaterial( xsNCName atMaterial ) { *(daeStringRef*)&attrMaterial = atMaterial; _validAttributeArray[2] = true; }
    100 
    101 	/**
    102 	 * Gets the input element array.
    103 	 * @return Returns a reference to the array of input elements.
    104 	 */
    105 	domInputLocalOffset_Array &getInput_array() { return elemInput_array; }
    106 	/**
    107 	 * Gets the input element array.
    108 	 * @return Returns a constant reference to the array of input elements.
    109 	 */
    110 	const domInputLocalOffset_Array &getInput_array() const { return elemInput_array; }
    111 	/**
    112 	 * Gets the p element.
    113 	 * @return a daeSmartRef to the p element.
    114 	 */
    115 	const domPRef getP() const { return elemP; }
    116 	/**
    117 	 * Gets the extra element array.
    118 	 * @return Returns a reference to the array of extra elements.
    119 	 */
    120 	domExtra_Array &getExtra_array() { return elemExtra_array; }
    121 	/**
    122 	 * Gets the extra element array.
    123 	 * @return Returns a constant reference to the array of extra elements.
    124 	 */
    125 	const domExtra_Array &getExtra_array() const { return elemExtra_array; }
    126 protected:
    127 	/**
    128 	 * Constructor
    129 	 */
    130 	domLines(DAE& dae) : daeElement(dae), attrName(), attrCount(), attrMaterial(), elemInput_array(), elemP(), elemExtra_array() {}
    131 	/**
    132 	 * Destructor
    133 	 */
    134 	virtual ~domLines() {}
    135 	/**
    136 	 * Overloaded assignment operator
    137 	 */
    138 	virtual domLines &operator=( const domLines &cpy ) { (void)cpy; return *this; }
    139 
    140 public: // STATIC METHODS
    141 	/**
    142 	 * Creates an instance of this class and returns a daeElementRef referencing it.
    143 	 * @return a daeElementRef referencing an instance of this object.
    144 	 */
    145 	static DLLSPEC daeElementRef create(DAE& dae);
    146 	/**
    147 	 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    148 	 * If a daeMetaElement already exists it will return that instead of creating a new one.
    149 	 * @return A daeMetaElement describing this COLLADA element.
    150 	 */
    151 	static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    152 };
    153 
    154 
    155 #endif
    156