home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2002 April / pcpro0402.iso / essentials / graphics / Gimp / gimp-src-20001226.exe / src / gimp / plug-ins / gimpressionist / placement.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-08-31  |  4.5 KB  |  136 lines

  1. #ifdef HAVE_CONFIG_H
  2. #include "config.h"
  3. #else
  4. #define HAVE_DIRENT_H
  5. #define HAVE_UNISTD_H
  6. #endif
  7.  
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <gtk/gtk.h>
  11. #include <sys/types.h>
  12. #ifdef HAVE_UNISTD_H
  13. #include <unistd.h>
  14. #endif
  15. #include "gimpressionist.h"
  16. #include "ppmtool.h"
  17. #include <libgimp/stdplugins-intl.h>
  18.  
  19.  
  20. #define NUMPLACERADIO 2
  21.  
  22. GtkWidget *placeradio[NUMPLACERADIO];
  23. GtkWidget *placecenter = NULL;
  24. GtkObject *brushdensityadjust = NULL;
  25.  
  26.  
  27. void placechange(GtkWidget *wg, void *d, int num)
  28. {
  29.   int n;
  30.   if(wg) {
  31.     n = (long)d;
  32.     pcvals.placetype = n;
  33.   } else {
  34.     int i;
  35.     n = num;
  36.     for(i = 0; i < NUMPLACERADIO; i++)
  37.       if(i != n)
  38.     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(placeradio[i]), FALSE);
  39.       else
  40.     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(placeradio[n]), TRUE);
  41.   }
  42. }
  43.  
  44. void create_placementpage(GtkNotebook *notebook)
  45. {
  46.   GtkWidget *box0, *box1, *box2, *box3, *thispage;
  47.   GtkWidget *labelbox, *menubox;
  48.   GtkWidget *tmpw;
  49.   int i;
  50.  
  51.   labelbox = gtk_hbox_new (FALSE, 0);
  52.   tmpw = gtk_label_new (_("Placement"));
  53.   gtk_box_pack_start(GTK_BOX(labelbox), tmpw, FALSE, FALSE, 0);
  54.   gtk_widget_show_all(labelbox);
  55.  
  56.   menubox = gtk_hbox_new (FALSE, 0);
  57.   tmpw = gtk_label_new (_("Placement"));
  58.   gtk_box_pack_start(GTK_BOX(menubox), tmpw, FALSE, FALSE, 0);
  59.   gtk_widget_show_all(menubox);
  60.  
  61.   thispage = gtk_vbox_new(FALSE, 0);
  62.   gtk_container_set_border_width (GTK_CONTAINER (thispage), 5);
  63.   gtk_widget_show(thispage);
  64.  
  65.   box0 = gtk_vbox_new (FALSE, 0);
  66.   gtk_box_pack_start(GTK_BOX(thispage), box0,FALSE,FALSE,0);
  67.   gtk_widget_show (box0);
  68.  
  69.   box1 = gtk_hbox_new (FALSE, 0);
  70.   gtk_box_pack_start(GTK_BOX(box0), box1,FALSE,FALSE,0);
  71.   gtk_widget_show (box1);
  72.  
  73.   box2 = gtk_vbox_new (TRUE, 0);
  74.   gtk_box_pack_start(GTK_BOX(box1), box2,FALSE,FALSE,0);
  75.   gtk_widget_show (box2);
  76.  
  77.   tmpw = gtk_label_new( _("Placement:"));
  78.   gtk_box_pack_start(GTK_BOX(box2), tmpw,FALSE,FALSE,0);
  79.   gtk_widget_show (tmpw);
  80.  
  81.   box3 = gtk_vbox_new(FALSE,0);
  82.   gtk_box_pack_start(GTK_BOX(box1), box3,FALSE,FALSE, 10);
  83.   gtk_widget_show(box3);
  84.  
  85.   i = pcvals.placetype;
  86.  
  87.   placeradio[0] = tmpw = gtk_radio_button_new_with_label(NULL, _("Randomly"));
  88.   gtk_box_pack_start(GTK_BOX(box3), tmpw, FALSE, FALSE, 0);
  89.   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tmpw), FALSE);
  90.   gtk_widget_show(tmpw);
  91.   gtk_signal_connect(GTK_OBJECT(tmpw), "clicked",
  92.              (GtkSignalFunc)placechange, (void *)0);
  93.   gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw, _("Place strokes randomly around the image"), NULL);
  94.   if(i == 0)
  95.     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tmpw), TRUE);
  96.  
  97.   placeradio[1] = tmpw = gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(tmpw)), _("Evenly distributed"));
  98.   gtk_box_pack_start(GTK_BOX(box3), tmpw, FALSE, FALSE, 0);
  99.   gtk_widget_show(tmpw);
  100.   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tmpw), FALSE);
  101.   gtk_signal_connect(GTK_OBJECT(tmpw), "clicked",
  102.              (GtkSignalFunc)placechange, (void *)1);
  103.   gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw, _("The strokes are evenly distributed across the image"), NULL);
  104.   if(i == 1)
  105.     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tmpw), TRUE);
  106.  
  107.  
  108.   box1 = gtk_hbox_new (FALSE, 0);
  109.   gtk_box_pack_start(GTK_BOX(box0), box1,FALSE,FALSE,0);
  110.   gtk_widget_show (box1);
  111.  
  112.   tmpw = gtk_label_new( _("Stroke density:"));
  113.   gtk_box_pack_start(GTK_BOX(box1), tmpw,FALSE,FALSE,0);
  114.   gtk_widget_show (tmpw);
  115.  
  116.   brushdensityadjust = gtk_adjustment_new(pcvals.brushdensity, 1.0, 51.0, 1.0, 1.0, 1.0);
  117.   tmpw = gtk_hscale_new(GTK_ADJUSTMENT(brushdensityadjust));
  118.   gtk_widget_set_usize (GTK_WIDGET(tmpw), 150, 30);
  119.   gtk_scale_set_draw_value (GTK_SCALE (tmpw), TRUE);
  120.   gtk_scale_set_digits(GTK_SCALE (tmpw), 2);
  121.   gtk_box_pack_start (GTK_BOX (box1), tmpw, FALSE, FALSE, 10);
  122.   gtk_widget_show (tmpw);
  123.   gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw, _("The relative density of the brush strokes"), NULL);
  124.  
  125.   placecenter = tmpw = gtk_check_button_new_with_label( _("Centerize"));
  126.   gtk_box_pack_start(GTK_BOX(box0), tmpw, FALSE, FALSE, 0);
  127.   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tmpw), FALSE);
  128.   gtk_widget_show (tmpw);
  129.   gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw, _("Focus the brush strokes around the center of the image"), NULL);
  130.   if(pcvals.placecenter)
  131.     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tmpw), TRUE);
  132.  
  133.     
  134.   gtk_notebook_append_page_menu (notebook, thispage, labelbox, menubox);
  135. }
  136.