Commit Graph

553 Commits

Author SHA1 Message Date
Hermet Park aaa199e2d4 evas map: disable the anti_aliasing code which can't be reached.
This anti-aliasing is a little buggy, should be improved.

But just leaving to fix later when it's necessary.
2019-09-19 13:30:21 +09:00
Hermet Park c6b52d4f09 canvas map: remove logically dead code.
the value was overflow, reduce its size.
2019-08-26 19:30:06 +09:00
Hermet Park 42a7aae58c canvas map: code refactoring.
remove dead code that unreachable looping.
2019-08-26 19:23:43 +09:00
Carsten Haitzler 9f9cfe65a6 evas - scalecache - be a bit paranoid about images being set to null
this may address a bug, but i'm not sure as i can't reproduce it.
suffice to say it smells like a possible leak.
2019-08-25 10:28:08 +01:00
Carsten Haitzler 443677c7f9 scalecache - handle possible use after free with sci still in list
the sci may still be in the list then we free it because sci->im is
NULL .. it may always have been null. this should guard against that
and fix it.

@fix
2019-08-24 15:21:42 +01:00
Carsten Haitzler e15d9c86df eina file refs in edje/evas - audit them and plug holes where refs stay
in 1 situation at least we delete the eina file (close it) but keep
the ptr around (during destruction) which could cause issues with
callbaks and events on del and so on.... which may lead to multiple
closes where only one should happen ... which would explain my invalid
eina file ref problems i'm seeing. i carefully matched eina file
handle stores/opens/dups to closes in edje/evas and they seemed to all
match up so this audit with comments and fixes seems to have plugged
that now.

@fix
2019-08-21 20:02:24 +01:00
Carsten Haitzler 5f5e95e336 evas - font rendering - dont crash if we have color fonts and gl and sw
so if you use sw and gl enignes in a process and have color font
glyphs.. *BOOM* because the color glyph code used ext dat that was
intended for engines to extend with a gotcha of "only 1 engine can
extend this"... commented already.

so this unfortunately adds an extra ptr per glyph to store color data
explicitly. but now it both renders right and doesn't crash. we still
have a limit of 1 engine alone can extend glyphs with ext_dat though.

@fix
2019-08-21 20:02:23 +01:00
Ali Alzyod a821eb456a evas_common: parse color in rgb()/rgba() format
evas_common_format_color_parse: support rgb()/rgba() format

efl user can now specify colors in text formats and styles as rgb(0-255,0-255,0-255) &  rgba(0-255,0-255,0-255,0-255)  format.

This is related to task: T8068

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9309
2019-08-19 11:33:23 -07: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 21efff6d3e evas image - eina file - be paranoud about double closes
tracking some seemingly not so good asan hits on the eina file where
we're accessing an eina file already closed... so be extra paranoid
about it and set things to null after free/close...
2019-08-05 18:59:33 +01:00
Marcel Hollerbach 6883087ac7 Revert "evas_object_textblock: add support for variation sequences"
This reverts commit f7ce771e32.
2019-07-30 19:09:12 +02:00
Ali Alzyod f7ce771e32 evas_object_textblock: add support for variation sequences
update font processing to handle variation sequences unicodes to select proper glypg in respect to variation seqences

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9053
2019-07-29 11:17:35 -07:00
Cedric BAIL 6a93e2ef3d evas: add infrastructure to feed 9 patch information from file loader to image object.
This is just the plumbing that feed data provided along android 9 patch image for example
into Evas object image new stretch and content region infrastructure for rendering them
properly.

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9102
2019-07-12 09:54:16 -07:00
Cedric BAIL ce076d1323 evas: break Image_Loader API to allow for getting property from the data field of an image.
Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9101
2019-07-12 09:54:14 -07:00
Cedric BAIL 9f35c74d9d evas: break Evas_Loader API and introduce a version numbering for Image_Loader.
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9099
2019-07-12 09:54:11 -07:00
Ali Alzyod 673bce2b91 evas_common_format_color_parse: support color names
Summary:
efl user can now specify colors by there names ( not only Hex RGB/RGBA values), which is very convenient specially for first time users (where user may think it is supported by default)

<color=#FF0000> == <color=red> == <color==RED>

