]> saetta.ns0.it Git - reptool/libreptool/commitdiff
Bugfixes and some functions added to rptcommon.
authorAndrea Zagli <azagli@libero.it>
Sun, 7 Oct 2007 09:22:09 +0000 (09:22 +0000)
committerAndrea Zagli <azagli@libero.it>
Sun, 7 Oct 2007 09:22:09 +0000 (09:22 +0000)
git-svn-id: svn+ssh://saetta.homelinux.org/svn/libreptool/trunk@20 3191ed1d-3fce-41bb-ab4a-0cebc0943b59

ChangeLog
src/rptcommon.c
src/rptcommon.h
src/rptobjectline.c
src/rptobjectrect.c
src/rptprint.c
src/rptreport.c

index 44492feaa6bbad7e286ea61145b6c7dc5bfd3d19..5a392459dd89196759dbcf729e4c638922592d55 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+2007-10-07 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptcommon.h:
+       * src/rptcommon.c: bugfixes
+
+2007-10-05 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptcommon.h:
+       * src/rptcommon.c: changed RptFont->size to gdouble from gint
+
+2007-09-30 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptcommon.h:
+       * src/rptcommon.c: added function
+       rpt_common_rptfont_from_pango_description()
+
+2007-09-13 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptcommon.h:
+       * src/rptcommon.c: added functions rpt_common_rptpoint_new(),
+       rpt_common_rptsize_new(), rpt_common_rtprotation_new(),
+       rpt_common_rptfont_new(), rpt_common_rptborder_new(),
+       rpt_common_rptalign_new(), rpt_common_rptstroke_new(),
+       rpt_common_rptcolor_new()
+
+2007-09-13 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptcommon.h:
+       * src/rptcommon.c: added function rpt_common_gdkcolor_to_rptcolor()
+
+2007-09-11 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptcommon.h:
+       * src/rptcommon.c: added function rpt_common_rptcolor_to_gdkcolor()
+
+2007-07-26 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptobjectrect.c: fill-color default to NULL
+
+2007-07-01 Andrea Zagli <azagli@inwind.it>
+
+       * src/rptreport.c: bug fix on rpt_object_is_in_section()
+
 2007-06-24 Andrea Zagli <azagli@inwind.it>
 
        * src/rptobjtext.c: setted default font
index aef98390fd14ed023bbcffd78281689a0ba0614d..e6f927efc4f79507a552f452c43f5c18d065972e 100644 (file)
@@ -25,6 +25,21 @@ static GArray *rpt_common_parse_style (const gchar *style);
 static gchar *rpt_common_style_to_string (const GArray *style);
 
 
