#ifndef _element

#define _element


// Macros



#include "stdlib.h"

extern char * __ClassNames[];


// Includes

#include <math.h>

#include <stdbool.h>

#include <stdarg.h>

#include "classConfiguration.h"

#include "char.h"

#include "vector.h"

#include "vector4.h"

#include "vector3.h"

#include "vector2.h"


typedef struct element{

	int index;

	vector3 position;

	vector2 size;

	vector3 backgroundColor;

	vector3 originalPosition;

	vector2 originalSize;

	vector3 originalBackgroundColor;

	float opacity;

	char * backgroundImagePath;

	bool useBackgroundImage;

	int features;

	vector_char_pointer * featureNames;

	int textureIndex;

	void * background;


} element;

void element_constructor( element * this );

vector4 element_colorConverter( element * this, char * hexValue );

void element_setOriginal( element * this );

void element_setter_size( element * this, vector2 a );

void element_setter_position( element * this, vector3 a );

bool element_featureIsEnabled( element * this, int featureValue );

int element_getFeatureValueByFeatureName( element * this, char * featureName );

int element_updateFeature( element * this );

void element_setter_background( element * this, int count, int datatypes[], ... );

void element_click( element * this );

void element_mousedown( element * this );

void element_mouseup( element * this );

void element_mouseover( element * this );

void element_mouseleave( element * this );

element element_new(  );

element * element_newPointer(  );

#endif


typedef struct element element;



