title: How to use gimp_drawable_set_pixel()?
body: <p>I could like to set a pixel in GIMP, but I can't figure out how to specify the pixel value.</p>
  
  <p>According to the <a href="http://developer.gimp.org/api/2.0/libgimp/libgimp-gimpdrawable.html#gimp-drawable-set-pixel" rel="nofollow noreferrer">GIMP plugin API</a> it says:</p>
  
  <pre><code>gboolean            gimp_drawable_set_pixel             (gint32 drawable_ID,
                                                           gint x_coord,
                                                           gint y_coord,
                                                           gint num_channels,
                                                           const guint8 *pixel);
  </code></pre>
  
  <p>If I e.g. do:</p>
  
  <pre><code>  const guint8 *pixel;
    pixel = (guint8 *) 0;
    gboolean s;
    s = gimp_drawable_set_pixel (layer, 5, 5, 3, pixel);
    printf ("Was the pixel set?: %i", s);
  </code></pre>
  
  <p>The pixel is not set, and s is zero.</p>
  
  <p>Can anyone figure this one out?</p>
  
  <p>Lots of love,
  Louise</p>
  
  <p>This is the code I am using with Makefile:</p>
  
  <pre><code>#include &lt;libgimp/gimp.h&gt;
  
  #include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;string.h&gt;
  
  
  static void
  query (void)
  {
    static GimpParamDef args[] =
    {
      {
        GIMP_PDB_INT32,
        "run-mode",
        "Run mode"
      },
    };
  
    gimp_install_procedure (
      "plug-in-hello",
      "Hello, world!",
      "Displays \"Hello, world!\" in a dialog",
      "David Neary",
      "Copyright David Neary",
      "2004",
      "_Hello world...",
      NULL,
      GIMP_PLUGIN,
      G_N_ELEMENTS (args), 0,
      args, NULL);
  
    gimp_plugin_menu_register ("plug-in-hello",
                               "&lt;Image&gt;/Filters/Misc");
  }
  
  static void
  run (const gchar      *name,
       gint              nparams,
       const GimpParam  *param,
       gint             *nreturn_vals,
       GimpParam       **return_vals)
  {
    static GimpParam  values[1];
    GimpPDBStatusType status = GIMP_PDB_SUCCESS;
    GimpRunMode       run_mode;
    gint32            image;
    gint32            layer;
    gint32            display;
  
    /* 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;
  
    image = gimp_image_new (800, 600, GIMP_RGB);
    layer = gimp_layer_new (image,
                            "foo",
                            800, 600,
                            GIMP_RGBA_IMAGE,
                            100.0,
                            GIMP_NORMAL_MODE);
    gimp_image_add_layer (image, layer, 0);
  
  
    gboolean s;
    guint8 pixel[] = { 0xff, 0, 0, 0xff };
    s = gimp_drawable_set_pixel (layer, 5, 5, 4, (guint8 *)pixel );
    printf ("Was the pixel set?: %i", s);
  
    display = gimp_display_new (image);
  
    if (run_mode != GIMP_RUN_NONINTERACTIVE)
      g_message("Hello, world!\n");
  }
  
  GimpPlugInInfo PLUG_IN_INFO =
  {
    NULL,
    NULL,
    query,
    run
  };
  
  MAIN()
  </code></pre>
  
  <p>Makefile</p>
  
  <pre><code>CC = gcc
  CFLAGS = -std=c99 -O2 -Wall \
          -I/usr/include/gimp-2.0 \
          -I/usr/include/glib-2.0 \
          -I/usr/lib64/glib-2.0/include \
          -I/usr/include/gtk-2.0 \
          -I/usr/lib64/gtk-2.0/include \
          -I/usr/include/atk-1.0 \
          -I/usr/include/cairo \
          -I/usr/include/pango-1.0 \
          -I/usr/include/pixman-1 \
          -I/usr/include/freetype2 \
          -I/usr/include/libpng12  
  
  LDFLAGS = -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 \
            -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 \
            -lgimpbase-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 \
            -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 \
            -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 \
            -lgmodule-2.0 -lglib-2.0  
  
  files = main.o
  
  all: main
  
  main: $(files)
          $(CC) $(CFLAGS) $(files) $(LDFLAGS) -o main
  
  install:
          gimptool-2.0 --install main.c
  
  %.o: %.c Makefile
          $(CC) -c $(CFLAGS) $&lt;
  
  clean:
          rm -f *.o
          rm -f *~
          rm -f main
  
  .PHONY: all clean
  </code></pre>
  
  <p><strong>Update:</strong> The code is now corrected according to the comments, so now it works. It draws a red pixel.</p>