[Gimp-developer] Extending GPConfig (was: Should the checkerboard be linked to the window or to the image?)

2004-09-02 Thread Michael Natterer
Sven Neumann [EMAIL PROTECTED] writes:

 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)?

When looking at the struct:

struct _GPConfig
{
  guint32  version;
  guint32  tile_width;
  guint32  tile_height;
  gint32   shm_ID;
  gdouble  gamma;
  gint8install_cmap;
  gint8show_tool_tips;
  gint32   min_colors;
  gint32   gdisp_ID;
  gchar   *app_name;
  gchar   *wm_class;
  gchar   *display_name;
  gint32   monitor_number;
};

I see two options: 

- using the place gdouble gamma uses.
- using the two unused bytes after gint8 show_tool_tips.

I'd suggest we do both and change the struct to:

struct _GPConfig
{
  guint32  version;
  guint32  tile_width;
  guint32  tile_height;
  gint32   shm_ID;
  gint8gimp_reserved_1;
  gint8gimp_reserved_2;
  gint8gimp_reserved_3;
  gint8gimp_reserved_4;
  gint8gimp_reserved_5;
  gint8gimp_reserved_6;
  gint8gimp_reserved_7;
  gint8gimp_reserved_8;
  gint8install_cmap;
  gint8show_tool_tips;
  gint8gimp_reserved_9;
  gint8gimp_reserved_10;
  gint32   min_colors;
  gint32   gdisp_ID;
  gchar   *app_name;
  gchar   *wm_class;
  gchar   *display_name;
  gint32   monitor_number;
};

Which should be binary compatible on all platforms.

ciao,
--mitch
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer


Re: [Gimp-developer] Extending GPConfig (was: Should the checkerboard be linked to the window or to the image?)

2004-09-02 Thread Manish Singh
On Thu, Sep 02, 2004 at 08:08:23PM +0200, Michael Natterer wrote:
 struct _GPConfig
 {
   guint32  version;
   guint32  tile_width;
   guint32  tile_height;
   gint32   shm_ID;
   gdouble  gamma;
   gint8install_cmap;
   gint8show_tool_tips;
   gint32   min_colors;
   gint32   gdisp_ID;
   gchar   *app_name;
   gchar   *wm_class;
   gchar   *display_name;
   gint32   monitor_number;
 };
 
 I see two options: 
 
 - using the place gdouble gamma uses.
 - using the two unused bytes after gint8 show_tool_tips.
 
 I'd suggest we do both and change the struct to:
 
 struct _GPConfig
 {
   guint32  version;
   guint32  tile_width;
   guint32  tile_height;
   gint32   shm_ID;
   gint8gimp_reserved_1;
   gint8gimp_reserved_2;
   gint8gimp_reserved_3;
   gint8gimp_reserved_4;
   gint8gimp_reserved_5;
   gint8gimp_reserved_6;
   gint8gimp_reserved_7;
   gint8gimp_reserved_8;
   gint8install_cmap;
   gint8show_tool_tips;
   gint8gimp_reserved_9;
   gint8gimp_reserved_10;
   gint32   min_colors;
   gint32   gdisp_ID;
   gchar   *app_name;
   gchar   *wm_class;
   gchar   *display_name;
   gint32   monitor_number;
 };
 
 Which should be binary compatible on all platforms.

Sounds good, and gimp_gamma should return 1.0 always (and be marked as
deprecated).

-Yosh
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer