diff --git a/src/bin/elementary/test_label.c b/src/bin/elementary/test_label.c index de7c2bcf32..f291c4472e 100644 --- a/src/bin/elementary/test_label.c +++ b/src/bin/elementary/test_label.c @@ -320,7 +320,8 @@ enum BUTTON{ BUTTON_ARRAY = 4, BUTTON_CONTENT = 5, BUTTON_STYLE = 6, - BUTTON_ALL = BUTTON_STYLE+1, + BUTTON_SIZE = 7, + BUTTON_ALL = BUTTON_SIZE+1, }; char* BUTTON_STR[BUTTON_ALL] ={ @@ -331,6 +332,7 @@ char* BUTTON_STR[BUTTON_ALL] ={ "ARRAY", "CONTENT", "STYLE", + "Get Size", }; char *contents[] = { @@ -430,6 +432,8 @@ char * get_fit_status(Eo * textblock) static char status[0xFFF]; unsigned int options,min,max,step,size_array[256]; size_t size_array_len; + int current_fitting_fontsize = 0; + current_fitting_fontsize = evas_textblock_fit_font_size_get(textblock); evas_textblock_fit_options_get(textblock,&options); evas_textblock_fit_size_range_get(textblock,&min,&max); evas_textblock_fit_step_size_get(textblock,&step); @@ -464,8 +468,13 @@ char * get_fit_status(Eo * textblock) sprintf(status + strlen(status)," ]"); sprintf(status + strlen(status),"
"); - sprintf(status + strlen(status),"%s",styles_names[app->i_style]); - + sprintf(status + strlen(status),"%s
",styles_names[app->i_style]); + if (current_fitting_fontsize == -1) { + sprintf(status + strlen(status),"Current Font Size = No Fitting"); + } + else { + sprintf(status + strlen(status),"Current Font Size = %d", current_fitting_fontsize); + } return status; diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 8f339fe5d2..12bcd38eda 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -431,6 +431,7 @@ struct _TEXT_FIT_CONTENT_CONFIG unsigned int min_font_size,max_font_size; unsigned int step_size; unsigned int *p_size_array; + int font_size; size_t size_list_length; Eina_Size2D size_cache[256+1]; /** used hash font sizes 1-255 */ Eina_Size2D last_size; @@ -17881,6 +17882,7 @@ int fit_text_block(Evas_Object *eo_obj) /*Lower bound founded, subtract one to move for nearest value*/ fc->last_size_index = MAX(l-1, 0); fit_style_update(eo_obj,fc->p_size_array[fc->last_size_index],(fc->last_size_index != 0) && fc->options != TEXTBLOCK_FIT_MODE_HEIGHT ,EINA_FALSE); + fc->font_size = fc->p_size_array[fc->last_size_index]; fit_finish_fitting(eo_obj); } } @@ -18052,6 +18054,20 @@ int compareUINT(const void * a, const void * b) else return 0; } +EVAS_API int evas_textblock_fit_font_size_get(Evas_Object *obj){ + EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EVAS_ERROR_INVALID_PARAM); + Efl_Canvas_Textblock_Data *o = efl_data_scope_get(obj, MY_CLASS); + TEXT_FIT_CONTENT_CONFIG *fc = &o->fit_content_config; + if (fc->options == TEXTBLOCK_FIT_MODE_NONE) + { + return -1; + } + else + { + return fc->font_size; + } +} + EVAS_API int evas_textblock_fit_size_array_set(Evas_Object *obj, const unsigned int *p_size_array, size_t size_array_len) { int n_ret = EVAS_ERROR_SUCCESS; diff --git a/src/lib/evas/canvas/evas_textblock_legacy.h b/src/lib/evas/canvas/evas_textblock_legacy.h index ae1aaf72b6..e4fee16149 100644 --- a/src/lib/evas/canvas/evas_textblock_legacy.h +++ b/src/lib/evas/canvas/evas_textblock_legacy.h @@ -1143,6 +1143,13 @@ EVAS_API int evas_textblock_fit_size_array_get(const Evas_Object *obj, unsigned */ EVAS_API int evas_textblock_fit_size_array_set(Evas_Object *obj, const unsigned int *p_size_array, size_t size_array_len); +/** Get the object fitting font size that is currently used. + * + * @param obj The textblock object. + * @return Returns current used font size for fitting, or -1 if there is no fitting. + * @since 1.26 + */ +EVAS_API int evas_textblock_fit_font_size_get(Evas_Object *obj);