colorscale: Drop the Private struct

This commit is contained in:
Matthias Clasen 2020-09-19 14:26:48 -04:00
parent 6b708e9b60
commit ec46900f06
2 changed files with 38 additions and 64 deletions

View File

@ -35,12 +35,19 @@
#include <math.h>
typedef struct
struct _GtkColorScale
{
GtkScale parent_instance;
GdkRGBA color;
GtkColorScaleType type;
GdkTexture *hue_texture;
} GtkColorScalePrivate;
};
typedef struct
{
GtkScaleClass parent_class;
} GtkColorScaleClass;
enum
{
@ -59,7 +66,7 @@ static void click_action (GtkGestureClick *gesture,
double y,
GtkWidget *scale);
G_DEFINE_TYPE_WITH_PRIVATE (GtkColorScale, gtk_color_scale, GTK_TYPE_SCALE)
G_DEFINE_TYPE (GtkColorScale, gtk_color_scale, GTK_TYPE_SCALE)
void
gtk_color_scale_snapshot_trough (GtkColorScale *scale,
@ -67,20 +74,19 @@ gtk_color_scale_snapshot_trough (GtkColorScale *scale,
int width,
int height)
{
GtkColorScalePrivate *priv = gtk_color_scale_get_instance_private (scale);
GtkWidget *widget = GTK_WIDGET (scale);
if (width <= 1 || height <= 1)
return;
if (priv->hue_texture &&
(width != gdk_texture_get_width (priv->hue_texture) ||
height != gdk_texture_get_height (priv->hue_texture)))
g_clear_object (&priv->hue_texture);
if (scale->hue_texture &&
(width != gdk_texture_get_width (scale->hue_texture) ||
height != gdk_texture_get_height (scale->hue_texture)))
g_clear_object (&scale->hue_texture);
if (priv->type == GTK_COLOR_SCALE_HUE)
if (scale->type == GTK_COLOR_SCALE_HUE)
{
if (!priv->hue_texture)
if (!scale->hue_texture)
{
GdkTexture *texture;
int stride;
@ -114,14 +120,14 @@ gtk_color_scale_snapshot_trough (GtkColorScale *scale,
bytes,
stride);
g_bytes_unref (bytes);
priv->hue_texture = texture;
scale->hue_texture = texture;
}
gtk_snapshot_append_texture (snapshot,
priv->hue_texture,
scale->hue_texture,
&GRAPHENE_RECT_INIT(0, 0, width, height));
}
else if (priv->type == GTK_COLOR_SCALE_ALPHA)
else if (scale->type == GTK_COLOR_SCALE_ALPHA)
{
graphene_point_t start, end;
const GdkRGBA *color;
@ -140,7 +146,7 @@ gtk_color_scale_snapshot_trough (GtkColorScale *scale,
_gtk_color_chooser_snapshot_checkered_pattern (snapshot, width, height);
color = &priv->color;
color = &scale->color;
gtk_snapshot_append_linear_gradient (snapshot,
&GRAPHENE_RECT_INIT(0, 0, width, height),
@ -179,7 +185,6 @@ static void
scale_constructed (GObject *object)
{
GtkColorScale *scale = GTK_COLOR_SCALE (object);
GtkColorScalePrivate *priv = gtk_color_scale_get_instance_private (scale);
GtkEventController *controller;
GtkShortcutTrigger *trigger;
GtkShortcutAction *action;
@ -192,7 +197,7 @@ scale_constructed (GObject *object)
shortcut = gtk_shortcut_new_with_arguments (trigger,
action,
"s",
priv->type == GTK_COLOR_SCALE_ALPHA
scale->type == GTK_COLOR_SCALE_ALPHA
? "a" : "h");
gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), shortcut);
gtk_widget_add_controller (GTK_WIDGET (scale), controller);
@ -205,28 +210,19 @@ scale_get_property (GObject *object,
GParamSpec *pspec)
{
GtkColorScale *scale = GTK_COLOR_SCALE (object);
GtkColorScalePrivate *priv = gtk_color_scale_get_instance_private (scale);
switch (prop_id)
{
case PROP_SCALE_TYPE:
g_value_set_int (value, priv->type);
g_value_set_int (value, scale->type);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
scale_set_type (GtkColorScale *scale,
GtkColorScaleType type)
{
GtkColorScalePrivate *priv = gtk_color_scale_get_instance_private (scale);
priv->type = type;
}
static void
scale_set_property (GObject *object,
guint prop_id,
@ -238,8 +234,9 @@ scale_set_property (GObject *object,
switch (prop_id)
{
case PROP_SCALE_TYPE:
scale_set_type (scale, (GtkColorScaleType)g_value_get_int (value));
scale->type = (GtkColorScaleType) g_value_get_int (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -272,9 +269,9 @@ click_action (GtkGestureClick *gesture,
static void
scale_finalize (GObject *object)
{
GtkColorScalePrivate *priv = gtk_color_scale_get_instance_private (GTK_COLOR_SCALE (object));
GtkColorScale *scale = GTK_COLOR_SCALE (object);
g_clear_object (&priv->hue_texture);
g_clear_object (&scale->hue_texture);
G_OBJECT_CLASS (gtk_color_scale_parent_class)->finalize (object);
}
@ -293,16 +290,13 @@ gtk_color_scale_class_init (GtkColorScaleClass *class)
g_param_spec_int ("scale-type", P_("Scale type"), P_("Scale type"),
0, 1, 0,
GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
}
void
gtk_color_scale_set_rgba (GtkColorScale *scale,
const GdkRGBA *color)
{
GtkColorScalePrivate *priv = gtk_color_scale_get_instance_private (scale);
priv->color = *color;
scale->color = *color;
gtk_widget_queue_draw (gtk_range_get_trough_widget (GTK_RANGE (scale)));
}

View File

@ -24,30 +24,10 @@ G_BEGIN_DECLS
#define GTK_TYPE_COLOR_SCALE (gtk_color_scale_get_type ())
#define GTK_COLOR_SCALE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_COLOR_SCALE, GtkColorScale))
#define GTK_COLOR_SCALE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_COLOR_SCALE, GtkColorScaleClass))
#define GTK_IS_COLOR_SCALE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_COLOR_SCALE))
#define GTK_IS_COLOR_SCALE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_COLOR_SCALE))
#define GTK_COLOR_SCALE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_COLOR_SCALE, GtkColorScaleClass))
typedef struct _GtkColorScale GtkColorScale;
typedef struct _GtkColorScaleClass GtkColorScaleClass;
struct _GtkColorScale
{
GtkScale parent_instance;
};
struct _GtkColorScaleClass
{
GtkScaleClass parent_class;
/* Padding for future expansion */
void (*_gtk_reserved1) (void);
void (*_gtk_reserved2) (void);
void (*_gtk_reserved3) (void);
void (*_gtk_reserved4) (void);
};
typedef struct _GtkColorScale GtkColorScale;
typedef enum
{
@ -55,16 +35,16 @@ typedef enum
GTK_COLOR_SCALE_ALPHA
} GtkColorScaleType;
GType gtk_color_scale_get_type (void) G_GNUC_CONST;
GtkWidget * gtk_color_scale_new (GtkAdjustment *adjustment,
GtkColorScaleType type);
void gtk_color_scale_set_rgba (GtkColorScale *scale,
const GdkRGBA *color);
GType gtk_color_scale_get_type (void) G_GNUC_CONST;
GtkWidget * gtk_color_scale_new (GtkAdjustment *adjustment,
GtkColorScaleType type);
void gtk_color_scale_set_rgba (GtkColorScale *scale,
const GdkRGBA *color);
void gtk_color_scale_snapshot_trough (GtkColorScale *scale,
GtkSnapshot *snapshot,
int width,
int height);
void gtk_color_scale_snapshot_trough (GtkColorScale *scale,
GtkSnapshot *snapshot,
int width,
int height);
G_END_DECLS