]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkruler.c
Adapt cast macros to standard.
[~andy/gtk] / gtk / gtkruler.c
index c1c997f481c1422d3a2e6cc97e87a0595ab5be67..e9481a921edbddf1399d3ab585b60c36a5a9bf59 100644 (file)
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
+
+/*
+ * Modified by the GTK+ Team and others 1997-1999.  See the AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ */
+
 #include "gtkruler.h"
 
+enum {
+  ARG_0,
+  ARG_LOWER,
+  ARG_UPPER,
+  ARG_POSITION,
+  ARG_MAX_SIZE
+};
 
 static void gtk_ruler_class_init    (GtkRulerClass  *klass);
 static void gtk_ruler_init          (GtkRuler       *ruler);
@@ -28,11 +43,16 @@ static void gtk_ruler_size_allocate (GtkWidget      *widget,
 static gint gtk_ruler_expose        (GtkWidget      *widget,
                                     GdkEventExpose *event);
 static void gtk_ruler_make_pixmap   (GtkRuler       *ruler);
-
+static void gtk_ruler_set_arg       (GtkObject      *object,
+                                    GtkArg         *arg,
+                                    guint           arg_id);
+static void gtk_ruler_get_arg       (GtkObject      *object,
+                                    GtkArg         *arg,
+                                    guint           arg_id);
 
 static GtkWidgetClass *parent_class;
 
-static GtkRulerMetric ruler_metrics[] =
+static const GtkRulerMetric ruler_metrics[] =
 {
   {"Pixels", "Pi", 1.0, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
   {"Inches", "In", 72.0, { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }, { 1, 2, 4, 8, 16 }},
@@ -40,25 +60,26 @@ static GtkRulerMetric ruler_metrics[] =
 };
 
 
-guint
-gtk_ruler_get_type ()
+GtkType
+gtk_ruler_get_type (void)
 {
-  static guint ruler_type = 0;
+  static GtkType ruler_type = 0;
 
   if (!ruler_type)
     {
-      GtkTypeInfo ruler_info =
+      static const GtkTypeInfo ruler_info =
       {
        "GtkRuler",
        sizeof (GtkRuler),
        sizeof (GtkRulerClass),
        (GtkClassInitFunc) gtk_ruler_class_init,
        (GtkObjectInitFunc) gtk_ruler_init,
-       (GtkArgSetFunc) NULL,
-        (GtkArgGetFunc) NULL,
+       /* reserved_1 */ NULL,
+        /* reserved_2 */ NULL,
+        (GtkClassInitFunc) NULL,
       };
 
-      ruler_type = gtk_type_unique (gtk_widget_get_type (), &ruler_info);
+      ruler_type = gtk_type_unique (GTK_TYPE_WIDGET, &ruler_info);
     }
 
   return ruler_type;
@@ -73,7 +94,10 @@ gtk_ruler_class_init (GtkRulerClass *class)
   object_class = (GtkObjectClass*) class;
   widget_class = (GtkWidgetClass*) class;
 
-  parent_class = gtk_type_class (gtk_widget_get_type ());
+  parent_class = gtk_type_class (GTK_TYPE_WIDGET);
+  
+  object_class->set_arg = gtk_ruler_set_arg;
+  object_class->get_arg = gtk_ruler_get_arg;
 
   widget_class->realize = gtk_ruler_realize;
   widget_class->unrealize = gtk_ruler_unrealize;
@@ -82,6 +106,15 @@ gtk_ruler_class_init (GtkRulerClass *class)
 
   class->draw_ticks = NULL;
   class->draw_pos = NULL;
+
+  gtk_object_add_arg_type ("GtkRuler::lower", GTK_TYPE_FLOAT,
+                          GTK_ARG_READWRITE, ARG_LOWER);
+  gtk_object_add_arg_type ("GtkRuler::upper", GTK_TYPE_FLOAT,
+                          GTK_ARG_READWRITE, ARG_UPPER);
+  gtk_object_add_arg_type ("GtkRuler::position", GTK_TYPE_FLOAT,
+                          GTK_ARG_READWRITE, ARG_POSITION);
+  gtk_object_add_arg_type ("GtkRuler::max_size", GTK_TYPE_FLOAT,
+                          GTK_ARG_READWRITE, ARG_MAX_SIZE);
 }
 
 static void
@@ -100,6 +133,61 @@ gtk_ruler_init (GtkRuler *ruler)
   gtk_ruler_set_metric (ruler, GTK_PIXELS);
 }
 
+static void
+gtk_ruler_set_arg (GtkObject  *object,
+                  GtkArg     *arg,
+                  guint       arg_id)
+{
+  GtkRuler *ruler = GTK_RULER (object);
+
+  switch (arg_id)
+    {
+    case ARG_LOWER:
+      gtk_ruler_set_range (ruler, GTK_VALUE_FLOAT (*arg), ruler->upper,
+                          ruler->position, ruler->max_size);
+      break;
+    case ARG_UPPER:
+      gtk_ruler_set_range (ruler, ruler->lower, GTK_VALUE_FLOAT (*arg),
+                          ruler->position, ruler->max_size);
+      break;
+    case ARG_POSITION:
+      gtk_ruler_set_range (ruler, ruler->lower, ruler->upper,
+                          GTK_VALUE_FLOAT (*arg), ruler->max_size);
+      break;
+    case ARG_MAX_SIZE:
+      gtk_ruler_set_range (ruler, ruler->lower, ruler->upper,
+                          ruler->position,  GTK_VALUE_FLOAT (*arg));
+      break;
+    }
+}
+
+static void
+gtk_ruler_get_arg (GtkObject  *object,
+                  GtkArg     *arg,
+                  guint       arg_id)
+{
+  GtkRuler *ruler = GTK_RULER (object);
+  
+  switch (arg_id)
+    {
+    case ARG_LOWER:
+      GTK_VALUE_FLOAT (*arg) = ruler->lower;
+      break;
+    case ARG_UPPER:
+      GTK_VALUE_FLOAT (*arg) = ruler->upper;
+      break;
+    case ARG_POSITION:
+      GTK_VALUE_FLOAT (*arg) = ruler->position;
+      break;
+    case ARG_MAX_SIZE:
+      GTK_VALUE_FLOAT (*arg) = ruler->max_size;
+      break;
+    default:
+      arg->type = GTK_TYPE_INVALID;
+      break;
+    }
+}
+
 void
 gtk_ruler_set_metric (GtkRuler      *ruler,
                      GtkMetricType  metric)
@@ -107,7 +195,7 @@ gtk_ruler_set_metric (GtkRuler      *ruler,
   g_return_if_fail (ruler != NULL);
   g_return_if_fail (GTK_IS_RULER (ruler));
 
-  ruler->metric = &ruler_metrics[metric];
+  ruler->metric = (GtkRulerMetric *) &ruler_metrics[metric];
 
   if (GTK_WIDGET_DRAWABLE (ruler))
     gtk_widget_queue_draw (GTK_WIDGET (ruler));
@@ -248,26 +336,15 @@ gtk_ruler_expose (GtkWidget      *widget,
     {
       ruler = GTK_RULER (widget);
 
-      gdk_draw_rectangle (ruler->backing_store,
-                         widget->style->bg_gc[GTK_STATE_NORMAL],
-                         TRUE, 0, 0,
-                         widget->allocation.width,
-                         widget->allocation.height);
-
       gtk_ruler_draw_ticks (ruler);
-
-      gtk_draw_shadow (widget->style, ruler->backing_store,
-                      GTK_STATE_NORMAL, GTK_SHADOW_OUT, 0, 0,
-                      widget->allocation.width,
-                      widget->allocation.height);
-
+      
       gdk_draw_pixmap (widget->window,
                       ruler->non_gr_exp_gc,
                       ruler->backing_store,
                       0, 0, 0, 0,
                       widget->allocation.width,
                       widget->allocation.height);
-
+      
       gtk_ruler_draw_pos (ruler);
     }