#ifndef _ELM_PHOTO_EO_H_
#define _ELM_PHOTO_EO_H_

/**

 */
#define ELM_OBJ_PHOTO_CLASS elm_obj_photo_class_get()

const Eo_Class *elm_obj_photo_class_get(void) EINA_CONST;

/**
 * @def elm_obj_photo_editable_set
 *
 * Set editability of the photo.
 *
 * An editable photo can be dragged to or from, and can be cut or
 * pasted too. Note that pasting an image or dropping an item on
 * the image will delete the existing content.
 *
 * @param[in] set To set of clear editability.
 *
 */
EAPI void  elm_obj_photo_editable_set(Eina_Bool set);

/**
 * @def elm_obj_photo_editable_get
 *
 * Get editability of the photo.
 *
 *
 */
EAPI Eina_Bool  elm_obj_photo_editable_get(void);

/**
 * @def elm_obj_photo_fill_inside_set
 *
 * Set if the photo should be completely visible or not.
 *
 * @ingroup Photo
 *
 * @param[in] fill if true the photo will be completely visible
 *
 */
EAPI void  elm_obj_photo_fill_inside_set(Eina_Bool fill);

/**
 * @def elm_obj_photo_fill_inside_get
 *
 * Get if the photo should be completely visible or not.
 *
 *
 */
EAPI Eina_Bool  elm_obj_photo_fill_inside_get(void);

/**
 * @def elm_obj_photo_aspect_fixed_set
 *
 * Set whether the original aspect ratio of the photo should be kept on resize.
 *
 * The original aspect ratio (width / height) of the photo is usually
 * distorted to match the object's size. Enabling this option will fix
 * this original aspect, and the way that the photo is fit into
 * the object's area
 *
 * @see elm_photo_aspect_fixed_get()
 *
 * @ingroup Photo
 *
 * @param[in] fixed @c EINA_TRUE if the photo should fix the aspect,
@c EINA_FALSE otherwise.
 *
 */
EAPI void  elm_obj_photo_aspect_fixed_set(Eina_Bool fixed);

/**
 * @def elm_obj_photo_aspect_fixed_get
 *
 * Get if the object keeps the original aspect ratio.
 *
 * @return @c EINA_TRUE if the object keeps the original aspect, @c EINA_FALSE
 * otherwise.
 *
 * @ingroup Photo
 *
 *
 */
EAPI Eina_Bool  elm_obj_photo_aspect_fixed_get(void);

/**
 * @def elm_obj_photo_size_set
 *
 * Set the size that will be used on the photo
 *
 * @ingroup Photo
 *
 * @param[in] size The size of the photo
 *
 */
EAPI void  elm_obj_photo_size_set(int size);

/**
 * @def elm_obj_photo_size_get
 *
 * Get the size that will be used on the photo
 *
 *
 */
EAPI int  elm_obj_photo_size_get(void);

/**
 * @def elm_obj_photo_file_set
 *
 * Set the file that will be used as the photo widget's image.
 *
 * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
 *
 * @note Use @c NULL on @a file to set the photo widget back to it's
 * initial state, which indicates "no photo".
 *
 * @ingroup Photo
 *
 * @param[in] file The path to file that will be used as @a obj's image.
 *
 */
EAPI Eina_Bool  elm_obj_photo_file_set(const char *file);

/**
 * @def elm_obj_photo_thumb_set
 *
 * Set the file that will be used as thumbnail in the photo.
 *
 * @ingroup Photo
 *
 * @param[in] file The path to file that will be used as thumbnail.
 * @param[in] group The key used in case of an EET file.
 *
 */
EAPI void  elm_obj_photo_thumb_set(const char *file, const char *group);

EAPI extern const Eo_Event_Description _ELM_PHOTO_EVENT_CLICKED;
EAPI extern const Eo_Event_Description _ELM_PHOTO_EVENT_DRAG_START;
EAPI extern const Eo_Event_Description _ELM_PHOTO_EVENT_DRAG_END;

/**
 * No description
 */
#define ELM_PHOTO_EVENT_CLICKED (&(_ELM_PHOTO_EVENT_CLICKED))

/**
 * No description
 */
#define ELM_PHOTO_EVENT_DRAG_START (&(_ELM_PHOTO_EVENT_DRAG_START))

/**
 * No description
 */
#define ELM_PHOTO_EVENT_DRAG_END (&(_ELM_PHOTO_EVENT_DRAG_END))

#endif