#ifndef _EVAS_3D_MATERIAL_EO_H_
#define _EVAS_3D_MATERIAL_EO_H_

/**

 */
#define EVAS_3D_MATERIAL_CLASS evas_3d_material_class_get()

const Eo_Class *evas_3d_material_class_get(void) EINA_CONST;

/**
 * @def evas_3d_material_enable_set
 *
 * No description supplied.
 *
 * @param[in] attrib Material attribute ID.
 * @param[in] enable Whether to enable the attribute (@c EINA_TRUE), or not (@c EINA_FALSE).
 *
 */
EAPI void  evas_3d_material_enable_set(Evas_3D_Material_Attrib attrib, Eina_Bool enable);

/**
 * @def evas_3d_material_enable_get
 *
 * No description supplied.
 *
 * @param[in] attrib Material attribute ID.
 *
 */
EAPI Eina_Bool  evas_3d_material_enable_get(Evas_3D_Material_Attrib attrib);

/**
 * @def evas_3d_material_shininess_set
 *
 * No description supplied.
 *
 * @param[in] shininess Shininess value.
 *
 */
EAPI void  evas_3d_material_shininess_set(Evas_Real shininess);

/**
 * @def evas_3d_material_shininess_get
 *
 * No description supplied.
 *
 *
 */
EAPI Evas_Real  evas_3d_material_shininess_get(void);

/**
 * @def evas_3d_material_texture_set
 *
 * Set the texture of the given material.
 *
 * You have to enable the desired attribute first.
 *
 * @see evas_3d_material_enable_set()
 *
 * @ingroup Evas_3D_Material
 * 
 *
 * @param[in] attrib Material attribute ID.
 * @param[in] texture No description supplied.
 *
 */
EAPI void  evas_3d_material_texture_set(Evas_3D_Material_Attrib attrib, Evas_3D_Texture *texture);

/**
 * @def evas_3d_material_texture_get
 *
 * No description supplied.
 *
 * @param[in] attrib Material attribute ID.
 *
 */
EAPI Evas_3D_Texture * evas_3d_material_texture_get(Evas_3D_Material_Attrib attrib);

/**
 * @def evas_3d_material_color_set
 *
 * No description supplied.
 *
 * @param[in] attrib Material attribute ID.
 * @param[in] r Red component of the color.
 * @param[in] g Green component of the color.
 * @param[in] b Blue component of the color.
 * @param[in] a Alpha component of the color.
 *
 */
EAPI void  evas_3d_material_color_set(Evas_3D_Material_Attrib attrib, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a);

/**
 * @def evas_3d_material_color_get
 *
 * No description supplied.
 *
 * @param[in] attrib Material attribute ID.
 * @param[out] r Pointer to receive red component of the color.
 * @param[out] g Pointer to receive green component of the color.
 * @param[out] b Pointer to receive blue component of the color.
 * @param[out] a Pointer to receive alpha component of the color.
 *
 */
EAPI void  evas_3d_material_color_get(Evas_3D_Material_Attrib attrib, Evas_Real *r, Evas_Real *g, Evas_Real *b, Evas_Real *a);


#endif