Re: [E-devel] RFC gradient clip
Gustavo wrote: I want to know how difficult would be to implement support for clip using gradient objects. ... ... We are willing to implement it if you give us some hints :-) Just thought I'd go back to this a bit here, and see if I can give you an idea of what's 'really' needed for this. The way Carsten setup clip-object semantics in evas is that any object can clip any other, and this can be arbitrarily iterated (since a clip object can have a clip object as well). Also, an object can clip any number of objects. It's a very nice idea, though with that kind of generality it's going to be tough to do anything involved very efficiently. However, the real problem in evas right now is just trying to get this implemented *at all*. The way the internals are set up, it's just not feasible.. and neither is doing *anything* much beyond what raster initially set things up for (eg. rotations or any kind of transforms on image objs.. just can't really be 'done' right now, no matter how 'easy' it might be to accomplish that with any of the gfx backends). I've pointed this out several times in the past, but let me explain in a bit more detail exactly why this situation exists and what's needed to correct it. The canvas level has a structure that holds the state for an evas object (eg. size, clip-obj, etc). This structure also has a pointer to any type specific state (ie. things for rects, images, etc). It also has a pointer to a 'render' function that is called whenever a given object needs to be drawn - this function is given for each specific type of object, and has a generic form, eg. draw something to some dst at some point... and such things. The way these object render functions are obtained is in turn via certain other 'engine functions' which are implemented by the various engines, ie. by the various rendering backends. The problem is that this set of 'engine functions' then defines an immediate mode rendering api which is ALL that the canvas can work with. It ties the canvas lib's capabilities to the specific rendering model/api that this set of interfaces defines. Unfortunately, the current such interfaces, ie. the rendering model.. is extremely limited. That's the source of all the problems that evas faces right now as far as extending its capabilities to allow for such things as obj transforms, clipping, texturing, and any number of other gfx aspects. Now, one can say Well, let's use eg. a vgfx rendering model, that's a powerful one..., or maybe say No, let's use a compositing rendering model, it's more flexible yet smaller..., or any number of other things.. and how is one to choose? (and the choice must make it easy for it to be realized with various other gfx libs. eg. xrender, gl, cairo, ...) Very easily: Let the canvas api be the rendering model, rather than impose some other. After all, what one wants is to modify 'obj' state, setup things, and draw the 'obj' as need be. What that means is that one needs to push all relevant canvas level 'object' state down to the engines level, and let things be implemented there as each 'engine' sees fit. Do this, and all the things everyone wants for evas to be able to do, and things that no one has maybe even thought of... will at least be feasible to *attempt* to implement. It simply isn't feasible or reasonable right now to even try otherwise. jose. - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] RFC gradient clip
On 5/15/07, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Gustavo wrote: I want to know how difficult would be to implement support for clip using gradient objects. ... ... We are willing to implement it if you give us some hints :-) Just thought I'd go back to this a bit here, and see if I can give you an idea of what's 'really' needed for this. good! :-) I won't reply every item as I want to wait for raster and possible others to step in and comment, so I can learn a bit more, but few things are: The way Carsten setup clip-object semantics in evas is that any object can clip any other, and this can be arbitrarily iterated (since a clip object can have a clip object as well). Also, an object can clip any number of objects. right now clip is all about rectangle operations to limit the visible are... or is anything else supported? It's a very nice idea, though with that kind of generality it's going to be tough to do anything involved very efficiently. However, the real problem in evas right now is just trying to get this implemented *at all*. The way the internals are set up, it's just not feasible.. and neither is doing *anything* much beyond what raster initially set things up for (eg. rotations or any kind of transforms on image objs.. just can't really be 'done' right now, no matter how 'easy' it might be to accomplish that with any of the gfx backends). I don't get what you mean with rotations/transitions. If clip object is rotated, then you'd consider it rotated and you're done, just like you get its current size. In order to minimize work, we could do regular bounding box clip and when to process scanlines, segment it into intervals, these to be segmented by the next clip object and so on... In the end you get the continuous segments you would blit/blend/transform (in the gradient case). I've pointed this out several times in the past, but let me explain in a bit more detail exactly why this situation exists and what's needed to correct it. The canvas level has a structure that holds the state for an evas object (eg. size, clip-obj, etc). This structure also has a pointer to any type specific state (ie. things for rects, images, etc). It also has a pointer to a 'render' function that is called whenever a given object needs to be drawn - this function is given for each specific type of object, and has a generic form, eg. draw something to some dst at some point... and such things. The way these object render functions are obtained is in turn via certain other 'engine functions' which are implemented by the various engines, ie. by the various rendering backends. The problem is that this set of 'engine functions' then defines an immediate mode rendering api which is ALL that the canvas can work with. It ties the canvas lib's capabilities to the specific rendering model/api that this set of interfaces defines. Unfortunately, the current such interfaces, ie. the rendering model.. is extremely limited. That's the source of all the problems that evas faces right now as far as extending its capabilities to allow for such things as obj transforms, clipping, texturing, and any number of other gfx aspects. Now, one can say Well, let's use eg. a vgfx rendering model, that's a powerful one..., or maybe say No, let's use a compositing rendering model, it's more flexible yet smaller..., or any number of other things.. and how is one to choose? (and the choice must make it easy for it to be realized with various other gfx libs. eg. xrender, gl, cairo, ...) Very easily: Let the canvas api be the rendering model, rather than impose some other. After all, what one wants is to modify 'obj' state, setup things, and draw the 'obj' as need be. ok, so far it makes sense. What that means is that one needs to push all relevant canvas level 'object' state down to the engines level, and let things be implemented there as each 'engine' sees fit. here I need some clarification. How do you see these in use? How do you see x, y, w, h, alpha already being in the engine help? Do this, and all the things everyone wants for evas to be able to do, and things that no one has maybe even thought of... will at least be feasible to *attempt* to implement. It simply isn't feasible or reasonable right now to even try otherwise. Well... moving everything to engine will leave us with just a common API and very different implementations, that will be really extensible, trade off is consistency, complexity and possible more. If we extend clip to be any polygon or curve (if we allow ellipses, circles, ... in future) and also enable cumulative transformations we can do many things without all that pain. The former is not difficult, since well known algorithms exists, the later is more related to implementation details, while I
Re: [E-devel] [e-users] Creating custom applications in e17
Daniel Stonier wrote: At the moment, I left click the top corner and create an icon. That makes a .desktop file in ~/.local/share/applications. That's all you really need do to create one. If you want to go further, you can text edit the .desktop file so you can customise it for your own applications menu or use with an icon theme. Once you have the .desktop file, just drag and drop from the configuration panel into the favourites menu. On 15/05/07, Nikolas Arend [EMAIL PROTECTED] wrote: Hi, in current e17 cvs, what is the preferred method of creating a new custom application (i.e. .desktop file), e.g. for the favorite apps menu? This functionality had been there before the transition to efreet, but I can't seem to find it now. Cheers,Nick. Yes, editing or creating a .desktop file by hand is of course an option, but tedious for many custom applications. This create icon functionality you describe is not there in current cvs, hence my question. There is an edit icon option in the popdown menu when you click on the window title bar, but that will only work if the application is already started. Creating .desktop entries for scripts or scripts starting another application with a gui is not possible (it was before). I'd vote for putting the possibility to easily create .desktop files via a gui back in, it'll make life easier for unexperienced users. Thanks, Nick. - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] RFC gradient clip
The way Carsten setup clip-object semantics in evas is that any object can clip any other, and this can be arbitrarily iterated (since a clip object can have a clip object as well). Also, an object can clip any number of objects. right now clip is all about rectangle operations to limit the visible are... or is anything else supported? Nothing else is 'supported' except plain rectangles, but it was intended as decribed.. and the canvas level does try. :) The way the internals are set up, it's just not feasible.. and neither is doing *anything* much beyond what raster initially set things up for (eg. rotations or any kind of transforms on image objs.. just can't really be 'done' right now, no matter how 'easy' it might be to accomplish that with any of the gfx backends). I don't get what you mean with rotations/transitions. If clip object is rotated, then you'd consider it rotated and you're done, just like you get its current size. In order to minimize work, we could do regular bounding box clip and when to process scanlines, segment it into intervals, these to be segmented by the next clip object and so on... In the end you get the continuous segments you would blit/blend/transform (in the gradient case). That's one way, software-wise. But it's just not the issue here. Do this, and all the things everyone wants for evas to be able to do, and things that no one has maybe even thought of... will at least be feasible to *attempt* to implement. It simply isn't feasible or reasonable right now to even try otherwise. Well... moving everything to engine will leave us with just a common API and very different implementations, that will be really extensible, trade off is consistency, complexity and possible more. If we extend clip to be any polygon or curve (if we allow ellipses, circles, ... in future) and also enable cumulative transformations we can do many things without all that pain. The former is not difficult, since well known algorithms exists, the later is more related to implementation details, while I know it's possible to do JIT and remove overhead of functions, just getting the operations on i686+software_x11, I'm not sure if it fits other sytems (GL?)... if we trade off memory in favor of performance we can always render to an auxiliary buffer and then do some operation (sub, add, or, and, mul, ...) while rendering clipped objs. That's my understandings so far, I don't know any engine or even the API that well, if I'm wrong just let me know. Well, you see.. the issue here isn't really about being able to implement things with software algorithms, or with some other gfx backend (gl or xrender or cairo or whatever). All that can be done. The problem is that evas just won't let you even try, not without extensively rewriting a large amount of things. Again, the way the internals are setup, every evas object calls a generic 'render' function to draw itself.. and this is an abstract kind of function since the rendering target and the rendering mechanisms can vary (different engines). But, this render function doesn't get directly implemented by the rendering backends. Instead, it uses a set of abstract 'engine functions' which are themselves what get implemented by each rendering backend. Those functions are what the canvas can use to draw an evas object.. and ONLY those functions. Let's take your example of an 'evas_object_transform_set' api function that you want. Ok, when you come to actually implement this, you will add some 'transform' to the evas object structure so that all objects keep the transform state. Then, when the canvas calls the object's render function it needs to draw the transformed object.. so in each object's render function you need to 'implement' the drawing of such a trnasformed object. But, you can only call 'engine functions' for this.. that's ALL you can work with. Suppose you then want to be able to set a 'filter' object on an evas object, eg. to blur, bumpmap, ... an object. Again, you will add such state to the evas object structure and in each object's render function you need to 'implement' the drawing of such an object with such a filter, and with the transform you wanted for the object before, and maybe the filter itself admits transforms, and maybe you have the object clipped by an image object and this image object has borders, and is itself transformed in some way, and possibly another filter is being applied to it, and the image object has another clip object which is a path which is and the object you're drawing is a rounded recangle, which is to be stroked with some color and filled with some gradient texture, and the gradient is a radial one, and is trasnformed in some way, and... And all this you have to 'implement' via the set of engine functions beacuse
Re: [E-devel] [e-users] Creating custom applications in e17
On 16/05/07, Nikolas Arend [EMAIL PROTECTED] wrote: Daniel Stonier wrote: At the moment, I left click the top corner and create an icon. That makes a .desktop file in ~/.local/share/applications. That's all you really need do to create one. If you want to go further, you can text edit the .desktop file so you can customise it for your own applications menu or use with an icon theme. Once you have the .desktop file, just drag and drop from the configuration panel into the favourites menu. On 15/05/07, Nikolas Arend [EMAIL PROTECTED] wrote: Hi, in current e17 cvs, what is the preferred method of creating a new custom application (i.e. .desktop file), e.g. for the favorite apps menu? This functionality had been there before the transition to efreet, but I can't seem to find it now. Cheers,Nick. Yes, editing or creating a .desktop file by hand is of course an option, but tedious for many custom applications. This create icon functionality you describe is not there in current cvs, hence my question. There is an edit icon option in the popdown menu when you click on the window title bar, but that will only work if the application is already started. Creating .desktop entries for scripts or scripts starting another application with a gui is not possible (it was before). I'd vote for putting the possibility to easily create .desktop files via a gui back in, it'll make life easier for unexperienced users. Im sure something will go back in eventually. Reconciling everything with freedesktop standards will take a little while though. - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] RFC gradient clip
I wrote: Let's take your example of an 'evas_object_transform_set' api function that you want. Ok, when you come to actually implement this, you will add some 'transform' to the evas object structure so that all objects keep the transform state. Then, when the canvas calls the object's render function it needs to draw the transformed object.. so in each object's render function you need to 'implement' the drawing of such a trnasformed object. But, you can only call 'engine functions' for this.. that's ALL you can work with. Suppose you then want to be able to set a 'filter' object on an evas object, eg. to blur, bumpmap, ... an object. Again, you will add such state to the evas object structure and in each object's render function you need to 'implement' the drawing of such an object with such a filter, and with the transform you wanted for the object before, and maybe the filter itself admits transforms, and maybe you have the object clipped by an image object and this image object has borders, and is itself transformed in some way, and possibly another filter is being applied to it, and the image object has another clip object which is a path which is and the object you're drawing is a rounded recangle, which is to be stroked with some color and filled with some gradient texture, and the gradient is a radial one, and is trasnformed in some way, and... And all this you have to 'implement' via the set of engine functions beacuse that's ALL that the canvas can access to do anything. That set of engine functions is the canvas' gfx api, not the actual engine gfx backend apis. See the problem? Fortunately, there is a way to do this. :) I should've added: and that involves a very large rewrite of the engine level internals. There is no way to avoid this -- if one wants evas to be able to do much of anything beyond what it now does. It's what I've been working on recently.. but it's a large amount of work - in itself not necessarily 'difficult', but a lot.. with many, many details. Not to mention that I had to work out a fair amount of other things, like a reasonable mechanism to do such clipping, and image fill-transforms, and textured stroke/fill of rounded rects, and try and figure out a better way to deal with styled-text (eg. something like what I did sometime back with imlib2 text-styling), and clean-up and improve a bunch of things... And it's going to take yet more time and work to finish off a lot of it still. jose. - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] RFC gradient clip
On 5/15/07, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: I should've added: and that involves a very large rewrite of the engine level internals. There is no way to avoid this -- if one wants evas to be able to do much of anything beyond what it now does. It's what I've been working on recently.. but it's a large amount of work - in itself not necessarily 'difficult', but a lot.. with many, many details. Not to mention that I had to work out a fair amount of other things, like a reasonable mechanism to do such clipping, and image fill-transforms, and textured stroke/fill of rounded rects, and try and figure out a better way to deal with styled-text (eg. something like what I did sometime back with imlib2 text-styling), and clean-up and improve a bunch of things... And it's going to take yet more time and work to finish off a lot of it still. Great you're already doing it, at least it will serve as reference if not integrated/used... is there any CVS/SVN/GIT/... we can follow and do some testing? -- Gustavo Sverzut Barbieri -- Jabber: [EMAIL PROTECTED] MSN: [EMAIL PROTECTED] ICQ#: 17249123 Skype: gsbarbieri Mobile: +55 (81) 9927 0010 - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] RFC gradient clip
Gustavo wrote: Great you're already doing it, at least it will serve as reference if not integrated/used... is there any CVS/SVN/GIT/... we can follow and do some testing? None except my local copy.. and as it's partly working, partly in the process of being worked out.. until I feel that it's something that's complete enough to be 'usable', it'll likely stay that way. It may well stay that way in any case, if there's little or no interest in having this in evas. In fact, given raster's recent remarks on this, I'm rather inclined to just let it go as of now. It'll have to wait til he decides to get to it instead. :) jose. - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] RFC gradient clip
On Tue, 15 May 2007, Gustavo Sverzut Barbieri wrote: On 5/15/07, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: I should've added: and that involves a very large rewrite of the engine level internals. There is no way to avoid this -- if one wants evas to be able to do much of anything beyond what it now does. It's what I've been working on recently.. but it's a large amount of work - in itself not necessarily 'difficult', but a lot.. with many, many details. Not to mention that I had to work out a fair amount of other things, like a reasonable mechanism to do such clipping, and image fill-transforms, and textured stroke/fill of rounded rects, and try and figure out a better way to deal with styled-text (eg. something like what I did sometime back with imlib2 text-styling), and clean-up and improve a bunch of things... And it's going to take yet more time and work to finish off a lot of it still. Great you're already doing it, at least it will serve as reference if not integrated/used... is there any CVS/SVN/GIT/... we can follow and do some testing? about that, why not doing a branch in cvs ? Branches exist for that kind of stuff. Vincent - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel