Commit Graph

10 Commits

Author SHA1 Message Date
Thiep Ha 829b9aacde efl.gfx.map: support for map points as multiples of 4
This patch adds support for map with more than 4 points.
However, we only support points with multiples of 4.
This also adds efl_gfx_map_point_count_set/get APIs to
set number of points.

@feature
2017-06-08 16:53:45 +09:00
Jean-Philippe Andre c6d6e13060 evas map: Rename raw_coord to coord_absolute
This is more in line with the other "absolute" APIs.
2017-05-12 12:02:24 +09:00
Jean-Philippe Andre 290f1893cd evas map: Reach feature parity with legacy API
I've done this by translating "Flip Page" to this new set of
EO APIs. In particular, absolute coordinates need to be used
in some calls, and the map needs to be calculated between
get and set operations.

This required an adjustment of the raw_coord API as the flip_page
code does some math after reading and then writing to the map.
Same for color. Those two properties now act like commands (ie.
like the other gfx map functions).

This also introduces a duplicate set of APIs to handle absolute
coordinates. Other solutions included:

 - Use an enum to specify the type of coordinates (but then the
   unit of cx,cy varies between non-unit relative position and
   pixel position. Also this adds an extra argument to all those
   function calls.

 - Pass a special value (an empty eo object) as the argument for
   pivot. Same remark about the unit as above. This way was
   deemed too confusing because of the weird object.

Those two options have been discarded after asking the opinion
of a few developers I could reach.

@feature
2017-05-11 18:02:31 +09:00
Jean-Philippe Andre 0a224da86f evas map: Introduce new API for maps (Efl.Gfx.Map)
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
2017-05-11 17:54:00 +09:00
Jean-Philippe Andre d111c6e1dd evas map: Replace EO APIs for populate with reset
Manual points population will eventually be useless as the
map API will become more like a transformation API, where
the current object geometry doesn't matter as much as which
transformation is applied to it.
2017-05-11 17:53:57 +09:00
Daniel Kolesa cb3f8304e0 eolian: change eo file syntax @virtual_pure -> @pure_virtual 2017-01-13 15:44:09 +01:00
Stefan Schmidt 237ab9c681 docs: efl_gfx: fill gaps in efl_gfx eo file documentation 2016-11-15 17:45:32 +01:00
Tom Hacohen c662934be8 Change the EFL to follow the new Eo rename. 2016-08-11 17:04:43 +01:00
Jean-Philippe Andre b13ae2fb82 evas: Implement evas map support in eo as a mixin
It relies a bit on evas legacy APIs and will only work on
evas objects (Efl.Canvas.Object) for now.

The main difference with Evas_Map is that there is no
separate map object, as the functions apply directly to
any canvas object.

For convenience, most functions will automatically populate
the map if there was no previous map info. While this may
be convenient, the object's size changes still need to
be tracked to update the map info.
2016-06-29 09:57:58 +09:00
Jean-Philippe Andre 6b8228ffbd evas: Move map to a separate mixin
Evas map is not translated to proper eo apis yet.
Efl.Canvas.Map will be a mixin implementing the evas map
API in a bindable API.
2016-06-29 09:12:26 +09:00