Gimp filters

De Banane Atomic
Révision datée du 6 avril 2020 à 20:40 par Nicolas (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Liens

Template

Bash.svg
# installation du plugin / filtre
gimptool-2.0 --install mon_filtre.c
# un exécutable sera créé dans ~/.gimp-2.8/plug-ins
mon_filtre.c
#include <libgimp/gimp.h>


/*  Local function prototypes  */
static void query (void);
static void run   (
    const gchar         *name,
    gint                nparams,
    const GimpParam     *param,
    gint                *nreturn_vals,
    GimpParam           **return_vals);
             
GimpPlugInInfo PLUG_IN_INFO =
{
    NULL,  /* init_proc  */
    NULL,  /* quit_proc  */
    query, /* query_proc */
    run,   /* run_proc   */
};

MAIN ()

static void query (void)
{
    static GimpParamDef args[] = {
        { GIMP_PDB_INT32,       "run-mode", "Run mode"          },
        { GIMP_PDB_IMAGE,       "image",    "Input image"       },
        { GIMP_PDB_DRAWABLE,    "drawable", "Input drawable"    }
    };

    gimp_install_procedure (
        "plug-in-hello",
        "Hello, world!",
        "Displays \"Hello, world!\" in a dialog",
        "David Neary",
        "Copyright David Neary",
        "2004",
        "_Hello world...",
        //"RGB*, GRAY*",
        "RGB*, GRAY*, INDEXED*",
        GIMP_PLUGIN,
        G_N_ELEMENTS (args), 0,
        args, NULL);

    //gimp_plugin_menu_register ("plug-in-hello", "/Filters/Misc");
    gimp_plugin_menu_register ("plug-in-hello", "<Image>/Filters/Misc/");
}

static void run (
    const gchar      *name,
    gint              n_params,
    const GimpParam  *param,
    gint             *nreturn_vals,
    GimpParam       **return_vals)
{
    static GimpParam  values[1];
    GimpPDBStatusType status = GIMP_PDB_SUCCESS;
    GimpRunMode       run_mode;
    GimpDrawable     *drawable;

    /* Setting mandatory output values */
    *nreturn_vals = 1;
    *return_vals  = values;

    values[0].type = GIMP_PDB_STATUS;
    values[0].data.d_status = status;

    /* Getting run_mode - we won't display a dialog if we are in NONINTERACTIVE mode */
    run_mode = param[0].data.d_int32;

    if (run_mode != GIMP_RUN_NONINTERACTIVE)
      g_message("Hello, world!\n");
    
    /*  Get the specified drawable  */
    drawable = gimp_drawable_get (param[2].data.d_drawable);

    gimp_progress_init ("Modification de l'image...");
    /* appel d'une fonction qui contient le code qui va modifier l'image */
    modification (drawable);

    gimp_displays_flush ();
    gimp_drawable_detach (drawable);
}

run mode

C.svg
static void run (
    const gchar      *name,
    gint              n_params,
    const GimpParam  *param,
    gint             *nreturn_vals,
    GimpParam       **return_vals)
{
    /* Getting run_mode */
    run_mode = param[0].data.d_int32;

    /* test si l'utilisateur a exécuté le filtre */
    if (run_mode != GIMP_RUN_NONINTERACTIVE)
Titre colonne 1 Titre colonne 2
GIMP_RUN_INTERACTIVE plug-in was executed from The GIMP
GIMP_RUN_NONINTERACTIVE plug-in was executed from a script
GIMP_RUN_WITH_LAST_VALS plug-in was executed from the "Repeat last filter" menu entry