summaryrefslogtreecommitdiff
path: root/po
Commit message (Collapse)AuthorAgeFilesLines
* Evas: add avif evas loader and saverVincent Torri2020-07-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Add AV1 image file loader and saver to Evas The loader can be tested with this code : ``` #include <stdlib.h> #include <stdio.h> #include <Eina.h> #include <Ecore.h> #include <Evas.h> #include <Ecore_Evas.h> static int i = 0; static unsigned char _timer(void *data) { Evas_Object *o = (Evas_Object *)data; if (i < evas_object_image_animated_frame_count_get(o)) { evas_object_image_animated_frame_set(o, i); i++; return ECORE_CALLBACK_RENEW; } return ECORE_CALLBACK_DONE; } static void _quit(Ecore_Evas *ee) { ecore_main_loop_quit(); (void)ee; } int main(int argc, char *argv[]) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; int w,h; Evas_Load_Error err; if (argc < 2) { printf("usage : %s file\n", argv[0]); return 1; } ecore_evas_init(); ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) { printf("no ee\n"); return 0; } evas = ecore_evas_get(ee); ecore_evas_title_set(ee, "avif test"); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, argv[1], NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", argv[1], evas_load_error_str(err)); return 1; } evas_object_image_size_get(o, &w, &h); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); printf("animated : %s\n", evas_object_image_animated_get(o) ? "yes" : "no"); fflush(stdout); if (evas_object_image_animated_get(o)) { Ecore_Timer *timer; printf("frame count : %d\n", evas_object_image_animated_frame_count_get(o)); printf("duration : %f\n", evas_object_image_animated_frame_duration_get(o,1,0)); printf("loop count : %d\n", evas_object_image_animated_loop_count_get(o)); fflush(stdout); timer = ecore_timer_add(evas_object_image_animated_frame_duration_get(o,1,0), _timer, o); } ecore_evas_resize(ee, w, h); ecore_evas_show(ee); ecore_main_loop_begin(); ecore_evas_shutdown(); return 0; } ``` non animated files : https://github.com/AOMediaCodec/libavif/tree/master/tests/data/originals animated files : https://github.com/AOMediaCodec/av1-avif/tree/master/testFiles/Netflix/avifs to test the saver : ``` #include <stdlib.h> #include <stdio.h> #include <math.h> #include <Eina.h> #include <Ecore.h> #include <Evas.h> #include <Ecore_Evas.h> void _quit(Ecore_Evas *ee) { ecore_main_loop_quit(); (void)ee; } static Evas_Object * display_data(int w, int h, const char *title, unsigned int *data) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; unsigned int *d; ee = ecore_evas_new(NULL, 0, 0, w, h, NULL); if (!ee) return NULL; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, title); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_image_size_set(o, w, h); d = evas_object_image_data_get(o, 1); for (int i = 0; i < w*h; i++) d[i] = data[i]; evas_object_image_data_set(o, d); evas_object_image_data_update_add(o, 0, 0, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); ecore_evas_show(ee); return o; } static unsigned int * display_file(const char *title, const char *filename, int *w, int *h) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; Evas_Load_Error err; unsigned int *data; ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) return NULL; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, title); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, filename, NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", filename, evas_load_error_str(err)); fflush(stderr); return NULL; } evas_object_image_size_get(o, w, h); evas_object_image_fill_set(o, 0, 0, *w, *h); evas_object_image_size_set(o, *w, *h); evas_object_move(o, 0, 0); evas_object_resize(o, *w, *h); evas_object_show(o); ecore_evas_resize(ee, *w, *h); ecore_evas_show(ee); data = evas_object_image_data_get(o, 1); return data; } double psnr(int w, int h, unsigned int *data_orig, unsigned int *data) { unsigned char *iter_orig; unsigned char *iter; double psnr; psnr = 0.0; iter_orig = (unsigned char *)data_orig; iter = (unsigned char *)data; for (int i = 0; i < 4 * w * h; i++, iter_orig++, iter++) psnr += (*iter_orig - *iter) * (*iter_orig - *iter); psnr /= 4 * w * h; psnr = 10 * log10(255.0 * 255.0 / psnr); return psnr; } void compare(int quality, int w, int h, unsigned int *data_orig) { char title[1024]; char filename[1024]; unsigned char *data; unsigned int *data_jpeg; unsigned int *data_avif; unsigned char *iter_orig; unsigned char *iter_jpeg; unsigned char *iter_avif; double psnr_jpeg; double psnr_avif; Eina_File *f_jpeg; Eina_File *f_avif; size_t size_jpeg; size_t size_avif; /* jpeg */ snprintf(title, sizeof(title), "jpeg test quality %d", quality); snprintf(filename, sizeof(filename), "test_%d.jpg", quality); data_jpeg = display_file(title, filename, &w, &h); if (!data_jpeg) return; f_jpeg = eina_file_open(filename, EINA_FALSE); size_jpeg = eina_file_size_get(f_jpeg); eina_file_close(f_jpeg); fprintf(stderr, "size : %u\n", (unsigned int)size_jpeg); fflush(stderr); /* avif */ snprintf(title, sizeof(title), "avif test quality %d", quality); snprintf(filename, sizeof(filename), "test_%d.avif", quality); data_avif = display_file(title, filename, &w, &h); if (!data_avif) return; f_avif = eina_file_open(filename, EINA_FALSE); size_avif = eina_file_size_get(f_avif); eina_file_close(f_avif); fprintf(stderr, "size : %u\n", (unsigned int)size_avif); fflush(stderr); psnr_jpeg = psnr(w, h, data_orig, data_jpeg); fprintf(stderr, "psnr jpeg : %f\n", psnr_jpeg); fflush(stderr); snprintf(title, sizeof(title), "jpeg vs orig (psnr: %.2f, size: %u b)", psnr_jpeg, (unsigned int)size_jpeg); iter_orig = (unsigned char *)data_orig; iter_jpeg = (unsigned char *)data_jpeg; data = malloc(4*w*h); for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_jpeg++) data[i] = abs(*iter_jpeg - *iter_orig); display_data(w, h, title, (unsigned int *)data); psnr_avif = psnr(w, h, data_orig, data_avif); fprintf(stderr, "psnr avif : %f\n", psnr_avif); fflush(stderr); snprintf(title, sizeof(title), "avif vs orig (psnr: %.2f, size: %u b)", psnr_avif, (unsigned int)size_avif); iter_orig = (unsigned char *)data_orig; iter_avif = (unsigned char *)data_avif; data = malloc(4*w*h); for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_avif++) data[i] = abs(*iter_avif - *iter_orig); display_data(w, h, title, (unsigned int *)data); } int main() { Ecore_Evas *ee; Evas *evas; Evas_Object *o; Evas_Load_Error err; unsigned int *data; int w,h; ecore_evas_init(); ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) return 1; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, "original"); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, "x1d-II-sample-02.fff", NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", "x1d-II-sample-02.fff", evas_load_error_str(err)); fflush(stderr); return 1; } evas_object_image_size_get(o, &w, &h); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_image_size_set(o, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); data = evas_object_image_data_get(o, 1); ecore_evas_resize(ee, w, h); ecore_evas_show(ee); /* evas_object_image_save(o, "test_100.jpg", NULL, "quality=100"); */ evas_object_image_save(o, "test_90.jpg", NULL, "quality=90"); /* evas_object_image_save(o, "test_70.jpg", NULL, "quality=70"); */ /* evas_object_image_save(o, "test_50.jpg", NULL, "quality=50"); */ /* evas_object_image_save(o, "test_100.avif", NULL, "quality=100"); */ evas_object_image_save(o, "test_90.avif", NULL, "quality=90"); /* evas_object_image_save(o, "test_70.avif", NULL, "quality=70"); */ /* evas_object_image_save(o, "test_50.avif", NULL, "quality=50"); */ compare(90, w, h, data); ecore_main_loop_begin(); ecore_evas_shutdown(); return 0; } ``` the raw file canbe found here : https://www.hasselblad.com/learn/sample-images/ Test Plan: test executable with avif files found in libavif project Reviewers: raster, q66 Reviewed By: q66 Subscribers: q66, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12051
* Revert "Evas: add avif evas loader"Carsten Haitzler (Rasterman)2020-07-141-1/+0
| | | | | | This reverts commit dd23a6c84aee249aa5316b48af6956072233bb97. i didn't mean to push this yet...
* Evas: add avif evas loaderVincent Torri2020-07-141-0/+1
| | | | | | | | | | | | | | Summary: Add AV1 image file loader to Evas Test Plan: test executable with avif files found in libavif project Reviewers: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12051
* benchmark: eina: remove outdated ecore_hashStefan Schmidt2020-07-061-4/+0
| | | | | | | | | | | | Ecore_hash is an ancestor of eina_hash and not used anywhere anymore. We simply forgot to remove it from our benchmark utility. Together with ecore_hash we are removing ecore_strings, which uses it, and the corresponding benchmark files. Signed-off-by: Stefan Schmidt <s.schmidt@samsung.com> Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D12042
* Updating all po filesmaxerba2020-04-1932-9504/+5611
|
* Fixing POTFILES and updating italian translationmaxerba2020-04-183-534/+2274
|
* Updating serbian translationmaxerba2020-03-141-127/+107
|
* po: update LINGUAS file to reflect all translations we currently haveStefan Schmidt2019-12-131-2/+1
| | | | | | | | This list was quite outdated compared to the po files we have in tree right now. Reviewed-by: Massimo Maiurana <maiurana@gmail.com> Differential Revision: https://phab.enlightenment.org/D10872
* po: remove empty ChangeLog file for translationsStefan Schmidt2019-12-131-0/+0
| | | | | | | This was never used. Reviewed-by: Massimo Maiurana <maiurana@gmail.com> Differential Revision: https://phab.enlightenment.org/D10871
* The header was filled with the standard template, now it's filled with ↵maxerba2019-11-161-4/+4
| | | | correct infos
* Updating spanish translationmaxerba2019-07-091-32/+30
|
* Updating french translationmaxerba2019-07-081-50/+46
|
* update po...Carsten Haitzler (Rasterman)2019-04-1524-888/+888
|
* efl po - change intl.h check to use compiles so cflags it respectedCarsten Haitzler (Rasterman)2019-03-011-1/+1
| | | | | this fixes building on fbsd... (where CFLAGS will now work to find libintl.h)
* update po filesCarsten Haitzler (Rasterman)2018-12-0624-696/+645
|
* elementary: remove Efl.Ui.Layout namespaceJaehyun Cho2018-11-161-1/+1
| | | | | | | | | | | | | | | | | | Summary: Efl.Ui.Layout namespace is removed to keep consistency with other widgets. Consequently, "Efl.Ui.Layout.Object" is renamed to "Efl.Ui.Layout" and "Efl.Ui.Layout." is renamed to "Efl.Ui.Layout_". Reviewers: segfaultxavi, bu5hm4n, cedric Reviewed By: segfaultxavi Subscribers: #reviewers, #committers, SanghyeonLee, woohyun Tags: #efl Differential Revision: https://phab.enlightenment.org/D7291
* here comes mesonMarcel Hollerbach2018-10-021-0/+22
| | | | | | | | | | | | | | | | | | | | | | | a new shiny buildtool that currently completes in the total of ~ 4 min.. 1 min. conf time 2:30 min. build time Where autotools takes: 1:50 min. conf time 3:40 min. build time. meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read. Further informations can be gathered from the README.meson Right now, bindings & windows support are missing. It is highly recommented to use meson 0.48 due to optimizations in meson that reduced the time the meson call would need. Co-authored-by: Mike Blumenkrantz <zmike@samsung.com> Differential Revision: https://phab.enlightenment.org/D7012 Depends on D7011
* update po'sCarsten Haitzler (Rasterman)2018-09-2124-480/+480
|
* po: update files after danish translation updateStefan Schmidt2018-08-1023-782/+759
| | | | | Make sure our po files are up to date for the upcoming release. Purely mechanical change thus not going through phab review.
* Updating danish translationmaxerba2018-08-091-40/+38
|
* update poHermet Park2018-07-0924-1896/+1896
|
* build break - fix - potfiles.in missing file renameCarsten Haitzler (Rasterman)2018-04-2525-121/+121
| | | | fix build to work again (from a clean tree).
* update po filesCarsten Haitzler (Rasterman)2018-04-2324-528/+528
|
* Revert Efl.Ui.Multibuttonentry to create new one.Woochan Lee2018-04-191-1/+1
| | | | | | | | | | | | | | | | | Summary: Revert e02b2f04c2945ad60fab5612af1e02b0838b7ff5. I couldnt make a revert commit for many commit has been related with above commit. I will create a new MBE eo class ASAP. (https://phab.enlightenment.org/T5358) Reviewers: cedric, woohyun, Jaehyun_Cho, SanghyeonLee, herb Reviewed By: Jaehyun_Cho Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D5954
* Updating italian translationmaxerba2018-04-011-7/+6
|
* update po filesCarsten Haitzler (Rasterman)2018-03-1224-960/+960
|
* Efl.Ui.Progressbar: implement range min maxAmitesh Singh2018-01-311-0/+1
|
* update po filesCarsten Haitzler (Rasterman)2018-01-1224-120/+120
|
* potfiles.in - remove src files no longer in treeCarsten Haitzler (Rasterman)2018-01-121-1/+0
|
* widget: rename elm widget to Efl.Ui.Widget.Amitesh Singh2018-01-081-1/+1
|
* update po filesCarsten Haitzler (Rasterman)2017-12-2024-1817/+2197
|
* Adding danish translationmaxerba2017-11-052-1/+553
|
* efl_ui_calendar: create new efl_ui_calendarWooHyun Jung2017-10-251-0/+1
| | | | | | | | | | | | | Summary: This calendar widget will support basic functionality of calendar. I've separated this widget from elm_calendar since elm_calendar had lots of unuseful things inside. Reviewers: jpeg, singh.amitesh, cedric, CHAN, Jaehyun_Cho Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D5346
* elm: rename elm_multibuttonentry to Efl.Ui.MultibuttonentryWoochan Lee2017-10-241-1/+1
| | | | | | | | | | | | | | | | | | Summary: @ref T5358 Reviewers: woohyun, jpeg, cedric, Jaehyun_Cho Reviewed By: Jaehyun_Cho Subscribers: Jaehyun, bu5hm4n, cedric, jpeg Maniphest Tasks: T5358 Differential Revision: https://phab.enlightenment.org/D5169 JP's note: MBE currently has quite a few issues, probably related to focus handling. This needs to be fixed.
* elm test: rename test_slider_interval.c to test_ui_slider_interval.cAmitesh Singh2017-09-291-1/+1
|
* elm_bg: rename elm_bg to Efl.Ui.BgSungtaek Hong2017-09-261-1/+1
| | | | | | | | | | | Summary: elm_bg was supposed to be used only in legacy, but since we need a common object to be used as a background of widgets, it is now renamed as efl_ui_bg and supports EO APIs. Reviewers: cedric, jpeg, woohyun Differential Revision: https://phab.enlightenment.org/D5147
* update PO files from src...Carsten Haitzler (Rasterman)2017-09-1923-1219/+1357
|
* efl po files - fix LTR/RTL translation string to be correct for langsCarsten Haitzler (Rasterman)2017-09-1919-19/+19
| | | | | | also add the comment in the code for trsanslators @fix
* interval slider: Add new interval slider widgetAmitesh Singh2017-09-121-0/+2
| | | | | This widget is a slider with two indicators which allows to have interval of value.
* Revert "elm: rename elm spinner to Efl.Ui.Spinner"Amitesh Singh2017-09-071-1/+1
| | | | | | | | This reverts commit 9836116cab93388cf3d079d39180f675f86be78f. This is based on discussion today i had. There would be a separate minimal spinner class instead which facilates ways to extend it.
* elm: rename elm spinner to Efl.Ui.SpinnerAmitesh Singh2017-09-011-1/+1
| | | | Ref T5900
* update po filesCarsten Haitzler (Rasterman)2017-08-1023-782/+782
|
* elm: Rename elm_layout to Efl.Ui.LayoutJean-Philippe Andre2017-08-081-1/+1
| | | | | | | | | | | Some names have not been changed, hopefully making a distinction between legacy APIs and internal code (elm_layout_blah) and valid EO usages. This means many internal functions are still elm_layout_ as their sole purpose is to support the legacy API. Ref T5315
* elm: rename elm panes to Efl.Ui.PanesAmitesh Singh2017-08-071-1/+1
|
* po files - update lines/commentsCarsten Haitzler (Rasterman)2017-07-1223-550/+550
|
* po: update po files for alpha releaseStefan Schmidt2017-06-2923-1150/+1150
|
* elm: rename elm slider to Efl.Ui.SliderAmitesh Singh2017-06-121-1/+1
| | | | ref T5361
* elm: rename elm_photocam to Efl.Ui.Image.ZoomableAmitesh Singh2017-05-291-1/+1
| | | | Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
* update po/* files after progressbar renameAmitesh Singh2017-05-2323-46/+46
| | | | Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
* elm: rename elm_progressbar to Efl.Ui.ProgressbarAmitesh Singh2017-05-231-1/+1
| | | | | | ref T5360 Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>