## gimpprotocol

gimpprotocol — The communication protocol between GIMP and it's plug-ins.

## Synopsis

    #define     GP_VERSION
    struct      GPConfig;
    struct      GPTileReq;
    struct      GPTileAck;
    struct      GPTileData;
    struct      GPParam;
    struct      GPParamDef;
    struct      GPProcRun;
    struct      GPProcReturn;
    struct      GPProcInstall;
    struct      GPProcUninstall;
    void        gp_init                         (void);
    gboolean    gp_has_init_write               (GIOChannel *channel,
                                                 gpointer user_data);
    gboolean    gp_quit_write                   (GIOChannel *channel,
                                                 gpointer user_data);
    gboolean    gp_config_write                 (GIOChannel *channel,
                                                 GPConfig *config,
                                                 gpointer user_data);
    gboolean    gp_tile_req_write               (GIOChannel *channel,
                                                 GPTileReq *tile_req,
                                                 gpointer user_data);
    gboolean    gp_tile_ack_write               (GIOChannel *channel,
                                                 gpointer user_data);
    gboolean    gp_tile_data_write              (GIOChannel *channel,
                                                 GPTileData *tile_data,
                                                 gpointer user_data);
    gboolean    gp_proc_run_write               (GIOChannel *channel,
                                                 GPProcRun *proc_run,
                                                 gpointer user_data);
    gboolean    gp_proc_return_write            (GIOChannel *channel,
                                                 GPProcReturn *proc_return,
                                                 gpointer user_data);
    gboolean    gp_temp_proc_run_write          (GIOChannel *channel,
                                                 GPProcRun *proc_run,
                                                 gpointer user_data);
    gboolean    gp_temp_proc_return_write       (GIOChannel *channel,
                                                 GPProcReturn *proc_return,
                                                 gpointer user_data);
    gboolean    gp_proc_install_write           (GIOChannel *channel,
                                                 GPProcInstall *proc_install,
                                                 gpointer user_data);
    gboolean    gp_proc_uninstall_write         (GIOChannel *channel,
                                                 GPProcUninstall *proc_uninstall,
                                                 gpointer user_data);
    gboolean    gp_extension_ack_write          (GIOChannel *channel,
                                                 gpointer user_data);

## Description

The communication protocol between GIMP and it's plug-ins.

## Details

### GP_VERSION

    #define GP_VERSION 0x000E

### struct GPConfig

    struct GPConfig {

      guint32 version;
      guint32 tile_width;
      guint32 tile_height;
      gint32  shm_ID;
      gdouble gamma;
      gint8   install_cmap;
      gint8   show_tool_tips;
      gint32  min_colors;
      gint32  gdisp_ID;
    };

### struct GPTileReq

    struct GPTileReq {

      gint32  drawable_ID;
      guint32 tile_num;
      guint32 shadow;
    };

### struct GPTileAck

    struct GPTileAck;

### struct GPTileData

    struct GPTileData {

      gint32   drawable_ID;
      guint32  tile_num;
      guint32  shadow;
      guint32  bpp;
      guint32  width;
      guint32  height;
      guint32  use_shm;
      guchar  *data;
    };

### struct GPParam

    struct GPParam {

      guint32 type;

      union
      {
        gint32    d_int32;
        gint16    d_int16;
        gint8     d_int8;
        gdouble   d_float;
        gchar    *d_string;
        gint32   *d_int32array;
        gint16   *d_int16array;
        gint8    *d_int8array;
        gdouble  *d_floatarray;
        gchar   **d_stringarray;
        GimpRGB   d_color;
        struct
        {
          gint32 x;
          gint32 y;
          gint32 width;
          gint32 height;
        } d_region;
        gint32 d_display;
        gint32 d_image;
        gint32 d_layer;
        gint32 d_channel;
        gint32 d_drawable;
        gint32 d_selection;
        gint32 d_boundary;
        gint32 d_path;
        struct
        {
          gchar    *name;
          guint32   flags;
          guint32   size;
          gpointer  data;
        } d_parasite;
        gint32 d_status;
      } data;
    };

