Vincent Torri
8c30cb2ef8
edje, build: don't use fullpath(), this breaks compilation on Windows for meson >= 0.54.2
2023-04-23 16:51:26 +01:00
Dmitri Chudinov
3474d867aa
FIX: A pointer should not be compared to zero
2022-08-01 09:37:37 -07:00
Carsten Haitzler
cf0df4872d
edje + elm - add new explicit tracking of all cc's used in edj themes
...
edje_cc now lists all cc's used in an edj file. edje provides an api
to list this. elm now uses this api to expose a list of all cc's used
acorss all the theme(s) selected by the user. this will then be used
by paledit to produce a nicer gui with a list of available cc's to add
etc. and split between basic and extended.
@feat
2021-10-31 11:44:57 +00:00
Vincent Torri
de296b13c8
Eina: use eina_fnmatch() instead of fnmatch()
...
Reviewers: raster
Reviewed By: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12262
2021-05-03 18:48:24 +01:00
Carsten Haitzler
5b17444313
edje - edje_cc - add no warning for unused images and use it
...
a test edje has lots of unused images - it's not important so silence
warnings.
2021-04-16 04:09:06 +01:00
Carsten Haitzler
aef36c6e5b
edje_cc - dont try strip images that are unused at all
...
my previous disable didnt disable all the unused image stripping. this
now does. this code is buggy especially with image sets, to remove it
and let the warnings to the job for those compiling themes.
2021-04-16 03:54:53 +01:00
Carsten Haitzler
42c123d1d7
singularize srand in eina_init - only once in one place
...
simplify down to having a single srand() in eina_init and use urandom
if it works and is there - if not, time(NULL) will do. it's the best
we can...
2020-10-03 20:46:50 +01:00
Vincent Torri
9bfba0867d
edje_external_inspector: re-order _init a bit: log after eina, remove ecore_init/shutdown as it is already managed by edje_init/shutdown
...
Reviewers: raster
Reviewed By: raster
Subscribers: raster, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12160
2020-09-25 10:29:54 +01:00
Stefan Schmidt
080dbdee51
edje: efl: add new EFL_VERSION_1_26 define for new dev cycle
...
Thios allows to mark edje file supported for specific versions.
2020-09-22 20:27:18 +02:00
Marcel Hollerbach
e2a1cdfda7
build: only find env once
...
this was a bit messy, and we might have caused a bug on the ML with
that.
2020-09-02 09:25:51 +02:00
Woochanlee
8198345e1f
edje_cc: Fix uninitialized scalar variable
...
Summary:
mo_path can using for fprintf in using_file function without initialize.
fix coverity.
Reviewers: Hermet, raster
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12120
2020-09-01 21:02:57 +09:00
Ali Alzyod
8504f213d6
edje_cc : resolve build warning
...
Reviewers: raster
Reviewed By: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12054
2020-07-16 10:01:26 +01:00
Carsten Haitzler
a8538bacce
edje - fix edje_cc mis-re-iding images in image sets
...
wanr of unused images so it's properly fixed too... always warn to
stdout so devs know to cleanup their theme. by not removing image sets
this fixes the mis-id'ing too.
@fix
2020-07-15 12:22:22 +01:00
Jaehyun Cho
6ff0241706
edje_cc_handlers: update documentation of "fixed" to be clearer
...
Summary:
Since "fixed" does not affect the group size by the part's min size, the
documentation is updated to be clearer.
Reviewers: woohyun, raster
Reviewed By: woohyun
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11934
2020-06-11 18:57:30 +09:00
Hermet Park
7c08852ba4
edje edje_cc: remove beta tag for vector part.
...
vector part has been used since 2014, now it's widely used in many cases.
let's remove the beta tag, it's mature using in svg.
2020-05-29 10:58:52 +09:00
Marcel Hollerbach
8e3606698e
refactor build
...
libraries are split into deps, external deps, and pub deps.
Evas engines are refactored to use the predefined engine deps.
this is preparation work for efl-one.
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11806
2020-05-27 11:06:46 +02:00
Subhransu Mohanty
f9a108c51a
meson: Changed meson build to support address sanitizer build
...
As we run some intermediate binary like edje_cc during efl build , and due to
those binary has some memory leaks the address sanitizer build of efl fails.
This Patch runs those binary with 'ASAN_OPTIONS=detect_leak=false' to disable the
memory leak check for those binaries.
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11137
2020-05-20 12:32:31 +02:00
Mike Blumenkrantz
477bfd19ea
edje_cc: consistently use eina macros for all float comparisons
...
Summary: Depends on D11787
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11788
2020-05-09 09:25:11 +01:00
Mike Blumenkrantz
9cd18f3de6
edje_cc: fix comparisons for possible non-float values
...
Summary:
when defined, BUILD_EDJE_FP causes some of these struct members to not
be floating types and additionally defines special macros to be used
for comparisons to handle this case
Depends on D11786
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11787
2020-05-09 09:25:08 +01:00
Stefan Schmidt
d1a1688513
edje: efl: add new EFL_VERSION_1_25 define for new cycle
...
Allow things to be marked for the upcoming 1.25 release version while we
develop it.
2020-04-29 15:47:36 +02:00
Xavi Artigas
b1cc09a86c
doxygen docs: some fixes in Evas_Legacy.h
...
This brings into the docs hundreds of methods!
due to the ingroup->defgroup mistake, they were out of any scope
and therefore they were silently ignored by doxygen.
Also, document lots of missing "obj" parameters. Not strictly necessary, but
this further reduces the number of doxygen warnings.
2020-04-02 17:48:39 +02:00
Hermet Park
476e2b0521
canvas 3d: remove all canvas3d features across efl.
...
Reviewers: jsuya, kimcinoo, bu5hm4n, raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11552
2020-03-25 19:14:02 +09:00
Marcel Hollerbach
cd13b40f66
edje_cc: free ecore_evas
...
we have initialized it, we should shutdown it.
This was we are not getting random vtable allocation leak reports in the
asan job anymore.
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11572
2020-03-24 20:41:14 +01:00
Hermet Park
849b37d641
canvas3d: remove all feature implementation in edje/edje_cc
...
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Reviewed-by: Shinwoo Kim <cinoo.kim@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11547
2020-03-20 15:57:41 +01:00
Hermet Park
0583b14307
canvas 3d: remove canvas3d edje
...
Summary: Remove functional stuff, leave as deprecated for compatibility.
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11541
2020-03-19 18:49:17 +09:00
Xavi Artigas
a004befea5
doxygen docs: Fix illegal references
...
Mostly typos and unescaped # signs
2020-03-12 17:24:07 +01:00
Mike Blumenkrantz
955574c044
add EFL_VERSION_1_24 define
...
Summary: this needs to go in right after every release
Reviewers: stefan_schmidt, devilhorns
Reviewed By: stefan_schmidt, devilhorns
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11477
2020-03-12 12:17:07 -04:00
Carsten Haitzler
b98f8bdbe4
edje_cc - provide better error info log on part id out of range
2020-03-12 14:40:14 +00:00
junsu choi
107e425ef6
edje: Rename Json to Lottie in edj supporting
...
Summary:
The json file used by edje is for lottie output.
json can be used in many ways. So the purpose is clear.
Test Plan: N/A
Reviewers: Hermet, kimcinoo, herb
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11478
2020-03-10 15:42:13 +09:00
Xavi Artigas
9aecf76824
doxygen docs: fix multiple defined @section's
...
Section names must be globally unique.
We rarely reference sections so we don't actually need to use @section
and a simple header suffices.
2020-03-03 18:49:20 +01:00
Wonki Kim
7da106ec68
edje: modify to respect user set fixed property
...
Summary:
this patch is related with @D11365.
rather than undoing optimization edje calc,
this patch introduces a user_set property which enables edje_calc
to respect user set property.
Reviewers: bu5hm4n, eagleeye, YOhoho, Hermet, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, #committers, woohyun, eagleeye, bu5hm4n
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11366
2020-02-19 12:40:39 -05:00
junsu choi
a4311f73ee
edje: Disable the json vector animation feature with a flag.
...
Summary:
Json vector animation requires the json loader to be loaded.
Therefore, if the loader does not load,
it prints an appropriate error message and disables the feature.
Depends on D11228
Test Plan: N/A
Reviewers: Hermet, Jaehyun_Cho, id213sin
Reviewed By: Hermet
Subscribers: raster, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11230
2020-02-17 19:14:14 +09:00
YoungBok Shin
2fe158ce65
edje: add json file support feature
...
Summary:
It also starts to support following new edc properties.
This is backported patch from Tizen 5.0
1. frame
desc { "default"
vector {
frame: 0.5; // 0.0 ~ 1.0
}
}
2. actions
program { "vector_animation";
// VG_ANIM_PLAY, VG_ANIM_PLAY_BACK, VG_ANIM_LOOP,
// VG_ANIM_STOP, VG_ANIM_PAUSE, VG_ANIM_RESUME
action: VG_ANIM_PLAY;
target: "your_vector_part";
}
@feature
Co-authored-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
- Fix to remove Efl.Canvas.Animation_Player on edje
Test Plan:
{F3840540}
{F3840542}
{F3840543}
make and test attached file
edje_cc -beta -id ./ json_edc.edc json.edj
gcc -o test test_edc.c -g `pkg-config --cflags --libs evas elementary rlottie`
./test
Reviewers: Hermet, Jaehyun_Cho, id213sin
Reviewed By: Hermet
Subscribers: segfaultxavi, raster, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11228
2020-02-17 18:59:09 +09:00
Carsten Haitzler
f02cb1cb0d
edje player - make it more useful with padding option
...
so you can see the overflow outside and edje object, add padding as an
option to move the obj inside the win. this means also nuking the
over-engineered box stacking thing... :)
2020-02-15 14:36:09 +00:00
Wonki Kim
7417436526
edje_cc : remove potential NULL dereferencing
...
Summary: this patch removes potential NULL deferencing in edje_cc
Reviewers: jsuya, Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11326
2020-02-12 16:47:00 +09:00
Ali Alzyod
8f87a2411a
evas_textblock: content fit feature
...
Summary:
**Content Fit Feature for Evas_Object_Textblock**
This Feature is available at **Evas **object level. And **Edje **level (where it is internally use evas functionality)
This feature will allow text block to fit its content font size to proper size to fit its area.
**Main Properties:**
Fit Modes : None=Default, Width, Height, All [Width+Height]
Fit Size Range : Contains maximum and minimum font size to be used (and in between).
Fit Step Size : Step(Jump) value when trying fonts sizes between Size_Range max and min.
Fit Size Array : Other way to resize font, where you explicitly select font sizes to be uses (for example [20, 50, 100] it will try 3 sizes only)
Text Fit feature was available in Edje but:
1- It doesn't effected by ellipsis or warping in font style (or do not handle the in right way)
2- Accuracy is not good (specially if you have fix pixel size elements (spaces,tabs,items))
3- No (Step size, Size Array) available.
Test Plan:
To check the Feature
> elementary_test
> fit
> textbock fit
You can modify all the modes and properties
These are two examples, One using Evas other uses Edje
**Evas**
```
#include <Elementary.h>
enum BUTTON{
BUTTON_MODE = 0,
BUTTON_MAX = 1,
BUTTON_MIN = 2,
BUTTON_STEP = 3,
BUTTON_ARRAY = 4,
BUTTON_CONTENT = 5,
BUTTON_STYLE = 6,
BUTTON_ALL = BUTTON_STYLE+1,
};
char* BUTTON_STR[BUTTON_ALL] ={
"MODE",
"MAX",
"MIN",
"STEP",
"ARRAY",
"CONTENT",
"STYLE",
};
char *contents[] = {
"Hello World",
"This is Line<br>THis is other Line",
"This text contains <font_size=20 color=#F00>SPECIFIC SIZE</font_size> that does not effected by fit mode"
};
char *styles[] = {
"DEFAULT='font=sans font_size=30 color=#000 wrap=mixed ellipsis=1.0'",
"DEFAULT='font=sans font_size=30 color=#000 wrap=mixed'",
"DEFAULT='font=sans font_size=30 color=#000 ellipsis=1.0'",
"DEFAULT='font=sans font_size=30 color=#000'",
};
char *styles_names[] = {
"wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>1.0</color>",
"wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>NONE</color>",
"wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>1.0</color>",
"wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>NONE</color>",
};
typedef struct _APP
{
Evas_Object *win, *box, *txtblock,*bg, *boxHor, *boxHor2;
Eo *btn[BUTTON_ALL];
Eo *lbl_status;
char * str;
unsigned int i_contnet, i_style;
} APP;
APP *app;
char * get_fit_status(Eo * textblock);
static void _btn_clicked(void *data EINA_UNUSED, Eo *obj, void *eventInfo EINA_UNUSED){
if (obj == app->btn[BUTTON_MODE])
{
unsigned int options;
evas_textblock_fit_options_get(app->txtblock, &options);
if (options == TEXTBLOCK_FIT_MODE_NONE)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_HEIGHT);
else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_WIDTH);
else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_ALL);
else if (options == TEXTBLOCK_FIT_MODE_ALL)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_NONE);
}
else if (obj == app->btn[BUTTON_MAX])
{
unsigned int min, max;
evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
max -= 5;
evas_textblock_fit_size_range_set(app->txtblock, min, max);
}
else if (obj == app->btn[BUTTON_MIN])
{
unsigned int min, max;
evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
min += 5;
evas_textblock_fit_size_range_set(app->txtblock, min, max);
}
else if (obj == app->btn[BUTTON_STEP])
{
unsigned int step;
evas_textblock_fit_step_size_get(app->txtblock, &step);
step++;
evas_textblock_fit_step_size_set(app->txtblock, step);
}
else if (obj == app->btn[BUTTON_ARRAY])
{
unsigned int font_size[] = {10, 50, 100 ,150};
evas_textblock_fit_size_array_set(app->txtblock,font_size,4);
}
else if (obj == app->btn[BUTTON_CONTENT])
{
app->i_contnet++;
if(app->i_contnet>=sizeof(contents)/sizeof(char*))
app->i_contnet=0;
evas_object_textblock_text_markup_set(app->txtblock,contents[app->i_contnet]);
}
else if (obj == app->btn[BUTTON_STYLE])
{
app->i_style++;
if(app->i_style>=sizeof(styles)/sizeof(char*))
app->i_style=0;
Evas_Textblock_Style *style = evas_object_textblock_style_get(app->txtblock);
evas_textblock_style_set(style,styles[app->i_style]);
}
elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
}
char * get_fit_status(Eo * textblock)
{
static char status[0xFFF];
unsigned int options,min,max,step,size_array[256];
size_t size_array_len;
evas_textblock_fit_options_get(textblock,&options);
evas_textblock_fit_size_range_get(textblock,&min,&max);
evas_textblock_fit_step_size_get(textblock,&step);
evas_textblock_fit_size_array_get(textblock,NULL,&size_array_len,0);
if (size_array_len>255)
size_array_len = 255;
evas_textblock_fit_size_array_get(textblock,size_array,NULL,size_array_len);
strcpy(status,"Mode : ");
if (options == TEXTBLOCK_FIT_MODE_NONE)
strcat(status,"MODE_NONE");
else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
strcat(status,"MODE_HEIGHT");
else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
strcat(status,"MODE_WIDTH");
else if (options == TEXTBLOCK_FIT_MODE_ALL)
strcat(status,"MODE_ALL");
strcat(status,"<br>");
sprintf(status + strlen(status),"Max : %d<br>",max);
sprintf(status + strlen(status),"Min : %d<br>",min);
sprintf(status + strlen(status),"Step : %d<br>",step);
sprintf(status + strlen(status),"Array : [ ");
for (size_t i = 0 ; i < 10 ; i++)
{
if(i<size_array_len)
sprintf(status + strlen(status)," %d,",size_array[i]);
}
if(10<size_array_len)
sprintf(status + strlen(status)," ... ");
sprintf(status + strlen(status)," ]");
sprintf(status + strlen(status),"<br>");
sprintf(status + strlen(status),"%s",styles_names[app->i_style]);
return status;
}
int elm_main(int argc, char **argv)
{
app = calloc(sizeof(APP), 1);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
app->win = elm_win_util_standard_add("Main", "App");
elm_win_autodel_set(app->win, EINA_TRUE);
app->box = elm_box_add(app->win);
app->boxHor = elm_box_add(app->box);
app->boxHor2 = elm_box_add(app->box);
app->txtblock = evas_object_textblock_add(app->box);
app->bg = elm_bg_add(app->box);
elm_bg_color_set(app->bg,255,255,255);
Evas_Textblock_Style *style = evas_textblock_style_new();
evas_textblock_style_set(style,styles[0]);
evas_object_textblock_style_set(app->txtblock,style);
evas_object_textblock_text_markup_set(app->txtblock,contents[0]);
elm_box_horizontal_set(app->boxHor, EINA_TRUE);
elm_box_horizontal_set(app->boxHor2, EINA_TRUE);
evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(app->txtblock);
evas_object_show(app->bg);
evas_object_show(app->box);
evas_object_show(app->boxHor);
evas_object_show(app->boxHor2);
elm_box_pack_end(app->box, app->bg);
elm_box_pack_end(app->box, app->boxHor);
elm_box_pack_end(app->box, app->boxHor2);
elm_object_content_set(app->bg,app->txtblock);
elm_win_resize_object_add(app->win, app->box);
evas_object_resize(app->win, 320, 480);
for(int i = 0 ; i < BUTTON_ALL ; i++)
{
app->btn[i] = elm_button_add(app->boxHor);
evas_object_smart_callback_add(app->btn[i], "clicked", _btn_clicked, NULL);
elm_object_text_set(app->btn[i], BUTTON_STR[i]);
elm_box_pack_end(app->boxHor, app->btn[i]);
evas_object_show(app->btn[i]);
}
app->lbl_status = elm_label_add(app->boxHor2);
elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
elm_box_pack_end(app->boxHor2, app->lbl_status);
evas_object_show(app->lbl_status);
evas_object_size_hint_weight_set(app->txtblock, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->txtblock, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(app->bg, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(app->win);
elm_run();
return 0;
}
ELM_MAIN()
```
**Edje**
```
// compile: edje_cc source.edc
// run: edje_player source.edje
collections {
styles
{
style
{
name: "text_style";
base: "font=sans font_size=30 color=#FFF wrap=mixed ellipsis=1.0";
tag: "br" "\n";
tag: "ps" "ps";
tag: "tab" "\t";
tag: "b" "+ font_weight=Bold";
}
}
group {
name: "my_group"; // must be the same as in source.c
parts {
part
{
name: "background";
type: RECT;
scale: 1;
description
{
color: 0 0 0 0;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
}
}
part
{
name: "text";
type: TEXTBLOCK;
scale: 1;
entry_mode: NONE;
effect: OUTLINE_SHADOW;
description
{
state: "default" 0.0;
rel1.to : "background";
rel1.relative: 0.0 0.0;
rel2.to : "background";
rel2.relative: 1.0 1.0;
text
{
style: "text_style";
align: 0.0 0.0;
text: "Hello World This is Me";
fit: 1 1;
fit_step: 1;
size_range: 30 200;
//fit_size_array: 20 40 60 80 100 200;
}
}
}
}
}
}
```
Found Task T5724 relative to this Feature
Reviewers: woohyun, bowonryu, cedric, raster
Reviewed By: woohyun
Subscribers: a.srour, #committers, #reviewers, cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9280
2019-12-12 14:22:46 +09:00
Carsten Haitzler
f8cf378868
strings - be cleaere we are initialising buffers not appending
...
also should silence possible code checkers.
2019-11-16 13:02:10 +00:00
Carsten Haitzler
39240fa3e7
Revert "evas_textblock: content fit feature"
...
This reverts commit 2f676a6591
.
This causes segv's in edje_cc - i suspect the eet changes (or in combo
to how they are used in edje):
AddressSanitizer:DEADLYSIGNAL
=================================================================
==8991==ERROR: AddressSanitizer: SEGV on unknown address 0x000001010000 (pc 0xffff9f002604 bp 0xfffffa747700 sp 0xfffffa747700 T0)
==8991==The signal is caused by a READ memory access.
#0 0xffff9f002600 in _eet_hash_gen ../src/lib/eet/eet_utils.c:25
#1 0xffff9efdd024 in eet_dictionary_string_add ../src/lib/eet/eet_dictionary.c:103
#2 0xffff9efbe324 in eet_data_put_string ../src/lib/eet/eet_data.c:849
#3 0xffff9efc1c4c in eet_data_put_type ../src/lib/eet/eet_data.c:1427
#4 0xffff9efd9128 in eet_data_put_unknown ../src/lib/eet/eet_data.c:4730
#5 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
#6 0xffff9efd5958 in eet_data_put_variant ../src/lib/eet/eet_data.c:4309
#7 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
#8 0xffff9efd9270 in eet_data_put_unknown ../src/lib/eet/eet_data.c:4739
#9 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
#10 0xffff9efd8ca0 in eet_data_put_array ../src/lib/eet/eet_data.c:4692
#11 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
#12 0xffff9efc7768 in eet_data_write_cipher ../src/lib/eet/eet_data.c:2403
#13 0xffff9efc78a4 in eet_data_write ../src/lib/eet/eet_data.c:2420
#14 0xaaaabb151dcc in data_thread_group ../src/bin/edje/edje_cc_out.c:2045
#15 0xaaaabb152130 in data_write_groups ../src/bin/edje/edje_cc_out.c:2086
#16 0xaaaabb157734 in data_write ../src/bin/edje/edje_cc_out.c:2866
#17 0xaaaabb14122c in main ../src/bin/edje/edje_cc.c:456
#18 0xffff9dbd92a0 in __libc_start_main (/usr/lib/aarch64-linux-gnu/libc.so.6+0x242a0)
#19 0xaaaabb13ea00 (/home/raster/C/git/efl/build/src/bin/edje/edje_cc+0x38a00)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../src/lib/eet/eet_utils.c:25 in _eet_hash_gen
==8991==ABORTING
Aborted (core dumped)
When compiling breaks... it's certainly time to revert ASAP :(
2019-11-07 10:23:58 +00:00
Ali Alzyod
2f676a6591
evas_textblock: content fit feature
...
Summary:
**Content Fit Feature for Evas_Object_Textblock**
This Feature is available at **Evas **object level. And **Edje **level (where it is internally use evas functionality)
This feature will allow text block to fit its content font size to proper size to fit its area.
**Main Properties:**
Fit Modes : None=Default, Width, Height, All [Width+Height]
Fit Size Range : Contains maximum and minimum font size to be used (and in between).
Fit Step Size : Step(Jump) value when trying fonts sizes between Size_Range max and min.
Fit Size Array : Other way to resize font, where you explicitly select font sizes to be uses (for example [20, 50, 100] it will try 3 sizes only)
Text Fit feature was available in Edje but:
1- It doesn't effected by ellipsis or warping in font style (or do not handle the in right way)
2- Accuracy is not good (specially if you have fix pixel size elements (spaces,tabs,items))
3- No (Step size, Size Array) available.
Test Plan:
To check the Feature
> elementary_test
> fit
> textbock fit
You can modify all the modes and properties
These are two examples, One using Evas other uses Edje
**Evas**
```
#include <Elementary.h>
enum BUTTON{
BUTTON_MODE = 0,
BUTTON_MAX = 1,
BUTTON_MIN = 2,
BUTTON_STEP = 3,
BUTTON_ARRAY = 4,
BUTTON_CONTENT = 5,
BUTTON_STYLE = 6,
BUTTON_ALL = BUTTON_STYLE+1,
};
char* BUTTON_STR[BUTTON_ALL] ={
"MODE",
"MAX",
"MIN",
"STEP",
"ARRAY",
"CONTENT",
"STYLE",
};
char *contents[] = {
"Hello World",
"This is Line<br>THis is other Line",
"This text contains <font_size=20 color=#F00>SPECIFIC SIZE</font_size> that does not effected by fit mode"
};
char *styles[] = {
"DEFAULT='font=sans font_size=30 color=#000 wrap=mixed ellipsis=1.0'",
"DEFAULT='font=sans font_size=30 color=#000 wrap=mixed'",
"DEFAULT='font=sans font_size=30 color=#000 ellipsis=1.0'",
"DEFAULT='font=sans font_size=30 color=#000'",
};
char *styles_names[] = {
"wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>1.0</color>",
"wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>NONE</color>",
"wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>1.0</color>",
"wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>NONE</color>",
};
typedef struct _APP
{
Evas_Object *win, *box, *txtblock,*bg, *boxHor, *boxHor2;
Eo *btn[BUTTON_ALL];
Eo *lbl_status;
char * str;
unsigned int i_contnet, i_style;
} APP;
APP *app;
char * get_fit_status(Eo * textblock);
static void _btn_clicked(void *data EINA_UNUSED, Eo *obj, void *eventInfo EINA_UNUSED){
if (obj == app->btn[BUTTON_MODE])
{
unsigned int options;
evas_textblock_fit_options_get(app->txtblock, &options);
if (options == TEXTBLOCK_FIT_MODE_NONE)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_HEIGHT);
else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_WIDTH);
else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_ALL);
else if (options == TEXTBLOCK_FIT_MODE_ALL)
evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_NONE);
}
else if (obj == app->btn[BUTTON_MAX])
{
unsigned int min, max;
evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
max -= 5;
evas_textblock_fit_size_range_set(app->txtblock, min, max);
}
else if (obj == app->btn[BUTTON_MIN])
{
unsigned int min, max;
evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
min += 5;
evas_textblock_fit_size_range_set(app->txtblock, min, max);
}
else if (obj == app->btn[BUTTON_STEP])
{
unsigned int step;
evas_textblock_fit_step_size_get(app->txtblock, &step);
step++;
evas_textblock_fit_step_size_set(app->txtblock, step);
}
else if (obj == app->btn[BUTTON_ARRAY])
{
unsigned int font_size[] = {10, 50, 100 ,150};
evas_textblock_fit_size_array_set(app->txtblock,font_size,4);
}
else if (obj == app->btn[BUTTON_CONTENT])
{
app->i_contnet++;
if(app->i_contnet>=sizeof(contents)/sizeof(char*))
app->i_contnet=0;
evas_object_textblock_text_markup_set(app->txtblock,contents[app->i_contnet]);
}
else if (obj == app->btn[BUTTON_STYLE])
{
app->i_style++;
if(app->i_style>=sizeof(styles)/sizeof(char*))
app->i_style=0;
Evas_Textblock_Style *style = evas_object_textblock_style_get(app->txtblock);
evas_textblock_style_set(style,styles[app->i_style]);
}
elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
}
char * get_fit_status(Eo * textblock)
{
static char status[0xFFF];
unsigned int options,min,max,step,size_array[256];
size_t size_array_len;
evas_textblock_fit_options_get(textblock,&options);
evas_textblock_fit_size_range_get(textblock,&min,&max);
evas_textblock_fit_step_size_get(textblock,&step);
evas_textblock_fit_size_array_get(textblock,NULL,&size_array_len,0);
if (size_array_len>255)
size_array_len = 255;
evas_textblock_fit_size_array_get(textblock,size_array,NULL,size_array_len);
strcpy(status,"Mode : ");
if (options == TEXTBLOCK_FIT_MODE_NONE)
strcat(status,"MODE_NONE");
else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
strcat(status,"MODE_HEIGHT");
else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
strcat(status,"MODE_WIDTH");
else if (options == TEXTBLOCK_FIT_MODE_ALL)
strcat(status,"MODE_ALL");
strcat(status,"<br>");
sprintf(status + strlen(status),"Max : %d<br>",max);
sprintf(status + strlen(status),"Min : %d<br>",min);
sprintf(status + strlen(status),"Step : %d<br>",step);
sprintf(status + strlen(status),"Array : [ ");
for (size_t i = 0 ; i < 10 ; i++)
{
if(i<size_array_len)
sprintf(status + strlen(status)," %d,",size_array[i]);
}
if(10<size_array_len)
sprintf(status + strlen(status)," ... ");
sprintf(status + strlen(status)," ]");
sprintf(status + strlen(status),"<br>");
sprintf(status + strlen(status),"%s",styles_names[app->i_style]);
return status;
}
int elm_main(int argc, char **argv)
{
app = calloc(sizeof(APP), 1);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
app->win = elm_win_util_standard_add("Main", "App");
elm_win_autodel_set(app->win, EINA_TRUE);
app->box = elm_box_add(app->win);
app->boxHor = elm_box_add(app->box);
app->boxHor2 = elm_box_add(app->box);
app->txtblock = evas_object_textblock_add(app->box);
app->bg = elm_bg_add(app->box);
elm_bg_color_set(app->bg,255,255,255);
Evas_Textblock_Style *style = evas_textblock_style_new();
evas_textblock_style_set(style,styles[0]);
evas_object_textblock_style_set(app->txtblock,style);
evas_object_textblock_text_markup_set(app->txtblock,contents[0]);
elm_box_horizontal_set(app->boxHor, EINA_TRUE);
elm_box_horizontal_set(app->boxHor2, EINA_TRUE);
evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(app->txtblock);
evas_object_show(app->bg);
evas_object_show(app->box);
evas_object_show(app->boxHor);
evas_object_show(app->boxHor2);
elm_box_pack_end(app->box, app->bg);
elm_box_pack_end(app->box, app->boxHor);
elm_box_pack_end(app->box, app->boxHor2);
elm_object_content_set(app->bg,app->txtblock);
elm_win_resize_object_add(app->win, app->box);
evas_object_resize(app->win, 320, 480);
for(int i = 0 ; i < BUTTON_ALL ; i++)
{
app->btn[i] = elm_button_add(app->boxHor);
evas_object_smart_callback_add(app->btn[i], "clicked", _btn_clicked, NULL);
elm_object_text_set(app->btn[i], BUTTON_STR[i]);
elm_box_pack_end(app->boxHor, app->btn[i]);
evas_object_show(app->btn[i]);
}
app->lbl_status = elm_label_add(app->boxHor2);
elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
elm_box_pack_end(app->boxHor2, app->lbl_status);
evas_object_show(app->lbl_status);
evas_object_size_hint_weight_set(app->txtblock, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->txtblock, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(app->bg, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(app->bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(app->win);
elm_run();
return 0;
}
ELM_MAIN()
```
**Edje**
```
// compile: edje_cc source.edc
// run: edje_player source.edje
collections {
styles
{
style
{
name: "text_style";
base: "font=sans font_size=30 color=#FFF wrap=mixed ellipsis=1.0";
tag: "br" "\n";
tag: "ps" "ps";
tag: "tab" "\t";
tag: "b" "+ font_weight=Bold";
}
}
group {
name: "my_group"; // must be the same as in source.c
parts {
part
{
name: "background";
type: RECT;
scale: 1;
description
{
color: 0 0 0 0;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
}
}
part
{
name: "text";
type: TEXTBLOCK;
scale: 1;
entry_mode: NONE;
effect: OUTLINE_SHADOW;
description
{
state: "default" 0.0;
rel1.to : "background";
rel1.relative: 0.0 0.0;
rel2.to : "background";
rel2.relative: 1.0 1.0;
text
{
style: "text_style";
align: 0.0 0.0;
text: "Hello World This is Me";
fit: 1 1;
fit_step: 1;
size_range: 30 200;
//fit_size_array: 20 40 60 80 100 200;
}
}
}
}
}
}
```
Found Task T5724 relative to this Feature
Reviewers: woohyun, bowonryu, cedric, raster
Subscribers: #committers, #reviewers, cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9280
2019-11-05 20:40:59 +09:00
Marcel Hollerbach
7b59fec40e
meson: add embryo as a dep of edje
...
if you want to build a edje theme without building all of efl, you can
do that now. Before embryo was missing and no scripts could be compiled.
Now this is possible and works.
2019-10-29 18:00:46 +01:00
Mike Blumenkrantz
20b592cef7
fix various trivial null derefs
...
Summary:
CIDs 1401081, 1401044, 1400983, 1400960, 1400927, 1400799, 1396946, 1396944,
1383851, 1383847, 1382211, 1379921, 1379921
Reviewers: cedric
Reviewed By: cedric
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10452
2019-10-18 13:30:10 -04:00
Mike Blumenkrantz
b5ee2f128f
epp: remove extra variable passed in format specifier
...
Summary: CID 1402674
Reviewers: segfaultxavi
Reviewed By: segfaultxavi
Subscribers: segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10203
2019-09-26 17:59:19 -04:00
Marcel Hollerbach
2801b45d8f
meson: make sure evas buffer engine is built before edje_cc
...
Summary:
ensure that the evas buffer engine is available.
fix T8220
Reviewers: zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8220
Differential Revision: https://phab.enlightenment.org/D9918
2019-09-12 14:45:47 -04:00
junsu choi
167e3c4c29
edje_cc: Fix always true condition.
...
Summary:
The condition at 742 line is always true. So I fix it.
If action is not ACTION_STOP or ACTION_TYPE_SCRIPT, go to continue.
Test Plan: N/A
Reviewers: bu5hm4n, Hermet, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, kimcinoo, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9667
2019-08-22 07:15:30 -04:00
Vincent Torri
01b987df59
make mman.h private
...
Summary:
integrate mman.h to make Evil private to the EFL, as mman.h does not exist on Windows. After a discussion with raster, i include sys/mman.h only on non Windows platform.
One issue, though, is that src/modules/emotion/generic/Emotion_Generic_Plugin.h has inlined functions using mmap()
Test Plan: compilation on Windows
Reviewers: cedric, raster, zmike
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9542
2019-08-19 09:55:13 -04:00
Carsten Haitzler
d9198f10a9
edje cc - fix coverity warning for uninit local var
...
fix CID 1382208
2019-08-05 15:20:49 +01:00
Carsten Haitzler
4664d02fe2
epp - fix tchnical leak for coverity
...
its technically a leak.. but epp will give up a nd error out anyway
here so... didn't matter.
fix CID 1402655
2019-08-05 15:00:29 +01:00
Subodh Kumar
2854702f8e
edje: Add support for map zoom to use other part center.
...
Summary:
Current:
In edc, zoom is supposed to happen from object center, there is no way to
change the center of the zoom.
Changes:
Adding support to change the center of zooming just like map rotation by using
other part's center.
@feature
Reviewers: cedric, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9115
2019-07-12 12:04:06 -04:00
Vincent Torri
fa8549c20c
define HAVE_REALPATH in evil_stdlib.h
...
Summary: instead of relying on build system, define HAVE_REALPATH in Evil header file
Reviewers: zmike, raster, cedric
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9107
2019-06-18 13:22:05 +01:00
Marcel Hollerbach
2ae6055d80
edje_cc: protect array lookup
...
it seems with those two actions here in the commit, do use id in a
different way the other actions do. This is commit protects against
this.
Differential Revision: https://phab.enlightenment.org/D9078
2019-06-09 13:21:45 +02:00