Alexia Death wrote:
> Gimp is large code wise. I opted for trying to understand the bits 
> I'm working on and not the whole thing at once ;)

That would only be the ultimate goal, of course. ;)

> I have been hacking in the event side of things since early this year
>  and I'm slowly starting to get a clue how things relate to each 
> other. Perhaps best for you to learn is to trace events stating from
>  display shell callbacks to the drawing code in various tools to get
>  the overview you need?

Thanks for the hint, I will try this approach. :)

> As I understand it now paint core handles most of painting related 
> stuff, different brush types are dervates of GimpBrush that overload
>  the functions in witch thy differ. Making a new brush type should
> not be that difficult, but integrating it to UI... That part is a
> mystery to me.

Maybe adding a new brush type wouldn't be difficult, but actually
implementing a component based "brush synthesizer" (to use David
Hodson's ARP 2500 analogy ;)) might be.

The problem with a selection of hardcoded brush types seems to be that
artists cannot really be creative with creating brushes since they would
have to be developers at the same time.

Where hard coding is required in the brush engine, it should be done
using dynamically loadable modules (or plug-ins, if you will).

The real power of such a system would come from combining the predefined
components in ways the developers had never thought of, which means not
just twisting knobs on predefined brushes, but also pushing the
components around on a filter stack and being able to configure which
parameters are affected by the filter (much like in David's proposal).

But I do understand that this would be quite a huge task (especially
with a GUI to match).

David Gowers schrieb:
> On Wed, Mar 12, 2008 at 9:21 AM, Alexia Death <[EMAIL PROTECTED] 
> wrote:
>> And dynamics,,, That's important too IMHO. Ability to bind any 
>> brush property to one or more motion dynamics, primary or derived 
>> (speed, tilt,pressure,angular speed, etc...) .
> Angular speed? Do you mean 'turning speed', otherwise known as 
> torque?

Angular speed actually is the correct term ;) (torque is what causes
angular acceleration). The angular speed would be obtained by
approximating the motion of the brush with a circular curve and
calculating the change of angle along this segment per time unit. It
actually would be a data source to be mapped, rather than a target.

Bill Skaggs wrote:
> That isn't easy.  I suggest, very strongly, that you start by picking
>  a single, relatively simple, type of change you would like to make, 
> instead of thinking in general terms. This will make it possible to 
> point you to the relevant parts of the code, and perhaps even to 
> describe how those parts work.  Once you have learned from this 
> experience, it will be much easier to go on to other things.

You are right of course. But it is difficult to suggest even simple
changes without having a good general understanding of the code (I am
just referring to the brush right now and how the chain progresses from
the actual input to the brush image appearing on the canvas).

Anyway, I think I am progressing, slowly, with a general idea of how
things work. I am currently trying to figure out:

1) How to add a new tool (say, my own hardcoded brush) including widgets
for setting options to the UI. The ChangeLog suggests that bits of code
have to be added all over the place (gimp-tools.c, gimp-paint.c for the
tool, where the UI gets added I have currently no idea).

2) What changes in the state if a new tool is selected.

3) How the tool is invoked. I think I have a general idea, that is, the
button_press/motion/button_release events get passed down from the
gimp_display_shell to tool_manager, to the active tool (brush,_tool,
which is a paint_tool in this case), to the paint_core, to the brush
core (paintbrush in this case).

4) How the brush gets applied to the canvas. Right now I think a mask is
obtained from whatever brush is selected and this is then pasted to the
canvas using the various options.

Souichi TAKASHIGE schrieb:
> I'm recently working on developing new PaintBrush extension 
> framework. It's on early development stage, but I'd like to get 
> comments about the framework.

I would be happy to play around with it, if it can be applied to a
current version of GIMP. :)

I do not quite understand what the blend brush actually does, but it
looks cool. ;)



Gimp-developer mailing list

Reply via email to