### struct GPParamDef

    struct GPParamDef {

      guint32  type;
      gchar   *name;
      gchar   *description;
    };

### struct GPProcRun

    struct GPProcRun {

      gchar   *name;
      guint32  nparams;
      GPParam *params;
    };

### struct GPProcReturn

    struct GPProcReturn {

      gchar   *name;
      guint32  nparams;
      GPParam *params;
    };

### struct GPProcInstall

    struct GPProcInstall {

      gchar      *name;
      gchar      *blurb;
      gchar      *help;
      gchar      *author;
      gchar      *copyright;
      gchar      *date;
      gchar      *menu_path;
      gchar      *image_types;
      guint32     type;
      guint32     nparams;
      guint32     nreturn_vals;
      GPParamDef *params;
      GPParamDef *return_vals;
    };

### struct GPProcUninstall

    struct GPProcUninstall {

      gchar *name;
    };

### gp_init ()

    void        gp_init                         (void);

### gp_has_init_write ()

    gboolean    gp_has_init_write               (GIOChannel *channel,
                                                 gpointer user_data);

`channel` : |
`user_data` : |
Returns : |

### gp_quit_write ()

    gboolean    gp_quit_write                   (GIOChannel *channel,
                                                 gpointer user_data);

`channel` : |
`user_data` : |
Returns : |

### gp_config_write ()

    gboolean    gp_config_write                 (GIOChannel *channel,
                                                 GPConfig *config,
                                                 gpointer user_data);

`channel` : |
`config` : |
`user_data` : |
Returns : |

### gp_tile_req_write ()

    gboolean    gp_tile_req_write               (GIOChannel *channel,
                                                 GPTileReq *tile_req,
                                                 gpointer user_data);

`channel` : |
`tile_req` : |
`user_data` : |
Returns : |

### gp_tile_ack_write ()

    gboolean    gp_tile_ack_write               (GIOChannel *channel,
                                                 gpointer user_data);

`channel` : |
`user_data` : |
Returns : |

### gp_tile_data_write ()

    gboolean    gp_tile_data_write              (GIOChannel *channel,
                                                 GPTileData *tile_data,
                                                 gpointer user_data);

`channel` : |
`tile_data` : |
`user_data` : |
Returns : |

### gp_proc_run_write ()

    gboolean    gp_proc_run_write               (GIOChannel *channel,
                                                 GPProcRun *proc_run,
                                                 gpointer user_data);

`channel` : |
`proc_run` : |
`user_data` : |
Returns : |

### gp_proc_return_write ()

    gboolean    gp_proc_return_write            (GIOChannel *channel,
                                                 GPProcReturn *proc_return,
                                                 gpointer user_data);

`channel` : |
`proc_return` : |
`user_data` : |
Returns : |

### gp_temp_proc_run_write ()

    gboolean    gp_temp_proc_run_write          (GIOChannel *channel,
                                                 GPProcRun *proc_run,
                                                 gpointer user_data);

`channel` : |
`proc_run` : |
`user_data` : |
Returns : |

### gp_temp_proc_return_write ()

    gboolean    gp_temp_proc_return_write       (GIOChannel *channel,
                                                 GPProcReturn *proc_return,
                                                 gpointer user_data);

`channel` : |
`proc_return` : |
`user_data` : |
Returns : |

### gp_proc_install_write ()

    gboolean    gp_proc_install_write           (GIOChannel *channel,
                                                 GPProcInstall *proc_install,
                                                 gpointer user_data);

`channel` : |
`proc_install` : |
`user_data` : |
Returns : |

### gp_proc_uninstall_write ()

    gboolean    gp_proc_uninstall_write         (GIOChannel *channel,
                                                 GPProcUninstall *proc_uninstall,
                                                 gpointer user_data);

`channel` : |
`proc_uninstall` : |
`user_data` : |
Returns : |

### gp_extension_ack_write ()

    gboolean    gp_extension_ack_write          (GIOChannel *channel,
                                                 gpointer user_data);

`channel` : |
`user_data` : |
Returns : |

## See Also

libgimp-gimpwire