there are two main types of color names and values ( X11, web colors), here we are using X11 color.

============
Update for documentation pages should be added like:
https://www.enlightenment.org/_legacy_embed/evas_textblock_style_page.html#evas_textblock_style_color

I do not know how to update it :(

Test Plan:
```
#define EFL_EO_API_SUPPORT 1
#define EFL_BETA_API_SUPPORT 1

#include <Eina.h>
#include <Elementary.h>
#include <Efl_Ui.h>

static void
_gui_quit_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
   efl_exit(0);
}

static void
_gui_setup()
{
   Eo *win, *box;

   win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
                 efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
                 efl_text_set(efl_added, "Hello World"),
                 efl_ui_win_autodel_set(efl_added, EINA_TRUE));

   // when the user clicks "close" on a window there is a request to delete
   efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _gui_quit_cb, NULL);

   box = efl_add(EFL_UI_BOX_CLASS, win,
                efl_content_set(win, efl_added),
                efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(360, 240)));

   efl_add(EFL_UI_TEXT_CLASS, box,
           efl_text_markup_set(efl_added,
           "<color=red>this is red color line(color = red)<color><br>"
           "<color=#0000FF>this is blue color line (color = #0000FF)<color><br>"
           "<color=gray>this is gray color line (color = gray)<color><br>"),
           efl_gfx_hint_weight_set(efl_added, 1.0, 0.9),
           efl_gfx_hint_align_set(efl_added, 0.5, 0.5),
           efl_text_multiline_set(efl_added,EINA_TRUE),
           efl_pack(box, efl_added));

   efl_add(EFL_UI_BUTTON_CLASS, box,
           efl_text_set(efl_added, "Quit"),
           efl_gfx_hint_weight_set(efl_added, 1.0, 0.1),
           efl_pack(box, efl_added),
           efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
                                  _gui_quit_cb, efl_added));
}

EAPI_MAIN void
efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
{
   _gui_setup();
}
EFL_MAIN()

```

Reviewers: woohyun, bowonryu, segfaultxavi, vtorri

Reviewed By: segfaultxavi, vtorri

Subscribers: vtorri, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9153
2019-06-25 19:28:12 +02:00
Ali Alzyod c25554c4f2 evas_common: use memcpy to copy pixel buffer
Summary: This function has no special processing when copy data, so using memcpy can enhance performance

Test Plan:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

typedef unsigned int       DATA32;

static void
oldFunc(DATA32 *src, DATA32 *dst, size_t len)
{
   DATA32 *dst_end = dst + len;
   while (dst < dst_end)
      *dst++ = *src++;
}

static void
newFunc(DATA32 *src, DATA32 *dst, size_t len)
{
   memcpy(dst, src, len * sizeof(DATA32));
}

int main()
{

   int counter = 1000;
   srand(time(NULL));
   DATA32 src[50000] = {0};
   DATA32 dst[50000] = {0};

   for (int i = 0; i < 50000; i++)
      src[i] = rand();

   clock_t start, end;
   double total_Time1 = 0;
   int i;

   start = clock();
   for (i = 0; i < counter; i++)
      oldFunc(src, dst, 50000);
   end = clock();
   total_Time1 = ((double)(end - start)) / CLOCKS_PER_SEC;
   printf("original = %f \n", total_Time1);

   start = clock();
   for (i = 0; i < counter; i++)
      newFunc(src, dst, 50000);
   end = clock();
   total_Time1 = ((double)(end - start)) / CLOCKS_PER_SEC;
   printf("modified = %f \n", total_Time1);
}
```

Reviewers: raster, ManMower, woohyun, Hermet

Reviewed By: Hermet

Subscribers: Hermet, vtorri, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9155
2019-06-25 21:48:42 +09:00
Xavi Artigas 2b7d26790a Fix miscellaneous build warnings
Nothing serious, but they were driving me mad.
2019-06-19 10:19:49 +02:00
Xavi Artigas 3081d9b8ea evas/scale_sample: even more code deduplication
Summary:
how many times was this block of code copied around???

no functional changes
Depends on D8848

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8849
2019-05-21 20:27:15 +02:00
Mike Blumenkrantz 7c78938689 evas/scale_sample: remove unnecessary clamping to mask geometry
Summary:
this is now handled entirely in the masking helper function

no functional changes
Depends on D8847

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8848
2019-05-21 20:27:05 +02:00
Mike Blumenkrantz 6d0233afb8 evas/scale_sample: further deduplicate masking code
Summary:
by adding a couple extra params to existing functions, we can reuse
existing code instead of copying it around and adding more bugs

no functional changes

Depends on D8846

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8847
2019-05-21 20:26:57 +02:00
Mike Blumenkrantz 4542cfcbea evas/scale_sample: deduplicate masking code
Summary:
these functions provide identical functionality to the inline blocks

no functional changes
Depends on D8841

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: Hermet, cedric, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8846
2019-05-21 20:26:45 +02:00
Vincent Torri 24e4881efb Evas: remove Evil.h when not needed and use evil_private when needed
Test Plan: compilation

Reviewers: zmike, raster, cedric

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8921
2019-05-20 08:46:02 -04:00
Mike Blumenkrantz 01ce5a1249 evas/scale_sample: call alloca for the scanline buffer after clamping width
Summary:
this is already a risky call for larger scanlines, so use the clamped value
to further reduce the chance of blowing out the stack

Depends on D8839

Reviewers: cedric, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8840
2019-05-13 11:44:27 -04:00
Mike Blumenkrantz 20cefc8db2 evas/scale_sample: fix mask geometry clamping in scale thread
Summary:
the 'y' parameter is not relevant here. this clamping exists solely
to avoid reading outside the bounds of the mask, and 'y' is the scanline
at which to begin the masking

subtracting the mask size here does not make sense: we are attempting to clamp
to the size of the mask in order to avoid buffer over-read, so this means that
we are mapping the maximum y coordinate of the mask (mask_y + mask_h) to be
relative to the clipped y coordinate (dst_clip_y)

Depends on D8838

Reviewers: cedric, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8839
2019-05-13 11:44:18 -04:00
Mike Blumenkrantz fa983e9ff1 evas/scale_sample: slightly refactor some mask geometry clamping
Summary:
this was a bit confusing to read since the comparators are not ordered
as expected

no functional changes

Depends on D8837

Reviewers: cedric, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, #reviewers, #committers

Tags: #efl_rendering

Differential Revision: https://phab.enlightenment.org/D8838
2019-05-13 11:44:11 -04:00
Carsten Haitzler 22081ada26 much better fix to invalid uv coords with new map render code
this fixes the d81d1337b0 fix to do it
in the inner loop so uu and vv stay valid. still not a great fix but
better than chashes.
2019-05-09 12:30:17 +01:00
Carsten Haitzler d81d1337b0 evas - map render - quick fix for segv in new map renderer
u or v go below 0... sometimes. right now i don't know the full path
to there, bute crashes with flat theme when the busy spinner shows
over an ibar icon when you launch... this at least stops that.

this needs hunting in more detail than i'm going to do on my laptop
on the couch...
2019-05-06 21:31:01 +01:00
Hermet Park 9c66a4751c evas map: move to floating point coordinate system in high-quality drawing.
evas map has used integer coodinate system since it's born,

since object's transition is jiggled, not perfectly smooth.

It's obvious because Positioning must be stepping with integer units
without any subpixel rendering.

Currently, this patch is a sort of preparatory to improve this,
only valid for high-quality evas map (smooth + anti-aliasing)
2019-04-18 19:47:54 +09:00
Hermet Park 77a9093af7 evas common: small optimization.
don't repeat computing every iteration.
2019-04-18 18:51:16 +09:00
Hermet Park f10bd61c9d evas map: shut up annoying compile warnings.
These variables must be logically initialized,
but compiler couldn't catch it, prints warnings.
2019-04-18 15:08:35 +09:00
Carsten Haitzler ae77e58366 evas - fix crash/junk pixel content but with tiled rotate at 270 + neon
@fix
2019-04-12 12:56:40 +01:00
Carsten Haitzler ebf2ca3c5b evas common - tiled rotate - fix signedness of neon intrinsics - warning 2019-04-12 11:24:32 +01:00
Carsten Haitzler eaf78210e8 evas common - convert - rotate tiled - fix const ptr warnings 2019-04-12 11:24:29 +01:00
Carsten Haitzler f43c19ac32 evas map - mark npoints param as unused because it is remove warning 2019-04-12 10:29:42 +01:00
Hermet Park dc1e1a652c evas map: disable anti_aliasing.
We need a proper interface to toggle high-quality mapping,
until that, we disable the anti_aliasing feature.
Since adjecent polygons(such as textpath) shouldn't get this aa feature.
2019-04-08 15:02:47 +09:00
Hermet Park d5551bdda3 evas map: remove redundant code.
Remove old anti-alias code since high quality map is replaced with new one.
New anti-aliasing is logically same but having a regression bug,
it should be stablized.
2019-04-08 14:56:42 +09:00
Hermet Park 84e162b01f canvas map: introduce a new texture mapping for better quality.
Summary:
This new implementation of evas map texture mapping
 is designed for high quality rendering same level to GL.

If you use a high-end device, performance is not too bad, you can turn this on.
You might have practical image quality even in software rendering.

Since this implementation still have a few optimization points (+simd)
and stablizings, it may be useful in somewhat limited envrionments right now.
However the functionality definitely works fine, so please turn this on by
demand (anti_alias + smooth) for a while.

{F3667773} {F3667776} {F3667778}

Reviewers: #committers, devilhorns, raster

Reviewed By: #committers, raster

Subscribers: raster, devilhorns, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8106
2019-04-08 13:21:08 +09:00
Xavi Artigas 68c530080b docs: Fix common misspellings in H files
Fixed all appearances of words from this list in H files:
https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
2019-04-02 13:28:48 +02:00
Carsten Haitzler 4758f06e63 solve neon rotation issue by moving to the tiled rotator
the tiles rotator is faster no matter what. this will fix D8099 by
movoing to tiled rotation and nuking the neon code and we end uop
being faster anyway in all cases.

@fix
2019-03-09 15:21:46 +00:00
Hermet Park 40bc81ae2b evas map: ++safety anti-aliasing processing.
there was a potential case that overflow range.
here it kicks it out.
2019-03-05 17:11:20 +09:00
Hermet Park 057db36423 evas map: fix wrong range in anti-aliasing processing.
alpha value must be in 0 - 255.
2019-03-04 20:35:31 +09:00
Hermet Park edbce35967 evas map: fine-tune a case by anti-aliasing quality. 2019-03-04 19:23:17 +09:00
Christopher Michael be76c3ca47 evas: Remove left over includes from cserve2 removal
NB: No functional changes. These were missed when cserve2 support was
removed
2019-01-28 11:59:47 -05:00
Mike Blumenkrantz 79d15acca0 evas: fix big endian pixman image rendering
as indicated by the accompanying FIXME, the byte ordering is inverted
for big endian so this should be #ifdef-ed

Reviewed-by: Chris Michael <Christopher Michael <cp.michael@samsung.com>>
Differential Revision: https://phab.enlightenment.org/D7592
2019-01-16 15:58:25 -08:00
Carsten Haitzler 3a075988e4 evas cpu - just rely on eina cpu entirely to avboid feature dups
so evas cpu used to be the thing then eina cpu came and did the same
and evas cpu optionalyl could lsit on top... just move it all to eina
cpu so one central place does this and evas_cpu is purely a compat
wrapper.
2018-12-08 04:46:03 +00:00
Carsten Haitzler 01ed58d52d evas - cpu - fix sve check when neon is disabled... 2018-12-06 15:32:17 +00:00
Carsten Haitzler 168fec6995 eina+evas cpu - add theoretical SVE support
SVE is a new-ish ARM vector instruction set like neon... but with
wider vectors (and variable vector sizes). this adds the flags and
hwcaps checks.
2018-12-03 11:04:27 +00:00
Carsten Haitzler ae2d399dd6 build - evas - sse3 optimized code - decouple from eo 2018-11-12 16:42:17 +00:00
Carsten Haitzler d70ee74ded evas - neon blend - warn - color mul, not used in one asm func - mark as such 2018-11-09 11:44:00 +00:00