cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ad1c1838976144085a8371a890390c53c3d071c7
commit ad1c1838976144085a8371a890390c53c3d071c7 Author: Kateryna Fesyna <[email protected]> Date: Fri Jun 13 18:01:12 2014 +0200 edje: Edje_Edit - add functions that allows user to set and get frequency value of tones in collection Summary: This commit contains two new functions for tones editing: edje_edit_sound_tone_frequency_set() and edje_edit_sound_tone_frequency_det() To avoid code duplication the macross GET_TONE_BY_NAME is added and the lines that performed the search of tone by name are replaced with this macro. @feature Reviewers: cedric, Hermet, seoz, raster CC: reutskiy.v.v, cedric Differential Revision: https://phab.enlightenment.org/D1030 Signed-off-by: Cedric BAIL <[email protected]> --- src/lib/edje/Edje_Edit.h | 21 +++++++++++++++++ src/lib/edje/edje_edit.c | 61 +++++++++++++++++++++++++++++++++++++----------- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h index fb941eb..77240aa 100644 --- a/src/lib/edje/Edje_Edit.h +++ b/src/lib/edje/Edje_Edit.h @@ -3690,6 +3690,27 @@ EAPI double edje_edit_sound_compression_rate_get(Evas_Object *obj, const char* s */ EAPI Eina_Bool edje_edit_sound_compression_rate_set(Evas_Object *obj, const char* sound, double rate); +/** Set the frequency of tone. + * + * @param obj Object being edited. + * @param name The name of the tone. + * @param frequency The value of frequency of tone. This value has to be in range of 20 to 20000 inclusive. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + * @see edje_edit_sound_tone_frequency_get() + */ +EAPI Eina_Bool edje_edit_sound_tone_frequency_set(Evas_Object *obj, const char *name, int frequency); + +/** Get the frequency of tone. + * + * @param obj Object being edited. + * @param name The name of the tone. + * + * @return The frequency of tone if succesful, otherwise returns -1. + * @see edje_edit_sound_tone_frequency_set() + */ +EAPI int edje_edit_sound_tone_frequency_get(Evas_Object *obj, const char *name); + //@} /******************************************************************************/ /************************* SPECTRUM API ***********************************/ diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c index 5710b41..c2d1d05 100644 --- a/src/lib/edje/edje_edit.c +++ b/src/lib/edje/edje_edit.c @@ -1019,6 +1019,18 @@ _initialize_sound_dir(Edje *ed) ed->file->sound_dir->tones_count = 0; } +#define GET_TONE_BY_NAME(_tone_p, _name) \ + { \ + unsigned int i = 0; \ + for (i = 0; i < ed->file->sound_dir->tones_count; ++i) \ + { \ + _tone_p = ed->file->sound_dir->tones + i; \ + if (!strcmp(_name, _tone_p->name)) \ + break; \ + } \ + if (i == ed->file->sound_dir->tones_count) _tone_p = NULL; \ + } + EAPI Eina_Bool edje_edit_sound_sample_add(Evas_Object *obj, const char* name, const char* snd_src) { @@ -1168,9 +1180,6 @@ edje_edit_sound_sample_del(Evas_Object *obj, const char* name) EAPI Eina_Bool edje_edit_sound_tone_del(Evas_Object *obj, const char* name) { - Edje_Sound_Tone *sound_tone = NULL; - unsigned int i = 0; - GET_ED_OR_RETURN(EINA_FALSE); if (!name) return EINA_FALSE; @@ -1183,17 +1192,13 @@ edje_edit_sound_tone_del(Evas_Object *obj, const char* name) return EINA_FALSE; } - for (i = 0; i < ed->file->sound_dir->tones_count; ++i) - { - sound_tone = ed->file->sound_dir->tones + i; - if (!strcmp(name, sound_tone->name)) - break; - } - if (i == ed->file->sound_dir->tones_count) - { - WRN("Unable to delete tone \"%s\". It does not exist.", name); - return EINA_FALSE; - } + Edje_Sound_Tone *sound_tone; + GET_TONE_BY_NAME(sound_tone, name); + if (!sound_tone) + { + WRN("Unable to delete tone \"%s\". It does not exist.", name); + return EINA_FALSE; + } { Eet_File *eetf; @@ -1242,6 +1247,32 @@ edje_edit_sound_tone_del(Evas_Object *obj, const char* name) return EINA_TRUE; } +EAPI Eina_Bool +edje_edit_sound_tone_frequency_set(Evas_Object *obj, const char *name, int frequency) +{ + Edje_Sound_Tone *tone; + if ((frequency < 20) || (frequency > 20000)) return EINA_FALSE; + GET_ED_OR_RETURN(EINA_FALSE); + GET_TONE_BY_NAME(tone, name); + if (tone) + { + tone->value = frequency; + return EINA_TRUE; + } + return EINA_FALSE; +} + +EAPI int +edje_edit_sound_tone_frequency_get(Evas_Object *obj, const char *name) +{ + Edje_Sound_Tone *tone; + GET_ED_OR_RETURN(-1); + GET_TONE_BY_NAME(tone, name); + if (tone) + return tone->value; + return -1; +} + EAPI double edje_edit_sound_compression_rate_get(Evas_Object *obj, const char *sound) { @@ -1291,6 +1322,8 @@ edje_edit_sound_compression_rate_set(Evas_Object *obj, const char *sound, double return EINA_TRUE; } +#undef GET_TONE_BY_NAME + /****************/ /* GROUPS API */ /****************/ --
