This change finally introduces deferred parsing of inherits to
Eolian, after a long time and many iterations. That means instead
of parsing inherits directly as part of the main file's parse pass,
they're pushed into a queue and parsed later. The validation engine
was modified to properly fill in the remaining info afterwards.
This may introduce breakages but I haven't noticed any. It also
properly unlocks cyclic dependency support in Eolian.
Additionally, this also introduces checks for duplicates in class
inherits (class Foo(Bar, Bar) is no longer possible) and it adds
stricter name checks, so you can no longer have a class Foo.Bar
and refer to it as Foo_Bar in implements. This was actually never
meant to be supported, but the check was previously broken.
@feature
This interface has a simple 'create' method to create Efl.Canvas.Object
given a key.
This is used higher-up in Ui.Text in the next commit.
Ui text: add ability to set item factories
Added API to set an item factory object.
This is similar to the previous item providers (that worked with
callbacks).
You instantiate a factory object and set it on the Ui.Text object.
Each factory implements the "create" method from
Efl.Canvas.Text.Item_Factory.
This also includes 3 public factories (Image, Emoticon and Fallback):
- Image factory: creates images from added entries (key strings)
- Emoticon factory: creates emoticons by querying the theme
- Fallback: creates image, then falls back to emoticon
If no factory is set, then the fallback (internal) factory is used.
See the added "Ui.text Item Factory" test in elementary_test for an
example of usage.
@feature
No need to split: those two are used in all the same classes, since the
split between Orientation and Ui.Dir.
Note that the enum types remain in the main namespace.
For SW engine we need to verify that OSMesa is present. The patch
fb048e7312 broke the logic.
Tested by temporarily removing OSMesa from my system.
Fixes T6617 (again)
Summary:
Efl.Player interface simply provides play functions,
but another interface which indicates Efl.Player will play is also
needed.
Test Plan: Run elementary_test->Efl.Animation tests
Reviewers: woohyun, conr2d, Jaehyun_Cho, jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D5662
Fixes a bug introduce with c8c4572d70.
My guess is that the true intention was to query the Efl.File mixin
first, and the check the specific load_error.
Basically a call to 'efl_file_load_error_get' on an
Efl.Canvas.Image triggered this.
Summary:
The Encoding key is no longer required, all desktop files are assumed to
be UTF-8 encoded. See details at:
https://standards.freedesktop.org/desktop-entry-spec/1.1/apc.html
Fix various typos and misspellings
lintian, Debian's package checker, uses strings to check for common typos
in compiled binaries. This change fixes the ones it identified in 1.20.6.
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5584
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
remove eo apis pointer_in, pointer_device_in, pointer_inside_get &
pointer_inside_by_device_get and add legacy APIs for
pointer_inside_get & pointer_inside_by_device_get.
These four APIs do almost same things.
A few classes allow their objects to be duplicated, so they should all
use the same interface.
Also, rename VG's dup to copy_from as it's not conforming to the
definition of dup.
This removes the internal function pointer for scale_update. This makes
all relevant classes implement the scale API in EO.
This removes the duplicate function in Efl.Canvas.Object and only uses
the one from Efl.Ui.Base interface.
This *seems* to be working as expected. Fingers crossed!
PS: I don't like the name Efl.Ui.Base. It's an interface for a few
common API's between Gfx, Canvas and UI levels... Maybe scale simply
doesn't belong there.
Calling this lock for no good reason result in a 2% slow down. Easy
enough to disable as we do not use evas_render2 at all. Might be
something to consider if we ever develop evas_render2 further.
There are use cases where you would want to align by a value.
The wordy alignment values are thus removed.
This commit also separates auto-modes (none, normal, locale) for
horizontal alignment to its own API.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
There are multiple places in the code where both the padded item's
width and the maximum style padding (at the edges) are accounted for.
For the sake of making calculations for wrapping/ellipsis we should
only use the maximum style padding.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This updates the style pad even if there are no format nodes.
An example of this is having a default style set to the object.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Since font names can also specify styles like weight, width etc, we
should parse the font name AFTER setting the respective properties to
the font description, so it can override some if required.
This allows, for example, the following operation:
efl_text_font_weight_set(obj, EFL_TEXT_FONT_WEIGHT_NORMAL);
efl_text_font_set(obj, "Sans:Bold");
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
dev branch : devs/subhransu/font
The Final goal is to move the evas_font module to ector so that both ector and evas can reuse the code.
make the api simple so that sam eapi can be used by evas_textblock and ector text.
This is the 1st stage to achive that gola, first remove the evas internal dependancy as much as possible before moving to ector library.
Reviewers: jpeg, raster, herdsman, cedric, id213sin
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5419
Coverity reports that EVAS_OBJECT_DATA_SAFE_GET returns NULL here (184
out of 188 times). As such, we should not be calling
_event_animation_object_get with a null object so add a null check here.
Fixes Coverity CID1381713
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Coverity reports that EVAS_OBJECT_DATA_SAFE_GET returns NULL here (184
out of 188 times). The _all_animation_objects_cancel function
directly dereferences the obj parameter passed into it, so lets null check it
before calling that function.
Fixes Coverity CID1381711
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Coverity reports that EVAS_OBJECT_DATA_SAFE_GET returns NULL here (184
out of 188 times). The _all_animation_objects_cancel function directly
dereferences the obj parameter passed into it, so lets null check it
before calling that function.
Fixes Coverity CID1381710
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Textblock's ellipsis feature only worked when text's width exceeds its area.
So, it didn't work when text's height exceeds its area by "br" tags.
This patch will do ellipsis when only ellipsis=1.0 is set.
@fix
Test Plan: make check
Reviewers: herdsman, raster, cedric, jpeg, sohyun
Reviewed By: raster
Subscribers: woohyun
Differential Revision: https://phab.enlightenment.org/D5412
This isn't meant to be installed. The canvas API in EO is based around
the interfaces Efl.Canvas and the widget Efl.Ui.Win. Anything else is
not EO (eg: ecore_evas, evas, ...)
Note: evas_canvas3d is the last remaining thing that is installed along
EO files, but those are all beta APIs.
'output' variable is actually used in this function, so remove
EINA_UNUSED from function parameter
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Change the first letter of the sentence from lowercase to uppercase,
and fix typo "top be" to "to be"
Reviewers: cedric, jpeg, stefan_schmidt, myoungwoon, Jaehyun_Cho, conr2d
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D5398
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
This is the result of a really quick review of the new VG code. Most of
it was moved around, but this merge includes the following:
- Move logic from edje to evas
- Create static lib for common VG handling
- Add file_set() API
- Add a basic VG cache in evas side
- Add savers modules, implement loaders and savers.
Summary:
There is a requirement for putting text at right side for LTR and at left side for RTL.
It satisfies that reqirement easily.
It also add "start" keywork for "align" tag. "start" will be same with "auto".
Intuitionally, developer will try "align=start" if they once saw "align=end" in elsewhere.
On the other hand, it only add "END" as new enumeration value for efl interface.
@feature
Test Plan: N/A
Reviewers: herdsman, cedric, jpeg, raster
Reviewed By: raster
Subscribers: woohyun
Differential Revision: https://phab.enlightenment.org/D5342
Summary:
viewbox, fill_mode and align property required to scale the vg tree that
we get from the svg file or manually created depending on the vg canvas
size.
Reviewers: jpeg, cedric
Subscribers: jenkins, cedric
Differential Revision: https://phab.enlightenment.org/D5358
Summary:
Currently user ask for the root_node from the evas_vg object and then attach its tree by setting the root node as parent.
With this change this process will be explicit. user has to set the root node to the evas_vg object and the object will take the ownership
of the tree. User can query the current vg_tree by root_node_get api.
Test Plan:
Fixed the test app to reflects this change.
Reviewers: jpeg, cedric
Reviewed By: jpeg, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5347
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Efl.Animation and Efl.Canvas.Object need each other, and introduce a
cyclic dependency. Eolian doesn't complain... but C++ fails to compile,
as one header must be included before the other, and vice-versa.
Do we have other cyclic dependencies? I remember we lifted the
limitation in eolian itself, but can't remember exactly how it should be
handled...
Ping @q66 @felipealmeida
Simply pass in the strbuf and don't expect the callee to own it. This
makes things simpler and safer (it'll crash only if the callee frees
said strbuf, and shouldn't leak). efl_ebug_name is new in the upcoming
release, EFL 1.21.
Realised this after talking with Amitesh. Thanks.
See 999dbd9764
And c4769ff898
Efl.Animation.Group.Sequential is a class for animations started in
sequence.
Efl.Animation.Object.Group.Sequential is a class which provides
methods for an object of Efl.Animation.Group.Sequential.
The objects added into the sequential group animation object start
in sequence.
Efl.Animation.Group.Parallel is a class for animations started in
parallel.
Efl.Animation.Object.Group.Parallel is a class which provides methods
for an object of Efl.Animation.Group.Parallel.
The objects added into the parallel group animation object start in
parallel.
Efl.Animation.Object is a class which starts or cancels animation.
Efl.Animation.Object instance is created by Efl.Animation instance.
So Efl.Animation.Object instance contains animation properties from
Efl.animation instance.
Animation properties are set by using Efl.Animation instance and the
animation is started or cancelled by using Efl.Animation.Object.
This makes EAPI evas_object_del() and EO API efl_del() work the same on
evas objects, i.e. a del() implies an immediate call to hide() and mark
the object as "delete_me".
If the refcount remains > 0 the object won't be actually deleted, thus
EFL_EVENT_DEL won't be triggered. I think it would probably be a good
idea to have a new event "del,request", to signal reference owners that
this object "wants" to die.
Ping @raster @zmike
Summary:
As 'flags' can be supplied by application, in case application is supplying
a big string(error case), it can cause crash in some version of glibc.
Setting maximum possible input (0x64) length as width specifier
Fix for static code analyzer warnings
- scanf without field width limits can crash with huge input data on some versions of libc
Signed-off-by: Godly T.Alias <godlytalias@yahoo.co.in>
Test Plan: Run SonarQube
Reviewers: cedric, raster, Princekrdubey, rajeshps
Reviewed By: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5266
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Evas should add font when only FcPatternGet function gives matched result.
@fix
Test Plan: N/A
Reviewers: raster, cedric, herdsman, jpeg
Differential Revision: https://phab.enlightenment.org/D5236
Adds basic markup operations for text objects, and implements it in
Efl.Canvas.Text.
Also, this adds the Efl.Text.Markup_Util class.
This utility class allows basic text-markup conversions.
@feature
Refer to the previous commits for more context.
When an evas object is given to a container, be it with a variant of
efl_pack() or efl_content_set(), its "ownership" is given to the new
parent container. But ownership here means that the new container may
delete the child when it sees fit (i.e. when the container itself dies,
for instance). This does not mean that a reference was passed from the
calling context to the container. The actual EO owner of the child is
always the canvas or another canvas object, even if it the object is
unpacked.
Note: This means that invalid calls to efl_pack or efl_content_set will
not automatically delete the child object. This is the same as legacy,
and results in floating objects. Just check the return value! :)
Hopefully this is correct for bindings.
This comes back to an earlier situation where the fake event objects
created by efl_input_dup() had a parent (it should be the evas or maybe
the window). But that led to issues as efl_unref() would print error
messages. Using efl_allow_parent_unref_set() we hide the error message,
because in this situation we want the caller to use efl_unref() and not
efl_del() (eg. think of bindings...).
See d3436af616
See 6bed255fc4
See 96d94e0076 <-- main commit
This solves issues with efl_input_dup() which didn't properly give a
reference to the caller, resulting in dangling eo ids.
Note: This may trigger leaks (instead of invalid refs), but this now
actually reflects the meaning of @owned. This should work with bindings
and C API users should know to call efl_unref().
This patch is the reason for the previous improvements on eo_debug.
@fix
Summary:
If object just has update of map point without other changes included child,
the map surface can be reused.
Reviewers: jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D5181
Summary:
The patch will adjust ascent/descent with considering main font's ascent/descent
as minimum value. Actually, this patch re-apply D5217 with resolving linegap issue
on the _layout_format_ascent_descent_adjust() function.
@fix
Test Plan: Put a text which will load smaller font. And put a text which will load primary font.
Reviewers: raster, cedric, herdsman, jpeg
Differential Revision: https://phab.enlightenment.org/D5227
The incomplete reset (array to NULL but max not reset) triggers errors
in evas_thread_queue_append() where eina_inarray_grow() returns NULL.
This shows up in:
CK_FORK=no elm_suite
@fix
This is a follow-up to 4d4401f3a6.
The format line adjustment (e.g. linegap) should calculate the current
item's ascent/descent, and then update c->ascent/c->descent.
Otherwise we accumulate calculations like linegap values
ref D5217
Summary:
Textblock uses ascent, descent from primary font when there is no text.
If a text is set which need other font, Textblock uses ascent, descent from
actually loaded font. If loaded font has smaller size, text cursor and text
looks jerky in elm_entry. At least, primary font's size should be respected
as minimum size of a line for avoiding this issue.
In addition, the patch will allow negative line gap values.
@fix
Test Plan:
Put your hamburger(🍔) in Ecrire. And put an english character.
(Put a text which will load smaller font. And put a text which will load primary font.)
Reviewers: raster, cedric, herdsman, jpeg, woohyun
Reviewed By: raster
Differential Revision: https://phab.enlightenment.org/D5217
Summary:
When evas selects a strike of embedded bitmap font,
calculate ratio and use it for scaling embedded bitmap.
@feature
Reviewers: jpeg, tasn, woohyun, raster, herdsman
Reviewed By: raster
Subscribers: charlesmilette, Francesco149, cedric
Differential Revision: https://phab.enlightenment.org/D2713
This is a new type representing a mutable string (no const).
Regular strings cannot be made mutable with @owned because
they might be hidden behind typedefs.
This is VERY tricky.
For legacy, just create an internal class that has both. It's easier
this way. For parts that are handled by Layout directly, we know from
Edje which type to return.
For EO objects we should know from the part name which kind of part we
are dealing with:
- text (overridden by the widget)
- content (overridden by the widget)
- special (new efl_part based functions)
- generic (handled by Layout)
Note: Efl.Ui.Slider was handling "span size" on ALL parts. That's bad...
This is now limited to "span" only.
This adds the 'async_layout' method.
The 'async layout' method is similar to 'size_formatted_get', but done
outside of the mainloop. When a call is made to this method, a thread
is created (after some preparation like updating the logical text
items), and the visual layout is offloaded to that thread. The result
is returned as Eina.Future.
The mainloop is blocked for operations that manipulate the object, if a
thread has already been created but hasn't complete its work.
Consecutive calls for async layout for the same object are not handled
simultaneously. Each time the threads has complete its work, the next
(if exists) layout will be dispatched.
@feature