diff --git a/src/bin/edje/edje_cc.c b/src/bin/edje/edje_cc.c index 63a62b117c..9c0ce0187b 100644 --- a/src/bin/edje/edje_cc.c +++ b/src/bin/edje/edje_cc.c @@ -398,6 +398,15 @@ main(int argc, char **argv) * does not load nicely as a NULL or 0 value * and needs a special fallback initialization */ + /* efl_version is used for specify efl's version + * which was used for developing a edje file. + * It is useful if Edje(or other EFL libs) need to keep + * backward compatibility. + * efl_version was added just after EFL 1.19. + * Thus, 1.19 will be default. + */ + edje_file->efl_version.major = 1; + edje_file->efl_version.minor = 19; edje_file->base_scale = FROM_INT(1); source_edd(); diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 765e0a6da0..8908ec69c8 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -199,6 +199,7 @@ static void _program_free(Edje_Program *pr); static void check_has_anchors(void); +static void st_efl_version(void); static void st_externals_external(void); static void st_images_image(void); @@ -695,6 +696,7 @@ static void _handle_vector_image(void); New_Statement_Handler statement_handlers[] = { + {"efl_version", st_efl_version}, {"externals.external", st_externals_external}, IMAGE_STATEMENTS("") FONT_STYLE_CC_STATEMENTS("") @@ -2141,6 +2143,29 @@ _edje_program_copy(Edje_Program *ep, Edje_Program *ep2) /** @edcsection{toplevel,Top-Level blocks} */ +/** @edcsubsection{toplevel_efl_version, + * Efl_version} */ + +/** + @page edcref + + @property + efl_version + @parameters + [major] [minor] + @effect + Used to show which version of EFL is used for developing a edje file. + @endproperty + */ +static void +st_efl_version(void) +{ + check_arg_count(2); + + edje_file->efl_version.major = parse_int(0); + edje_file->efl_version.minor = parse_int(1); +} + /** @edcsubsection{toplevel_externals, * Externals} */ diff --git a/src/lib/edje/edje_cache.c b/src/lib/edje/edje_cache.c index c38e9433eb..7607156c32 100644 --- a/src/lib/edje/edje_cache.c +++ b/src/lib/edje/edje_cache.c @@ -354,6 +354,13 @@ _edje_file_open(const Eina_File *f, int *error_ret, time_t mtime, Eina_Bool coll WRN("The base_scale can not be a 0.0. It is changed the default value(1.0)"); } + /* Set default efl_version if there is no version information */ + if ((edf->efl_version.major == 0) && (edf->efl_version.minor == 0)) + { + edf->efl_version.major = 1; + edf->efl_version.minor = 19; + } + edf->path = eina_stringshare_add(eina_file_filename_get(f)); edf->references = 1; diff --git a/src/lib/edje/edje_convert.c b/src/lib/edje/edje_convert.c index c8f0f1bda1..8a904aa29b 100644 --- a/src/lib/edje/edje_convert.c +++ b/src/lib/edje/edje_convert.c @@ -216,6 +216,8 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf) edf->size_classes = oedf->size_classes; edf->version = oedf->version; edf->feature_ver = oedf->feature_ver; + edf->efl_version.major = oedf->efl_version.major; + edf->efl_version.minor = oedf->efl_version.minor; edf->compiler = oedf->compiler; edf->dangling = EINA_FALSE; diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c index 5e3ffe5bb4..a11fd07df6 100644 --- a/src/lib/edje/edje_data.c +++ b/src/lib/edje/edje_data.c @@ -1034,6 +1034,8 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "minor", minor, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "feature_ver", feature_ver, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "efl_version.major", efl_version.major, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "efl_version.minor", efl_version.minor, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "base_scale", base_scale, EDJE_T_FLOAT); EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "external_dir", external_dir, _edje_edd_edje_external_directory); EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "image_dir", image_dir, _edje_edd_edje_image_directory); diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 22194c53ff..e255358763 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -592,6 +592,11 @@ struct _Edje_File int version; int minor; int feature_ver; + struct { + int major; + int minor; + } efl_version; + FLOAT_T base_scale; char fid[8+8+8+2];