On Tue, Oct 28, 2008 at 11:11 AM, Jose Gonzalez <[EMAIL PROTECTED]> wrote:
>  Gustavo wrote:
>
>> On Tue, Oct 28, 2008 at 6:05 AM, Jose Gonzalez <[EMAIL PROTECTED]> wrote:
>>
>>>
>>>  Gustavo wrote:
>>>
>>>
>>>>>>
>>>>>> This code is part of our effort to unify common code into base libs,
>>>>>> where its worth to avoid duplicating code over and over again.
>>>>>>
>>>>>> With that in Evas, we can now expose it in Edje and use it in Guarana
>>>>>> and Elementary and possible any other toolkit. It uses Evas_Object's
>>>>>> size hints infrastructure, but can be extended to have its own
>>>>>> properties if one wish.
>>>>>>
>>>>>> Attached is a test case and example. You can try to hack your own
>>>>>> fancy layout function, it's it's generic and useful to others, add it
>>>>>> to evas as well (Like layout using a Bezier or any other path).
>>>>>>
>>>>>> People implementing Ecore Evas can now use layout "stack" and
>>>>>> ecore_evas_object_associate() to provide the "main window" concept,
>>>>>> just add your background and then your object to the evas_object_box
>>>>>> and associate this box to the window. If you want your background to
>>>>>> scale in both directions, just set it's aligns to -1.0 and -1.0.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>  This is the kind of thing that I hoped evas would avoid tending to,
>>>>> and
>>>>> yet both raster and gustavo seem prone to want to get into. :(
>>>>>  I know it's tempting to add more and more specialized layout/widgetry
>>>>> 'objects' to the core evas lib/api, but I think it's a big mistake for
>>>>> evas
>>>>> in the long run.
>>>>>
>>>>>  It's not hard to start extending evas *and* edje to allow for custom
>>>>> objects,
>>>>> even if at first all such object modules need to access evas internals.
>>>>> Adding
>>>>> these kinds of things, whether text-grid objs, or box objs, or table
>>>>> objs,
>>>>> etc..
>>>>> directly into the evas lib api is likely to become 'not a good idea'.
>>>>>
>>>>>
>>>>
>>>> this requires no access to internals, it's just a helper to avoid
>>>> spreading this code everywhere (e_box, guarana, elementary, etk...).
>>>>
>>>> the point is, raster always planned to have dynamic layout options in
>>>> Edje, so it's possible to specify in Edje if you want a stack,
>>>> vertical or horizontal layout and in code you add the objects. To add
>>>> this we need this kind of code. We could create yet another library
>>>> (like split esmart into edje independent and dependent code) and add
>>>> this there, make edje dependent on it, but it will be lot of work to
>>>> get a simple and useful code in.
>>>>
>>>> Since evas already have internal libs in it, at some point we can
>>>> create a libevas_utils and users can optionally link to it. That way
>>>> we keep things in a common place and avoid extra overhead.
>>>>
>>>> Our point is to do now what others should have done already: unify
>>>> stuff. Size hints, box, editable text block and these stuff should go
>>>> in Evas and make it easy to share stuff and easier to use EFL.  I
>>>> always hear, at least from ETK, that some things were re-done in ETK
>>>> just to work around some problems in Evas or Edje, I consider that
>>>> wrong, these stuff should be fixed there, and that's what we're doing.
>>>>
>>>>
>>>>
>>>
>>>  Ok, let me pose this this from a different view.. let's not worry about
>>> whether
>>> or not such 'layout' or 'widgetry' or 'special-purpose' or whatever kinds
>>> of
>>> objects
>>> should be added to the evas lib *api* -- I don't think they should in
>>> some
>>> cases,
>>> but that's partly incidental here.
>>>
>>>  There will be a need for such kinds of objects, and others... things
>>> like
>>> custom
>>> self-rendered objs (possibly relying on other libs and apsects that those
>>> libs allow)
>>> that are best implemented at the 'evas level' for efficiency reasons and
>>> whatnot.
>>> It's just a matter of where their implementation should be, how to
>>> realize
>>> them..
>>> and how to expose their apis.
>>>
>>>  So, let's discuss the underlying issue that I think is what should be
>>> addressed
>>> here - namely, that of evas' "extensibility" at least as far as object
>>> types
>>> goes.
>>>
>>>  Would one want things like "object modules", or libs of them, for giving
>>> evas
>>> that kind of of flexibility and extensibility at a low enough level?
>>>
>>>  Well, one could certainly obtain the kinds of objs you want here, quite
>>> trivially
>>> really, and have them implemented by some lib.. even by edje itself say.
>>> And
>>> you
>>> could have things like a 'cairo' or an 'svg' object (which for certain
>>> engines
>>> could be done more 'directly' then via having these render to an argb
>>> buffer), and
>>> you could have say an 'ogre3d' object, or maybe a 'gstreamer' obj, or a
>>> video obj,
>>> or many, many things... and not have to worry about these being 'added'
>>> to
>>> the
>>> evas lib's api, or imposing a hard dependence on them by evas.. and yet,
>>> they can be
>>> implemented at the 'evas' level (possibly having them need access to evas
>>> internals
>>> at first, as I quickly outlined in an erlier email, and maybe further
>>> refined into
>>> a more abstract mechanism later if desired).
>>>
>>>  So, as a question: Would this kind of extensibility for evas be
>>> something
>>> desired?
>>>
>>
>> of course yes
>>
>>
>>>
>>> What concrete things could you do with this?
>>>
>>
>> with your approach, that you're trying to push for some time now, you
>> can do anything you want, so lots of stuff.
>>
>>
>>
>
>  I haven't been trying to 'push' any particular approach.. just pointing out
> a simple
> one that can be realized now if desired. And frankly, I'm not sure I'd
> bother to
> work it out given your attitude on it. I sure as hell don't need it for
> anything.

Hey Jose, don't take this personally. Everybody tries to push their
own point of view everywhere, it's not something bad. You were trying
to push transforms that way you said, I liked the idea but thought it
would never happened, you proved me wrong and showed your code. Again,
I like this idea but don't see it happening, prove me wrong again! :-)


>>>  Is it a 'better' way to 'add' special/custom objs to evas then always
>>> worrying
>>> about whether or not to extend the evas lib's api with this or that 'one'
>>> useful obj?
>>>
>>
>> yes, seems that we all know about that. BUT, nothing done. Enesim was
>> the way to go for that and is halted. All in all, we need manpower to
>> provide this extensible and very optimized immediate rendering api so
>> we can allow other things to render to Canvas, and we also need to
>> change the rendering pipeline, because we need more hints in the case
>> objects can render to outside their bounding box.
>>
>>
>
>  No. This has nothing to do with enesim or any other immediate-mode
> rendering
> lib. It's about evas providing an extension mechanism of some sort - and
> here
> in particular it's about a simple mechanism that imposes no policy on the
> implementations.

As we already have an extension mechanism called smart, I'm sure
you're talking about objects that draw new primitives. If so, don't
play the fool, we know that for that we need to expose somehow the
drawing primitives and in that case a 'immediate rendering api".


>  As to 'hints' for objects to render outside their bounding box, if what you
> mean is for objects to draw outside their given rectangular description,
> then
> that's trivial to realize. No need for hints, the evas api just needs to
> expose
> getting an obj's canvas bounding rect (not its 'geometry'), and internally a
> new
> cur/prev extents state kept in the generic obj def. This is all fairly
> trivival
> and has been worked out.. one needs it for things like transformed objs, for
> thick stroked lines, etc. It's not particularly relevant here.

so good.


>> however I think you hijacked this thread :-P   While I think you have
>> a point with that, you have being pushing it for years, this tread was
>> about smart objects and with your api or not, this is still about
>> smart objects, not generally extending objects. As said by some, in
>> IRC or so, we could use a third party library (ie: split esmart in
>> edje-dependent and independent code).    I see in your other mail that
>> you worry about how to make this automatically exposed in Edje, just
>> like in any other system you need some kind of introspection, that's
>> simple, but needs time and nobody knows if it worth the pain (seems it
>> doesn't because nobody did it yet).
>>
>>
>
>
>  And so it shall remain. Do what you want.

again, don't take it personally... you're too dramatic these days. Be happy!

Best regards,

-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: [EMAIL PROTECTED]
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to