[lasem] svg_morphology: operator attribute implementation



commit f4ca8fe1c06336ab34f887e73623cc7070c38ecd
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Sat Aug 1 16:56:32 2015 +0200

    svg_morphology: operator attribute implementation

 src/lsmsvgattributes.h |    5 +++++
 src/lsmsvgenums.c      |   20 ++++++++++++++++++++
 src/lsmsvgenums.h      |    9 +++++++++
 src/lsmsvgtraits.c     |   23 +++++++++++++++++++++++
 4 files changed, 57 insertions(+), 0 deletions(-)
---
diff --git a/src/lsmsvgattributes.h b/src/lsmsvgattributes.h
index a9c2cfb..5059377 100644
--- a/src/lsmsvgattributes.h
+++ b/src/lsmsvgattributes.h
@@ -123,6 +123,11 @@ typedef struct {
        LsmSvgAngle value;
 } LsmSvgAngleAttribute;
 
+typedef struct {
+       LsmAttribute base;
+       LsmSvgMorphologyOperator value;
+} LsmSvgMorphologyOperatorAttribute;
+
 G_END_DECLS
 
 #endif
diff --git a/src/lsmsvgenums.c b/src/lsmsvgenums.c
index 8844383..4920d70 100644
--- a/src/lsmsvgenums.c
+++ b/src/lsmsvgenums.c
@@ -565,3 +565,23 @@ lsm_svg_color_filter_type_from_string (const char *string)
                                           G_N_ELEMENTS (lsm_svg_color_filter_type_strings));
 }
 
+static const char *lsm_svg_morphology_operator_strings[] = {
+       "erode",
+       "dilate"
+};
+
+const char *
+lsm_svg_morphology_operator_to_string (LsmSvgMorphologyOperator morphology_operator)
+{
+       if (morphology_operator < 0 || morphology_operator > LSM_SVG_MORPHOLOGY_OPERATOR_DILATE)
+               return NULL;
+
+       return lsm_svg_morphology_operator_strings[morphology_operator];
+}
+
+LsmSvgMorphologyOperator
+lsm_svg_morphology_operator_from_string (const char *string)
+{
+       return lsm_enum_value_from_string (string, lsm_svg_morphology_operator_strings,
+                                          G_N_ELEMENTS (lsm_svg_morphology_operator_strings));
+}
diff --git a/src/lsmsvgenums.h b/src/lsmsvgenums.h
index 34c2248..19471b4 100644
--- a/src/lsmsvgenums.h
+++ b/src/lsmsvgenums.h
@@ -363,6 +363,15 @@ typedef enum {
 const char *           lsm_svg_color_filter_type_to_string     (LsmSvgColorFilterType type);
 LsmSvgColorFilterType  lsm_svg_color_filter_type_from_string   (const char *string);
 
+typedef enum {
+       LSM_SVG_MORPHOLOGY_OPERATOR_ERROR = -1,
+       LSM_SVG_MORPHOLOGY_OPERATOR_ERODE,
+       LSM_SVG_MORPHOLOGY_OPERATOR_DILATE
+} LsmSvgMorphologyOperator;
+
+const char *                   lsm_svg_morphology_operator_to_string   (LsmSvgMorphologyOperator 
morpholoy_operator);
+LsmSvgMorphologyOperator       lsm_svg_morphology_operator_from_string (const char *string);
+
 G_END_DECLS
 
 #endif
diff --git a/src/lsmsvgtraits.c b/src/lsmsvgtraits.c
index 30e6b08..61a7616 100644
--- a/src/lsmsvgtraits.c
+++ b/src/lsmsvgtraits.c
@@ -1319,3 +1319,26 @@ const LsmTraitClass lsm_svg_writing_mode_trait_class = {
        .to_string = lsm_svg_writing_mode_trait_to_string
 };
 
+static gboolean
+lsm_svg_morphology_operator_trait_from_string (LsmTrait *abstract_trait, char *string)
+{
+       LsmSvgMorphologyOperator *trait = (LsmSvgMorphologyOperator *) abstract_trait;
+
+       *trait = lsm_svg_morphology_operator_from_string (string);
+
+       return *trait >= 0;
+}
+
+static char *
+lsm_svg_morphology_operator_trait_to_string (LsmTrait *abstract_trait)
+{
+       LsmSvgMorphologyOperator *trait = (LsmSvgMorphologyOperator *) abstract_trait;
+
+       return g_strdup (lsm_svg_morphology_operator_to_string (*trait));
+}
+
+const LsmTraitClass lsm_svg_morphology_operator_trait_class = {
+       .size = sizeof (LsmSvgMorphologyOperator),
+       .from_string = lsm_svg_morphology_operator_trait_from_string,
+       .to_string = lsm_svg_morphology_operator_trait_to_string
+};



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