LAST_SIGNAL
};
-static void gtk_hsv_class_init (GtkHSVClass *class);
-static void gtk_hsv_init (GtkHSV *hsv);
static void gtk_hsv_destroy (GtkObject *object);
static void gtk_hsv_map (GtkWidget *widget);
static void gtk_hsv_unmap (GtkWidget *widget);
GtkDirectionType dir);
static guint hsv_signals[LAST_SIGNAL];
-static GtkWidgetClass *parent_class;
-
-/**
- * gtk_hsv_get_type:
- * @void:
- *
- * Registers the &GtkHSV class if necessary, and returns the type ID associated
- * to it.
- *
- * Return value: The type ID of the &GtkHSV class.
- **/
-GType
-gtk_hsv_get_type (void)
-{
- static GType hsv_type = 0;
-
- if (!hsv_type) {
- static const GTypeInfo hsv_info = {
- sizeof (GtkHSVClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) gtk_hsv_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (GtkHSV),
- 0, /* n_preallocs */
- (GInstanceInitFunc) gtk_hsv_init,
- };
-
- hsv_type = g_type_register_static (GTK_TYPE_WIDGET, I_("GtkHSV"),
- &hsv_info, 0);
- }
-
- return hsv_type;
-}
+G_DEFINE_TYPE (GtkHSV, gtk_hsv, GTK_TYPE_WIDGET)
/* Class initialization function for the HSV color selector */
static void
gtk_hsv_class_init (GtkHSVClass *class)
{
+ GObjectClass *gobject_class;
GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkHSVClass *hsv_class;
GtkBindingSet *binding_set;
+ gobject_class = (GObjectClass *) class;
object_class = (GtkObjectClass *) class;
widget_class = (GtkWidgetClass *) class;
hsv_class = GTK_HSV_CLASS (class);
- parent_class = g_type_class_peek_parent (class);
-
object_class->destroy = gtk_hsv_destroy;
widget_class->map = gtk_hsv_map;
gtk_binding_entry_add_signal (binding_set, GDK_KP_Left, 0,
"move", 1,
G_TYPE_ENUM, GTK_DIR_LEFT);
+
+ g_type_class_add_private (gobject_class, sizeof (HSVPrivate));
}
/* Object initialization function for the HSV color selector */
gtk_hsv_init (GtkHSV *hsv)
{
HSVPrivate *priv;
+
+ priv = G_TYPE_INSTANCE_GET_PRIVATE (hsv, GTK_TYPE_HSV, HSVPrivate);
- priv = g_new0 (HSVPrivate, 1);
hsv->priv = priv;
-
+
GTK_WIDGET_SET_FLAGS (hsv, GTK_NO_WINDOW);
GTK_WIDGET_SET_FLAGS (hsv, GTK_CAN_FOCUS);
static void
gtk_hsv_destroy (GtkObject *object)
{
- GtkHSV *hsv;
-
- g_return_if_fail (GTK_IS_HSV (object));
-
- hsv = GTK_HSV (object);
-
- if (hsv->priv)
- {
- g_free (hsv->priv);
- hsv->priv = NULL;
- }
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
+ GTK_OBJECT_CLASS (gtk_hsv_parent_class)->destroy (object);
}
/* Default signal handlers */
hsv = GTK_HSV (widget);
priv = hsv->priv;
- GTK_WIDGET_CLASS (parent_class)->map (widget);
+ GTK_WIDGET_CLASS (gtk_hsv_parent_class)->map (widget);
gdk_window_show (priv->window);
}
gdk_window_hide (priv->window);
- GTK_WIDGET_CLASS (parent_class)->unmap (widget);
+ GTK_WIDGET_CLASS (gtk_hsv_parent_class)->unmap (widget);
}
/* Realize handler for the HSV color selector */
g_object_unref (priv->gc);
priv->gc = NULL;
- if (GTK_WIDGET_CLASS (parent_class)->unrealize)
- GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
+ if (GTK_WIDGET_CLASS (gtk_hsv_parent_class)->unrealize)
+ GTK_WIDGET_CLASS (gtk_hsv_parent_class)->unrealize (widget);
}
/* Size_request handler for the HSV color selector */
gdouble *s,
gdouble *v)
{
- HSVPrivate *priv;
int ihx, ihy, isx, isy, ivx, ivy;
double hx, hy, sx, sy, vx, vy;
double center;
- priv = hsv->priv;
-
compute_triangle (hsv, &ihx, &ihy, &isx, &isy, &ivx, &ivy);
center = GTK_WIDGET (hsv)->requisition.width / 2.0;
hx = ihx - center;
gdouble x,
gdouble y)
{
- HSVPrivate *priv;
double center;
double dx, dy;
double angle;
- priv = hsv->priv;
-
center = GTK_WIDGET (hsv)->requisition.width / 2.0;
dx = x - center;
dy = center - y;
{
HSVPrivate *priv;
- g_return_if_fail (hsv != NULL);
g_return_if_fail (GTK_IS_HSV (hsv));
g_return_if_fail (h >= 0.0 && h <= 1.0);
g_return_if_fail (s >= 0.0 && s <= 1.0);