You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
258 lines
5.8 KiB
258 lines
5.8 KiB
#ifndef _EXACTNESS_H |
|
#define _EXACTNESS_H |
|
|
|
#include <Evas.h> |
|
|
|
#ifdef EAPI |
|
# undef EAPI |
|
#endif |
|
|
|
#ifdef _WIN32 |
|
# ifdef EXACTNESS_BUILD |
|
# ifdef DLL_EXPORT |
|
# define EAPI __declspec(dllexport) |
|
# else |
|
# define EAPI |
|
# endif /* ! DLL_EXPORT */ |
|
# else |
|
# define EAPI __declspec(dllimport) |
|
# endif /* ! EXACTNESS_BUILD */ |
|
#else |
|
# ifdef __GNUC__ |
|
# if __GNUC__ >= 4 |
|
# define EAPI __attribute__ ((visibility("default"))) |
|
# else |
|
# define EAPI |
|
# endif |
|
# else |
|
# define EAPI |
|
# endif |
|
#endif /* ! _WIN32 */ |
|
|
|
/** |
|
* @page exactness_main Exactness |
|
* |
|
* @date 2018 (created) |
|
* |
|
* This page describes the public structures and APIs available for Exactness. |
|
* |
|
* @addtogroup Exactness |
|
* @{ |
|
*/ |
|
|
|
/** |
|
* @typedef Exactness_Action_Type |
|
* The type values for an Exactness action. |
|
*/ |
|
typedef enum |
|
{ |
|
EXACTNESS_ACTION_UNKNOWN = 0, |
|
EXACTNESS_ACTION_MOUSE_IN, |
|
EXACTNESS_ACTION_MOUSE_OUT, |
|
EXACTNESS_ACTION_MOUSE_WHEEL, |
|
EXACTNESS_ACTION_MULTI_DOWN, |
|
EXACTNESS_ACTION_MULTI_UP, |
|
EXACTNESS_ACTION_MULTI_MOVE, |
|
EXACTNESS_ACTION_KEY_DOWN, |
|
EXACTNESS_ACTION_KEY_UP, |
|
EXACTNESS_ACTION_TAKE_SHOT, |
|
EXACTNESS_ACTION_EFL_EVENT, |
|
EXACTNESS_ACTION_STABILIZE, |
|
EXACTNESS_ACTION_LAST = EXACTNESS_ACTION_STABILIZE |
|
/* Add any supported actions here and update _LAST */ |
|
} Exactness_Action_Type; |
|
|
|
/** |
|
* @typedef Exactness_Action_Mouse_Wheel |
|
* The type for the Exactness Mouse Wheel action. |
|
*/ |
|
typedef struct |
|
{ |
|
int direction; |
|
int z; |
|
} Exactness_Action_Mouse_Wheel; |
|
|
|
/** |
|
* @typedef Exactness_Action_Key_Down_Up |
|
* The type for the Exactness Key Down Up action. |
|
*/ |
|
typedef struct |
|
{ |
|
const char *keyname; |
|
const char *key; |
|
const char *string; |
|
const char *compose; |
|
unsigned int keycode; |
|
} Exactness_Action_Key_Down_Up; |
|
|
|
/** |
|
* @typedef Exactness_Action_Multi_Event |
|
* The type for the Exactness Multi Event action. |
|
*/ |
|
typedef struct |
|
{ |
|
int d; |
|
int b; /* In case of simple mouse down/up, corresponds to the button */ |
|
int x; |
|
int y; |
|
double rad; |
|
double radx; |
|
double rady; |
|
double pres; |
|
double ang; |
|
double fx; |
|
double fy; |
|
Evas_Button_Flags flags; |
|
} Exactness_Action_Multi_Event; |
|
|
|
/** |
|
* @typedef Exactness_Action_Multi_Move |
|
* The type for the Exactness Multi Move action. |
|
*/ |
|
typedef struct |
|
{ |
|
int d; |
|
int x; |
|
int y; |
|
double rad; |
|
double radx; |
|
double rady; |
|
double pres; |
|
double ang; |
|
double fx; |
|
double fy; |
|
} Exactness_Action_Multi_Move; |
|
|
|
/** |
|
* @typedef Exactness_Action_Efl_Event |
|
* The type for the Exactness EFL Event action. |
|
*/ |
|
typedef struct |
|
{ |
|
char *wdg_name; |
|
char *event_name; |
|
} Exactness_Action_Efl_Event; |
|
|
|
/** |
|
* @typedef Exactness_Action |
|
* The type for the Exactness action. |
|
*/ |
|
typedef struct |
|
{ |
|
Exactness_Action_Type type; /**< The action type */ |
|
unsigned int n_evas; /**< The evas number on which the action has to be applied */ |
|
unsigned int delay_ms; /**< The delay (in ms) to wait for this action */ |
|
void *data; /**< The specific action data */ |
|
} Exactness_Action; |
|
|
|
/** |
|
* @typedef Exactness_Object |
|
* The type for the Exactness object. |
|
*/ |
|
typedef struct |
|
{ |
|
long long id; /**< The Eo pointer */ |
|
long long parent_id; /**< The Eo parent pointer */ |
|
const char *kl_name; /**< The class name */ |
|
|
|
Eina_List *children; /* NOT EET */ |
|
|
|
/* Evas stuff */ |
|
int x; /**< The X coordinate */ |
|
int y; /**< The Y coordinate */ |
|
int w; /**< The object width */ |
|
int h; /**< The object height */ |
|
} Exactness_Object; |
|
|
|
/** |
|
* @typedef Exactness_Objects |
|
* The type for the Exactness objects list. |
|
*/ |
|
typedef struct |
|
{ |
|
Eina_List *objs; /**< List of all the objects */ |
|
/* main_objs not in EET */ |
|
Eina_List *main_objs; /**< List of the main objects */ |
|
} Exactness_Objects; |
|
|
|
/** |
|
* @typedef Exactness_Image |
|
* The type for the Exactness Image. |
|
*/ |
|
typedef struct |
|
{ |
|
unsigned int w; /**< Width of the image */ |
|
unsigned int h; /**< Height of the image */ |
|
void *pixels; /**< Pixels of the image */ |
|
} Exactness_Image; |
|
|
|
typedef struct |
|
{ |
|
char *language; /**< String describing the language of the content e.g "C"...*/ |
|
char *content; /**< Content used as source */ |
|
char *command; /**< Command needed to generate the application from the content */ |
|
} Exactness_Source_Code; |
|
|
|
typedef struct |
|
{ |
|
Eina_List *actions; /**< List of Exactness_Action */ |
|
/* imgs not in EET */ |
|
Eina_List *imgs; /**< List of Exactness_Image */ |
|
Eina_List *objs; /**< List of Exactness_Objects */ |
|
Eina_List *codes; /**< List of Exactness_Source_Code */ |
|
const char *fonts_path; /**< Path to the fonts to use, relative to the fonts dir given in parameter to the player/recorder */ |
|
int nb_shots; /**< The number of shots present in the unit */ |
|
} Exactness_Unit; |
|
|
|
/** |
|
* @brief Read an unit from a given file |
|
* |
|
* @param filename Name of the file containing the unit |
|
* |
|
* @return the unit |
|
*/ |
|
EAPI Exactness_Unit *exactness_unit_file_read(const char *filename); |
|
|
|
/** |
|
* @brief Write an unit into the given file |
|
* |
|
* @param unit Unit to store |
|
* @param filename Name of the file containing the unit |
|
* |
|
* @return EINA_TRUE on success, EINA_FALSE otherwise |
|
*/ |
|
EAPI Eina_Bool exactness_unit_file_write(Exactness_Unit *unit, const char *filename); |
|
|
|
/** |
|
* @brief Compare two images |
|
* |
|
* @param img1 first image |
|
* @param img2 second image |
|
* @param imgO pointer for the diff image. Can be NULL |
|
* |
|
* @return EINA_TRUE if the images are different, EINA_FALSE otherwise |
|
*/ |
|
EAPI Eina_Bool exactness_image_compare(Exactness_Image *img1, Exactness_Image *img2, Exactness_Image **imgO); |
|
|
|
/** |
|
* @brief Free the given image |
|
* |
|
* @param img the image |
|
* |
|
*/ |
|
EAPI void exactness_image_free(Exactness_Image *img); |
|
|
|
/** |
|
* @brief Read a legacy file and convert it to an unit |
|
* |
|
* @param filename Name of the legacy file |
|
* |
|
* @return the unit |
|
*/ |
|
EAPI Exactness_Unit *legacy_rec_file_read(const char *filename); |
|
|
|
/** |
|
* @} |
|
*/ |
|
|
|
#endif /* _EXACTNESS_H */
|
|
|