mirror of https://github.com/GNOME/gimp.git
Wiring the new dynamics object to brush core. Just a start for now.
This commit is contained in:
parent
f57d3ad02d
commit
56f59eab97
|
@ -40,6 +40,7 @@
|
|||
#include "gimpbrushcore.h"
|
||||
#include "gimpbrushcore-kernels.h"
|
||||
#include "gimppaintoptions.h"
|
||||
#include "gimpdynamicsoptions.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
@ -49,6 +50,7 @@
|
|||
enum
|
||||
{
|
||||
SET_BRUSH,
|
||||
SET_DYNAMICS,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -85,6 +87,9 @@ static TempBuf *gimp_brush_core_get_paint_area (GimpPaintCore *paint_core
|
|||
static void gimp_brush_core_real_set_brush (GimpBrushCore *core,
|
||||
GimpBrush *brush);
|
||||
|
||||
static void gimp_brush_core_real_set_dynamics (GimpBrushCore *core,
|
||||
GimpDynamicsOptions *dynamics);
|
||||
|
||||
static inline void rotate_pointers (gulong **p,
|
||||
guint32 n);
|
||||
static TempBuf * gimp_brush_core_subsample_mask (GimpBrushCore *core,
|
||||
|
@ -147,6 +152,16 @@ gimp_brush_core_class_init (GimpBrushCoreClass *klass)
|
|||
G_TYPE_NONE, 1,
|
||||
GIMP_TYPE_BRUSH);
|
||||
|
||||
core_signals[SET_DYNAMICS] =
|
||||
g_signal_new ("set-brush",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpBrushCoreClass, set_dynamics),
|
||||
NULL, NULL,
|
||||
gimp_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
GIMP_TYPE_DYNAMICS_OPTIONS);
|
||||
|
||||
object_class->finalize = gimp_brush_core_finalize;
|
||||
|
||||
paint_core_class->start = gimp_brush_core_start;
|
||||
|
@ -167,6 +182,7 @@ gimp_brush_core_init (GimpBrushCore *core)
|
|||
|
||||
core->main_brush = NULL;
|
||||
core->brush = NULL;
|
||||
core->dynamics = NULL;
|
||||
core->spacing = 1.0;
|
||||
core->scale = 1.0;
|
||||
core->angle = 1.0;
|
||||
|
@ -804,6 +820,21 @@ gimp_brush_core_real_set_brush (GimpBrushCore *core,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_brush_core_real_set_dynamics (GimpBrushCore *core,
|
||||
GimpDynamicsOptions *dynamics)
|
||||
{
|
||||
if (core->dynamics)
|
||||
{
|
||||
g_object_unref (core->dynamics);
|
||||
core->dynamics = NULL;
|
||||
}
|
||||
|
||||
core->dynamics = dynamics;
|
||||
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
gimp_brush_core_set_brush (GimpBrushCore *core,
|
||||
GimpBrush *brush)
|
||||
|
@ -814,6 +845,16 @@ gimp_brush_core_set_brush (GimpBrushCore *core,
|
|||
g_signal_emit (core, core_signals[SET_BRUSH], 0, brush);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_brush_core_set_dynamics (GimpBrushCore *core,
|
||||
GimpDynamicsOptions *dynamics)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_BRUSH_CORE (core));
|
||||
g_return_if_fail (dynamics == NULL || GIMP_IS_DYNAMICS_OPTIONS (dynamics));
|
||||
|
||||
g_signal_emit (core, core_signals[SET_DYNAMICS], 0, dynamics);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_brush_core_create_bound_segs (GimpBrushCore *core,
|
||||
GimpPaintOptions *paint_options)
|
||||
|
|
|
@ -43,6 +43,7 @@ struct _GimpBrushCore
|
|||
|
||||
GimpBrush *main_brush;
|
||||
GimpBrush *brush;
|
||||
GimpDynamicsOptions *dynamics;
|
||||
gdouble spacing;
|
||||
gdouble scale;
|
||||
gdouble angle;
|
||||
|
@ -97,8 +98,11 @@ struct _GimpBrushCoreClass
|
|||
|
||||
gboolean handles_transforming_brush;
|
||||
|
||||
void (* set_brush) (GimpBrushCore *core,
|
||||
GimpBrush *brush);
|
||||
void (* set_brush) (GimpBrushCore *core,
|
||||
GimpBrush *brush);
|
||||
void (* set_dynamics) (GimpBrushCore *core,
|
||||
GimpDynamicsOptions *brush);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -106,6 +110,10 @@ GType gimp_brush_core_get_type (void) G_GNUC_CONST;
|
|||
|
||||
void gimp_brush_core_set_brush (GimpBrushCore *core,
|
||||
GimpBrush *brush);
|
||||
|
||||
void gimp_brush_core_set_dynamics (GimpBrushCore *core,
|
||||
GimpDynamicsOptions *dynamics);
|
||||
|
||||
void gimp_brush_core_create_bound_segs (GimpBrushCore *core,
|
||||
GimpPaintOptions *options);
|
||||
|
||||
|
|
|
@ -25,10 +25,11 @@
|
|||
|
||||
#include "paint-types.h"
|
||||
|
||||
|
||||
|
||||
#include "core/gimp.h"
|
||||
#include "core/gimpimage.h"
|
||||
#include "core/gimpgradient.h"
|
||||
#include "core/gimppaintinfo.h"
|
||||
#include "core/gimpcurve.h"
|
||||
|
||||
#include "gimpdynamicsoptions.h"
|
||||
|
||||
|
@ -157,6 +158,11 @@ static void gimp_dynamics_options_get_property (GObject *object,
|
|||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
|
||||
static void gimp_dynamics_options_curves_init (GimpDynamicOutputOptions *dynamics);
|
||||
|
||||
static void gimp_dynamics_options_curves_finalize (GimpDynamicOutputOptions *dynamics);
|
||||
|
||||
|
||||
/*
|
||||
G_DEFINE_TYPE_WITH_CODE (GimpDynamicsOptions, gimp_dynamics_options, GIMP_TYPE_DATA,
|
||||
G_IMPLEMENT_INTERFACE (GIMP_TYPE_DOCKED,
|
||||
|
@ -361,12 +367,25 @@ gimp_dynamics_options_init (GimpDynamicsOptions *options)
|
|||
{
|
||||
|
||||
options->opacity_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
|
||||
gimp_dynamics_options_curves_init(options->opacity_dynamics);
|
||||
|
||||
options->hardness_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
|
||||
gimp_dynamics_options_curves_init(options->hardness_dynamics);
|
||||
|
||||
options->rate_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
|
||||
gimp_dynamics_options_curves_init(options->rate_dynamics);
|
||||
|
||||
options->size_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
|
||||
gimp_dynamics_options_curves_init(options->size_dynamics);
|
||||
|
||||
options->aspect_ratio_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
|
||||
gimp_dynamics_options_curves_init(options->aspect_ratio_dynamics);
|
||||
|
||||
options->color_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
|
||||
gimp_dynamics_options_curves_init(options->color_dynamics);
|
||||
|
||||
options->angle_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
|
||||
gimp_dynamics_options_curves_init(options->angle_dynamics);
|
||||
|
||||
}
|
||||
|
||||
|
@ -376,18 +395,72 @@ gimp_dynamics_options_finalize (GObject *object)
|
|||
{
|
||||
GimpDynamicsOptions *options = GIMP_DYNAMICS_OPTIONS (object);
|
||||
|
||||
gimp_dynamics_options_curves_finalize (options->opacity_dynamics);
|
||||
g_slice_free (GimpDynamicOutputOptions, options->opacity_dynamics);
|
||||
|
||||
gimp_dynamics_options_curves_finalize (options->hardness_dynamics);
|
||||
g_slice_free (GimpDynamicOutputOptions, options->hardness_dynamics);
|
||||
|
||||
gimp_dynamics_options_curves_finalize (options->rate_dynamics);
|
||||
g_slice_free (GimpDynamicOutputOptions, options->rate_dynamics);
|
||||
|
||||
gimp_dynamics_options_curves_finalize (options->size_dynamics);
|
||||
g_slice_free (GimpDynamicOutputOptions, options->size_dynamics);
|
||||
|
||||
gimp_dynamics_options_curves_finalize (options->aspect_ratio_dynamics);
|
||||
g_slice_free (GimpDynamicOutputOptions, options->aspect_ratio_dynamics);
|
||||
|
||||
gimp_dynamics_options_curves_finalize (options->color_dynamics);
|
||||
g_slice_free (GimpDynamicOutputOptions, options->color_dynamics);
|
||||
|
||||
gimp_dynamics_options_curves_finalize (options->angle_dynamics);
|
||||
g_slice_free (GimpDynamicOutputOptions, options->angle_dynamics);
|
||||
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dynamics_options_curves_init (GimpDynamicOutputOptions *dynamics)
|
||||
{
|
||||
dynamics->pressure_curve = g_object_new (GIMP_TYPE_CURVE,
|
||||
"name", "Pressure curve",
|
||||
NULL);
|
||||
dynamics->velocity_curve = g_object_new (GIMP_TYPE_CURVE,
|
||||
"name", "Velocity curve",
|
||||
NULL);
|
||||
dynamics->direction_curve = g_object_new (GIMP_TYPE_CURVE,
|
||||
"name", "Direction curve",
|
||||
NULL);
|
||||
dynamics->tilt_curve = g_object_new (GIMP_TYPE_CURVE,
|
||||
"name", "Tilt curve",
|
||||
NULL);
|
||||
dynamics->random_curve = g_object_new (GIMP_TYPE_CURVE,
|
||||
"name", "Random curve",
|
||||
NULL);
|
||||
dynamics->fade_curve = g_object_new (GIMP_TYPE_CURVE,
|
||||
"name", "Fade curve",
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dynamics_options_curves_finalize (GimpDynamicOutputOptions *dynamics)
|
||||
{
|
||||
g_object_unref(dynamics->pressure_curve);
|
||||
|
||||
g_object_unref(dynamics->velocity_curve);
|
||||
|
||||
g_object_unref(dynamics->direction_curve);
|
||||
|
||||
g_object_unref(dynamics->tilt_curve);
|
||||
|
||||
g_object_unref(dynamics->random_curve);
|
||||
|
||||
g_object_unref(dynamics->fade_curve);
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
gimp_dynamics_options_set_property (GObject *object,
|
||||
guint property_id,
|
||||
|
@ -811,7 +884,7 @@ gimp_dynamics_options_notify (GObject *object,
|
|||
}
|
||||
|
||||
GimpData *
|
||||
gimp_dynamics_options_new (GString *name)
|
||||
gimp_dynamics_options_new (const gchar *name)
|
||||
{
|
||||
GimpDynamicsOptions *options;
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ struct _GimpDynamicOutputOptions
|
|||
gboolean random;
|
||||
gboolean fade;
|
||||
|
||||
gdouble fade_length;
|
||||
|
||||
GimpCurve* pressure_curve;
|
||||
GimpCurve* velocity_curve;
|
||||
GimpCurve* direction_curve;
|
||||
|
@ -81,7 +83,7 @@ struct _GimpDynamicsOptionsClass
|
|||
|
||||
GType gimp_dynamics_options_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GimpData * gimp_dynamics_options_new (GString *name);
|
||||
GimpData * gimp_dynamics_options_new (const gchar *name);
|
||||
|
||||
GimpData * gimp_dynamics_get_standard (void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue