[gimp] app: Add type for dynamics output



commit 468b30b58557e7671cd917c3cebb8aeddc4e6dd8
Author: Alexia Death <alexiadeath gmail com>
Date:   Mon Feb 22 00:41:55 2010 +0200

    app: Add type for dynamics output

 app/core/core-enums.c         |   43 ++++++++++++++++++++
 app/core/core-enums.h         |   17 ++++++++
 app/core/gimpdynamics.c       |   88 +++++++++++++++++++++++++++++++++++------
 app/core/gimpdynamics.h       |    3 +
 app/core/gimpdynamicsoutput.c |   18 ++++++++-
 app/core/gimpdynamicsoutput.h |    5 ++-
 6 files changed, 159 insertions(+), 15 deletions(-)
---
diff --git a/app/core/core-enums.c b/app/core/core-enums.c
index c87886c..69440c4 100644
--- a/app/core/core-enums.c
+++ b/app/core/core-enums.c
@@ -1303,6 +1303,49 @@ gimp_color_profile_policy_get_type (void)
   return type;
 }
 
+GType
+gimp_dynamics_output_type_get_type (void)
+{
+  static const GEnumValue values[] =
+  {
+    { GIMP_DYNAMICS_OUTPUT_OPACITY, "GIMP_DYNAMICS_OUTPUT_OPACITY", "opacity" },
+    { GIMP_DYNAMICS_OUTPUT_HARDNESS, "GIMP_DYNAMICS_OUTPUT_HARDNESS", "hardness" },
+    { GIMP_DYNAMICS_OUTPUT_RATE, "GIMP_DYNAMICS_OUTPUT_RATE", "rate" },
+    { GIMP_DYNAMICS_OUTPUT_SIZE, "GIMP_DYNAMICS_OUTPUT_SIZE", "size" },
+    { GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO, "GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO", "aspect-ratio" },
+    { GIMP_DYNAMICS_OUTPUT_COLOR, "GIMP_DYNAMICS_OUTPUT_COLOR", "color" },
+    { GIMP_DYNAMICS_OUTPUT_ANGLE, "GIMP_DYNAMICS_OUTPUT_ANGLE", "angle" },
+    { GIMP_DYNAMICS_OUTPUT_JITTER, "GIMP_DYNAMICS_OUTPUT_JITTER", "jitter" },
+    { GIMP_DYNAMICS_OUTPUT_SPACING, "GIMP_DYNAMICS_OUTPUT_SPACING", "spacing" },
+    { 0, NULL, NULL }
+  };
+
+  static const GimpEnumDesc descs[] =
+  {
+    { GIMP_DYNAMICS_OUTPUT_OPACITY, NC_("dynamics-output-type", "Opacity"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_HARDNESS, NC_("dynamics-output-type", "Hardness"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_RATE, NC_("dynamics-output-type", "Rate"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_SIZE, NC_("dynamics-output-type", "Size"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO, NC_("dynamics-output-type", "Aspect ratio"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_COLOR, NC_("dynamics-output-type", "Color"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_ANGLE, NC_("dynamics-output-type", "Angle"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_JITTER, NC_("dynamics-output-type", "Jitter"), NULL },
+    { GIMP_DYNAMICS_OUTPUT_SPACING, NC_("dynamics-output-type", "Spacing"), NULL },
+    { 0, NULL, NULL }
+  };
+
+  static GType type = 0;
+
+  if (G_UNLIKELY (! type))
+    {
+      type = g_enum_register_static ("GimpDynamicsOutputType", values);
+      gimp_type_set_translation_context (type, "dynamics-output-type");
+      gimp_enum_set_value_descriptions (type, descs);
+    }
+
+  return type;
+}
+
 
 /* Generated data ends here */
 
diff --git a/app/core/core-enums.h b/app/core/core-enums.h
index 1d34bdf..868f8a0 100644
--- a/app/core/core-enums.h
+++ b/app/core/core-enums.h
@@ -583,6 +583,23 @@ typedef enum  /*< pdb-skip >*/
   GIMP_COLOR_PROFILE_POLICY_CONVERT /*< desc="Convert to RGB workspace" >*/
 } GimpColorProfilePolicy;
 
+#define GIMP_TYPE_DYNAMICS_OUTPUT_TYPE (gimp_dynamics_output_type_get_type ())
+
+GType gimp_dynamics_output_type_get_type (void) G_GNUC_CONST;
+
+typedef enum  /*< pdb-skip >*/
+{
+  GIMP_DYNAMICS_OUTPUT_OPACITY,      /*< desc="Opacity"      >*/
+  GIMP_DYNAMICS_OUTPUT_HARDNESS,     /*< desc="Hardness"     >*/
+  GIMP_DYNAMICS_OUTPUT_RATE,         /*< desc="Rate"         >*/
+  GIMP_DYNAMICS_OUTPUT_SIZE,         /*< desc="Size"         >*/
+  GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO, /*< desc="Aspect ratio" >*/
+  GIMP_DYNAMICS_OUTPUT_COLOR,        /*< desc="Color"        >*/
+  GIMP_DYNAMICS_OUTPUT_ANGLE,        /*< desc="Angle"        >*/
+  GIMP_DYNAMICS_OUTPUT_JITTER,       /*< desc="Jitter"       >*/
+  GIMP_DYNAMICS_OUTPUT_SPACING,      /*< desc="Spacing"      >*/
+} GimpDynamicsOutputType;
+
 
 /*
  * non-registered enums; register them if needed
diff --git a/app/core/gimpdynamics.c b/app/core/gimpdynamics.c
index 204d19d..2531e1a 100644
--- a/app/core/gimpdynamics.c
+++ b/app/core/gimpdynamics.c
@@ -70,8 +70,9 @@ static void
 static const gchar * gimp_dynamics_get_extension (GimpData     *data);
 
 static GimpDynamicsOutput *
-                     gimp_dynamics_create_output (GimpDynamics     *dynamics,
-                                                  const gchar      *name);
+                     gimp_dynamics_create_output (GimpDynamics           *dynamics,
+                                                  const gchar            *name,
+                                                  GimpDynamicsOutputType  type);
 static void          gimp_dynamics_output_notify (GObject          *output,
                                                   const GParamSpec *pspec,
                                                   GimpDynamics     *dynamics);
@@ -152,23 +153,32 @@ static void
 gimp_dynamics_init (GimpDynamics *dynamics)
 {
   dynamics->opacity_output      = gimp_dynamics_create_output (dynamics,
-                                                               "opacity-output");
+                                                               "opacity-output",
+                                                               GIMP_DYNAMICS_OUTPUT_OPACITY);
   dynamics->hardness_output     = gimp_dynamics_create_output (dynamics,
-                                                               "hardness-output");
+                                                               "hardness-output",
+                                                               GIMP_DYNAMICS_OUTPUT_HARDNESS);
   dynamics->rate_output         = gimp_dynamics_create_output (dynamics,
-                                                               "rate-output");
+                                                               "rate-output",
+                                                               GIMP_DYNAMICS_OUTPUT_RATE);
   dynamics->size_output         = gimp_dynamics_create_output (dynamics,
-                                                               "size-output");
+                                                               "size-output",
+                                                               GIMP_DYNAMICS_OUTPUT_SIZE);
   dynamics->aspect_ratio_output = gimp_dynamics_create_output (dynamics,
-                                                               "aspect-ratio-output");
+                                                               "aspect-ratio-output",
+                                                               GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO);
   dynamics->color_output        = gimp_dynamics_create_output (dynamics,
-                                                               "color-output");
+                                                               "color-output",
+                                                               GIMP_DYNAMICS_OUTPUT_COLOR);
   dynamics->angle_output        = gimp_dynamics_create_output (dynamics,
-                                                               "angle-output");
+                                                               "angle-output",
+                                                               GIMP_DYNAMICS_OUTPUT_ANGLE);
   dynamics->jitter_output       = gimp_dynamics_create_output (dynamics,
-                                                               "jitter-output");
+                                                               "jitter-output",
+                                                               GIMP_DYNAMICS_OUTPUT_JITTER);
   dynamics->spacing_output      = gimp_dynamics_create_output (dynamics,
-                                                               "spacing-output");
+                                                               "spacing-output",
+                                                               GIMP_DYNAMICS_OUTPUT_SPACING);
 }
 
 static void
@@ -374,14 +384,64 @@ gimp_dynamics_get_standard (void)
   return standard_dynamics;
 }
 
+GimpDynamicsOutput *
+gimp_dynamics_get_output (GimpDynamics           *dynamics,
+                          GimpDynamicsOutputType  type_id)
+{
+
+  switch (type_id)
+    {
+    case GIMP_DYNAMICS_OUTPUT_OPACITY:
+      return dynamics->opacity_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_HARDNESS:
+      return dynamics->hardness_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_RATE:
+      return dynamics->rate_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_SIZE:
+      return dynamics->size_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO:
+      return dynamics->aspect_ratio_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_COLOR:
+      return dynamics->color_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_ANGLE:
+      return dynamics->angle_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_JITTER:
+      return dynamics->jitter_output;
+      break;
+
+    case GIMP_DYNAMICS_OUTPUT_SPACING:
+      return dynamics->spacing_output;
+      break;
+
+    default:
+      return NULL;
+      break;
+    }
+}
+
 
 /*  private functions  */
 
 static GimpDynamicsOutput *
 gimp_dynamics_create_output (GimpDynamics *dynamics,
-                             const gchar  *name)
+                             const gchar  *name,
+                             GimpDynamicsOutputType type)
 {
-  GimpDynamicsOutput *output = gimp_dynamics_output_new (name);
+  GimpDynamicsOutput *output = gimp_dynamics_output_new (name, type);
 
   g_signal_connect (output, "notify",
                     G_CALLBACK (gimp_dynamics_output_notify),
@@ -397,3 +457,5 @@ gimp_dynamics_output_notify (GObject          *output,
 {
   g_object_notify (G_OBJECT (dynamics), gimp_object_get_name (output));
 }
+
+
diff --git a/app/core/gimpdynamics.h b/app/core/gimpdynamics.h
index 695244a..acdef54 100644
--- a/app/core/gimpdynamics.h
+++ b/app/core/gimpdynamics.h
@@ -59,4 +59,7 @@ GimpData * gimp_dynamics_new          (const gchar  *name);
 GimpData * gimp_dynamics_get_standard (void);
 
 
+GimpDynamicsOutput * gimp_dynamics_get_output (GimpDynamics           *dynamics,
+                                               GimpDynamicsOutputType  type_id);
+
 #endif  /*  __GIMP_DYNAMICS_H__  */
diff --git a/app/core/gimpdynamicsoutput.c b/app/core/gimpdynamicsoutput.c
index 66d2440..f9132cd 100644
--- a/app/core/gimpdynamicsoutput.c
+++ b/app/core/gimpdynamicsoutput.c
@@ -45,6 +45,7 @@ enum
 {
   PROP_0,
 
+  PROP_TYPE,
   PROP_USE_PRESSURE,
   PROP_USE_VELOCITY,
   PROP_USE_DIRECTION,
@@ -111,6 +112,14 @@ gimp_dynamics_output_class_init (GimpDynamicsOutputClass *klass)
                                     "use-fade", NULL,
                                     DEFAULT_USE_FADE,
                                     GIMP_PARAM_STATIC_STRINGS);
+
+  g_object_class_install_property (object_class, PROP_TYPE,
+                                   g_param_spec_enum ("type", NULL,
+                                                      _("Output type"),
+                                                      GIMP_TYPE_DYNAMICS_OUTPUT_TYPE,
+                                                      GIMP_DYNAMICS_OUTPUT_OPACITY,
+                                                      GIMP_PARAM_READWRITE |
+                                                      G_PARAM_CONSTRUCT));
 }
 
 static void
@@ -149,6 +158,9 @@ gimp_dynamics_output_set_property (GObject      *object,
 
   switch (property_id)
     {
+    case PROP_TYPE:
+      output->type = g_value_get_enum (value);
+      break;
     case PROP_USE_PRESSURE:
       output->use_pressure = g_value_get_boolean (value);
       break;
@@ -189,6 +201,9 @@ gimp_dynamics_output_get_property (GObject    *object,
 
   switch (property_id)
     {
+    case PROP_TYPE:
+      g_value_set_enum (value, output->type);
+      break;
     case PROP_USE_PRESSURE:
       g_value_set_boolean (value, output->use_pressure);
       break;
@@ -223,12 +238,13 @@ gimp_dynamics_output_get_property (GObject    *object,
 /*  public functions  */
 
 GimpDynamicsOutput *
-gimp_dynamics_output_new (const gchar *name)
+gimp_dynamics_output_new (const gchar *name, GimpDynamicsOutputType type)
 {
   g_return_val_if_fail (name != NULL, NULL);
 
   return g_object_new (GIMP_TYPE_DYNAMICS_OUTPUT,
                        "name", name,
+                       "type", type,
                        NULL);
 }
 
diff --git a/app/core/gimpdynamicsoutput.h b/app/core/gimpdynamicsoutput.h
index 3116fd1..c703a0d 100644
--- a/app/core/gimpdynamicsoutput.h
+++ b/app/core/gimpdynamicsoutput.h
@@ -36,6 +36,8 @@ struct _GimpDynamicsOutput
 {
   GimpObject parent_instance;
 
+  GimpDynamicsOutputType type;
+
   gboolean   use_pressure;
   gboolean   use_velocity;
   gboolean   use_direction;
@@ -59,7 +61,8 @@ struct _GimpDynamicsOutputClass
 
 GType                gimp_dynamics_output_get_type (void) G_GNUC_CONST;
 
-GimpDynamicsOutput * gimp_dynamics_output_new      (const gchar        *name);
+GimpDynamicsOutput * gimp_dynamics_output_new      (const gchar            *name,
+                                                    GimpDynamicsOutputType  type);
 
 gboolean   gimp_dynamics_output_is_enabled         (GimpDynamicsOutput *output);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]