+/**
+ * rpt_common_rptpoint_new:
+ *
+ * Returns: an new allocated #RptPoint struct.
+ */
+RptPoint
+*rpt_common_rptpoint_new (void)
+{
+       RptPoint *point;
+
+       point = (RptPoint *)g_malloc0 (sizeof (RptPoint));
+
+       return point;
+}
+
 /**
  * rpt_common_get_position:
  * @xnode: an #xmlNode.
@@ -44,7 +59,7 @@ RptPoint
 
        if (x != NULL || y != NULL)
                {
-                       position = (RptPoint *)g_malloc0 (sizeof (RptPoint));
+                       position = rpt_common_rptpoint_new ();
                        position->x = (x == NULL ? 0.0 : strtod (x, NULL));
                        position->y = (y == NULL ? 0.0 : strtod (y, NULL));
                }
@@ -68,6 +83,21 @@ rpt_common_set_position (xmlNode *xnode, const RptPoint *position)
                }
 }
 
+/**
+ * rpt_common_rptsize_new:
+ *
+ * Returns: an new allocated #RptSize struct.
+ */
+RptSize
+*rpt_common_rptsize_new (void)
+{
+       RptSize *size;
+
+       size = (RptSize *)g_malloc0 (sizeof (RptSize));
+
+       return size;
+}
+
 /**
  * rpt_common_get_size:
  * @xnode: an #xmlNode.
@@ -86,7 +116,7 @@ RptSize
        height = xmlGetProp (xnode, (const xmlChar *)"height");
        if (width != NULL && height != NULL)
                {
-                       size = (RptSize *)g_malloc0 (sizeof (RptSize));
+                       size = rpt_common_rptsize_new ();
                        size->width = strtod (width, NULL);
                        size->height = strtod (height, NULL);
                }
@@ -110,6 +140,21 @@ rpt_common_set_size (xmlNode *xnode, const RptSize *size)
                }
 }
 
+/**
+ * rpt_common_rptrotation_new:
+ *
+ * Returns: an new allocated #RptRotation struct.
+ */
+RptRotation
+*rpt_common_rptrotation_new (void)
+{
+       RptRotation *rotation;
+
+       rotation = (RptRotation *)g_malloc0 (sizeof (RptRotation));
+
+       return rotation;
+}
+
 /**
  * rpt_common_get_rotation:
  * @xnode: an #xmlNode.
@@ -126,7 +171,7 @@ RptRotation
        prop = xmlGetProp (xnode, "rotation");
        if (prop != NULL)
                {
-                       rotation = (RptRotation *)g_malloc0 (sizeof (RptRotation));
+                       rotation = rpt_common_rptrotation_new ();
                        rotation->angle = strtod (prop, NULL);
                }
 
@@ -148,6 +193,21 @@ rpt_common_set_rotation (xmlNode *xnode, const RptRotation *rotation)
                }
 }
 
+/**
+ * rpt_common_rptfont_new:
+ *
+ * Returns: an new allocated #RptFont struct.
+ */
+RptFont
+*rpt_common_rptfont_new (void)
+{
+       RptFont *font;
+
+       font = (RptFont *)g_malloc0 (sizeof (RptFont));
+
+       return font;
+}
+
 /**
  * rpt_common_get_font:
  * @xnode: an #xmlNode.
@@ -161,10 +221,10 @@ RptFont
        RptFont *font = NULL;
        gchar *prop;
 
-       font = (RptFont *)g_malloc0 (sizeof (RptFont));
+       font = rpt_common_rptfont_new ();
 
-       font->name = g_strdup ("sans");
-       font->size = 12;
+       font->name = g_strdup ("Sans");
+       font->size = 12.0;
        font->bold = FALSE;
        font->italic = FALSE;
        font->underline = PANGO_UNDERLINE_NONE;
@@ -285,6 +345,47 @@ rpt_common_set_font (xmlNode *xnode, const RptFont *font)
                }
 }
 
+/**
+ * rpt_common_rptfont_from_pango_description:
+ * @description: a #PangoFontDescription.
+ *
+ * Returns: a new allocated #RptFont from a #PangoFontDescription.
+ */
+RptFont
+*rpt_common_rptfont_from_pango_description (const PangoFontDescription *description)
+{
+       RptFont *font;
+
+       font = rpt_common_rptfont_new ();
+
+       font->name = (gchar *)pango_font_description_get_family (description);
+       font->size = pango_font_description_get_size (description) / PANGO_SCALE;
+       font->bold = (pango_font_description_get_weight (description) == PANGO_WEIGHT_BOLD);
+       font->italic = (pango_font_description_get_style (description) == PANGO_STYLE_ITALIC);
+       font->underline = PANGO_UNDERLINE_NONE;
+       font->strike = FALSE;
+
+       font->color = rpt_common_rptcolor_new ();
+       font->color->a = 1.0;
+
+       return font;
+}
+
+/**
+ * rpt_common_rptborder_new:
+ *
+ * Returns: a new allocated #RptBorder struct.
+ */
+RptBorder
+*rpt_common_rptborder_new (void)
+{
+       RptBorder *border;
+
+       border = (RptBorder *)g_malloc0 (sizeof (RptBorder));
+
+       return border;
+}
+
 /**
  * rpt_common_get_border:
  * @xnode: an #xmlNode.
@@ -298,28 +399,28 @@ RptBorder
        RptBorder *border = NULL;
        gchar *prop;
 
-       border = (RptBorder *)g_malloc0 (sizeof (RptBorder));
+       border = rpt_common_rptborder_new ();
 
        border->top_width = 0.0;
        border->right_width = 0.0;
        border->bottom_width = 0.0;
        border->left_width = 0.0;
-       border->top_color = (RptColor *)g_malloc0 (sizeof (RptColor));
+       border->top_color = rpt_common_rptcolor_new ();
        border->top_color->r = 0.0;
        border->top_color->g = 0.0;
        border->top_color->b = 0.0;
        border->top_color->a = 1.0;
-       border->right_color = (RptColor *)g_malloc0 (sizeof (RptColor));
+       border->right_color = rpt_common_rptcolor_new ();
        border->right_color->r = 0.0;
        border->right_color->g = 0.0;
        border->right_color->b = 0.0;
        border->right_color->a = 1.0;
-       border->bottom_color = (RptColor *)g_malloc0 (sizeof (RptColor));
+       border->bottom_color = rpt_common_rptcolor_new ();
        border->bottom_color->r = 0.0;
        border->bottom_color->g = 0.0;
        border->bottom_color->b = 0.0;
        border->bottom_color->a = 1.0;
-       border->left_color = (RptColor *)g_malloc0 (sizeof (RptColor));
+       border->left_color = rpt_common_rptcolor_new ();
        border->left_color->r = 0.0;
        border->left_color->g = 0.0;
        border->left_color->b = 0.0;
@@ -454,6 +555,21 @@ rpt_common_set_border (xmlNode *xnode, const RptBorder *border)
                }
 }
 
+/**
+ * rpt_common_rptalign_new:
+ *
+ * Returns: an new allocated #RptAlign struct.
+ */
+RptAlign
+*rpt_common_rptalign_new (void)
+{
+       RptAlign *align;
+
+       align = (RptAlign *)g_malloc0 (sizeof (RptAlign));
+
+       return align;
+}
+
 /**
  * rpt_common_get_align:
  * @xnode: an #xmlNode.
@@ -467,7 +583,7 @@ RptAlign
        RptAlign *align = NULL;
        gchar *prop;
 
-       align = (RptAlign *)g_malloc0 (sizeof (RptAlign));
+       align = rpt_common_rptalign_new ();
 
        align->h_align = RPT_HALIGN_LEFT;
        align->v_align = RPT_VALIGN_TOP;
@@ -549,6 +665,21 @@ rpt_common_set_align (xmlNode *xnode, const RptAlign *align)
                }
 }
 
+/**
+ * rpt_common_rptstroke_new:
+ *
+ * Returns: an new allocated #RptStroke struct.
+ */
+RptStroke
+*rpt_common_rptstroke_new (void)
+{
+       RptStroke *stroke;
+
+       stroke = (RptStroke *)g_malloc0 (sizeof (RptStroke));
+
+       return stroke;
+}
+
 /**
  * rpt_common_get_stroke:
  * @xnode: an #xmlNode.
@@ -562,10 +693,10 @@ RptStroke
        RptStroke *stroke = NULL;
        gchar *prop;
 
-       stroke = (RptStroke *)g_malloc0 (sizeof (RptStroke));
+       stroke = rpt_common_rptstroke_new ();
        stroke->width = 1.0;
 
-       stroke->color = (RptColor *)g_malloc0 (sizeof (RptColor));
+       stroke->color = rpt_common_rptcolor_new ();
        stroke->color->r = 0.0;
        stroke->color->g = 0.0;
        stroke->color->b = 0.0;
@@ -617,6 +748,21 @@ rpt_common_set_stroke (xmlNode *xnode, const RptStroke *stroke)
                }
 }
 
+/**
+ * rpt_common_rptcolor_new:
+ *
+ * Returns: an new allocated #RptColor struct.
+ */
+RptColor
+*rpt_common_rptcolor_new (void)
+{
+       RptColor *color;
+
+       color = (RptColor *)g_malloc0 (sizeof (RptColor));
+
+       return color;
+}
+
 /**
  * rpt_common_parse_color:
  * @str_color: a color string.
@@ -629,7 +775,7 @@ RptColor
        RptColor *color = NULL;
        gchar *c = g_strstrip (g_strdup (str_color));
 
-       color = (RptColor *)g_malloc0 (sizeof (RptColor));
+       color = rpt_common_rptcolor_new ();
        color->a = 1.0;
 
        if (c[0] == '#')
@@ -703,6 +849,52 @@ gchar
        return ret;
 }
 
+/**
+ * rpt_common_rptcolor_to_gdkcolor:
+ * @color: an #RptColor value.
+ *
+ * Converts an #RptColor value to a #GdkColor.
+ *
+ * Returns: the #GdkColor correspondent to @color.
+ */
+GdkColor
+*rpt_common_rptcolor_to_gdkcolor (const RptColor *color)
+{
+       GdkColor *gdk_color;
+
+       gdk_color = (GdkColor *)g_malloc0 (sizeof (GdkColor));
+       
+       gdk_color->red = color->r * 65535;
+       gdk_color->green = color->g * 65535;
+       gdk_color->blue = color->b * 65535;
+
+       return gdk_color;
+}
+
+/**
+ * rpt_common_gdkcolor_to_rptcolor:
+ * @gdk_color: a #GdkColor.
+ * @alpha: the alpha value.
+ *
+ * Converts an #GdkColor value to a #RptColor.
+ *
+ * Returns: the #GdkColor correspondent to @color.
+ */
+RptColor
+*rpt_common_gdkcolor_to_rptcolor (const GdkColor *gdk_color, guint16 alpha)
+{
+       RptColor *color;
+
+       color = rpt_common_rptcolor_new ();
+
+       color->r = gdk_color->red / 65535.0;
+       color->g = gdk_color->green / 65535.0;
+       color->b = gdk_color->blue / 65535.0;
+       color->a = alpha / 65535.0;
+
+       return color;
+}
+
 static GArray
 *rpt_common_parse_style (const gchar *style)
 {
index 08d34e3c28d08fe51d309397576c2f0f637d1ee6..dda8f0855456b9527b2598dcdaad941a4d333620 100644 (file)
 #define __RPT_COMMON_H__
 
 #include <glib.h>
+#include <gdk/gdkcolor.h>
 #include <libxml/tree.h>
 
 #include <pango/pango-attributes.h>
+#include <pango/pango-font.h>
 
 G_BEGIN_DECLS
 
 
 /**
  * RptColor:
- * @r: the red channel.
+ * @r: the red channel; value from 0 to 1.
  * @g: the green channel.
  * @b: the blue channel.
  * @a: the alpha channel.
@@ -77,7 +79,7 @@ typedef struct _RptRotation RptRotation;
 struct _RptFont
 {
        gchar *name;
-       gint size;
+       gdouble size;
        gboolean bold;
        gboolean italic;
        PangoUnderline underline;
@@ -155,36 +157,47 @@ struct _RptStroke
 typedef struct _RptStroke RptStroke;
 
 
+RptPoint *rpt_common_rptpoint_new (void);
 RptPoint *rpt_common_get_position (xmlNode *xnode);
 void rpt_common_set_position (xmlNode *xnode,
                               const RptPoint *position);
 
+RptSize *rpt_common_rptsize_new (void);
 RptSize *rpt_common_get_size (xmlNode *xnode);
 void rpt_common_set_size (xmlNode *xnode,
                           const RptSize *size);
 
+RptRotation *rpt_common_rptrotation_new (void);
 RptRotation *rpt_common_get_rotation (xmlNode *xnode);
 void rpt_common_set_rotation (xmlNode *xnode,
                               const RptRotation *rotation);
 
+RptFont *rpt_common_rptfont_new (void);
 RptFont *rpt_common_get_font (xmlNode *xnode);
 void rpt_common_set_font (xmlNode *xnode,
                           const RptFont *font);
+RptFont *rpt_common_rptfont_from_pango_description (const PangoFontDescription *description);
 
+RptBorder *rpt_common_rptborder_new (void);
 RptBorder *rpt_common_get_border (xmlNode *xnode);
 void rpt_common_set_border (xmlNode *xnode,
                             const RptBorder *border);
 
+RptAlign *rpt_common_rptalign_new (void);
 RptAlign *rpt_common_get_align (xmlNode *xnode);
 void rpt_common_set_align (xmlNode *xnode,
                            const RptAlign *align);
 
+RptStroke *rpt_common_rptstroke_new (void);
 RptStroke *rpt_common_get_stroke (xmlNode *xnode);
 void rpt_common_set_stroke (xmlNode *xnode,
                             const RptStroke *stroke);
 
+RptColor *rpt_common_rptcolor_new (void);
 RptColor *rpt_common_parse_color (const gchar *str_color);
 gchar *rpt_common_rptcolor_to_string (const RptColor *color);
+GdkColor *rpt_common_rptcolor_to_gdkcolor (const RptColor *color);
+RptColor *rpt_common_gdkcolor_to_rptcolor (const GdkColor *gdk_color, guint16 alpha);
 
 gdouble *rpt_common_style_to_array (const GArray *style);
 
index 5d590a1dfd299df496d019bc16f8c72f56e33b3a..27e4312cab8ca58a090d8568e0a786f26023814a 100644 (file)
@@ -248,7 +248,20 @@ rpt_obj_line_get_property (GObject *object, guint property_id, GValue *value, GP
                                break;
 
                        case PROP_STROKE:
-                               g_value_set_pointer (value, g_memdup (priv->stroke, sizeof (RptStroke)));
+                               if (priv->stroke == NULL)
+                                       {
+                                               RptStroke *stroke = rpt_common_rptstroke_new ();
+
+                                               stroke->width = 1.0;
+                                               stroke->color = rpt_common_rptcolor_new ();
+                                               stroke->color->a = 1.0;
+
+                                               g_value_set_pointer (value, g_memdup (stroke, sizeof (RptStroke)));
+                                       }
+                               else
+                                       {
+                                               g_value_set_pointer (value, g_memdup (priv->stroke, sizeof (RptStroke)));
+                                       }
                                break;
 
                        default:
index c350cb04ca9351972d44bafd50e343a63ae281c2..99980175857e66993b3181a6d5076d2966c257e7 100644 (file)
@@ -99,7 +99,7 @@ rpt_obj_rect_init (RptObjRect *rpt_obj_rect)
 {
        RptObjRectPrivate *priv = RPT_OBJ_RECT_GET_PRIVATE (rpt_obj_rect);
 
-       priv->fill_color = (RptColor *)g_malloc0 (sizeof (RptColor));
+       priv->fill_color = NULL;
 }
 
 /**
@@ -232,7 +232,21 @@ rpt_obj_rect_get_property (GObject *object, guint property_id, GValue *value, GP
        switch (property_id)
                {
                        case PROP_FILL_COLOR:
-                               g_value_set_pointer (value, g_memdup (priv->fill_color, sizeof (RptColor)));
+                               if (priv->fill_color == NULL)
+                                       {
+                                               RptColor *color = rpt_common_rptcolor_new ();
+
+                                               color->r = 1.0;
+                                               color->g = 1.0;
+                                               color->b = 1.0;
+                                               color->a = 1.0;
+
+                                               g_value_set_pointer (value, g_memdup (color, sizeof (RptColor)));
+                                       }
+                               else
+                                       {
+                                               g_value_set_pointer (value, g_memdup (priv->fill_color, sizeof (RptColor)));
+                                       }
                                break;
 
                        default:
index ff2ad4903c49c9fc208330364a494d1ccf93d206..e2eddcbe1daefc232794150ce183aaa07a3babdd 100644 (file)
@@ -931,6 +931,9 @@ rpt_print_ellipse_xml (RptPrint *rpt_print, xmlNode *xnode)
        size = rpt_common_get_size (xnode);
        stroke = rpt_common_get_stroke (xnode);
 
+       /* TO DO */
+       /* rotation */
+
        if (position == NULL || size == NULL)
                {
                        return;
index ba684479e0c409102a52b81d3a146985809b4200..3d85edb798f49ffb9b562fb27925d64a8eeb993c 100644 (file)
@@ -1575,26 +1575,38 @@ static gboolean
 rpt_report_object_is_in_section (RptReport *rpt_report, RptObject *rpt_object, RptReportSection section)
 {
        gboolean ret = FALSE;
-       GList *list;
+       GList *list = NULL;
 
        RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report);
 
        switch (section)
                {
                        case RPTREPORT_SECTION_REPORT_HEADER:
-                               list = priv->report_header->objects;
+                               if (priv->report_header != NULL)
+                                       {
+                                               list = priv->report_header->objects;
+                                       }
                                break;
 
                        case RPTREPORT_SECTION_REPORT_FOOTER:
-                               list = priv->report_footer->objects;
+                               if (priv->report_footer != NULL)
+                                       {
+                                               list = priv->report_footer->objects;
+                                       }
                                break;
 
                        case RPTREPORT_SECTION_PAGE_HEADER:
-                               list = priv->page_header->objects;
+                               if (priv->page_header != NULL)
+                                       {
+                                               list = priv->page_header->objects;
+                                       }
                                break;
 
                        case RPTREPORT_SECTION_PAGE_FOOTER:
-                               list = priv->page_footer->objects;
+                               if (priv->page_footer != NULL)
+                                       {
+                                               list = priv->page_footer->objects;
+                                       }
                                break;
 
                        case RPTREPORT_SECTION_BODY:
@@ -1605,16 +1617,19 @@ rpt_report_object_is_in_section (RptReport *rpt_report, RptObject *rpt_object, R
                                return FALSE;
                }
 
-       list = g_list_first (list);
-       while (list != NULL)
+       if (list != NULL)
                {
-                       if ((RptObject *)list->data == rpt_object)
+                       list = g_list_first (list);
+                       while (list != NULL)
                                {
-                                       ret = TRUE;
-                                       break;
+                                       if ((RptObject *)list->data == rpt_object)
+                                               {
+                                                       ret = TRUE;
+                                                       break;
+                                               }
+
+                                       list = g_list_next (list);
                                }
-               
-                       list = g_list_next (list);
                }
 
        return ret;