David Odin <[EMAIL PROTECTED]> writes:

> > Actually the plan was to let the plug-in previews respect the settings
> > from gimprc that already exist:
> > 
> >   (transparency-size medium-checks)
> > 
> >      Sets the size of the checkerboard used to display  transparency.
> >      Possible  values  are  small-checks,  medium-checks  and  large-
> >      checks.
> > 
> >   (transparency-type gray-checks)
> > 
> >      Sets the manner in which transparency is  displayed  in  images.
> >      Possible  values  are  light-checks,  gray-checks,  dark-checks,
> >      white-only, gray-only and black-only.
> >
>   How hard would this be to implement?

It would involve two changes:

(1) Add transparency-size and transparency-type properties to
    GimpPreviewArea and use them when drawing the checkerboard.
(2) Somehow get the preferences to the plug-in.

Step 1 should be pretty much straight-forward. The properties can be
copied more or less directly from GimpDisplayConfig (app/config).
Checkerboard rendering will become slightly more complex but I don't
expect any noticeable slowdown. The code has still some room for
optimizations anyway.

There are two possibilities to implement step 2. Either we add a PDB
API to access the checkerboard settings:

  gimp_gimprc_get_transparency_type()  ??
  gimp_gimprc_get_transparency_size()  ??

or (and I'd prefer that), we pass these settings to the plug-in in the
GPConfig message. This is a message that is sent to each plug-in when
it is started. We handle this in libgimp and allow the plug-in to
access the settings using a simple API. See for example
gimp_show_tool_tips() or gimp_display_name().

Using the config message is definitely the prefered way of doing this
but unfortunately we are completely braindead and didn't add any
padding to the GPConfig struct :( However, there's still hope but
things are becoming ugly now. Readers with a weak stomach, please
leave now...

The GPConfig struct contains an unused member which is "gamma". This
is a double and IIRC a double is guaranteed to be always 8 bytes. So
we could remove "gamma" and replace it with two 32bit integers and use
those for the transparency settings. We could even squeeze the
transparency settings into less than 8 bytes and keep the remaining
bytes for future use. Might become useful pretty soon, for example as
a way to pass whether color management should be enabled or disabled.

Can anyone think of better ways to do this? Are there any strong
objections against the ugly hack I outlined above? Did I overlook
something (like for example platforms where a gdouble is not 8 bytes)?

Gimp-developer mailing list

Reply via email to