Setter and Getters have disappeared. Now everything is accessed through properties like:
Text, Disabled, Autohide, Color, Orientation, ContentPadding, Size, ScrollableText, Align, Name.
Also the Life and Containers examples had several issues.
Text override from custom widgets is still not solved.
Summary:
For now, a static model with a simple CollectionView.
The idea is to create a model that fetches some info from the web,
like weather forecast, and show it to the user.
Depends on D10300
Reviewers: SanghyeonLee, felipealmeida, cedric, bu5hm4n
Reviewed By: SanghyeonLee
Subscribers: brunobelo
Differential Revision: https://phab.enlightenment.org/D10302
Summary: this should not be needed
Reviewers: segfaultxavi
Reviewed By: segfaultxavi
Tags: #examples
Differential Revision: https://phab.enlightenment.org/D10021
Summary: No need to start elm, as T7770 was fixed.
Reviewers: brunobelo, felipealmeida
Reviewed By: brunobelo
Differential Revision: https://phab.enlightenment.org/D9915
Summary: Change from efl broke the compilation of examples, updating names to the new changes.
Reviewers: lauromoura, felipealmeida
Reviewed By: lauromoura
Differential Revision: https://phab.enlightenment.org/D9581
efl_content_set() will access that part, there's no need to retrieve "efl.content".
Plus, that part is not advertised in the button's EO file, so I am not sure it is
legal to access it.
Summary:
Commit 78ae9c0ae069ff86e701ff98cf5674cc491ee156 introduced a new API
(efl_gfx_hint_fill_set) and changed the default behavior of aligned widgets.
The same commit made the necessary changes to all examples in the efl repo,
but not in the examples repo.
This patch here aligns the widgets again they way they were meant to.
We have gone 6 months without anybody noticing that the examples did not
render correctly... let's try and add some unit tests later.
Test Plan: Try the hello-gui c tutorial. The text should be centered instead of in a corner.
Reviewers: YOhoho, bu5hm4n
Differential Revision: https://phab.enlightenment.org/D8791
eolian_mono now allows external examples to be embedded in the cs files, which
then appear in the DocFX pages.
This new folder is the proposed place to put all these external examples.
This class simplifies app development, so the examples have to showcase it.
Basically:
- Your app inherits form it
- You do not need to init() or shutdown()
- You override the methods you want (like OnInitialize).
Fixes T7655
Differential Revision: https://phab.enlightenment.org/D8477
Summary:
After a new iteration of D7789, constructor parameters were split among
required and optionals.
This patch depends on making some Efl.Ui.Win parameters optional.
Reviewers: segfaultxavi, vitor.sousa
Reviewed By: vitor.sousa
Tags: #efl_language_bindings
Differential Revision: https://phab.enlightenment.org/D7851
Summary: This class was renamed in D7533 in the EFL repo.
Test Plan: Run examples
Reviewers: segfaultxavi, felipealmeida
Reviewed By: segfaultxavi
Differential Revision: https://phab.enlightenment.org/D7850
Summary:
Removed initializer methods as much as possible to prepare
for when they are removed from the C# bindings.
No functional changes in the examples.
Tutorial text needs to be adapted now.
Test Plan: All examples work as before (the containers one is currently broken, FML).
Reviewers: lauromoura, felipealmeida, vitor.sousa
Reviewed By: lauromoura
Maniphest Tasks: T7508
Differential Revision: https://phab.enlightenment.org/D7695
Summary: Mainly use PascalCase Namespaces and Classes and proper event names.
Test Plan: Check all examples still build.
Reviewers: lauromoura, vitor.sousa, felipealmeida, bu5hm4n
Reviewed By: bu5hm4n
Differential Revision: https://phab.enlightenment.org/D7479
Summary:
The Efl.Net library is self contained and the bindings do not expose
it, favoring.the use of C# own networking classes.
Reviewers: segfaultxavi, vitor.sousa, bu5hm4n
Reviewed By: segfaultxavi
Differential Revision: https://phab.enlightenment.org/D7228
run python3 ./setup.py in the root directory, this will create a
meson.build and a directory called subdirectry.
You can now simply use the meson.build script as "main" project, all
other projects will be build in this.
Summary:
Added save and load buttons.
Added information popups.
Adapted to the style of the rest of the csharp examples.
Reviewers: lauromoura, vitor.sousa, felipealmeida, ajwillia.ms
Reviewed By: lauromoura
Differential Revision: https://phab.enlightenment.org/D7173
Summary:
I think this is the intended way to enable the focus highlight on the whole
window. The previous approach enabled the highlight but did not move the
focus, by the way.
Reviewers: vitor.sousa
Reviewed By: vitor.sousa
Differential Revision: https://phab.enlightenment.org/D7073
Summary:
It was a very poor example, the focus highlight did not show on startup,
and the Text widget has a weird management of the focus. Replaced it by
some check boxes, and the About button now moves the focus.
Reviewers: lauromoura, vitor.sousa, felipealmeida, bu5hm4n
Reviewed By: vitor.sousa
Differential Revision: https://phab.enlightenment.org/D7056
Summary: It is a guide, not a tutorial.
Reviewers: vitor.sousa, lauromoura
Reviewed By: vitor.sousa
Differential Revision: https://phab.enlightenment.org/D7055
Summary:
Adapt these two UI examples to the style of the Hello World tutorials,
using initialization methods, more comments, and try to avoid creating
vars for widgets.
Reviewers: vitor.sousa, lauromoura
Reviewed By: vitor.sousa
Differential Revision: https://phab.enlightenment.org/D7038
Summary:
Flush() is not required, the bindings take care of memory. Moreover, it is
confusing for the C# developer, unaccostumed to having to free memory.
Reviewers: vitor.sousa, lauromoura
Reviewed By: vitor.sousa
Differential Revision: https://phab.enlightenment.org/D7036
Summary:
Configure all widgets inside their constructors and a couple more minor things
to make the C# Hello Gui more similar to the C version, which should simplify
the tutorial.
Reviewers: lauromoura, vitor.sousa
Reviewed By: vitor.sousa
Differential Revision: https://phab.enlightenment.org/D6906
Summary: This is the first C# tutorial: Hello World. It just creates a window.
Reviewers: vitor.sousa, lauromoura
Reviewed By: vitor.sousa
Differential Revision: https://phab.enlightenment.org/D6900
Summary:
When "New" is pressed, the button should become disabled, because
the file is empty and there is nothing to lose. The "New" button
should only be enabled when there is text to lose by pressing it.
Otherwise, there is no way in the code to disable the button except
at startup, which does not make much sense.
Reviewers: ajwillia.ms, zmike, bu5hm4n
Reviewed By: ajwillia.ms
Tags: #examples
Differential Revision: https://phab.enlightenment.org/D6512
this greatly improves build times by improving parallelizing, though it
does introduce more BUILT_SOURCES usage which causes builds with cxx
bindings to take significantly longer
fix T7157
ref T7154
Differential Revision: https://phab.enlightenment.org/D6633
Summary:
connect factory to edje part name
when create a new layout connect a factory to it
change example to use the factory_model_connect
Reviewers: felipealmeida
Differential Revision: https://phab.enlightenment.org/D6667
Summary:
Fix API changes, plus several logic and syntax errors... again, this had
never been built.
Test Plan:
Didn't build before, builds and runs now, although with some runtime issues
that will be tracked on a separate issue.
Reviewers: felipealmeida, lauromoura, bu5hm4n
Differential Revision: https://phab.enlightenment.org/D6649
Summary:
- Check return vaule of fread()
- Uninitialized var (seriously!)
- Weird struct assignment
Still one warning remains, pending evaluation of T7166.
Fixes T6718
Test Plan:
Those 3 warnings have disappeared and the related example still works
as expected.
Reviewers: zmike
Reviewed By: zmike
Subscribers: cedric, #committers
Tags: #efl
Maniphest Tasks: T6718
Differential Revision: https://phab.enlightenment.org/D6631
Summary:
animators are implicitly destroyed for this case, and attempting to
manually destroy them just results in an error/failure and invalid reads
since this is a poorly designed api which can internally destroy itself
fix T7000
@fix
Reviewers: Hermet, devilhorns
Subscribers: segfaultxavi, cedric
Tags: #efl
Maniphest Tasks: T7000
Differential Revision: https://phab.enlightenment.org/D6488
so there are 2 problems behind T7113. first is a problem in the efl
selection manager being "sloppy" with selection data. it's doing a
strlen on the data but it's not a normal c string. it's a blob of
binary data + length value. this fixes that "sloppiness" by using the
len field.
there is also another bug in the dnd test code that again has to do
with "sloppy" handling of data buffers and assuming nul byte
termination and not using the len field properly.
this fixes T7113.
Summary:
elua example files were not being distributed correctly as a result of
improper use of build conditionals
Depends on D6582
Reviewers: devilhorns, ManMower
Reviewed By: ManMower
Subscribers: #committers, cedric
Tags: #efl_build
Differential Revision: https://phab.enlightenment.org/D6583
Summary:
when running 'make distcheck' immediately after configure, the build
will fail because some example files were incorrectly being distributed
instead of being compiled normally in the dist build
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6582
Summary: These guides needed to be adapted to the new C# API.
Test Plan:
Didn't build before, and now it can be built and run. It has some runtime
errors on exit.
Reviewers: felipealmeida, lauromoura, Hermet
Reviewed By: Hermet
Tags: #examples
Differential Revision: https://phab.enlightenment.org/D6575
Summary:
- Removed the Concrete suffixes
- Changed interfaces to IFoobar
- Event names are now camelcase with 'Evt' suffix
- Methods with the same name as its class are prefixed with 'Do'
due to C# CamelCase methods (Pack.Pack -> Pack.DoPack)
- Updated efl.ui.win.Type to efl.ui.Win_Type after API renaming
Reviewers: segfaultxavi, felipealmeida
Reviewed By: segfaultxavi
Differential Revision: https://phab.enlightenment.org/D6508
This reverts commit 2fb5cc3ad09f6aaf82b5d1131ac5ed22ed848bd4.
Most of this change where wrong as they didn't affect the destruction
of the object. efl_add_ref allow for manual handling of the lifecycle
of the object and make sure it is still alive during destructor. efl_add
will not allow you to access an object after invalidate also efl.parent.get
will always return NULL once the object is invalidated.
Differential Revision: https://phab.enlightenment.org/D6062
Unlike Elm_Slider, Efl.Ui.Slider does not support text_set,
format_cb_set, and format_string_set.
To support Efl.Ui.Slider, slider cxx example is modified.
Summary:
most usage of simple list, items are very limited and loading performance is not serious.
to support those requirement, this efl.ui.list will create scrollable box with efl.pack.
user can create list by packing an pre-loaded item object, Efl.Ui.List.Item class.
Test Plan: tested in efl_ui_list_example_1.c in examples.
Reviewers: cedric, felipealmeida
Subscribers: woohyun, Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5861
Summary:
To deal with events with the same name as some methods (Del, Invalidate,
etc), the suffix Evt was added.
Thus, now we use
obj.ButtonClickedEvt += callback;
Instead of
obj.BUTTON_CLICKED += cal
The argument classes use the same scheme, being called <Evt name>_Args.
Depends on D5991
Reviewers: felipealmeida
Reviewed By: felipealmeida
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5992
Fixing some fallout from fcae7cab276c2d3b19bb913ad908b67b7dd33089
Given that the examples do not build for weeks with CXX enabled this is
just the tip of the iceberg.
The examples were either not build or using repeated rules due to
_EOLIAN_DEP_GEN not being set correctly was Makefile_Eolian_Helper.am
assumes it being inclueded from src/, while each example folder has its
own .am inside its folder.
Summary:
model based list need to be under the namespace of 'Efl.Ui.View".
thus, I renamed 'Efl.Ui.List' to 'Efl.Ui.View.List' properly.
Test Plan: N/A
Reviewers: cedric, felipealmeida
Differential Revision: https://phab.enlightenment.org/D5855
Function pointers now go through the same argument marshalling pipeline
as normal functions.
This will enable interfaces like Efl.Ui.Format to work properly.
Summary:
They were still using the old SetSize(w, h) API instead of receiving
eina.Size2D structs.
Test Plan: Build examples and run them.
Reviewers: felipealmeida, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5830
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This reverts commit 135154303bea691c6f7f9472a5dec32d9103c38d.
Revert "efl: move signal events from efl.loop to efl.app"
This reverts commit 3dbca39f98288580c62a43c179ac11621433ec88.
Revert "efl: add test suite for efl_app"
This reverts commit 3e94be5d73256a7f5c02d3a9474173226be7beff.
Revert "efl: create Efl.App class, the parent of Efl.Loop"
This reverts commit 28fe00b94e55575c15684959b89a614d5a579309.
Go back to before efl.app because I think this should be done with
superclassing here not a parent object. reasons?
1. multiple loops per single thread make no sense. so if multilpe loop
objects they wont be contained in a single app object and then deleted
like this.
2. the app object is not really sharable in this design so it cant be
accessed from other threads
3. it makes it harder to get the main loop or app object (well 2 func
calls one calling the other and more typing. it is longer to type and
more work where it is not necessary, and again it can't work from
other threads unless we go duplicating efl.app per thread and then
what is the point of splittyign out the signal events from efl.loop
then?)
etc.
Summary:
- Added missing C++ header
- Added missing elementary header
- Removed generated header from elementary_SOURCES
(Was added by raster in 42dfee37)
Not sure of what would be the best place for it, though.
- Removed previously removed files from elementary examples Makefile.
Test Plan: Run 'make distcheck'
Reviewers: stefan, felipealmeida
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5800
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
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.
This fixes the example for Windows, where apparently it ran into a lot
of errors with spinlock. Note that on Linux we have such errors too
(both before and after the patch):
EINA ERROR: 'Invalid argument' on lock 0x7ffd218af410
EINA ERROR: 'Invalid argument' on unlock 0x7ffd218af410
Patch by @vtorri
The compiler is not to happy about having this tick in the warning
message. Switch to the more formal can not and be done with it.
menu_cxx_example_01.cc:3:26: warning: missing terminating ' character
This commit adds the "documentation" generator, which gets the
documentation_def attribute of the given item and generates xml comments
to be exported by MCS.
For items requiring some customization of the generated comments (e.g.
functions and its parameters), the helpers to generate the preamble
(summary), body (paragraphs) and epilogue (currently just the @since
tag) were added.
Currently we do not support converting Eolian references into xmldoc
references.
As we explicitly generate Get/Set methods for properties, for now the
generator tries to get the get/set specific documentation first. If it
is not present, fallback to the common docs.
Later this could be changed to generate the common one as paragraphs of
the Get/Set.
Also some generated code like the wrappers for calling C# methods
from C can be private. This will cleanup the introspection results
and warnings when generating documentation.
Due to this visibility change, the binbuf tests had to be changed
to add redirect calls to the native methods instead of directly
calling the DllImport'd methods.
Summary:
Change name of 'grid' to 'table' for matching on common ui naming
and avoiding confusion with 'gengrid' and 'grid view'.
grid will be introduced as grid image view after.
Test Plan:
checked make & make install
checked make check - there are errors but not related with these changes.
checked make examples - there are errors in cxx but not related with these changes.
checked make discheck - failed
test in elementary_test with Efl.Ui.Table and Table_static.
Reviewers: raster, cedric, jpeg, felipealmeida
Differential Revision: https://phab.enlightenment.org/D5668
Summary:
scrollable widgets had a interface_scrollable as a mixin so that the
widgets had a 'is-a' relation with interface_scrollabe. however, new
scroller concept don't have 'is-a' relationship, but 'has-a'
relationship. scrollable widgets should have a scroll manager inside
them, then scroll manager handles event from user and api
implementations. and also we cut the features such as paging because
there will be aka 'elm_pager'.
we are expecting that the new concept make us to maintain the scroller
easier. please excuse for many unorganized code and logics. : (
[contained commit]
scrollable: add efl_ui_scroller example
scrollable: refactoring for behavior in case of multiple scroller
scrollable: remove repetitive scrollbar code.
scrollable: combine calculating bounce distance code.
scroll_manager: mouse up function refactoring
scroll_manager: mouse move function refactoring
scroll_manager: warp animator wip
scroll_manager: fix denominator value when calculating flicking behavior.
Fix to disconnect bounce animator once animation is done
gather duplicated animator drop logics
gather duplicated conditions
Rearrange prototypes and append comment
Add manipulate functions for animators
scroll_manager: change member_add function.
scroll_manger: apply mirroring logic
scroll_manager: apply scrollbar
apply API to scroller widget
scroll_manager: apply scroll event callback
Change logics for all about scroll animating
efl_ui_pan: add efl_ui_pan
scrollable: change content_min_limit to match_content
scroll theme: apply overlapped scrollbar
+ many others!
Reviewers: akanad, woohyun, cedric, jpeg
Subscribers: jenkins, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5222
Note by @jpeg:
Unfortunately this patch comes in a massive single blob, after too many
rebase operations. It has now come to a point where I think the API is
nice and it works as I'd expect.
Now I only wonder how applicable this will be for Efl.Ui.List. As we can
see Photocam (legacy and unified API) could be transformed to use this
new API.
Summary:
- Previous class efl_ui_bg moved to efl_ui_bg_widget.
- Scale_type moved to efl_image from efl_ui_image.
- Previous enum Efl_Ui_Image_Scale_Type moved to Efl_Image_Scale_Type.
Test Plan:
Run elementary_test
1.Image Scale Type
2.Efl.Ui.Bg
3.Efl.Ui.Win
4.Part Background
Reviewers: jpeg, woohyun, cedric
Differential Revision: https://phab.enlightenment.org/D5616
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>
This resolves a few issues and brings back the experimental features.
Also, disable some of the ugliest experiments:
- manual function overrides,
- define APIs only in eo_cxx namespace
Some APIs are generated behind EFL_CXXPERIMENT (eg. event_name_cb_add or
some weak pointer stuff). I believe they are useful but would like to
make sure there are no serious drawbacks with generating those.
It's VERY hacky, but works as expected: no leak, no extra unref. This is
a lucky case of simply overriding efl_part() implementation in C++,
without having to modify the declaration.
This is part of the experimental stuff.
Allows calling C functions without using ._eo_ptr() explicitly. Probably
not super useful, assuming the interfaces are done :)
I'll hide some controversial features behind this, until we come to an
agreement with @felipealmeida and people who actually know C++ (iow: not
just me^^).
Features protected:
- easy wref (using -> without locking)
- xxx_event_cb_add() functions in object classes
- instantiate(obj) to create a new object
- add as a synonym for instantiate (both in efl::eo)
When I first implemented the Efl.Container interface I made a mistake of
mixing "single slot" content API's with "multiple children" content
API's. This should fix that, by separating API's that are for a single
part and those that deal with a list of children.
Efl.Content: Single slot. This will be used a lot by efl_part()
objects, and for the default content of widgets (eg. the window
content).
Efl.Container: Multiple children. Used by lists, boxes, layouts
(edje/elm), etc...
I didn't see any class that implemented both interfaces (note: Layout
implements Container and Button implements Content, so technically
Button implements both through inheritance).
For now the eo_prefix is not changed in Efl.Container. I wonder if it
should be reset (to efl_container) or not. This would only affect the C
API.
Ref T5328
Note: this is C only, not legacy only.
The problem is that bindings will hold a strong reference to the window,
which will then die "under the rug" if autodel is enabled. This then
leads to at least ERR if not crashes.
Note:
elm_policy needs to support autodel and quit on last del only for C
applications. Bindings will require some other mechanism that doesn't
break all assumptions wrt. references.
The fix is not complete. We need to make efl_part() work nicely in C++:
- Get the refs work properly (maybe without auto-del)
- Generate the parts from the EO file as methods on the object
Final form should be close to:
slider.indicator().format_string_set("%1.2f");
Where everything autocompletes nicely :)
Summary:
9d2dcd92 requires elocation to build.
cxx examples still broken due to elm cleanup
Test Plan: make examples
Reviewers: jpeg, felipealmeida
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5426
make examples now builds all c++ examples but some of them are in fact
empty skeletons. Those either need some c++ love or the final eo api to
be ready (eg. menu, popup, ...).
I removed some examples that don't have an exact equivalent in EO since
the widget is legacy only.
This is more of an experiment than anything else.
@felipealmeida I would like to know what you think.
Notes:
- events still need a better API (event_add isn't part of the object
definition...).
- references are an issue, when you want to actually delete an object.
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.
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>
eina_strbuf_append_strftime()
eina_strbuf_insert_strftime()
eina_strbuf_prepend_strftime() - macro
We need these functions for implementing generic format function
interface especially for calander.
Ref T6204
Summary: We should define the windows version before including evil.
Test Plan: Run make examples on windows newer than XP.
Reviewers: vtorri
Subscribers: jenkins, cedric, jpeg
Tags: #efl, #windows
Differential Revision: https://phab.enlightenment.org/D5261
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Reasons:
- This API has been confused with the min size of the widget, resulting
in badly laid out applications.
- The EO API was not very nice (Range is about numbers, the Gfx size
hint in a part is really ugly).
While I understand the value of this API and how it can be used in
scalable applications, it is in fact not absolutely necessary.
Alternatively to that span size, the widget min size can already be
defined from the application side, or the widget can simply be expanded
to fill in its parent.
This can obviously be reinstated later if the need arises for EO. For
now, keep this feature as legacy-only.
I think this closes the orientation vs. direction problem.
RTL vs. AnyRTL is not fully handled yet but this becomes a
widget-per-widget issue (eg. should a box in a RTL locale be mirrored if
set to horizontal?).
Fixes T5870
Summary:
without it, it was failing with following error
/usr/bin/ld: /tmp/ccnjRcVr.o: undefined reference to symbol 'evas_object_move'
//usr/lib64/libevas.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Test Plan: just try to compile it with and without.
Reviewers: jpeg
Reviewed By: jpeg
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5182
Summary:
Fill in the intro section and the first test mode. (Docs for second
mode will be forthcoming.)
Also drop some of the generic comments that are already explained better
in some of the basic examples.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5201
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
For this patch I decided to add a pseudo legacy wrapper as the function
is called in a very large number of places. Fixing all those calls to
use the size2d form is a lot of work and a greater risk of b0rking
something.
It's a complex struct but defined in EO as a simple struct. ABI-wise
it's equivalent to Eina_Rectangle. Some macros that use Eina_Rectangle
also work on Eina_Rect out of the box, most of the code dealing with
x,y,w,h will require no modifications either.
But Eina_Rect provides direct access to a size or position 2d component,
as well as the usual x,y,w,h. The field "rect" is provided as a
convenience for code dealing with both Eina_Rectangle and Eina_Rect. We
may or may not require it.
Note: Size2D could use unsigned values but I have spotted a few places
in the code that actually use -1 to indicate invalid size (as opposed to
0x0).
@feature
Introduced with commit 13da5e980eb43288b9b9f502cb6a7a000e1f26ea
A compile before pushing would have been great, again.
Having the same name for two variables is something no compiler likes.
evas-map-utils-eo.c:74:8: error: conflicting types for ‘r’
int r, g, b, a, f;
^
evas-map-utils-eo.c:73:19: note: previous declaration of ‘r’ was here
Eina_Rectangle r;
^
evas-map-utils-eo.c:93:31: error: ‘h’ undeclared (first use in this function)
efl_gfx_size_get(o, NULL, &h);
^
evas-map-utils-eo.c:93:31: note: each undeclared identifier is reported only once for each function it appears in
evas-map-utils-eo.c:108:25: error: ‘w’ undeclared (first use in this function)
efl_gfx_size_get(o, &w, &h);
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
Summary:
The evas-transparent.c example is quite short, and so will allow for
more detailed explanation of setting up Ecore-Evas. Then
evas-object-manipulation.c can focus more on the explanation of objects
in Ecore-Evas.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5011
Summary:
This is one of the basic examples that introduces Ecore-Evas, so needs
to be more detailed in commentary than other examples. It also points
out the use of the legacy API and directs the reader to the Eo example
where appropriate.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5008
Summary: ecore_main_fd_handler_add is not working on Windows
Reviewers: vtorri, raster
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4470
1. The word "class" is a pain point with many languages where
it's a keyword. Type is a little better. Also, the property
was already named "device_type" and not "device_class".
2. Remove Efl.Input.Device.Sub_Class
It's not used inside EFL upstream codebase, and unlikely to
be used anywhere else (even in Tizen).
Hopefully no one used the Efl_ enum types. So far only the Evas_
types should be in used.
Ref T5540
Those are now merged with Efl.Object parent, name and comment.
The reasoning is that only seats can be parent devices; And name
and description are not only name clashes but also not extremely
useful anyway.
Tested with VNC.
Fixes T5540
Summary:
This serves as an early example for new Evas programmers to introduce
the buffer engine as well as very basic canvas usage, so we're going
into a lot more detail for both of those than we'll do in subsequent
examples.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4950
Summary:
This is the most basic of the Evas examples and serves as the starting
point for new Evas users. Since this targets neophytes, we can afford
to be much more detailed in commentary.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4904
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Categorize the examples by topic, and identify certain examples as
introductory; these can be commented more verbosely than the other
examples.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewers: cedric
Reviewed By: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4903
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
While the API seems to work fine, I am not 100% sure the device
names are properly assigned.
Run ecore_evas_cursor_example or ecore_evas_vnc_example and
then connect to the VNC server locally or remotely.
This was broken since over a year. Happened during the automatic eo4
migration in f21ade6123b9053fca8d1632644c48525a99d6e0.
Thanks goes to the gcc warning misleading-indentation:
evas-3d-shadows.c:163:4: warning: this ‘else’ clause does not guard... [-Wmisleading-indentation]
else
^~~~
evas-3d-shadows.c:165:6: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘else’
evas_canvas3d_node_look_at_set(scene->mediator, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 3.0, 0.0, EVAS_CANVAS3D_SPACE_PARENT, 0.0, 5.0, 0.0);
This implements an entirely new API model for Evas Map by relying
on high-level transformations on the object rather than an external
Evas_Map structure that needs to be constantly updated manually.
The implementation relies on Evas_Map.
To rotate an object all you need to do now is
efl_gfx_map_rotate(obj, 45.0, NULL, 0.5, 0.5);
Or with a C++ syntax:
obj.rotate(45.0, NULL, 0.5, 0.5);
Or even simply (with default arguments):
obj.rotate(45.0);
The map transformation functions are:
- rotate
- rotate_3d
- rotate_quat
- zoom
- translate (new!)
- perspective_3d
- lightning_3d
@feature
In the map examples, the map image UV size was based on the image
source geometry, rather than the image geometry itself.
In the example, this affects how the glass is mirrored. Before this
patch, the reflection is a single line stretched. EFL 1.18 and 1.19
seem to have the same issue, while 1.17 simply fails to show any
reflection. 1.16 fails miserably and the entire window is black.
If the original code was correct, then I believe that map and/or
proxy rendering have been modified in a way that affects the meaning
of those image UV parameters. But this seems like the regression (if
it is one) is in fact quite old.
@fix
Summary:
Also fixes a handful of obvious indentation irregularities,
including some reformatting of some printf() multi-line indents that
commit a71b770b did not properly adjust.
No functional code changes.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4864
Summary:
For people browing through the examples, having the opening statement be
concise and consistent will help them more quickly find what they're
looking for.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Test Plan:
Some of the examples had identical opening statements (e.g. the image
object examples). I've tried to give each a unique description defining
what they are demonstrating, but you may want to doublecheck I got these
correct. Of particular note, to me evas-images5.c looks like just a
fixup to evas-images4.c, so I'm not sure what makes these two distinct.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4861
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Applies same change as e8355c93 for evas, to the remaining examples.
This uses the shell command-line:
src/examples/evas$ grep -sr 'fprintf(stdout' . | cut -d: -f1 \
| uniq | xargs sed -i "s/fprintf(stdout/printf(/"
Note that use of the "fprintf(stdout" construct can generate warnings
when -Wformat-security is enabled, if the fprintf statement has no
format arguments, so in addition to the stylistic simplification this
also helps quell those spurious warnings.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4836
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This fixes all warnings for "make examples" for:
-Wunused-parameter
-Wshadow
-Wformat-security
-Wenum-conversion
Some remaining warnings include:
-Wdeprecated-delcarations
Summary:
Applies the correction purely mechanically using the following shell
command-line:
src/examples/evas$ grep -sr 'fprintf(stdout' . | cut -d: -f1 | uniq | \
xargs sed -i "s/fprintf(stdout/printf(/"
This fixes a few warnings about lack of a format string:
warning: format not a string literal and no format arguments [-Wformat-security]
fprintf(stdout, commands);
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D4691
Summary:
The Ecore_Event_Joystick would be not enough information on user side.
Because the button index such as ECORE_EVENT_JOYSTICK_BUTTON_SELECT/START/META,
etc could be mapped to different button for different named joystick.
Test Plan: Using example
Reviewers: raster, cedric, jpeg
Reviewed By: raster
Differential Revision: https://phab.enlightenment.org/D4669
This is the local socket for windows, analogous to AF_UNIX.
`Efl_Net_Socket_Windows` is the base class doing `ReadFile()` and
`WriteFile()` using overlapped I/O, as well as the close procedure
(`FlushFileBuffers()`, `DisconnectNamedPipe()` and
`CloseHandle()`). These are done on top of an existing HANDLE that is
set by `Efl_Net_Dialer_Windows` (from `CreateFile()`) or
`Efl_Net_Server_Windows` (from `CreateNamedPipe()`).
The overlapped I/O will return immediately, either with operation
completed or `ERROR_IO_PENDING`, which means the kernel will execute
that asynchronously and will later `SetEvent(overlapped.hEvent)` which
is an event we wait on our main loop. That `overlapped` handle must
exist during the call lifetime, thus cannot be bound to `pd`, as we
may call `CancelIo()` but there is no guarantee the memory won't be
touched, in that case we keep the overlapped around, but without an
associated object.
Windows provides no notification "can read without blocking" or
non-blocking calls that returns partial data. The way to go is to use
these overlapped I/O, with an initial `ReadFile()` to an internal
buffer, once that operation finishes, we callback the user to says
there is something to read (`efl_io_reader_can_read_set()`) and wait
until `efl_io_reader_read()` is called to consume the available data,
then `ReadFile()` is called again to read more data to the same
internal buffer.
Likewise, there is no "can write without blocking" or non-blocking
calls that sends only partial data. The way to go is to get user bytes
in `efl_io_writer_write()` and copy them in an internal buffer, then
call `WriteFile()` on that and inform the user nothing else can be
written until that operation completes
(`efl_io_writer_can_write_set()`).
This is cumbersome since we say we "sent" stuff when we actually
didn't, it's still in our internal buffer (`pd->send.bytes`), but
nonetheless the kernel and the other peer may be adding even more
buffers, in this case we need to do a best effort to get it
delivery. A particular case is troublesome: `write() -> close()`, this
may result in `WriteFile()` pending, in this case we wait using
`GetOverlappedResult()`, *this is nasty and may block*, but it's the
only way I see to cope with such common use case.
Other operations, like ongoing `ReadFile()` or `ConnectNamedPipe()`
will be canceled using `CancelIo()`.
Q: Why no I/O Completion Port (IOCP) was used? Why no
CreateThreadpoolIo()? These perform much better!
A: These will call back from secondary threads, but in EFL we must
report back to the user in order to process incoming data or get
more data to send. That is, we serialize everything to the main
thread, making it impossible to use the benefits of IOCP and
similar such as CreateThreadpoolIo(). Since we'd need to wakeup the
main thread anyways, using `OVERLAPPED.hEvent` with
`ecore_main_win32_handler_add()` does the job as we expect.
Thanks to Vincent Torri (vtorri) for his help getting this code done
with an example on how to do the NamedPipe handling on Windows.
While in UNIX we use 'select()/poll()' to query for read fds and this
will eventually callback with "can_read" event, use the loop to match
other implementations where can_read keeps true if not all data was
read.
Summary:
Also fix warning about lack of a format string:
warning: format not a string literal and no format arguments [-Wformat-security]
fprintf(stdout, commands);
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4673
Summary:
The axis type joystick event could occur without user's control if joystick is too sensitive.
The deadzone prevents this unnecessary event. The default value is 200.
The event value for an axis is a signed integer between -32767 and +32767.
Test Plan: Using example
Reviewers: raster, cedric, jpeg
Reviewed By: jpeg
Subscribers: stefan_schmidt
Differential Revision: https://phab.enlightenment.org/D4654
Efl.Model.Container and Efl.Model.Item to efl/interfaces are used
to create Efl.Model objects with predefined property values.
This is useful to any situation where we want an Efl.Model with
explicit defined property values.
Efl.Ui.View and Efl.Ui.Factory are used to connect Efl.Models with
Widgets, Elm.Layout and Efl.Ui.Image has changed to use news interfaces
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Use seat names as prefix, not as suffix, following
a top-down approach and avoiding issues
with applications that may be receiving
doubled signals (legacy + suffixed).
So instead of "mouse,in,seat1" signal will be
"seat,seat1,mouse,in".
Working directly with Eina_Slice is easier than a pointer to it,
requires no validation of the pointers and is cheap since it's just
putting together size_t + void*.
However we can't hint the user of 'const(Eina.Slice)' properties as
Eolian is incorrectly generating getters as:
const Eina_Slice class_property_get(...)
which is makes compilers complain about ignored qualifiers:
../src/lib/ecore/efl_io_copier.eo.h:329:7: warning: 'const' type qualifier on return type has no effect [-Wignored-qualifiers]
Leave some TODO so @q66 can fix those.
Previously we couldn't return a slice, instead required the user to
pass a slice and we'd fill it since Eolian couldn't generate fallbacks
for structures.
Since @q66 fixed eolian, we can now return the structure itself as
initially wanted, ditching some TODO from the code.
Since seat names defined on evas will depend on evas backends,
maybe udev rules, etc, we aren't able to demonstrate it
without manually setting another name for such seats
with efl_input_devices_name_set(). Otherwise
we wouldn't have guarantees it would match
names on EDC.
If not provided, FOCUS_OBJECT action will keep acting
over default seat.
Also include a usage on edje-multiseat test
(actually no example was exercising this action).
This is a string parser, serializer and asynchronous resolver.
It's purpose is to convert to and from the strings we use in our
dialers and servers, such as "127.0.0.1:1234" or "[::1]:1234",
properties allow to check the family, port, address bytes (slice) and
even get a struct sockaddr pointer to use with bind()/connect() in
outside code.
It will also offer some utilities present in netinet/in.h in an easy
to use way, after all IN6_IS_ADDR_LOOPBACK() works one way, while
there is no IN_LOOPBACK and comparing with INADDR_LOOPBACK will lead
to errors since it's in network order.
Last but not least, it will do asynchronous resolve of host and port
names using an internal thread and getaddrinfo(). The results are
delivered using a Future with an array of objects.
add a new -t/--type=tcp+ssl, there you can send "Upgrade: SSL\n" to
request the server to start the handshake.
This can be paired with the ecore_con_client_example, there you can
type:
Upgrade: SSL\n
STARTTLS\n
The second is a dialer local command to upgrade it to SSL, matching
what the server expects.
The example now offers --type=tcp+ssl, in this case it won't send a
"hello!" message to avoid messing with the handshake. Once the client
(dialer) receives the user command STARTTLS
(--starttls-local-command), then it will upgrade the connection.
Usually in real life you need to send some command to server, such as
upgrade, STARTTLS and then upgrade... unless you connect to a SSL-only
server (ie: ecore_con_server_example --type=ssl).
allow to not verify server certificate or hostname, so we can test
with local, self-signed certificates.
Also print errors, so we can say that the server handshake failed.
Instead of a single SSL connection, allow for local, tcp and udp,
optional flush and delete-after-write (--single-message) and echo
mode.
Very similar to ecore_ipc_server_example.c
Instead of a single SSL connection, allow for local, tcp and udp,
optional flush and delete-after-write (--single-message).
Very similar to ecore_ipc_client_example.c
Summary:
Since eina_model was dropped some years ago.
Also a few other points where related stuff is just commented out.
Reviewers: iscaro, barbieri
Reviewed By: barbieri
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4442
The low level I/O primitives are powerful but adds some complexity to
use, for bi-directional streaming communication one ends creating two
Efl.Io.Queue and two Efl.Io.Copier to pipe data to socket when it can
operate.
Then encapsulate the socket using the new Efl.Io.Buffered_Stream, this
will allow the socket, be a dialer or a server client, to be operated
as a single handle that internally carries about the buffering for
you.
As one can see in the examples, compared to their "manual"
alternatives they are very easy to use, ressembling
Ecore_Con_Server/Ecore_Con_Client, but also offers line-based
delimiters and the possibility to let the socket to handle queueing
for you in case you received partial messages (just do not
read/clear/discard the received data).
Since all other efl.io objects are low-level, the recommended approach
is to use an efl.io.copier. However when dealing with in-memory,
bi-directional comms like talking to a socket, we always end with 2
queues, 2 copiers and the annoying setup that is being replicated in
ecore_ipc, efl_debug and so on.
This class is the base to make it simpler. Other classes such as
Efl.Net.Socket.Simple, Efl.Net.Dialer.Simple and Efl.Net.Server.Simple
will use it to provide simpler code to users.
I guess we can call EFL+EO Java now?
If the server is gone, immediately delete it, this exercises deleting
the server from inside its event.
Then, if the server was already deleted, do not do it again.
Also remove the shadow variable, keep only the global scope.
ecore_file_download() will refuse to download if file already exists,
then we must unlink DST_MIME as done with DST before we try to
download, otherwise it won't work on the second time.
In commit 5929f0311dfc12dac3f38b8f29802e3fa2d0e2d7 this was removed. While
the commits intend was to remove the cxx variant of this example only.
Bring this back so examples are building again.
Since this code will be required in many use cases
of the multiseat feature, including examples.
Reviewers: iscaro, barbieri, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4385
These are objects to allow control of networking devices
(efl_net_control) as well as an application to request for
connectivity (efl_net_session).
They are loosely based on ConnMan.org, which we already use in
Enlightenment Window Manager via DBus access with Eldbus. However they
do not map 1:1 as the goal was to expose a viable subset of controls
but in a simple and general way, thus nome strings were converted to
enums, some arrays of strings were converted to bitwise flags, some
names were made more general, such as "service" was turned into
"access point" so it doesn't generate confusion with other "network
services" (ie: http server), or "favorite" that was renamed to
"remembered". Some behavior are slightly different (yet able to be
implemented on top), such as "Service.MoveBefore" and "MoveAfter" were
converted to a numeric "priority", calculated from service's list
index, changing the priority will reoder the list and thus generate
the MoveBefore and MoveAfter DBus commands.
ConnMan was chosen not only because we already use it, but because its
DBus API is sane and simple, with the server doing almost all that we
need. This is visible in the efl_net_session, which is completely done
in the server and do not require any extra work on our side -- aside
from talking DBus and converting to Eo, which is a major work :-D
NOTE: ConnMan doesn't use FreeDesktop.Org DBus interfaces such as
Properties and ObjectManager, thus we cannot use
eldbus_model_object.
There are two examples added:
- efl_net_session_example: monitors the connection available for an
application and try to connect. You need a connman compiled with
session_policy_local and a configuration file explained in
https://github.com/aldebaran/connman/blob/master/doc/session-policy-format.txt
to get a connection if nothing is connected. Otherwise it will just
monitor the connectivity state.
- efl_net_control_example: monitors, plays the agent and configure
the network details. It can enable/disable technologies, connect to
access points (services) and configure them. It's quite extensive
as allows testing all of ConnMan's DBus API except P2P (Peers).
Summary:
Ecore Evas VNC: Properly unregister the region push hook callback.
This callback must be unregistered when the VNC server is deleted.
Reviewers: bdilly, barbieri, cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4384
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
it was using old API, updated, but still doesn't work as expected,
lots of warnings from children being left alive, all proxies are
reporting no properties...
when model dies, all children proxies should die as well, otherwise we
get on console:
```
CRI:eldbus lib/eldbus/eldbus_core.c:215 eldbus_shutdown() Alive TYPE_SYSTEM connection
ERR:eldbus lib/eldbus/eldbus_core.c:175 print_live_connection() conn=0x8219230 alive object=0x8276d50 net.connman of bus=net.connman
...
```
Also, all proxies are reporting no properties "(no properties yet)",
likely they are missing to fetch such... even if "--wait" to let it
run, no asynchronous properties are delivered, at least not triggering
EFL_MODEL_EVENT_PROPERTIES_CHANGED.
in the previous commit we're manually upgrading an existing TCP socket
to SSL. It is desired since some protocols need to negotiate, like
STARTTLS and the likes
Now we offer 2 classes that does autostart SSL once the socket is
ready.
This introduces AF_UNIX server and dialer, these are not available on
Windows as in that platform we'll create a custom class for native
'local' communication.
In the future we can add a wrapper class Efl.Net.Local that will use
the class for each platform, but won't expose its details.
For instance, if we ever expose 'credentials' (which I didn't because
they are not portable), then it doesn't make sense to try to match
that on Windows. The 'Efl.Net.Local' would just stick to the basics:
Reader, Writer and Closer APIs.
now that we have a 'bind', let's use the given address as bind and
dial to `0.0.0.0` or `::`. This allows the dialer to receive data at
the given address and make the example useful.
This was a huge work, but now UDP is usable as seen in the examples.
Instead of relying on 'connect()', just do 'sendto()' and 'recvfrom()'
as they are universal. Multicast address can only be connected in
IPv4, IPv6 wasn't working and I'm not sure the IPv4 is portable to
other platforms.
Dialer will auto-join multicast groups is the dialed address is
one. Multicast properties such as time to live (hops) and loopback can
be configured. When joining multicast groups, the local
address/interface can be configured by 'IP@IFACE' format, with
'@IFACE' being optional.
Dialers will now auto-bind, so it can receive data as dialers are
expected to be bi-directional. One can manually specify the binding
address if there is such need.
Since datagrams must be read in their full size, otherwise the
remaining bits are dropped, expose next_datagram_size_query() in both
Efl.Net.Socket.Udp and Efl.Net.Server.Udp.Client.
To finalize UDP for real we need to introduce an 'Efl_Net_Ip_Address'
structure to serve as both IPv4 and IPv6 and expose 'sendto()' and
'recvfrom()'. These will come later as this commit is already too big.
Instead of using 'bool', which requires a parameter to be useful, make
them toggle of the default value.
Adapt names to make more sense in that context.
This is handful to error the copier with ETIMEDOUT if there are no
reads or writes in the given amount of time.
Since copiers are usable to download data or handle network clients,
it's easy to set a timeout and disconnect, let's say UDP clients that
are gone.
This is the initial UDP server that works similarly to the TCP one,
however under the hood it's widely different since the socket is
reused for all "clients", thus needs a new Efl.Net.Server.Udp.Client
(Efl.Net.Socket) as Efl.Net.Socket.Udp exposes the fd and options such
as 'cork', which would interfere in other clients.
The main socket will read the packets and find an existing client to
feed it. If no client exists, then it will create one if not overr
limit. Since there is no kernel-queuing as done by listen()/accept(),
the 'no reject' case will just accept the client anyway.
Next commits will improve UDP server handling with some advanced
features:
- join multicast groups
- bind to a specific interface (SO_BINDTODEVICE)
- block packets going out of local network (SO_DONTROUTE)
- specify priorities (SO_PRIORITY)
instead of blindly reading and writing, which can lead to hangs due no
server, let's use can_read and can_write to do the operations, this
won't let us believe we can read when we can't.
it's also the recommended approach, so let's show that in the examples
so users don't copy&paste incorrect stuff :-)
Sometimes we want to handle both IPv4 and IPv6 in the same socket,
instead of spawning 2 servers, one for each protocol. That is achieved
by means of disabling IPV6_V6ONLY socket option, present in most
recent platforms.
Like existing ecore_con code, this does not use SOCKSv5 UDP
proxy. It's kinda cumbersome to add since requires a keep alive TCP
connection to the server, a second UDP channel and framing around the
original UDP frame.
Added UDP_CORK (if present) to match TCP_UDP present in TCP sockets,
this allows one to execute multiple write() calls that will result in
a single datagram, generated when CORK becomes FALSE again.
The efl_io_copier_example.c now accepts this as output. There is no
input UDP as there is no way to notify the server of a connection
(since such thing doesn't exit), usually servers react after a
datagram is received, replying to the source.
Similarly to group_color_set, group_clip_[un]set should not
exist and should be a result of efl_super and inheritance.
This patch also removes clip_unset from the EO API and keeps
only clip_set(NULL). The reason is that it will avoid bad overrides
of clip_unset() vs. clip_unset(NULL). This also simplifies the code
a bit. Ideally we should be able to reintroduce clip_unset in EO
if we can have a "@final" tag (like java's final keyword), to
prevent overrides.
Remove codegen_example_generated.h from codegen_example_SOURCES
and let it only on nodist_codegen_example_SOURCES and
on BUILT_SOURCES.
Also add dependency between codegen_example.c
and codegen_example_generated.h since it's required
to compile.
Avoid the following build error:
CODEGEN codegen_example_generated.c
codegen_example.c:26:39: fatal error: codegen_example_generated.h:
No such file or directory
compilation terminated.
Makefile:4960: recipe for target 'codegen_example.o' failed
Fix missing dependency.
Get rid of the following error:
/usr/bin/ld: ecore_evas_vnc.o: undefined reference
to symbol 'ECORE_EVENT_MOUSE_BUTTON_UP'
src/lib/ecore_input/.libs/libecore_input.so.1: error adding symbols:
DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:2306: recipe for target 'ecore_evas_vnc' failed
It has been discussed on the ML (thread: "[RFC] rename efl_self") and
IRC, and has been decided we should rename it to this in order to avoid
confusion with the already established meaning of self which is very
similar to what we were using it for, but didn't have complete overlap.
Kudos to Marcel Hollerbach for initiating the discussion and
fighting for it until he convinced a significant mass. :)
This commit breaks API, and depending on compiler potentially ABI.
@feature
The Efl.Net.Dialer.Websocket is just like other Efl.Net.Dialers: you
can dial, you can close, monitor connected/address resolved and so
on. And you can use WebSocket primitives and events such as
text_send(), binary_send(), ping() and close_request() (since
WebSockets use a close process where you should state a close
reason). See efl_net_dialer_websocket_example.c
Even if WebSocket is a message-based protocol (like "packets" from
UDP), you can use efl_net_dialer_websocket_streaming_mode_set() to
tell it to handle text or binary messages as a stream. Then all the
Efl.Io.Reader and Efl.Io.Writer APIs work as expected, see
efl_io_copier_example.c updates.
This adds support for distance, pressure, tilt and twist.
Not entirely sure if normalized & raw (x,y) should be exposed
in the eo interface. Also not sure what to do with tilt_x/y
(as used by libinput) or touch/tool width "major/minor" vs.
radius x/y.
Add debug logs in the example, including the distance.
I can't test most of these values due to a lack of compatible
hardware, but the most basic features seem to work :)
The use of low-level interfaces such as Efl.Io.Reader and
Efl.Io.Writer are not that user-friendly as they can handle partial
data.
Classes such as Efl.Io.Copier makes them easy to use, but they need a
reader (source) or writer (destination) and in our examples we used
fixed buffers or some existing streams (stdin/stdout/stderr,
networking...).
However, if interactively we need to produce some data to be sent,
such as implementing some networking protocols, we'd have to write our
own Efl.Io.Reader and Efl.Io.Writer classes to handle the buffering.
Not anymore! With Efl.Io.Queue you can write stuff to it and it will
buffer to memory. Once stuff is read, it will automatically remove
those bytes from buffer.
so efreet mime was loading a bunch of mime type info files, parsing
them on startup and allocating memory to store all this mime info -
globs, mimetype strings and more. all a big waste of memory as its
allocated on the heap per process where its the SAME data files loaded
every time.
so make an efreet mime cache file and a tool to create it from mime
files. mmap this file with all the hashes/strings in it so all that
data is mmaped once in memory and shared between all processes and it
is only paged in on demand - as actually read/needed so if your
process doesnt need to know about mime stuff.. it wont touch it anyway.
this saves about 240-300k or so of memory in my tests. this has not
covered the mime MAGIC files which still consume memory and are on the
heap. this is more complex so it will take more time to come up with a
nice file format for the data that is nicely mmaped etc.
@optimize
This class implements the Efl.Net.Dialer interface using libcurl to
perform HTTP requests. That means it's an Efl.Net.Dialer,
Efl.Net.Socket, Efl.Io.Reader, Efl.Io.Writer and Efl.Io.Closer, thus
being usable with Efl.Io.Copier as demonstrated in the
efl_io_copier_example.c
Efl.Net.Server defines how to accept new connections, doing the
bind(), listen() and accept() for protocols such as TCP.
Efl.Net.Dialer defines to to reach a server.
Both are based on Efl.Net.Socket as communication interface that is
based on Efl.Io.Reader, Efl.Io.Writer and Efl.Io.Closer, thus being
usable with code such as Efl.Io.Copier.
The Server will emit an event "client,add" with the established
Socket, which is a child and can be closed by both the server or the
user.
The Dialer extends the Socket and allows for creating one given an
address, that will be resolved and connected.
TCP is the initial implementation so we an validate the
interfaces. UDP, Unix-Local and SSL will come later as derivate
classes.
The examples are documented and should cover the basic principles:
- efl_io_copier_example can accept "tcp://IP:PORT" and will work as a
"netcat", can send data from socket, file or stdin to a socket,
file, stdout or stderr.
- efl_net_server_example listens for connections and can either reply
"Hello World!" and take some data or work as an echo-server,
looping back all received data to the user.
More complex interactions that require a "chat" between client and
server will be covered with new classes later, such as a queue that
empties itself once data is read.
These interfaces allows generic operations on objects that can store
or provide data, such as a file or a buffer.
With well defined interfaces and events we can create code such as
Efl.Io.Copier, that will link a source with a destination and
progressively copy data as they appear.
Only perform the single value/return type substitution on properties if the
void return type is implicit (i.e. NULL return from function_return_type_get),
following the eolian-C implementation as we use the generated headers.
Also update example after Eo-Efl changes.
At some point we lost the \ after track_example_01 and in combination with the
commented out line right afterwards we lost all examples coming after this line.
This just surfaced with JPs latest commit when I did a distcheck build but was
there for a longer time. We now make sure all disabled examples are moved out of
the multi-line list.
Summary: The realized items list should be freed by either eina_list_free() or EINA_LIST_FREE when it is no longer needed
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: minkyu
Differential Revision: https://phab.enlightenment.org/D4193
The edje text example covers the translation functionality which need the mo
and po files during edje_cc compilation. Further more the folder need to be
writable to create the new mo/po files.
We need to ensure that this is the case during a distcheck which is read only
on the source tree.
This is to show that proxies can proxy more than just other
images, and also this was done to test D4159 (alternatively
changed into the previous commit).
In commit 3340745c65ef8b8361dc6eff5e746f7ce1104378 the callback array got
removed letting all callback functions around as unused. Somehow the setup
of all these callbacks have gone missing over various refactors.
Missing parenthesis have been leading to an out of bound access here.
Summary: @fix
Reviewers: stefan_schmidt
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4069
evas-images5.c:19:0: warning: "EFL_BETA_API_SUPPORT" redefined
#define EFL_BETA_API_SUPPORT
^
In file included from evas-images5.c:14:0:
../../../config.h:360:0: note: this is the location of the previous definition
#define EFL_BETA_API_SUPPORT 1
We should only define it when we are not using config.h
My recent removal of the EFL_EO_API_SUPPORT define brought some trouble to the
evas 3d examples. The problem was that there was no uniform usage of including
config.h and thus it worked fine in some constellations abut not in others. This
patch should fix the known problems and brings back EFL_EO_API_SUPPORT until we
are removing it from the whole code base.
Reported by Simotek when testing the latest snapshot:
Were getting closer, "/usr/bin/mkdir -p /usr/share/elua/examples" should
be "/usr/bin/mkdir -p
/home/abuild/rpmbuild/BUILDROOT/efl-1.17.99.48545-1.x86_64/usr/share/elua/examples"
We are using cos() and sin() in the efl_thread examples here but never linked
to the math lib. Ubuntu 14.04 on Travis CI errored out with this:
/usr/bin/ld: efl_thread_1.o: undefined reference to symbol 'cos@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
This allows apps to set the objects min size with hint_min,
while letting the rest of EFL define the minimum size with
rstricted_min.
I don't like the property names much...
The ecore_audio examples have been disabled and now do not compile right now.
But as they are disabled they never land in the tarball and thus we error out
with files not aviavle for install. Found by the OpenSUSE build service. Thanks
Simotek for reporting.
[ 2172s] /home/abuild/rpmbuild/BUILD/efl-1.17.99.47400/install-sh: ecore_audio_custom.c does not
exist.
This reverts commit 546ff7bbba788ec834c5608361c0834853f2d5d7.
It seems that eo_del() is useful and removing it was creating bugs.
The issue is that the way we defined parents in eo, both the parent and
the programmer share a reference to the object. When we eo_unref() that
reference as the programmer, eo has no way to know it's this specific
reference we are freeing, and not a general one, so in some
circumstances, for example:
eo_ref(child);
eo_unref(child); // trying to delete here
eo_unref(container); // container is deleted here
eo_unref(child); // child already has 0 refs before this point.
We would have an issue with references and objects being freed too soon
and in general, issue with the references.
Having eo_del() solves that, because this one explicitly unparents if
there is a parent, meaning the reference ownership is explicitly taken
by the programmer.
eo_del() is essentially a convenience function around "check if has
parent, and if so unparent, otherwise, unref". Which should be used when
you want to delete an object although it has a parent, and is equivalent
to eo_unref() when it doesn't have one.
The legacy Eio_File factory functions are replaced by an Eo object
called Eo_Job that return promises wrapping the async file operations.
With this commit, the legacy Eio callbacks are replaced by the following
Eo/Promises counterparts :
* Done_Cb -> Promise then success callback
* Error_Cb -> Promise then error callback
* Main_Cb -> Promise progress callback
* Filter_Cb -> Job object event (more below)
Events are used to deliver and get the filter data. To differentiate
between the named and direct versions, they come in "filter,direct" and
"filter,name" versions.
Monitors were wrapped inside a new class Eo_Sentry.
The user creates a sentry object and adds monitoring targets to it,
listening to events on it.
The sentry event info is composed of two strings. The source string
is the path being monitored, i.e. the one passed to eio_sentry_add, and
the trigger string is the path that actually triggered the event, e.g.
a new file created in a monitored directory.
In commit 75a53ece1007d927b8f0b6c5d3f269726afb9108 obj was changed to object.
As one can claerly see though make examples have not been run to verify this
change. Catch up in examples with this rename.
We used to have eo_del() as the mirrored action to eo_add(). No longer,
now you just always eo_unref() to delete an object. This change makes it
so the reference of the parent is shared with the reference the
programmer has. So eo_parent_set(obj, NULL) can free an object, and so
does eo_unref() (even if there is a parent).
This means Eo no longer complains if you have a parent during deletion.
Fix commit 3e8db298f70932ce7b2f5296d44b262a615ea87c the namepsace changed but
only a few files have been fixed for this. Many files did still not compile
with make examples. I fixed some more but stopped at the cxx files with the hope
that the original author would actually do this.
Due to dependencies from elementary codegen on the edj files triggered by the
generation of .h and .c, we actually need to provide the edj as it would
otherwise to build edje_cc prior to any make dist.
As the edje file was added after in the git repository, you may have some
timestamp issue to fix before doing a make dist. Try touch on all codegen_example
files.
T3588
Efl - efl_model_base changed to use eina_promise
Eio - eio_model use efl_model_base with promise
Eldbus - elddbus models use promise now
Elementary - elm_view_list and elm_view_form use new models with promise
updated all related examples and tests
lots of long paths for monitoring file paths for icons etc. are in
memory for efreetd. this reduces that memory by sharing them much more.
@optimization
Warning: This disables CXX examples because they use
now-internal APIs that have no EO API binding.
Those examples should be updated to use Efl.Ui widgets... once
we have them.
Summary:
enum Evas.Canvas3D.Shade_Mode are using for choose relevant shader source code.
So renaming have a sence.
Rename evas_canvas3d_shade_mode_set/get property to evas_canvas3d_shader_mode_set/get
Rename internal fields and functions
Reviewers: cedric, Hermet, raster
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3882
some font glyphs are still allocated after tyhe last gl window is
freed which means we can't make current anymore to free textures after
that. this fixes that by flushing gl texture info from the font cache
when the last gl windows are gone.
@fix
Summary:
Added flip and orientation interface and used them in evas_image.
Removed efl_image_orientation_set API and used efl_orientation_set and efl_flip_set API.
In implementation part, converted enums back and forth in order to keep current implementation as it is.
Test Plan: src/examples/evas/evas-images5.c
Reviewers: singh.amitesh, raster, tasn, herdsman, woohyun, cedric, felipealmeida, jpeg
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3844
It was broken after all the changes in Evas.Image.
Since buffer map/unmap is not fully completed (GL support is
still to do), I added a quick #ifdef to switch between EO and
Legacy APIs.
Thanks @jackdanielz for the report.
Since commit a4f0f08399de85b382603bc57e7a480872e85915 these header files are
no longer installed. Make sure the example have the correct path to actually
find teh files. If we no longer consider them public we might want to think
about removing the examples for them.
This commit fixes the examples build only.
Summary:
Example using static LOD in evas.canvas3d
It should be applied after D3731
Reviewers: Hermet, raster, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3732
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This replaces standard Evas_Object_Image when it is used "normally",
ie. it's an image from a file or from a pixel buffer. All other APIs
(proxy, snapshot, 3d, gl, ...) are disabled on this object.
Also, reduce number of failing calls when the object is not a legacy
object, but a legacy function is called. This is because a lot of
image APIs are called internally using the legacy APIs, often in
order to reset the state of the image object (eg. set file to NULL,
etc...)
Mostly unused vars following the removal of eo_do_ret().
However, there are some cases where the migration script got some things
wrong, and I had to manually fix them.
I just ran my script (email to follow) to migrate all of the EFL
automatically. This commit is *only* the automatic conversion, so it can
be easily reverted and re-run.
The migration scripts breaks with some weird cases, here I manually
migrated some parts, and just removed the eo_do from others without
actually migrating (so I could deal with that later).
Summary: Made new models with no normal component to print
сorrect print message for testing not only by visual result.
Reviewers: cedric, raster, Hermet
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3562
Summary:
As base64 API's are no longer part of eina, removing them. Will add
separate file for emile examples.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3552
Summary:
The example is to demonstrate the use of
eina_strbuf_manage_read_only_new_length API.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D3421
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Before adding of new saver and loader for ply format we had a chance to set EVAS_CANVAS3D_SHADE_MODE_VERTEX_COLOR
for every mesh, now we save only existing atributes and there are a lot of meshes we have to set EVAS_CANVAS3D_SHADE_MODE_VERTEX_COLOR.
[FIX]
Reviewers: cedric, raster, Hermet
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3412
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Enhance edje color class example
Test Plan: build using the comment message
Reviewers: raster, cedric, jpeg
Reviewed By: jpeg
Subscribers: seoz
Differential Revision: https://phab.enlightenment.org/D3508
This is a quick fix to make out-of-tree builds of the examples
work fine. Don't pass "." as teh resource dir root, instead
pass the path to the source files' folder.
Summary: This example is a testing example for comparison convex
hulls built by our algorithm and in Blender.
Reviewers: raster, Hermet, cedric, jpeg, perepelits.m
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3336
Summary:
The socket API is different on Windows and on Linux.
This is the perfect example where we need to abstract the socket API in Eina :
1) to avoid all these includes specific to sockets
2) to avoid on Windows undefined behavior : close(socket); is undefined behavior if socket is indeed a socket
Reviewers: jpeg
Reviewed By: jpeg
Subscribers: cedric, jpeg
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D3441
Summary:
When compiling on Windows, Evil.h must be included, so update Makefile.am
accordinglY
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3439
Summary:
Add new API eina_strftime API in eina_str
@feature
Test Plan: test case and example also updated
Reviewers: tasn, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3148
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Add eina_tmpstr_manage_new, eina_tmpstr_manage_new_length APIs, these APIs create new tmpstr but reuse the input string memory.
@feature
Test Plan: Test case and example updated
Reviewers: tasn, cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D3178
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Checking if client is NULL before freeing is not of much use. If it is NULL, it would have crashed before when it was dereferenced in printf. So checking NULL before dereferencing.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3151
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This hasn't been used for a while. Since we are going to break Eo a bit anyway
it's a good opportunity to drop this.
This may cause a slight performance issues with legacy events, such as
smart callbacks. This shouldn't really be a problem as we've migrated away from
them. If it does, we need to migrate the remaining parts. Only relevant
for callbacks that are added before the classes are created, which
shouldn't be possible except for smart, only for old evas callbacks.
Summary:
Checking if client is NULL before freeing is not of much use. If it is NULL, it would have crashed before when it was dereferenced in printf. So checking NULL before dereferencing.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3088
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Evas only handles pre multiplied colors. So use r,g,b values lesser than alpha to prevent error message.
Signed-off-by: Yeshwanth Reddivari <r.yeshwanth@samsung.com>
Reviewers: sachin.dev, singh.amitesh
Reviewed By: singh.amitesh
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3073
Summary:
calloc is done 2times, so there is a memory leak. So fixing that.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric, stefan_schmidt
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3032
Summary:
pd was dereferenced and then checked for NULL. If it was NULL, the program would crash much before. So fixed that.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric, stefan_schmidt
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3031
Summary:
cd was dereferenced and then was checked for NULL. If cd is NULL, it would crash before itself. So checking for NULL before dereferencing cd.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric, stefan_schmidt
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3009
Summary:
Relating to D3010. This patch is code cleanup. Have done dos2unix. After this will update D3010 bug.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric, stefan_schmidt
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3025
Summary:
This fix need for synchronous rotation mesh and aabb of "sonic" in example "evas-3d-aabb.c".
@fix
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: sri.hebbar, cedric
Differential Revision: https://phab.enlightenment.org/D2779
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
The evas-3d-shooter-header.h is used by two binaries. One is using these image
path and the other not. Which means that we get a bunch of warnings thrown at
us during the compile of the binary which does not use them as unused variables.
Solve this by having them only in the place where they are actually used.
Summary:
Introducing a new feature for Evas Textblock. This allows the layout to
wrap around other evas objects.
The following API is added:
- obstacle_add
- obstacle_del
- obstacle_update
Evas objects can now serve as textblock obstacles, if positioned and
visible on the text area. The text will wrap around the obstacles
according to the wrapping mode set to it.
This also modifies the current wrapping code to handle obstacle wrap
points as well. The wrap index query function is modified so that
forward-scanning (specific cases) may be disabled when treating
obstacle wrap point.
RTL text is currently unsupported by this feature.
Consult added docs and example for usage.
@feature
Test Plan: Evas example and test in evas_suite are provided with this.
Reviewers: tasn
Subscribers: raster, JackDanielZ, cedric
Differential Revision: https://phab.enlightenment.org/D2405
Summary:
Using C++ wrapper types in the signature of methods of the generated
classes.
Now, when the type is an Eo type defined in Eolian, eolian_cxx will detect
it and use the equivalent C++ wrapper.
Types defined in Eolian no longer need to be specified in the lookup table,
so removed them from there.
Disable wrapping of non-const char*. The current wrapper (unique_ptr) is
not suited for some required operations like ownership acquisition from
C code.
Fix constructing properties that only have the "set" method.
Fix translation of non-const parameters.
Modified Makefiles to allow proper inclusion of evas_cxx headers required
by some tests and examples.
Move one auxiliary function to another reader to make it more accessible.
@feature
Reviewers: felipealmeida, q66, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2752
Since 8b621775619b9959fe952b095b3baaa7aaa99572 make examples fails to build
as the examples have been included without checking if ecore_buffer is
actually enabled to build.
make[2]: *** No rule to make target '../../../src/lib/ecore_buffer/libecore_buffer.la', needed by 'ecore_buffer_example'. Stop.
I'm running make examples during the nightlies now in the hope to catch those.
Summary:
Ecore_Buffer is abstraction of graphic buffer.
it supports backend of shm, x11_dri2 and x11_dri3 for now,
and this library also provides method to share buffers between processes.
Ecore_Buffer_Provider and Ecore_Buffer_Consumer is for this, sharing buffer.
provider draws something in to Ecore_Buffer, and consumer receives and displays it.
the binary, bq_mgr is a connection maker for buffer provider and consumer.
it can be included Enlightenment as a deamon later.
@feature
Test Plan:
1. Configure with --enable-ecore-buffer and --enable-always-build-examples to build examples.
2. Run bq_mgr, it connects consumer and provider.
3. Run ecore_buffer_provider_example and ecore_buffer_consumer_example
Reviewers: lsj119, gwanglim, cedric, zmike, jpeg, raster, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2197
This example just prints tag and it's attributes in xml file.
But this example intended for the scenario,
if the attributes have the "<" or" >" characters inside of the string.
Summary: Cube chaotic was rotated, because angle in structure of "SceneData" have random number.
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2643
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Implementation to support .po files in edc for translation
Test Plan:
Test Code to test this implementation is done as part of efl/src/examples/edje/edje-text.c and efl/src/examples/edje/text.edc
edje_cc -md . text.edc && gcc -o edje-text edje-text.c `pkg-config --libs --cflags ecore-evas edje evas ecore eo`
./edje-text
1) Click On the text "Click here"
The language gets changed.
Reviewers: shilpasingh, cedric
Reviewed By: shilpasingh, cedric
Subscribers: cedric, rajeshps, govi, poornima.srinivasan
Differential Revision: https://phab.enlightenment.org/D2573
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Add a new property to edje_object.eo for setting the language on one Edje_Object.
Test Plan:
Test Code to test this implementation is done as part of efl/src/examples/edje/edje-text.c and efl/src/examples/edje/text.edc
edje_cc -md <dir path>/efl/src/examples/edje/ text.edc && gcc -o edje-text edje-text.c `pkg-config --libs --cflags ecore-evas edje evas ecore eo`
./edje-text
1) Click On the text "Click here"
The language gets changed as per the specific edje object.
2) Click on the text object at bottom. "Click here"
The system language gets changed and the below two edje objects language are changed globally.
Reviewers: cedric, shilpasingh
Subscribers: poornima.srinivasan, govi, rajeshps, cedric
Differential Revision: https://phab.enlightenment.org/D2559
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This was not really useful and against the Eolian guidelines.
While I promised I won't break things until the 27th, I was ill
(still am), so I'm giving myself a 1 day pass. :P
From now on, constructors should return a value, usually the object
being worked on, or NULL (if the constructor failed). This can also
be used for implementing singletons, by just always returning the same
object from the constructor.
This is one of the final steps towards stabilizing Eo.
@feature
Instead of "@in type name;" we now use "@in name: type;". This change
is done because of consistency with the rest of Eolian; pretty much
every other part of Eolian syntax uses the latter form.
This is a big breaking change in the .eo format, so please update your
.eo files accordingly and compile Elementary together with the EFL.
@feature
Summary:
Issue: Current embryo script do not provide any mechanism to set transition type in animation
Solution: A new API set_state_anim is added.
Signed-Off by: Kumar Navneet <k.navneet@samsung.com>
Signed-Off by: Shilpa Singh <shilpa.singh@samsung.com>
Test Plan: A test edc (embryo_set_state_anim.edc) is added to edje examples to test set_state_anim API.
Reviewers: shilpasingh, raster, cedric
Reviewed By: cedric
Subscribers: poornima.srinivasan, cedric
Differential Revision: https://phab.enlightenment.org/D2470
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Issue: Current embryo script do not provide any mechanism to set transition type in animation, by default supports only linear
e.g: set_tween_state API
Solution: To not break backward compatibility, a new API set_tween_state_anim is added in which we can even specify type of transition required.
Signed-Off by: Kumar Navneet <k.navneet@samsung.com>
Signed-Off by: Shilpa Singh <shilpa.singh@samsung.com>
Test Plan: A test edc (embryo_tween_anim.edc) is added to edje examples to test set_tween_state_anim API.
Reviewers: raster, cedric, shilpasingh, Hermet
Reviewed By: shilpasingh
Subscribers: poornima.srinivasan, SubodhKumar, rajeshps, cedric, govi
Differential Revision: https://phab.enlightenment.org/D2344
Summary: add ecore_evas_extn_socket_events_block_set/get
Test Plan: add mouse event callback, and check whether it could get event or not
Reviewers: raster, woohyun, jaehwan, Sergeant_Whitespace
Reviewed By: Sergeant_Whitespace
Subscribers: Sergeant_Whitespace, seoz, cedric
Differential Revision: https://phab.enlightenment.org/D2268
Summary:
Internationalisation of the static text specified as part of the edc is implemented.
Problem: Static text when specified in the edc, remains unchanged when the system language is changed.
Solution: Language support is provided even for the static strings in the edc.
Test Plan:
Test code to test this implementation is done as part of efl/src/examples/edje/edje-text.c and efl/src/examples/edje/text.edc
Compile the code with the below command
edje_cc -md <dir path>/efl/src/examples/edje/ text.edc && gcc -o edje-text edje-text.c `pkg-config --libs --cflags ecore-evas edje evas ecore`
./edje-text
1) change the language of the system using the command
export LANGUAGE=hi
./edje.text
Not the text Loading gets displayed in hindi language
2) change the language of the system using the command
export LANGUAGE=ta
./edje.text
Not the text Loading gets displayed in tamil language
3) change the language of the system using the command
export LANGUAGE=en
./edje.text
Not the text Loading gets displayed in english language
As the number of .mo files in the /edje folder can be increased, those many languages can be supported
Reviewers: cedric, shilpasingh
Reviewed By: shilpasingh
Subscribers: cedric, rajeshps, govi, poornima.srinivasan
Differential Revision: https://phab.enlightenment.org/D2336
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Refactoring of code and fix work of signals for normal rotation of cube.
Reviewers: cedric, raster, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2392
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Bind flag atlas_enable.
Build adjusting matrix only in case getting texture unit with atlas.
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2473
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Without ecore_main_loop_quit the example won't end. So added that and as ecore_init is done in ecore_con_init removed that.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2399
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Added optional constructor methods for C++ Eolian wrappers.
Changed the interface of wrappers' main constructors.
If there are optional constructor methods they should be passed as variadic
template argument at the end of the constructor.
To support variadic template arguments, the optional "parent" parameter is
now the first parameter and there is another constructor without the
"parent" parameter.
Checking for @optinal and @nullable attributes instead of @nonull.
Now @nonull is the default, and eina::optional is only used when @optional
or @nullable attribute is specified.
The names of constructor methods no longer have the class name prefixed.
Added unit tests for checking the binding of optional constructors.
Added new .eo file to be used in the test.
Changed the generated documentation of constructors.
Changed the efl::eo::inherit accordingly, to address these new features.
Now the constructor methods should be explicit called in the
efl::eo::inherit constructor, which will receive them via variadic
template arguments.
Added another constructor to efl::eo::inherit for passing the parent
object.
Updated some tests and examples to follow the new interface.
Removed some code that is no longer necessary.
Also, fix Eolian C++ support for constructing properties. fix
assertion when parsing constructing properties.
Now if a property is a constructing property eolian_cxx will generate a
constructor method that have the property name (without the "_set" suffix).
Using eina::string_view in eolian generated interfaces (instead of
std::string) to allow lightweight passing of both C strings and C++
std::string.
Also, No longer using eina::optional in generated headers for types
that already implements the concept of null state (like Eo wrappers
and eina_accessor).
Also fix allocating callback objects require by class methods
(i.e. static) in static vectors so the memory will be freed when the
programs exit.
Added a new test case for testing callbacks on class methods.
Moved method definitions and supplementary code from generated C++
wrappers to auxiliary header file (.eo.impl.hh) generated together
with the main ".eo.hh" file. Updated Makefiles to list such files in
the compilation and cleanup processes. Updated .gitignore to include
these new generated files.
Made general adjustments on the documentation of generated C++ wrappers
Added "PREDEFINED" preprocessor macro definition in the Doxyfile.in in
order to make some adjustments for better documentation in the C++
generated headers. Excluding generation of documentation for classes
in the "eo_cxx" namespace (the namespace for "abstract" eolian C++
wrappers). Now generating the documentation for the events too.
Hiding some auxiliary code from being documented. Some aesthetic
adjustments for generated white space. Generate documentation for the
main constructor of C++ wrappers and added auxiliary grammars to list
parameters names.
Summary:
Add pointer to target billboard node in Evas_3D_Node
Skip set flags change orientation for billboard node
Add method node_billboard_update to use it for change orientation during traverse
by nodes
Split API evas_3d_node_look_at_set to have possibility change orientation of node
without set flags
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2245
Summary:
Added example for ftp upload. In the .gitignore only 2 files added which were missing. The differences it is showing is cos of reordering. I did ls and redirected the file to gitignore. So the files got reordered.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2223
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Materials are not used in any loader and will not be used in nearest future.
Reviewers: raster, Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2080
Conflicts:
src/examples/evas/Makefile.am
Reviewers: cedric, Hermet, raster
View and composition will be restored after refactoring of all primitives.
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2151
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
- little symbols in pathes
- new standard pathes for assets for big examples
- deleted the largest resources
- size of shooter folder less than 4 Mb now
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2131
When rebasing the commits, I have been lazy and did a git add src/ that
actually added the files that were not ignored. My bad, sorry about that.
The original patch was fine.
Thanks sung.
Summary:
Remove gles1 prefixes for functions that are also used by gles3.
Refactor evgl_make_current a little bit.
Destroy indirect context properly.
Some log message changes and typo fixes.
Test Plan: Local tests on desktop PC
Reviewers: jpeg
Subscribers: mythri, mer.kim, wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2104
Summary:
recived Error that object already deleted in the following files:
In evas-object-manipulation-eo.c: d.clipper and d.bg where created with
eo_add ( 1 ref ) but where unrefd twice: once explicity and once when
d.ee were deleted.
In ecore_indler_example: ctxt->idler were again explicity unrefd and
again unrefd by ecore_shutdown.
@fix
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2093
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Unneccessary resources are deleted.
In example of frustum used sweet_home.
In example of colorpick used sphere primitive.
Possibility to set precision of spheres deletes need in high quality mesh.
For spheres used textures of wood and rock, so for good work of colorpick https://phab.enlightenment.org/D2044 should be merged firstly.
Reviewers: cedric, raster, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2081
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Materials are not used in any loader and will not be used in nearest future.
Reviewers: cedric, raster, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2080
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Models for mmap example are more than tan times smaller.
Test Plan: run evas-3d-mmap-set.c
Reviewers: cedric, raster, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2073
Summary: This example is deprecated. We have another (pick) to show functionality of it.
Test Plan: Need merged D2044 to run pick example.
Reviewers: cedric, raster, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2074
While we used different variation of mkdir -p all over we also had spots
where we did not use the option. This is one step in trying to make our
build system ready for parallel install. Using something like -j 10 even
for the install should help to speed up our jenkins jobs as well as distcheck.
Summary:
Textures for evas-3d are standardized 256*256.
.tga for parallax occlusion aren't changed to save alpha channel.
-50Mb for efl without obvious lost of quality
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2032
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Fixed : errors (connected with eo and new resources path) in evas-object-manipulation-eo.c
Fixed : warning: format not a string literal and no format arguments [-Wformat-security]
FIxed : unused variables in evas-images3.c are deleted
Reviewers: raster, Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2025
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Process of loading is standard now. TODOs which are added here will be done in one of the next commits soon.
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2013
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This commit makes folder of examples for evas more ordered.
Reviewers: raster, Hermet, cedric
Subscribers: artem.popov, cedric
Differential Revision: https://phab.enlightenment.org/D1985
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This example includes some previous developments to create 3d-world mechanics.
Reviewers: cedric, raster, Hermet
Subscribers: cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D1991
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Add class and type Evas_3D_Callback like wrapper under smart object
Incapsulate Evas_3D_Callback in Evas_3D_Object
Add virtual function register and unregister in Evas_3D_Object
Add function evas_3d_callback_call
Add callbacks clicked and collision for Evas_3D_Node
@feature
Reviewers: raster, Hermet, cedric
Reviewed By: cedric
Subscribers: artem.popov, cedric
Differential Revision: https://phab.enlightenment.org/D1914
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Some little example about how and when edje_edit functions can be applied.
In this example there is a box part with items in edj, and by using edje_edit
program actually changes edj file directly. (adding items,
changing layouts of box, changing params of items, etc).
It is pushed as a reference for people who would like to do there own
Edje editor. Normal application should not use that API.
Reviewers: Hermet, raster, seoz, cedric
Reviewed By: cedric
Subscribers: cedric, reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D1969
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This commit fixed several bugs, and show what was be fixed.
Bugs:
- When designer save obj file in Blender, he/she can set flags (fig 1). Normals and UV coords flags was necessary for obj loader. Loader crushed when they are not set as true. It fixed by this commit.
- Another loaders set default values to data which aren't in loading file, so mesh need more memory for unused data. It fixed by this commit for obj and will be fixed for another formats in future.
- Saver saved incorrect data if normals or tex_coords was not set in mesh in evas. Now it fixed.
- Saver failed if it save mesh without material. It fixed and in this case material file is not created now.
- Also fixed some leaks and undefined behavior which valgrind shows.
Example:
- Example shows cases described above. Example use files saved with different flags for it.
Resources:
- man_mesh is replaced by several smaller file, to use them for showing new features and fixes. For example, similar to that models can be added when implement work with material for obj, work with different flags for obj loader/saver etc. (big count of man_meshes is to much memory).
- texture for home is flipped, because of bug with texture in efl to see if tex_coords is incorrect.
Test:
- test should be rewritten in future, because another formats still use default values for normals and tex_coords. And test can not pass for all types of obj file because of standardization for any format in him.
Test Plan: Test suit will be rewritten after correcting of other formats (they will set NULL to file when save an empty data (like mesh without normals))
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1957
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
When the examples were compiled they used to through the below warning
$ gcc -o ecore_con_client_simple_example ecore_con_client_simple_example.c `pkg-config --libs --cflags ecore ecore-con eina`
ecore_con_client_simple_example.c:11:0: warning: "EINA_UNUSED" redefined
# define EINA_UNUSED
^
In file included from /usr/include/eina-1/Eina.h:215:0,
from /usr/include/ecore-1/Ecore.h:304,
from ecore_con_client_simple_example.c:5:
/usr/include/eina-1/eina/eina_types.h:112:0: note: this is the location of the previous definition
# define EINA_UNUSED __attribute__ ((__unused__))
^
So removed these defines as they are no longer required now.
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1919
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
It is not ready as a public API yet. It needs to run on GeoClue1
and GeoClue2 which will definitely bring API changes as some parts
are tied to mcuh to what GeoClue1 offers right now.
Solved diamond inheritance problem by completely removing inheritance in
the abstract class.
All ancestors are inherited directly in the concrete class.
The algorithm that list the ancestors also avoid repetition.
Now concrete classes define methods too. This helps referring the correct
method directly by the object type (when there are methods with the same
name).
Moved the declaration and definition of constructor methods to the concrete
class, since they should not be used in derived classes.
Updated example that call "color_set".
With this model, if two ancestor classes have a method with the same name,
to call one of them from a derived class you must write the scoped name of
the member function in the wrapper.
In this case, either Evas.Object and Evas.SmartObject have a property
named "color".
Added "from_global" option to the full_name grammar too.
In convert.cc: Reading functions instead of implements to convert the
Eolian_Class. It avoids creation of methods that do not belong to the
class, in special it avoids calling the default constructor twice in the
generated code.
No longer generating one constructor in the C++ wrapper for each eolian
class constructor, since the correct behavior demands that all constructor
should be called. Now the wrappers have "constructor methods" that
must be called when creating a new object.
Updated test cases and examples to match the new interface. Some class
constructors and some test cases have to be removed since they were based
on the wrong assumption that constructors are mutually exclusive.
Created new generators for forwarding parameters and for looping over
the relevant parameters to the C++ wrapper executing a generic lambda.
Added a TODO comment regarding the call of constructor methods of all
base classes. Currently there is no base type with constructors, so this
situation should be discussed more.
Added a TODO comment regarding the way callback parameters are being
processed.
Summary:
While going through eina for understanding, wrote a program to understand
he differences between different eina inarray functions. Thought, this might
be useful for others too, so adding the same.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1803
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This patch set adds the necessary code to expose device axis state to applications. This was primarily written with graphics tablets in mind, which -- in addition to acting like a mouse -- also provide information about pen pressure, tilt, etc. Other devices could potentially benefit from this API as well: touchscreens, joysticks, knob controllers, "spaceballs", etc.
Whenever an update to the device state is recieved, an "Axis update" event is synthesized. This event contains the updated information, typically scaled and normalized to a particular logical range (e.g. zero to one for pressure, -pi to pi radians for angles, etc.). Information about the tool which generated the event is also stored so that applications can disambiguate events from multiple devices (or in the case of multitouch screens, individual fingers).
This API is only wired up for use with X11 at the moment. Support for other backends (e.g. Wayland) should be easy to add for those familiar them.
**Note**: The following is a list of changes from the "v2" patches originally sent to the mailinglist
//Define and implement new Ecore_Event_Axis_Update events//
* Harcode axis labels instead of including xserver-properties.h
* Use C89-style comments
* Use doxygen comments
* Update comment text to note axes with unbounded/undefined ranges/units
* Create "Ecore_Axis" and "Ecore_Axis_Label" typedefs
* Reference typedef'd instead of raw types
* Adjust how we count through valuators to support tilt/az
* Add support for tilt and azimuth
* Tweak memory management in case number of valuators differ
* Expand TWIST axis normalization to declared range
* Only normalize TWIST axis if resolution == 1 (wacom bug)
* Cache label atoms on first use to minimize round-trips
//Implement EVAS_CALLBACK_AXIS_UPDATE event and friends//
* Update to doxygen comments
* Update comment text to note axes with unbounded/undefined ranges/units
* Typedef 'Evas_Axis_Label', 'Evas_Axis'
* Move typedef for 'Evas_Event_Axis_Update'
* Reference typedef'd instead of raw types
//Wire the Ecore and Evas implementations of axis update events together//
* Expose ecore_event_evas_axis_update in Ecore_Input_Evas.h
* Move ecore_event_evas_axis_update to more logical position
//DEBUG: Add axis update logging to evas-multi-touch.c//
* Removed from patch set
//Make evas-multi-touch demo use new axis functionality//
* Have pressure adjust rectangle brightness instead of size
* Use more available axis data when rendering rectangle (azimuth, tilt, twist)
Test Plan: The evas-multi-touch demo was updated to support axis update events. A graphics tablet was then used to verify that the pressure, azimuth, tilt, and twist data was coming through correctly.
Reviewers: cedric, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1514
Conflicts:
src/lib/ecore_input/Ecore_Input.h
Carsten Haitzler -
** fixed forward enum typedefs (make things unhappy)
** fixed conflict above
** fixed wrong param type for _evas_canvas_event_feed_axis_update()
** fixed @sinces to be 1.13
** fixed formatting/indeting
** fixed order of operation reliance in if's with ()'s to be clear
** fixed functions to be static that should have been
Summary:
.ply format is important for relation blender and EFl, because in blender exist only two mesh export API: bpy.ops.import_mesh.ply and bpy.ops.import_mesh.stl. One of them is necessary for .edc 3D generator. Which I writing now.
Sorry, it isn't like image loader. Refactoring of import/export will be soon.
Reviewers: Oleksander, artem.popov, Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1544
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
For some reason, they were normal functions instead of eo functions,
which makes them harder to bind, less safe, and just wrong.
This commit fixes that.
Summary: The first version of .eet format is added. All changes due to discussion in D1307 are done.
Reviewers: artem.popov, se.osadchy, reutskiy.v.v, Hermet, raster, cedric, Oleksander
@feature
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1477
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: The first version of .eet format is added.
Reviewers: Hermet, raster, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1307
Summary: This example shows mechanism of 3d object rotation
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1114
Summary:
The generation of class prefixes was not taking into account the full
classname -- the namespace was not being prepended to it. Fixed that and
also re-organized the code a bit, removed some Wshadow warnings also.
This commit fixes 'make examples' and 'make check'.
Reviewers: tasn, cedric, q66
CC: felipealmeida, smohanty, cedric
Differential Revision: https://phab.enlightenment.org/D1100
Implemented namespaces
Added eolian_wrappers.hh with C++ code wrapping Eolain API
Changed eolian_cxx program options. Now they're eolian_gen's
Added functions to safe_str.hh (safe_lower, safe_upper, normalize_spaces, path_base)
Added a mocked version of type_lookup.hh in advance. The full
version will come as soon as complex-types are added.
Made apply again by Daniel Kolesa, original implementation by Savio Sena.
Summary:
There is param (of the map block in part's description) that allows user to
set a color for specified vertex/point of that part.
That param was undocumented so actually no one know that this param is exist and can be used in edj file.
Two main fixes:
- adding documentation for map.color param in edc reference.
- adding .edc source code example for seeing how map.color param works.
@fix
Reviewers: cedric, Hermet, raster, seoz
Reviewed By: cedric
CC: cedric, reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D1083
Summary: Just updating the .eo's to match the new syntax.
Reviewers: cedric, q66, tasn, JackDanielZ
Reviewed By: q66
CC: felipealmeida, smohanty, woohyun, cedric
Differential Revision: https://phab.enlightenment.org/D1067
Elua is a LuaJIT based runtime for the EFL meant to provide facilities for rapid application development. The name is temporary. The EFL bindings will be generated with Eolian. @feature
Summary:
Add ecore_evas_cursor_unset function.
Use the new function in the ecore_evas_object_example.
@feature
Test Plan: ecore_evas_object_example
Reviewers: raster, cedric, seoz, Hermet
CC: cedric
Differential Revision: https://phab.enlightenment.org/D812
Summary: This example need for demonstration work of the propagate events.
Reviewers: Hermet, cedric, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D890
Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
Summary:
Add API that checks OBB's points of node are inside frustum of camera.
Add example with frustum culling.
@feature
Reviewers: Hermet, cedric, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D942
Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
Summary:
Support union, subtract, intersection, equal(comparison) between tilers.
@feature
Test Plan: Test with added test case(src/tests/eina/eina_test_tiler.c) and the example(src/examples/eina/eina_tiler_02.c)
Reviewers: gwanglim, devilhorns, raster, zmike, cedric
CC: cedric
Differential Revision: https://phab.enlightenment.org/D880
Summary:
Mainly from the examples but also from libunibreak and tests/eet.
I'm not sure if it's really worth to remove warnings from the examples
-- because it adds pedantic-ness to something supposed to be didatic,
but I leave for you guys to judge.
Reviewers: tasn, cedric
CC: felipealmeida, raster, smohanty, cedric
Differential Revision: https://phab.enlightenment.org/D896
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Summary:
Includes Makefile_Eolian*_Helper.am and -- since
_EOLIAN_GEN_DEP and _EOLIAN_CXX_DEP can't be resolved from
src/examples -- redefine the generation rules locally.
Reviewers: cedric, stefan, stefan_schmidt
CC: felipealmeida, cedric
Differential Revision: https://phab.enlightenment.org/D836
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Summary:
EFL_PTHREAD_CFLAGS are needed for tests and users that use
efl::eina::thread's and EFL_PTHREAD_LIBS to eina_cxx, eo and evas examples.
Reviewers: cedric, stefan, stefan_schmidt
CC: cedric, savio
Differential Revision: https://phab.enlightenment.org/D832
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Summary:
Fix function with return type and not returning any value and
remove warnings about unused identifiers in examples for eina C++.
Reviewers: cedric, stefan, stefan_schmidt
CC: savio, cedric
Differential Revision: https://phab.enlightenment.org/D837
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Summary:
Added HAVE_CXX11 guards to Makefile*.am files for C++ binding to avoid
compilation errors for examples when C++11 isn't supported. This also
disable installation of all EFL CXX pkgconfig files.
Reviewers: cedric, stefan, stefan_schmidt
CC: cedric, savio
Differential Revision: https://phab.enlightenment.org/D831
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Summary:
This patch fixes T1226 by adding a Makefile.examples to
examples/eolian_cxx. It also fixes a bug in bin/eolian_cxx: the
include paths were not being correctly generated for directories
outside EFL tree.
Reviewers: cedric, smohanty, stefan_schmidt, stefan
CC: uartie, wayland-efl, felipealmeida, raster, woohyun, cedric
Maniphest Tasks: T1226
Differential Revision: https://phab.enlightenment.org/D824
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
since eo default ref count is 1 and increased by canvas parent again,
they should be unref() called if they wanna deleted automatically.
I wonder if evas unref the objects while it removes the objects from it's list,
then user don't need to call eo_unref() manually which may cause a mistake in usage.
Summary:
Fixed distcheck for Eolian C++. Made the generated files as
nodist so it doesn't get picked up for generation way too
early.
Reviewers: cedric, seoz
CC: cedric
Maniphest Tasks: T1220
Differential Revision: https://phab.enlightenment.org/D820
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Summary:
This patch adds 'eolian_cxx' -- a C++ bindings generator --
to the EFL tree. Eolian Cxx uses Eolian API to read .eo files and generate
.eo.hh. It relies/depends on Eo Cxx and Eina Cxx (both non-generated
bindings).
src/bin/eolian_cxx: The eolian_cxx program.
src/lib/eolian_cxx: A header-only library that implements the C++ code
generation that binds the .eo classes.
=Examples=
src/examples/eolian_cxx/eolian_cxx_simple_01.cc: The simplest example,
it just uses some "dummy" generated C++ classes.
src/examples/eolian_cxx/eolian_cxx_inherit_01.cc: Illustrates how
pure C++ classes inherit from .eo generated classes.
src/examples/evas/evas_cxx_rectangle.cc: More realistic example using
the generated bindings Evas Cxx. Still a bit shallow because we don't
have full fledged .eo descriptions yet, but will be improved.
=Important=
The generated code is not supported and not a stable API/ABI. It is
here to gather people interest and get review before we set things in
stone for release 1.11.
@feature
Reviewers: cedric, smohanty, raster, stefan_schmidt
CC: felipealmeida, JackDanielZ, cedric, stefan
Differential Revision: https://phab.enlightenment.org/D805
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
First step to get the examples compiling output in a useful state.
With all the warning noise one would never see the important messages.
If you add new code please make sure its warning free.
Summary: The warning was "format not a string literal and no format arguments [-Wformat-security]".
Test Plan: gcc -o evas-box evas-box.c `pkg-config --libs --cflags evas ecore ecore-evas eina`
Reviewers: singh.amitesh, seoz, stefan_schmidt
CC: cedric, stefan_schmidt
Differential Revision: https://phab.enlightenment.org/D585
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
The goal of this library is to make the life of C++ developers easier
when having to manipulate Eina datatype by providing a layer to abstract
those data type in C++. Check examples for now. Documentation will come
soon, but we are pushing that rather sooner to get feedback on those bindings.
As you will notice, this library is just composed of headers. There is no .so
and we do think it is better this way. Reducing ABI and API stability issue for
applications developers who are the primary target of this binding.
Also please note that you will need to have C++11 to use this binding.
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Being annoyed by different types of eina critical macros - CRI, CRIT,
CRITICAL -, I concluded to unify them to one. Discussed on IRC and
finally, CRI was chosen to meet the consistency with other macros -
ERR, WRN, INF, DBG - in terms of the number of characters.
If there is any missing bits, please let me know.
Some commits to port emotion to GStreamer 1.0 and implement some missing features,
clean up code a bit and fix some bugs on the way.
This works as good as the 0.10 code for me now with the emotion examples,
just the Samsung hardware specific code is commented out. This should be
ported by someone who has such hardware, and also in a clean way now that
GStreamer since 1.0 has features to handle all this properly.
There's still a lot of potential to clean things up and fix many bugs, and also
to implement zerocopy rendering. But those are for later if there's actual
interest in this at all.
Commits:
- Update configure checks and ecore example to GStreamer 1.0
- Initial port of emotion to GStreamer 1.0
- Samsung specific code commented out, should be ported by someone
with the hardware.
- Return GST_FLOW_FLUSHING when the sink is unlocked
- Remove unused GSignal from the sink
- Use GstVideoInfo to store the format details inside the sink
- Add support for pixel-aspect-ratio
- Store video format information in GstVideoInfo for the different video streams
- Use GstAudioInfo to store the audio format information
- Remove some unused defines
- Header cleanup
- Implement initial support for GstNavigation interface
- Implement setting of audio/video channel
Reviewers: cedric
CC: cedric
Differential Revision: https://phab.enlightenment.org/D387
Signed-off-by: Cedric BAIL <cedric.bail@samsung.com>
positional arguments must appear at the end of the description array
(after the last option) and should have a metavar set and not have
shortname or longname. Simple, elegant and fit :-)
There is a new function to parse the positional arguments,
ecore_getopt_parse_positional() because we may want to not try to
parse them in the case of a quit-option such as --help, --license,
--copyright, --version or some user-defined action. This avoids us
producing errors of missing positional arguments when printing help
and adds some flexibility as well.
This should make Tasn happy :-)
This makes the clipper colors correct and also gets rid of the
following error message spam:
ERR..._color_set() Evas only handles pre multiplied colors!
Fixes T557
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
I added EET_DATA_DESCRIPTOR_ADD_MAPPING_BASIC because I need basic types in unions, and EET_DATA_DESCRIPTOR_ADD_MAPPING is only for structs.
I also modified the example with a float and a string.
Reviewers: cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D313
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
We can't use ECORE_CON_LIBS at the examples/ "make" context
since it defines libraries relative to the src/ directory
(e.g. lib/ecore/libecore.la). Use ECORE_CON_COMMON_LDADD instead.
This fixes the following link error with ecore_fd_handler_gnutls_example
when the project is configured with --with-crypto=gnutls:
libtool: link: cannot find the library `lib/ecore/libecore.la'
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
Only specify ecore_pipe_gstreamer_example in EXTRA_PROGRAMS inside the
HAVE_GSTREAMER makefile guard.
Fixes: https://phab.enlightenment.org/T423
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
input_attach, input_detach, format_set, and source_set now return an
Eina_Bool
Tests, examples and edje_multisense adapted
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
Width and height should be swapped when the screen is rotated by 90 or
270 degrees.
Additionally, add a command to the ecore_evas_window_sizes_example which
returns the screen geometry.
Implement ecore_audio_input_speed_set() in playback example
Fix volume limit off-by-one check while I'm at it
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
I add new example related with this. (ecore_evas_extn_socket & plug example)
ecore extn use this infrasturcture, server app and client app can communicate each other
later, this can be used to contorl access message
SVN revision: 83942
it was failing:
- leaving missing objects (.edj, .la)
- eo was not building its examples automatically with --enable-always-build-examples
- make dist with '--enable-always-build-examples' was not including 'src/examples'
plus lots of ignored files due test changes.
SVN revision: 82894
There's no reason to keep a msg after it was sent. Before this patch we
had edbus_service_signal_send() unref'ing its msg and all the others
not. Also, several users (particularly the edbus_proxy_send() ones) were
forgetting to unref the msg.
This patch makes all these methods unref the message after it has been
succesfully sent:
- edbus_connection_send()
- edbus_object_send()
- edbus_proxy_send()
- edbus_service_signal_send()
SVN revision: 82807
- they have no 'all' rule, keep out of SUBDIRS
- they depend on 'all-am', the non-recursive target that builds everything.
- they do not need a directory on its own to declare nothing.x
SVN revision: 82689
this one was quite a huge work, but hopefully it's correct.
NOTES:
* removed vlc generic module, it should go into a separate package.
* gstreamer is enabled by default (see --disable-gstreamer)
* xine is disabled by default (see --enable-gstreamer)
* generic is always built statically if supported
* gstreamer and xine can't be configured as static (just lacks command line options, build system supports it)
* v4l2 is enabled by default on linux if eeze is built (see --disable-v4l2)
* emotion_test moved to src/tests/emotion and depends on EFL_ENABLE_TESTS (--with-tests), but is still installed if enabled.
TODO (need your help!):
* fix warnings with gstreamer and xine engine
* call engine shutdown functions if building as static
* remove direct usage of PACKAGE_*_DIR and use eina_prefix
* add eina_prefix checkme file as evas and others
* add support for $EFL_RUN_IN_TREE
* create separate package for emotion_generic_modules
* check docs hierarchy (doxygen is segv'in here)
SVN revision: 82501
Tests are disabled by default, but they should be mandatory for
distcheck. So should be examples, we should have them to at least
compile.
As there is no way to force "make distcheck" to run "make examples",
I've created --enable-always-build-examples to make examples regular
noinst_PROGRAMS, being always compiled. distcheck will use that
option.
SVN revision: 82276
if use BUILT_SOURCES it will always generate those files, and their
requirement codegen.edj, even if examples were not to be built.
make will automatically build the files if there are rules to do so,
we just have to clean them.
SVN revision: 82275
Carefully compared 'svn export' and 'make dist' results and couple of
files were missing.
Changes:
* Makefile.am: removed all .pc from EXTRA_DIST, we shouldn't
distribute them here as they will contain ./configure data such as
install location.
* src/Makefile.am: moved all if-endif to files, otherwise EXTRA_DIST
won't work properly. We must EXTRA_DIST outside of the if-endif
block.
* static_libs/liblinebreak: removed couple of unused files.
SVN revision: 82241
this is still in progress, mostly the multisense stuff is pending.
it seems that when we merge ecore_audio in edje the libremix and
similar are gone, at least from Edje, and will be in ecore_audio
itself (or pulseaudio).
Changes:
* __UNUSED__ to EINA_UNUSED
* binaries (epp, embryo_cc, edje_cc) now consider EFL_RUN_IN_TREE and
will assume the binaries are still not installed, running from
build tree location (needs more testing, maybe doesn't work with
srcdir != builddir, still doesn't solve cross compile builds)
SVN revision: 82139
it's useful to copy file from one place to another and this will be
used in eio' s implementation.
NOTE: did not use mmap here as mmap faults may be cumbersome to handle
(Eina_File itself does that, but in a nasty way) and the
implementation would be severely different as there is no Eina_File
from FD, and there is no way to inject custom memory/fd into the
Eina_File's fault handling. The performance would not be that
different anyways and the splice() is already in there for systems
with good performance (read: Linux).
SVN revision: 81942
- remove EFL_LIBS and EFL_CFLAGS, use per-lib values that inherit
from EFL (general)
- add NAME_LDFLAGS and EFL_LDFLAGS for linker flags.
- LDADD (binaries) now use NAME_LDFLAGS instead of NAME_LIBS, as they
link to libname.la and that will pull in the libtool dependencies
SVN revision: 81915
Give it sound files (ogg, wav, not mp3) as parameter or
"tone:freq=<f>,duration=<dur_in_s>" to play a lovely sine wave
* '<' and '>' seek forward and backward
* '+' and '-' change the volume
* Space toggles pause
* Shows information for the song (remaining, %)
* (Un)loop a song with 'l'
* 'n' - Next song
* 'm' - Next song simultaneous to current
* Volume can be set from 0 - 150%
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
SVN revision: 81001
Including ECORE_LIBS in LDADD is not enough, we have to include the
relevant libs from efl as well (eina, evas, ...)
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
SVN revision: 80260
This caused automake to generate a faulty Makefile, which in turn caused
compilation to fail.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
SVN revision: 79345
I can't be sure that distcheck is fixed as the check of eet is failing.
I've disable the run of the eina test for now as it is *very* long. I'll
re-enable it once eet check is running flawlessly
SVN revision: 76772