Re: [Gegl-developer] Path to the GIMP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 21/01/04, Daniel Rogers wrote:
> 
> I don't see what this gets us.  What features does it enable us to add 
> to the gimp?  The most highly requested "big features" like high bit 
> depth support, CMYK and color management require us to change all the 
> pixel access stuff first.  The only thing I can see this as getting us 
> is a simplification of procedural layers.

Its just a way of doing things that is more gradual, its just
the difference between refactoring towards something and
re-writing it completely. Both are candidates you might choose.
Seems both approaches have drawbacks and advantages.

> OTOH, I am pretty sure that the graph machinery will have to change to 
> acomidate the new gegl image and all the requirements of acutally 
> passing image data around.  

Thats okay. Tell us what the changes are and we will make them. 
Some changes are expected to visit the ops in the order you may
want to do things for images. 

It may be more appropriate for some image ops to pull things
themselves rather than using external visitors as well.
We'll fix that up when we have some image ops to traverse.  

> my point is the gimp gets ported to GeglImage while gegl gets its ops 
> working and then, when gimp is finished is ready, move in GeglOps. 
> Moving the other way means that while Gegl is tuning its op stuff for 
> its new image model, gimp is grafting the ops into its old image model. 
>  These cross-purposes sound like they are oging to cause collisiosns.

So just to be clear, are you saying first fork a developer branch on gimp, 
introduce a GeglImage into gimp and make it so that it can first 
display these kinds of images, and then port all the ops 
to GeglOps, meanwhile merging back and forth changes from 
a main branch where any UI or other work is being done. 

So a ground up re-write, yes?

> >
> >Introducing a property or pad object that holds the connection across
> >from inputs to outputs solves at least a couple of tricky little graph 
> >manipulation issues: 
> 
> "pad" object?  If we are introducing a new object to describe the 
> connnection they we are not using gobject properties, and I am happy.

Yes you will be happy. At any rate it doesnt need airing
out anymore here too much. These are mostly small (but still
annoying) technical details for keeping track of connections. 

> >1) Issues with temporary ops and inserting these into the graph at 
> >a convenient spot. One place where this tends to come up is where 
> >you are passing images along and need to convert data types or 
> >color models in order to continue to the next step.
> 
> I don't see how this is tricky or needs any special machinery to do. 
> Inserting into a graph is easy.

Of course it is easy basically. Like I said this is not a 
big enough issue to even worry about much here. Its just 
some technical solutions to details. 

> >2) Issues with container nodes (ie Graphs), The
> >various children want to have their properties directly
> >connected to each other, while the node connections want to 
> >stay at the level of graphs. Here is an example where the 
> >innermost op on the left may be connected to the innermost
> >op on the right, and that is a property connection of
> >some kind. But the node connection sort of wants to stay 
> >at the level of the outermost container graphs on each side.
> 
> Again I do'nt see how this is tricky, nor do I see what your "pad" 
> objects do besides represent connections between graphs.   Recursively 
> traversing the graph to find the unconnected portions is not hard.

> >Now one solution is to "flatten" the graph before you
> >do any kind of traversal, but then you have to go and 
> >unflatten after a traversal.
> >
> >By using a property object that holds the connection, you  
> >let the properties stay directly connected and the node
> >connection stay at the level it wants to at all times 
> >too.
> 
> I do not see your point.  Tranversing the graph should not be hard.

Just forget I brought it up. Its not important. 
Its just easier now and these problems have gone away anyway.

> 
> Yes, but I don't see how these properties simplify things.  Why can't 
> these graph connections be represented more simply?  What do we gain my 
> using g_object properties, as you suggest?

Well, in general the more we use g_object properties for everything
the easier it is for language bindings overall, and such.

But we arent going to use gobject properties for the image 
connections anyway it seems...so ignore the next 
paragraph...

But if we did, you would have a high level data pulling 
machine that is similar to something like what drives 
maya or houdini. (Houdini uses it throughout its
entire product suite too, every single thing is 
connectable to everything else, and its really 
programmable and powerful I think) and you dont have to even 
specify your data passing format other than just what is already 
provided by writing g_object property wrappers. That means 
that someone writes data so that it is passed as a glib 
property and it is automatically now passed by the data 
passing machine we have written as well. It could 
just leverage the glib data types directly across the 
connection lines. 

>
> 
> I don't mind writing up my approach (though it eats into actual coding 
> time).  I don't think I am ready to propose a GeglImage header quite 
> yet, but I am close.
> 

Whenever you have it just put it into image directory and we'll
and start looking it over.

Im still trying to get to playing more with all the other 
stuff in image, hopefully soon.

Oh while I am thinking about it, try to use the parent_class 
static variable idiom for finding parent class and since that is 
what all the other gtk/gimp code uses... and use the same arguments 
for instance_init and class_init that the other gimp/gtk code uses too. 
Dont follow the lacage style so much use gimp style instead.  

I know its minor details...sorry.

Calvin

[Index of Archives]     [Yosemite News]     [Yosemite Photos]     [gtk]     [GIMP Users]     [KDE]     [Gimp's Home]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux