[dia] xfig: style fixes



commit d2d9258cf42f3e1304157844adf18cf167ceb800
Author: Zander Brown <zbrown gnome org>
Date:   Tue Sep 21 19:25:30 2021 +0100

    xfig: style fixes
    
    Take advantage of modern GObject macros and enforce our code style

 plug-ins/xfig/xfig-export.c | 1288 +++++++++++++++++++++++--------------------
 1 file changed, 681 insertions(+), 607 deletions(-)
---
diff --git a/plug-ins/xfig/xfig-export.c b/plug-ins/xfig/xfig-export.c
index fb16695b4..0e60ca689 100644
--- a/plug-ins/xfig/xfig-export.c
+++ b/plug-ins/xfig/xfig-export.c
@@ -53,196 +53,94 @@
 #define WARNING_OUT_OF_COLORS 0
 #define MAX_WARNING 1
 
-#define XFIG_TYPE_RENDERER           (xfig_renderer_get_type ())
-#define XFIG_RENDERER(obj)           (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFIG_TYPE_RENDERER, XfigRenderer))
-#define XFIG_RENDERER_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), XFIG_TYPE_RENDERER, 
XfigRendererClass))
-#define XFIG_IS_RENDERER(obj)        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFIG_TYPE_RENDERER))
-#define XFIG_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFIG_TYPE_RENDERER, 
XfigRendererClass))
 #define DTOSTR_BUF_SIZE G_ASCII_DTOSTR_BUF_SIZE
 #define xfig_dtostr(buf,d) \
        g_ascii_formatd(buf, sizeof(buf), "%f", d)
 
 
-enum {
-  PROP_0,
-  PROP_FONT,
-  PROP_FONT_HEIGHT,
-  LAST_PROP
-};
-
-
-GType xfig_renderer_get_type (void) G_GNUC_CONST;
+#define DIA_XFIG_TYPE_RENDERER dia_xfig_renderer_get_type ()
+G_DECLARE_FINAL_TYPE (DiaXfigRenderer, dia_xfig_renderer, DIA_XFIG, RENDERER, DiaRenderer)
 
-typedef struct _XfigRenderer XfigRenderer;
-typedef struct _XfigRendererClass XfigRendererClass;
-
-struct _XfigRendererClass
-{
-  DiaRendererClass parent_class;
-};
-
-struct _XfigRenderer
-{
+struct _DiaXfigRenderer {
   DiaRenderer parent_instance;
 
   FILE *file;
 
   int depth;
 
-  real linewidth;
+  double linewidth;
   LineCaps capsmode;
   LineJoin joinmode;
   LineStyle stylemode;
-  real dashlength;
+  double dashlength;
   FillStyle fillmode;
   DiaFont *font;
-  real fontheight;
+  double fontheight;
 
   gboolean color_pass;
   Color user_colors[512];
   int max_user_color;
 
-  gchar *warnings[MAX_WARNING];
+  char *warnings[MAX_WARNING];
 };
 
+G_DEFINE_TYPE (DiaXfigRenderer, dia_xfig_renderer, DIA_TYPE_RENDERER)
+
+enum {
+  PROP_0,
+  PROP_FONT,
+  PROP_FONT_HEIGHT,
+  LAST_PROP
+};
+
+
 /* check whether there exists an arrow head */
-static int hasArrow(Arrow *arrow)
+static int
+hasArrow (Arrow *arrow)
 {
-  return (!arrow || ARROW_NONE==arrow->type) ? 0 : 1;
+  return (!arrow || ARROW_NONE == arrow->type) ? 0 : 1;
 }
 
-static void begin_render(DiaRenderer *self, const DiaRectangle *update);
-static void end_render(DiaRenderer *renderer);
-static void set_linewidth(DiaRenderer *self, real linewidth);
-static void set_linecaps(DiaRenderer *self, LineCaps mode);
-static void set_linejoin(DiaRenderer *self, LineJoin mode);
-static void set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length);
-static void set_fillstyle(DiaRenderer *self, FillStyle mode);
-static void set_font(DiaRenderer *self, DiaFont *font, real height);
-static void draw_line(DiaRenderer *self,
-                     Point *start, Point *end,
-                     Color *color);
-static void draw_polyline(DiaRenderer *self,
-                         Point *points, int num_points,
-                         Color *color);
-static void draw_line_with_arrows(DiaRenderer *self,
-                                 Point *start, Point *end,
-                                 real line_width,
-                                 Color *color,
-                                 Arrow *start_arrow,
-                                 Arrow *end_arrow);
-static void draw_polyline_with_arrows(DiaRenderer *self,
-                                     Point *points, int num_points,
-                                     real line_width,
-                                     Color *color,
-                                     Arrow *start_arrow,
-                                     Arrow *end_arrow);
-static void draw_polygon(DiaRenderer *self,
-                        Point *points, int num_points,
-                        Color *fill, Color *stroke);
-static void draw_rect(DiaRenderer *self,
-                     Point *ul_corner, Point *lr_corner,
-                     Color *fill, Color *stroke);
-static void draw_arc(DiaRenderer *self,
-                    Point *center,
-                    real width, real height,
-                    real angle1, real angle2,
-                    Color *colour);
-static void draw_arc_with_arrows(DiaRenderer *self,
-                                Point *startpoint,
-                                Point *endpoint,
-                                Point *midpoint,
-                                real line_width,
-                                Color *colour,
-                                Arrow *start_arrow,
-                                Arrow *end_arrow);
-static void fill_arc(DiaRenderer *self,
-                    Point *center,
-                    real width, real height,
-                    real angle1, real angle2,
-                    Color *colour);
-static void draw_ellipse(DiaRenderer *self,
-                        Point *center,
-                        real width, real height,
-                        Color *fill, Color *stroke);
-static void draw_bezier(DiaRenderer *self,
-                       BezPoint *points,
-                       int numpoints,
-                       Color *colour);
-static void draw_bezier_with_arrows(DiaRenderer *self,
-                                   BezPoint *points,
-                                   int numpoints,
-                                   real line_width,
-                                   Color *colour,
-                                   Arrow *start_arrow,
-                                   Arrow *end_arrow);
-static void draw_beziergon(DiaRenderer *self,
-                          BezPoint *points, /* Last point must be same as first point */
-                          int numpoints,
-                          Color *fill,
-                          Color *stroke);
-static void draw_string(DiaRenderer *self,
-                       const char *text,
-                       Point *pos, Alignment alignment,
-                       Color *colour);
-static void draw_image(DiaRenderer *self,
-                      Point *point,
-                      real width, real height,
-                      DiaImage *image);
-static void draw_object(DiaRenderer *self,
-                       DiaObject *object,
-                       DiaMatrix *matrix);
-
-static void xfig_renderer_class_init (XfigRendererClass *klass);
-
-static gpointer parent_class = NULL;
-
-GType
-xfig_renderer_get_type (void)
+
+static void
+dia_xfig_renderer_finalize (GObject *object)
 {
-  static GType object_type = 0;
-
-  if (!object_type)
-    {
-      static const GTypeInfo object_info =
-      {
-        sizeof (XfigRendererClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) xfig_renderer_class_init,
-        NULL,           /* class_finalize */
-        NULL,           /* class_data */
-        sizeof (XfigRenderer),
-        0,              /* n_preallocs */
-       NULL            /* init */
-      };
-
-      object_type = g_type_register_static (DIA_TYPE_RENDERER,
-                                            "XfigRenderer",
-                                            &object_info, 0);
-    }
+  DiaXfigRenderer *self = DIA_XFIG_RENDERER (object);
+
+  g_clear_object (&self->font);
 
-  return object_type;
+  G_OBJECT_CLASS (dia_xfig_renderer_parent_class)->finalize (object);
 }
 
+
 static void
-xfig_renderer_set_property (GObject      *object,
-                            guint         property_id,
-                            const GValue *value,
-                            GParamSpec   *pspec)
+dia_xfig_renderer_set_font (DiaXfigRenderer *self,
+                            DiaFont         *font,
+                            double           height)
 {
-  XfigRenderer *self = XFIG_RENDERER (object);
+  g_set_object (&self->font, font);
+  self->fontheight = height;
+}
+
+
+static void
+dia_xfig_renderer_set_property (GObject      *object,
+                                guint         property_id,
+                                const GValue *value,
+                                GParamSpec   *pspec)
+{
+  DiaXfigRenderer *self = DIA_XFIG_RENDERER (object);
 
   switch (property_id) {
     case PROP_FONT:
-      set_font (DIA_RENDERER (self),
-                DIA_FONT (g_value_get_object (value)),
-                self->fontheight);
+      dia_xfig_renderer_set_font (self,
+                                  g_value_get_object (value),
+                                  self->fontheight);
       break;
     case PROP_FONT_HEIGHT:
-      set_font (DIA_RENDERER (self),
-                self->font,
-                g_value_get_double (value));
+      dia_xfig_renderer_set_font (self,
+                                  self->font,
+                                  g_value_get_double (value));
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -250,13 +148,14 @@ xfig_renderer_set_property (GObject      *object,
   }
 }
 
+
 static void
-xfig_renderer_get_property (GObject    *object,
-                            guint       property_id,
-                            GValue     *value,
-                            GParamSpec *pspec)
+dia_xfig_renderer_get_property (GObject    *object,
+                                guint       property_id,
+                                GValue     *value,
+                                GParamSpec *pspec)
 {
-  XfigRenderer *self = XFIG_RENDERER (object);
+  DiaXfigRenderer *self = DIA_XFIG_RENDERER (object);
 
   switch (property_id) {
     case PROP_FONT:
@@ -271,77 +170,20 @@ xfig_renderer_get_property (GObject    *object,
   }
 }
 
-static void
-xfig_renderer_finalize (GObject *object)
-{
-  XfigRenderer *self = XFIG_RENDERER (object);
-
-  g_clear_object (&self->font);
-
-  G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-xfig_renderer_class_init (XfigRendererClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-  DiaRendererClass *renderer_class = DIA_RENDERER_CLASS (klass);
-
-  parent_class = g_type_class_peek_parent (klass);
-
-  object_class->set_property = xfig_renderer_set_property;
-  object_class->get_property = xfig_renderer_get_property;
-  object_class->finalize = xfig_renderer_finalize;
-
-  renderer_class->begin_render = begin_render;
-  renderer_class->end_render = end_render;
-
-  renderer_class->set_linewidth = set_linewidth;
-  renderer_class->set_linecaps = set_linecaps;
-  renderer_class->set_linejoin = set_linejoin;
-  renderer_class->set_linestyle = set_linestyle;
-  renderer_class->set_fillstyle = set_fillstyle;
-
-  renderer_class->draw_line = draw_line;
-  renderer_class->draw_polyline = draw_polyline;
-
-  renderer_class->draw_polygon = draw_polygon;
-
-  renderer_class->draw_arc = draw_arc;
-  renderer_class->fill_arc = fill_arc;
-
-  renderer_class->draw_ellipse = draw_ellipse;
-
-  renderer_class->draw_rect = draw_rect;
-  renderer_class->draw_bezier = draw_bezier;
-  renderer_class->draw_beziergon = draw_beziergon;
-
-  renderer_class->draw_string = draw_string;
-
-  renderer_class->draw_image = draw_image;
-
-  renderer_class->draw_line_with_arrows = draw_line_with_arrows;
-  renderer_class->draw_polyline_with_arrows = draw_polyline_with_arrows;
-  renderer_class->draw_arc_with_arrows = draw_arc_with_arrows;
-  renderer_class->draw_bezier_with_arrows = draw_bezier_with_arrows;
-  renderer_class->draw_object = draw_object;
-
-  g_object_class_override_property (object_class, PROP_FONT, "font");
-  g_object_class_override_property (object_class, PROP_FONT_HEIGHT, "font-height");
-}
 
 /* Helper functions */
 static void
-figWarn(XfigRenderer *renderer, int warning)
+figWarn (DiaXfigRenderer *renderer, int warning)
 {
   if (renderer->warnings[warning]) {
-    message_warning("%s", renderer->warnings[warning]);
+    message_warning ("%s", renderer->warnings[warning]);
     renderer->warnings[warning] = NULL;
   }
 }
 
+
 static int
-figLineStyle(XfigRenderer *renderer)
+figLineStyle (DiaXfigRenderer *renderer)
 {
   switch (renderer->stylemode) {
   case LINESTYLE_SOLID:
@@ -360,129 +202,157 @@ figLineStyle(XfigRenderer *renderer)
   }
 }
 
+
 static int
-figLineWidth(XfigRenderer *renderer)
+figLineWidth (DiaXfigRenderer *renderer)
 {
   int width = 0;
   /* Minimal line width in fig diagrams. */
-  if (renderer->linewidth <= 0.03175) width = 1;
-  else width = (int)((renderer->linewidth / 2.54) * 80.0);
+  if (renderer->linewidth <= 0.03175) {
+    width = 1;
+  } else {
+    width = (int) ((renderer->linewidth / 2.54) * 80.0);
+  }
   return width;
 }
 
+
 /* Must be called before outputting anything that uses this color,
    in order to output a color pseudo object.
    The color pseudo object even must be placed first in the xfig file.
  */
 static void
-figCheckColor(XfigRenderer *renderer, Color *color)
+figCheckColor (DiaXfigRenderer *renderer, Color *color)
 {
   int i;
 
   for (i = 0; i < FIG_MAX_DEFAULT_COLORS; i++) {
-    if (color_equals(color, &fig_default_colors[i])) return;
+    if (color_equals (color, &fig_default_colors[i])) return;
   }
+
   for (i = 0; i < renderer->max_user_color; i++) {
-    if (color_equals(color, &renderer->user_colors[i])) return;
+    if (color_equals (color, &renderer->user_colors[i])) return;
   }
+
   if (renderer->max_user_color == FIG_MAX_USER_COLORS) {
     figWarn(renderer, WARNING_OUT_OF_COLORS);
     return;
   }
+
   renderer->user_colors[renderer->max_user_color] = *color;
-  fprintf(renderer->file, "0 %d #%02x%02x%02x\n",
-          renderer->max_user_color + FIG_MAX_DEFAULT_COLORS,
-          (int)(color->red*255), (int)(color->green*255), (int)(color->blue*255));
+  fprintf (renderer->file,
+           "0 %d #%02x%02x%02x\n",
+           renderer->max_user_color + FIG_MAX_DEFAULT_COLORS,
+           (int) (color->red * 255),
+           (int) (color->green * 255),
+           (int) (color->blue * 255));
   renderer->max_user_color++;
 }
 
+
 static int
-figColor(XfigRenderer *renderer, Color *color)
+figColor (DiaXfigRenderer *renderer, Color *color)
 {
   int i;
 
   for (i = 0; i < FIG_MAX_DEFAULT_COLORS; i++) {
-    if (color_equals(color, &fig_default_colors[i]))
+    if (color_equals (color, &fig_default_colors[i])) {
       return i;
+    }
   }
+
   for (i = 0; i < renderer->max_user_color; i++) {
-    if (color_equals(color, &renderer->user_colors[i]))
+    if (color_equals (color, &renderer->user_colors[i])) {
       return i + FIG_MAX_DEFAULT_COLORS;
+    }
   }
+
   return 0;
 }
 
-static real
-figCoord(XfigRenderer *renderer, real coord)
+
+static double
+figCoord (DiaXfigRenderer *renderer, double coord)
 {
-  return (coord/2.54)*1200.0;
+  return (coord / 2.54) * 1200.0;
 }
 
-static real
-figAltCoord(XfigRenderer *renderer, real coord)
+
+static double
+figAltCoord (DiaXfigRenderer *renderer, double coord)
 {
-  return (coord/2.54)*80.0;
+  return (coord / 2.54) * 80.0;
 }
 
+
 static int
-figDepth(XfigRenderer *renderer)
+figDepth (DiaXfigRenderer *renderer)
 {
   return renderer->depth;
 }
 
-static real
-figDashLength(XfigRenderer *renderer)
+
+static double
+figDashLength (DiaXfigRenderer *renderer)
 {
-  return figAltCoord(renderer, renderer->dashlength);
+  return figAltCoord (renderer, renderer->dashlength);
 }
 
+
 static int
-figJoinStyle(XfigRenderer *renderer)
+figJoinStyle (DiaXfigRenderer *renderer)
 {
   return renderer->joinmode;
 }
 
+
 static int
-figCapsStyle(XfigRenderer *renderer)
+figCapsStyle (DiaXfigRenderer *renderer)
 {
   return renderer->capsmode;
 }
 
+
 static int
-figAlignment(XfigRenderer *renderer, int alignment)
+figAlignment (DiaXfigRenderer *renderer, int alignment)
 {
   return alignment;
 }
 
+
 static int
-figFont(XfigRenderer *renderer)
+figFont (DiaXfigRenderer *renderer)
 {
   int i;
   const char *legacy_name;
 
   /* FIXME: this is broken */
-  legacy_name = dia_font_get_legacy_name(renderer->font);
+  legacy_name = dia_font_get_legacy_name (renderer->font);
   for (i = 0; fig_fonts[i] != NULL; i++) {
-    if (!strcmp(legacy_name, fig_fonts[i]))
+    if (!g_strcmp0 (legacy_name, fig_fonts[i])) {
       return i;
+    }
   }
 
   return -1;
 }
 
-static real
-figFontSize(XfigRenderer *renderer)
+
+static double
+figFontSize (DiaXfigRenderer *renderer)
 {
-  return (renderer->fontheight/2.54)*72.27;
+  return (renderer->fontheight / 2.54) * 72.27;
 }
 
+
 static guchar *
-figText(XfigRenderer *renderer, const guchar *text)
+figText (DiaXfigRenderer *renderer, const guchar *text)
 {
   int i, j;
-  int len = strlen((char *) text);
+  int len = strlen ((char *) text);
   int newlen = len;
   char *returntext;
+
   for (i = 0; i < len; i++) {
     if (text[i] > 127) {
       newlen += 3;
@@ -490,12 +360,14 @@ figText(XfigRenderer *renderer, const guchar *text)
       newlen += 1;
     }
   }
+
   returntext = g_new0 (char, newlen + 1);
   j = 0;
+
   for (i = 0; i < len; i++, j++) {
     if (text[i] > 127) {
-      sprintf(&returntext[j], "\\%03o", text[i]);
-      j+=3;
+      sprintf (&returntext[j], "\\%03o", text[i]);
+      j += 3;
     } else if ('\\'==text[i]) { /* backslash must be quoted in xfig */
       returntext[j++] = '\\';
       returntext[j]   = '\\';
@@ -504,16 +376,17 @@ figText(XfigRenderer *renderer, const guchar *text)
     }
   }
   returntext[j] = 0;
-  return (guchar *)returntext;
+  return (guchar *) returntext;
 }
 
+
 static void
-figArrow(XfigRenderer *renderer, Arrow *arrow, real line_width)
+figArrow (DiaXfigRenderer *renderer, Arrow *arrow, double line_width)
 {
   int type, style;
-  gchar lw_buf[DTOSTR_BUF_SIZE];
-  gchar aw_buf[DTOSTR_BUF_SIZE];
-  gchar al_buf[DTOSTR_BUF_SIZE];
+  char lw_buf[DTOSTR_BUF_SIZE];
+  char aw_buf[DTOSTR_BUF_SIZE];
+  char al_buf[DTOSTR_BUF_SIZE];
 
   switch (arrow->type) {
     case ARROW_NONE:
@@ -555,8 +428,8 @@ figArrow(XfigRenderer *renderer, Arrow *arrow, real line_width)
     case ARROW_BACKSLASH:
     case ARROW_THREE_DOTS:
     default:
-      message_warning(_("Fig format has no equivalent of arrow style %s; using simple arrow.\n"),
-          arrow_get_name_from_type(arrow->type));
+      message_warning (_("Fig format has no equivalent of arrow style %s; using simple arrow.\n"),
+                       arrow_get_name_from_type (arrow->type));
       /* Notice fallthrough */
     case ARROW_FILLED_CONCAVE:
       type = 2; style = 1; break;
@@ -565,17 +438,21 @@ figArrow(XfigRenderer *renderer, Arrow *arrow, real line_width)
     case MAX_ARROW_TYPE:
       g_return_if_reached ();
   }
-  fprintf(renderer->file, "  %d %d %s %s %s\n",
-         type, style,
-         xfig_dtostr(lw_buf, figAltCoord(renderer, line_width)),
-         xfig_dtostr(aw_buf, figCoord(renderer, arrow->width)),
-         xfig_dtostr(al_buf, figCoord(renderer, arrow->length)) );
+
+  fprintf (renderer->file,
+           "  %d %d %s %s %s\n",
+           type,
+           style,
+           xfig_dtostr (lw_buf, figAltCoord (renderer, line_width)),
+           xfig_dtostr (aw_buf, figCoord (renderer, arrow->width)),
+           xfig_dtostr (al_buf, figCoord (renderer, arrow->length)) );
 }
 
+
 static void
-begin_render(DiaRenderer *self, const DiaRectangle *update)
+begin_render (DiaRenderer *self, const DiaRectangle *update)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   if (renderer->color_pass) {
     /* Set up warnings */
@@ -594,305 +471,383 @@ begin_render(DiaRenderer *self, const DiaRectangle *update)
   renderer->fillmode = 0;
   renderer->font = NULL;
   renderer->fontheight = 1;
-
 }
 
+
 static void
-end_render(DiaRenderer *renderer)
+end_render (DiaRenderer *renderer)
 {
 }
 
+
 static void
-set_linewidth(DiaRenderer *self, real linewidth)
+set_linewidth (DiaRenderer *self, double linewidth)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   renderer->linewidth = linewidth;
 }
 
+
 static void
-set_linecaps(DiaRenderer *self, LineCaps mode)
+set_linecaps (DiaRenderer *self, LineCaps mode)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   renderer->capsmode = mode;
 }
 
+
 static void
-set_linejoin(DiaRenderer *self, LineJoin mode)
+set_linejoin (DiaRenderer *self, LineJoin mode)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   renderer->joinmode = mode;
 }
 
+
 static void
-set_linestyle(DiaRenderer *self, LineStyle mode, real dash_length)
+set_linestyle (DiaRenderer *self, LineStyle mode, double dash_length)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   renderer->stylemode = mode;
   renderer->dashlength = dash_length;
 }
 
+
 static void
-set_fillstyle(DiaRenderer *self, FillStyle mode)
+set_fillstyle (DiaRenderer *self, FillStyle mode)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   renderer->fillmode = mode;
 }
 
-static void
-set_font(DiaRenderer *self, DiaFont *font, real height)
-{
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-
-  g_clear_object (&renderer->font);
-  renderer->font = g_object_ref (font);
-  renderer->fontheight = height;
-}
 
 static void
-draw_line(DiaRenderer *self,
-          Point *start, Point *end,
-          Color *color)
+draw_line (DiaRenderer *self,
+           Point       *start,
+           Point       *end,
+           Color       *color)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
-  fprintf(renderer->file, "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 0 0 2\n",
-         figLineStyle(renderer), figLineWidth(renderer),
-         figColor(renderer, color), figDepth(renderer),
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         figJoinStyle(renderer), figCapsStyle(renderer) );
-  fprintf(renderer->file, "\t%d %d %d %d\n",
-         (int)figCoord(renderer, start->x), (int)figCoord(renderer, start->y),
-         (int)figCoord(renderer, end->x), (int)figCoord(renderer, end->y));
+  fprintf (renderer->file,
+           "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 0 0 2\n"
+           "\t%d %d %d %d\n",
+           figLineStyle (renderer),
+           figLineWidth (renderer),
+           figColor (renderer, color),
+           figDepth (renderer),
+           xfig_dtostr (d_buf, figDashLength (renderer)),
+           figJoinStyle (renderer),
+           figCapsStyle (renderer),
+           (int) figCoord (renderer, start->x),
+           (int) figCoord (renderer, start->y),
+           (int) figCoord (renderer, end->x),
+           (int) figCoord (renderer, end->y));
 }
 
+
 static void
-draw_line_with_arrows(DiaRenderer *self,
-                     Point *start, Point *end,
-                     real line_width,
-                     Color *color,
-                     Arrow *start_arrow,
-                     Arrow *end_arrow)
+draw_line_with_arrows (DiaRenderer *self,
+                       Point       *start,
+                       Point       *end,
+                       double       line_width,
+                       Color       *color,
+                       Arrow       *start_arrow,
+                       Arrow       *end_arrow)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
-  fprintf(renderer->file, "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 %d %d 2\n",
-         figLineStyle(renderer), figLineWidth(renderer),
-         figColor(renderer, color), figDepth(renderer),
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         figJoinStyle(renderer),
-         figCapsStyle(renderer),
-         hasArrow(end_arrow),
-         hasArrow(start_arrow));
-  if (hasArrow(end_arrow)) {
-    figArrow(renderer, end_arrow, line_width);
+  fprintf (renderer->file,
+           "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 %d %d 2\n",
+           figLineStyle (renderer),
+           figLineWidth (renderer),
+           figColor (renderer, color),
+           figDepth (renderer),
+           xfig_dtostr (d_buf, figDashLength(renderer)),
+           figJoinStyle (renderer),
+           figCapsStyle (renderer),
+           hasArrow (end_arrow),
+           hasArrow (start_arrow));
+
+  if (hasArrow (end_arrow)) {
+    figArrow (renderer, end_arrow, line_width);
   }
-  if (hasArrow(start_arrow)) {
-    figArrow(renderer, start_arrow, line_width);
+
+  if (hasArrow (start_arrow)) {
+    figArrow (renderer, start_arrow, line_width);
   }
-  fprintf(renderer->file, "\t%d %d %d %d\n",
-         (int)figCoord(renderer, start->x), (int)figCoord(renderer, start->y),
-         (int)figCoord(renderer, end->x), (int)figCoord(renderer, end->y));
+
+  fprintf (renderer->file,
+           "\t%d %d %d %d\n",
+           (int) figCoord (renderer, start->x),
+           (int) figCoord (renderer, start->y),
+           (int) figCoord (renderer, end->x),
+           (int) figCoord (renderer, end->y));
 }
 
+
 static void
-draw_polyline(DiaRenderer *self,
-              Point *points, int num_points,
-              Color *color)
+draw_polyline (DiaRenderer *self,
+               Point       *points,
+               int          num_points,
+               Color       *color)
 {
   int i;
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
-  fprintf(renderer->file, "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 0 0 %d\n",
-         figLineStyle(renderer), figLineWidth(renderer),
-         figColor(renderer, color), figDepth(renderer),
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         figJoinStyle(renderer),
-         figCapsStyle(renderer), num_points);
-  fprintf(renderer->file, "\t");
+  fprintf (renderer->file,
+           "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 0 0 %d\n",
+           figLineStyle (renderer),
+           figLineWidth (renderer),
+           figColor (renderer, color),
+           figDepth (renderer),
+           xfig_dtostr (d_buf, figDashLength (renderer)),
+           figJoinStyle (renderer),
+           figCapsStyle (renderer),
+           num_points);
+
+  fprintf (renderer->file, "\t");
   for (i = 0; i < num_points; i++) {
-    fprintf(renderer->file, "%d %d ",
-           (int)figCoord(renderer, points[i].x), (int)figCoord(renderer, points[i].y));
+    fprintf (renderer->file,
+             "%d %d ",
+             (int) figCoord (renderer, points[i].x),
+             (int) figCoord (renderer, points[i].y));
   }
-  fprintf(renderer->file, "\n");
+  fprintf (renderer->file, "\n");
 }
 
+
 static void
-draw_polyline_with_arrows(DiaRenderer *self,
-                         Point *points, int num_points,
-                         real line_width,
-                         Color *color,
-                         Arrow *start_arrow,
-                         Arrow *end_arrow)
+draw_polyline_with_arrows (DiaRenderer *self,
+                           Point       *points,
+                           int          num_points,
+                           double       line_width,
+                           Color       *color,
+                           Arrow       *start_arrow,
+                           Arrow       *end_arrow)
 {
   int i;
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
-  fprintf(renderer->file, "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 %d %d %d\n",
-         figLineStyle(renderer), figLineWidth(renderer),
-         figColor(renderer, color), figDepth(renderer),
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         figJoinStyle(renderer),
-         figCapsStyle(renderer),
-         hasArrow(end_arrow),
-         hasArrow(start_arrow), num_points);
-  if (hasArrow(end_arrow)) {
-    figArrow(renderer, end_arrow, line_width);
+  fprintf (renderer->file,
+           "2 1 %d %d %d 0 %d 0 -1 %s %d %d 0 %d %d %d\n",
+           figLineStyle (renderer),
+           figLineWidth (renderer),
+           figColor (renderer, color),
+           figDepth (renderer),
+           xfig_dtostr (d_buf, figDashLength (renderer)),
+           figJoinStyle (renderer),
+           figCapsStyle (renderer),
+           hasArrow (end_arrow),
+           hasArrow (start_arrow),
+           num_points);
+
+  if (hasArrow (end_arrow)) {
+    figArrow (renderer, end_arrow, line_width);
   }
-  if (hasArrow(start_arrow)) {
-    figArrow(renderer, start_arrow, line_width);
+
+  if (hasArrow (start_arrow)) {
+    figArrow (renderer, start_arrow, line_width);
   }
-  fprintf(renderer->file, "\t");
+
+  fprintf (renderer->file, "\t");
   for (i = 0; i < num_points; i++) {
-    fprintf(renderer->file, "%d %d ",
-           (int)figCoord(renderer, points[i].x), (int)figCoord(renderer, points[i].y));
+    fprintf (renderer->file,
+             "%d %d ",
+             (int) figCoord (renderer, points[i].x),
+             (int) figCoord (renderer, points[i].y));
   }
-  fprintf(renderer->file, "\n");
+  fprintf (renderer->file, "\n");
 }
 
+
 static void
-draw_polygon(DiaRenderer *self,
-            Point *points, int num_points,
-            Color *fill, Color *stroke)
+draw_polygon (DiaRenderer *self,
+              Point       *points,
+              int          num_points,
+              Color       *fill,
+              Color       *stroke)
 {
   int i;
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    if (stroke)
-      figCheckColor(renderer, stroke);
-    if (fill)
-      figCheckColor(renderer, fill);
+    if (stroke) {
+      figCheckColor (renderer, stroke);
+    }
+    if (fill) {
+      figCheckColor (renderer, fill);
+    }
     return;
   }
 
-  fprintf(renderer->file, "2 3 %d %d %d %d %d 0 %d %s %d %d 0 0 0 %d\n",
-         figLineStyle(renderer), stroke ? figLineWidth(renderer) : 0,
-         stroke ? figColor(renderer, stroke) : 0, fill ? figColor(renderer, fill) : 0,
-         figDepth(renderer),
-         fill ? 20 : -1,
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         figJoinStyle(renderer),
-         figCapsStyle(renderer), num_points+1);
-  fprintf(renderer->file, "\t");
+  fprintf (renderer->file,
+           "2 3 %d %d %d %d %d 0 %d %s %d %d 0 0 0 %d\n",
+           figLineStyle (renderer),
+           stroke ? figLineWidth (renderer) : 0,
+           stroke ? figColor (renderer, stroke) : 0,
+           fill ? figColor (renderer, fill) : 0,
+           figDepth (renderer),
+           fill ? 20 : -1,
+           xfig_dtostr (d_buf, figDashLength (renderer)),
+           figJoinStyle (renderer),
+           figCapsStyle (renderer), num_points + 1);
+
+  fprintf (renderer->file, "\t");
   for (i = 0; i < num_points; i++) {
-    fprintf(renderer->file, "%d %d ",
-           (int)figCoord(renderer, points[i].x), (int)figCoord(renderer, points[i].y));
+    fprintf (renderer->file,
+             "%d %d ",
+             (int) figCoord (renderer, points[i].x),
+             (int) figCoord (renderer, points[i].y));
   }
-  fprintf(renderer->file, "%d %d\n",
-         (int)figCoord(renderer, points[0].x), (int)figCoord(renderer, points[0].y));
+  fprintf (renderer->file,
+           "%d %d\n",
+           (int) figCoord (renderer, points[0].x),
+           (int) figCoord (renderer, points[0].y));
 }
 
+
 static void
-draw_rect(DiaRenderer *self,
-          Point *ul_corner, Point *lr_corner,
-          Color *fill, Color *stroke)
+draw_rect (DiaRenderer *self,
+           Point       *ul_corner,
+           Point       *lr_corner,
+           Color       *fill,
+           Color       *stroke)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    if (stroke)
-      figCheckColor(renderer, stroke);
-    if (fill)
-      figCheckColor(renderer, fill);
+    if (stroke) {
+      figCheckColor (renderer, stroke);
+    }
+    if (fill) {
+      figCheckColor (renderer, fill);
+    }
     return;
   }
 
-  fprintf(renderer->file, "2 3 %d %d %d %d %d -1 %d %s %d %d 0 0 0 5\n",
-         figLineStyle(renderer), stroke ? figLineWidth(renderer) : 0,
-         stroke ? figColor(renderer, stroke) : 0, fill ? figColor(renderer, fill) : 0,
-         figDepth(renderer),
-         fill ? 20 : -1,
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         figJoinStyle(renderer),
-         figCapsStyle(renderer));
-  fprintf(renderer->file, "\t%d %d %d %d %d %d %d %d %d %d\n",
-         (int)figCoord(renderer, ul_corner->x), (int)figCoord(renderer, ul_corner->y),
-         (int)figCoord(renderer, lr_corner->x), (int)figCoord(renderer, ul_corner->y),
-         (int)figCoord(renderer, lr_corner->x), (int)figCoord(renderer, lr_corner->y),
-         (int)figCoord(renderer, ul_corner->x), (int)figCoord(renderer, lr_corner->y),
-         (int)figCoord(renderer, ul_corner->x), (int)figCoord(renderer, ul_corner->y));
+  fprintf (renderer->file,
+           "2 3 %d %d %d %d %d -1 %d %s %d %d 0 0 0 5\n"
+           "\t%d %d %d %d %d %d %d %d %d %d\n",
+           figLineStyle (renderer),
+           stroke ? figLineWidth (renderer) : 0,
+           stroke ? figColor (renderer, stroke) : 0,
+           fill ? figColor (renderer, fill) : 0,
+           figDepth (renderer),
+           fill ? 20 : -1,
+           xfig_dtostr (d_buf, figDashLength (renderer)),
+           figJoinStyle (renderer),
+           figCapsStyle (renderer),
+           (int) figCoord (renderer, ul_corner->x),
+           (int) figCoord (renderer, ul_corner->y),
+           (int) figCoord (renderer, lr_corner->x),
+           (int) figCoord (renderer, ul_corner->y),
+           (int) figCoord (renderer, lr_corner->x),
+           (int) figCoord (renderer, lr_corner->y),
+           (int) figCoord (renderer, ul_corner->x),
+           (int) figCoord (renderer, lr_corner->y),
+           (int) figCoord (renderer, ul_corner->x),
+           (int) figCoord (renderer, ul_corner->y));
 }
+
+
 static void
-draw_arc(DiaRenderer *self,
-         Point *center,
-         real width, real height,
-         real angle1, real angle2,
-         Color *color)
+draw_arc (DiaRenderer *self,
+          Point       *center,
+          double       width,
+          double       height,
+          double       angle1,
+          double       angle2,
+          Color       *color)
 {
   Point first, second, last;
   int direction = angle2 > angle1 ? 1 : 0; /* Dia not always gives counterclockwise */
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar dl_buf[DTOSTR_BUF_SIZE];
-  gchar cx_buf[DTOSTR_BUF_SIZE];
-  gchar cy_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char dl_buf[DTOSTR_BUF_SIZE];
+  char cx_buf[DTOSTR_BUF_SIZE];
+  char cy_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
-  fprintf (renderer->file, "#draw_arc center=(%g,%g) radius=%g angle1=%g° angle2=%g°\n", center->x, 
center->y, (width+height)/4.0, angle1, angle2);
+
+  fprintf (renderer->file,
+           "#draw_arc center=(%g,%g) radius=%g angle1=%g° angle2=%g°\n",
+           center->x,
+           center->y,
+           (width + height) / 4.0,
+           angle1,
+           angle2);
+
   /* adjust to radians */
-  angle1 *= (M_PI/180.0);
-  angle2 *= (M_PI/180.0);
+  angle1 *= (M_PI / 180.0);
+  angle2 *= (M_PI / 180.0);
 
   first = *center;
-  first.x += (width/2.0)*cos(angle1);
-  first.y -= (height/2.0)*sin(angle1);
+  first.x += (width / 2.0) * cos (angle1);
+  first.y -= (height / 2.0) * sin (angle1);
 
   second = *center;
-  second.x += (width/2.0)*cos((angle1+angle2)/2.0);
-  second.y -= (height/2.0)*sin((angle1+angle2)/2.0);
+  second.x += (width / 2.0) * cos ((angle1 + angle2) / 2.0);
+  second.y -= (height / 2.0) * sin ((angle1 + angle2) / 2.0);
 
   last = *center;
-  last.x += (width/2.0)*cos(angle2);
-  last.y -= (height/2.0)*sin(angle2);
-
-  fprintf(renderer->file, "5 1 %d %d %d %d %d 0 -1 %s %d %d 0 0 %s %s %d %d %d %d %d %d\n",
-         figLineStyle(renderer), figLineWidth(renderer),
-         figColor(renderer, color), figColor(renderer, color),
-         figDepth(renderer),
-         xfig_dtostr(dl_buf, figDashLength(renderer)),
-         figCapsStyle(renderer),
-         direction,
-         xfig_dtostr(cx_buf, figCoord(renderer, center->x)),
-         xfig_dtostr(cy_buf, figCoord(renderer, center->y)),
-         (int)figCoord(renderer, first.x), (int)figCoord(renderer, first.y),
-         (int)figCoord(renderer, second.x), (int)figCoord(renderer, second.y),
-         (int)figCoord(renderer, last.x), (int)figCoord(renderer, last.y));
+  last.x += (width / 2.0) * cos (angle2);
+  last.y -= (height / 2.0) * sin (angle2);
 
+  fprintf (renderer->file,
+           "5 1 %d %d %d %d %d 0 -1 %s %d %d 0 0 %s %s %d %d %d %d %d %d\n",
+           figLineStyle (renderer),
+           figLineWidth (renderer),
+           figColor (renderer, color),
+           figColor (renderer, color),
+           figDepth (renderer),
+           xfig_dtostr (dl_buf, figDashLength (renderer)),
+           figCapsStyle (renderer),
+           direction,
+           xfig_dtostr (cx_buf, figCoord (renderer, center->x)),
+           xfig_dtostr (cy_buf, figCoord (renderer, center->y)),
+           (int) figCoord (renderer, first.x),
+           (int) figCoord (renderer, first.y),
+           (int) figCoord (renderer, second.x),
+           (int) figCoord (renderer, second.y),
+           (int) figCoord (renderer, last.x),
+           (int) figCoord (renderer, last.y));
 }
 
+
 /* once more copied from lib/diarenderer.c (see also objects/standard/arc.c */
 static gboolean
 is_right_hand (const Point *a, const Point *b, const Point *c)
@@ -900,210 +855,263 @@ is_right_hand (const Point *a, const Point *b, const Point *c)
   Point dot1, dot2;
 
   dot1 = *a;
-  point_sub(&dot1, c);
-  point_normalize(&dot1);
+  point_sub (&dot1, c);
+  point_normalize (&dot1);
   dot2 = *b;
-  point_sub(&dot2, c);
-  point_normalize(&dot2);
-  return point_cross(&dot1, &dot2) > 0;
+  point_sub (&dot2, c);
+  point_normalize (&dot2);
+  return point_cross (&dot1, &dot2) > 0;
 }
 
+
 static void
-draw_arc_with_arrows(DiaRenderer *self,
-                    Point *startpoint,
-                    Point *endpoint,
-                    Point *midpoint,
-                    real line_width,
-                    Color *color,
-                    Arrow *start_arrow,
-                    Arrow *end_arrow)
+draw_arc_with_arrows (DiaRenderer *self,
+                      Point       *startpoint,
+                      Point       *endpoint,
+                      Point       *midpoint,
+                      double       line_width,
+                      Color       *color,
+                      Arrow       *start_arrow,
+                      Arrow       *end_arrow)
 {
   Point center;
   int direction = 0;
-  real radius = -1.0;
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar dl_buf[DTOSTR_BUF_SIZE];
-  gchar cx_buf[DTOSTR_BUF_SIZE];
-  gchar cy_buf[DTOSTR_BUF_SIZE];
+  double radius = -1.0;
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER(self);
+  char dl_buf[DTOSTR_BUF_SIZE];
+  char cx_buf[DTOSTR_BUF_SIZE];
+  char cy_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
   center.x = 0.0;
   center.y = 0.0;
   direction = is_right_hand (startpoint, midpoint, endpoint) ? 0 : 1;
-  if (!three_point_circle (startpoint, midpoint, endpoint, &center, &radius))
-    message_warning("xfig: arc conversion failed");
-
-  fprintf (renderer->file, "#draw_arc_with_arrows center=(%g,%g) radius=%g\n", center.x, center.y, radius);
-
-  fprintf(renderer->file, "5 1 %d %d %d %d %d 0 -1 %s %d %d %d %d %s %s %d %d %d %d %d %d\n",
-         figLineStyle(renderer), figLineWidth(renderer),
-         figColor(renderer, color), figColor(renderer, color),
-         figDepth(renderer),
-         xfig_dtostr(dl_buf, figDashLength(renderer)),
-         figCapsStyle(renderer),
-         direction,
-         hasArrow(end_arrow),
-         hasArrow(start_arrow),
-         xfig_dtostr(cx_buf, figCoord(renderer, center.x)),
-         xfig_dtostr(cy_buf, figCoord(renderer, center.y)),
-         (int)figCoord(renderer, startpoint->x), (int)figCoord(renderer, startpoint->y),
-         (int)figCoord(renderer, midpoint->x), (int)figCoord(renderer, midpoint->y),
-         (int)figCoord(renderer, endpoint->x), (int)figCoord(renderer, endpoint->y));
-
-  if (hasArrow(end_arrow)) {
-    figArrow(renderer, end_arrow, line_width);
+  if (!three_point_circle (startpoint, midpoint, endpoint, &center, &radius)) {
+    message_warning ("xfig: arc conversion failed");
+  }
+
+  fprintf (renderer->file,
+           "#draw_arc_with_arrows center=(%g,%g) radius=%g\n"
+           "5 1 %d %d %d %d %d 0 -1 %s %d %d %d %d %s %s %d %d %d %d %d %d\n",
+           center.x,
+           center.y,
+           radius,
+           figLineStyle (renderer),
+           figLineWidth (renderer),
+           figColor (renderer, color),
+           figColor (renderer, color),
+           figDepth (renderer),
+           xfig_dtostr (dl_buf, figDashLength (renderer)),
+           figCapsStyle (renderer),
+           direction,
+           hasArrow (end_arrow),
+           hasArrow (start_arrow),
+           xfig_dtostr (cx_buf, figCoord (renderer, center.x)),
+           xfig_dtostr (cy_buf, figCoord (renderer, center.y)),
+           (int) figCoord (renderer, startpoint->x),
+           (int) figCoord (renderer, startpoint->y),
+           (int) figCoord (renderer, midpoint->x),
+           (int) figCoord (renderer, midpoint->y),
+           (int) figCoord (renderer, endpoint->x),
+           (int) figCoord (renderer, endpoint->y));
+
+  if (hasArrow (end_arrow)) {
+    figArrow (renderer, end_arrow, line_width);
   }
-  if (hasArrow(start_arrow)) {
-    figArrow(renderer, start_arrow, line_width);
+
+  if (hasArrow (start_arrow)) {
+    figArrow (renderer, start_arrow, line_width);
   }
 }
 
+
 static void
-fill_arc(DiaRenderer *self,
-         Point *center,
-         real width, real height,
-         real angle1, real angle2,
-         Color *color)
+fill_arc (DiaRenderer *self,
+          Point       *center,
+          double       width,
+          double       height,
+          double       angle1,
+          double       angle2,
+          Color       *color)
 {
   Point first, second, last;
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar dl_buf[DTOSTR_BUF_SIZE];
-  gchar cx_buf[DTOSTR_BUF_SIZE];
-  gchar cy_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER(self);
+  char dl_buf[DTOSTR_BUF_SIZE];
+  char cx_buf[DTOSTR_BUF_SIZE];
+  char cy_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
-  fprintf (renderer->file, "#fill_arc center=(%g,%g) radius=%g angle1=%g° angle2=%g°\n", center->x, 
center->y, (width+height)/4.0, angle1, angle2);
+  fprintf (renderer->file,
+           "#fill_arc center=(%g,%g) radius=%g angle1=%g° angle2=%g°\n",
+           center->x,
+           center->y,
+           (width + height) / 4.0,
+           angle1,
+           angle2);
   /* adjust to radians */
-  angle1 *= (M_PI/180.0);
-  angle2 *= (M_PI/180.0);
+  angle1 *= (M_PI / 180.0);
+  angle2 *= (M_PI / 180.0);
 
   first = *center;
-  first.x += (width/2.0)*cos(angle1);
-  first.y -= (height/2.0)*sin(angle1);
+  first.x += (width / 2.0) * cos (angle1);
+  first.y -= (height / 2.0) * sin (angle1);
 
   second = *center;
-  second.x += (width/2.0)*cos((angle1+angle2)/2.0);
-  second.y -= (height/2.0)*sin((angle1+angle2)/2.0);
+  second.x += (width / 2.0) * cos ((angle1 + angle2) / 2.0);
+  second.y -= (height / 2.0) * sin ((angle1 + angle2) / 2.0);
 
   last = *center;
-  last.x += (width/2.0)*cos(angle2);
-  last.y -= (height/2.0)*sin(angle2);
-
-  fprintf(renderer->file, "5 2 %d %d %d %d %d 20 0 %s %d 1 0 0 %s %s %d %d %d %d %d %d\n",
-         figLineStyle(renderer), figLineWidth(renderer),
-         figColor(renderer, color), figColor(renderer, color),
-         figDepth(renderer),
-         xfig_dtostr(dl_buf, figDashLength(renderer)),
-         figCapsStyle(renderer),
-         xfig_dtostr(cx_buf, figCoord(renderer, center->x)),
-         xfig_dtostr(cy_buf, figCoord(renderer, center->y)),
-         (int)figCoord(renderer, first.x), (int)figCoord(renderer, first.y),
-         (int)figCoord(renderer, second.x), (int)figCoord(renderer, second.y),
-         (int)figCoord(renderer, last.x), (int)figCoord(renderer, last.y));
+  last.x += (width / 2.0) * cos (angle2);
+  last.y -= (height / 2.0) * sin (angle2);
 
+  fprintf (renderer->file,
+           "5 2 %d %d %d %d %d 20 0 %s %d 1 0 0 %s %s %d %d %d %d %d %d\n",
+           figLineStyle (renderer),
+           figLineWidth (renderer),
+           figColor (renderer, color),
+           figColor (renderer, color),
+           figDepth (renderer),
+           xfig_dtostr (dl_buf, figDashLength (renderer)),
+           figCapsStyle (renderer),
+           xfig_dtostr (cx_buf, figCoord (renderer, center->x)),
+           xfig_dtostr (cy_buf, figCoord (renderer, center->y)),
+           (int) figCoord (renderer, first.x),
+           (int) figCoord (renderer, first.y),
+           (int) figCoord (renderer, second.x),
+           (int) figCoord (renderer, second.y),
+           (int) figCoord (renderer, last.x),
+           (int) figCoord (renderer, last.y));
 }
 
+
 static void
 draw_ellipse (DiaRenderer *self,
-             Point *center,
-             real width, real height,
-             Color *fill, Color *stroke)
+              Point       *center,
+              double       width,
+              double       height,
+              Color       *fill,
+              Color       *stroke)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
-    if (stroke)
-      figCheckColor(renderer, stroke);
-    if (fill)
-      figCheckColor(renderer, fill);
+    if (stroke) {
+      figCheckColor (renderer, stroke);
+    }
+    if (fill) {
+      figCheckColor (renderer, fill);
+    }
     return;
   }
 
-  fprintf(renderer->file, "1 1 %d %d %d %d %d 0 %d %s 1 0.0 %d %d %d %d 0 0 0 0\n",
-         figLineStyle(renderer),
-         stroke ? figLineWidth(renderer) : 0,
-         stroke ? figColor(renderer, stroke) : 0,
-         fill ? figColor(renderer, fill) : 0,
-         figDepth(renderer),
-         fill ? 20 : -1,
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         (int)figCoord(renderer, center->x), (int)figCoord(renderer, center->y),
-         (int)figCoord(renderer, width/2), (int)figCoord(renderer, height/2));
+  fprintf (renderer->file,
+           "1 1 %d %d %d %d %d 0 %d %s 1 0.0 %d %d %d %d 0 0 0 0\n",
+           figLineStyle (renderer),
+           stroke ? figLineWidth (renderer) : 0,
+           stroke ? figColor (renderer, stroke) : 0,
+           fill ? figColor (renderer, fill) : 0,
+           figDepth (renderer),
+           fill ? 20 : -1,
+           xfig_dtostr (d_buf, figDashLength (renderer)),
+           (int) figCoord (renderer, center->x),
+           (int) figCoord (renderer, center->y),
+           (int) figCoord (renderer, width / 2),
+           (int) figCoord (renderer, height / 2));
 }
 
+
 static void
-draw_bezier(DiaRenderer *self,
-            BezPoint *points,
-            int numpoints,
-            Color *color)
+draw_bezier (DiaRenderer *self,
+             BezPoint    *points,
+             int          numpoints,
+             Color       *color)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
-  DIA_RENDERER_CLASS(parent_class)->draw_bezier(self, points, numpoints, color);
+  DIA_RENDERER_CLASS (dia_xfig_renderer_parent_class)->draw_bezier (self,
+                                                                    points,
+                                                                    numpoints,
+                                                                    color);
 }
 
+
 static void
-draw_bezier_with_arrows(DiaRenderer *self,
-                       BezPoint *points,
-                       int numpoints,
-                       real line_width,
-                       Color *color,
-                       Arrow *start_arrow,
-                       Arrow *end_arrow)
+draw_bezier_with_arrows (DiaRenderer *self,
+                         BezPoint    *points,
+                         int          numpoints,
+                         double       line_width,
+                         Color       *color,
+                         Arrow       *start_arrow,
+                         Arrow       *end_arrow)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   if (renderer->color_pass) {
-    figCheckColor(renderer, color);
+    figCheckColor (renderer, color);
     return;
   }
 
-  DIA_RENDERER_CLASS(parent_class)->draw_bezier_with_arrows(self, points, numpoints, line_width, color, 
start_arrow, end_arrow);
+  DIA_RENDERER_CLASS (dia_xfig_renderer_parent_class)->draw_bezier_with_arrows (self,
+                                                                                points,
+                                                                                numpoints,
+                                                                                line_width,
+                                                                                color,
+                                                                                start_arrow,
+                                                                                end_arrow);
 }
 
+
 static void
 draw_beziergon (DiaRenderer *self,
-               BezPoint *points,
-               int numpoints,
-               Color *fill,
-               Color *stroke)
+                BezPoint    *points,
+                int          numpoints,
+                Color       *fill,
+                Color       *stroke)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
 
   if (renderer->color_pass) {
-    if (fill)
-      figCheckColor(renderer, fill);
-    if (stroke)
-      figCheckColor(renderer, stroke);
+    if (fill) {
+      figCheckColor (renderer, fill);
+    }
+    if (stroke) {
+      figCheckColor (renderer, stroke);
+    }
     return;
   }
 
-  DIA_RENDERER_CLASS(parent_class)->draw_beziergon(self, points, numpoints, fill, stroke);
+  DIA_RENDERER_CLASS (dia_xfig_renderer_parent_class)->draw_beziergon (self,
+                                                                       points,
+                                                                       numpoints,
+                                                                       fill,
+                                                                       stroke);
 }
 
+
 static void
-draw_string(DiaRenderer *self,
-            const char *text,
-            Point *pos, Alignment alignment,
-            Color *color)
+draw_string (DiaRenderer *self,
+             const char  *text,
+             Point       *pos,
+             Alignment    alignment,
+             Color       *color)
 {
   guchar *figtext = NULL;
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER(self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
   if (renderer->color_pass) {
     figCheckColor(renderer, color);
@@ -1112,7 +1120,8 @@ draw_string(DiaRenderer *self,
 
   figtext = figText (renderer, (unsigned char *) text);
   /* xfig texts are specials */
-  fprintf (renderer->file, "4 %d %d %d 0 %d %s 0.0 6 0.0 0.0 %d %d %s\\001\n",
+  fprintf (renderer->file,
+           "4 %d %d %d 0 %d %s 0.0 6 0.0 0.0 %d %d %s\\001\n",
            figAlignment (renderer, alignment),
            figColor (renderer, color),
            figDepth (renderer),
@@ -1126,29 +1135,39 @@ draw_string(DiaRenderer *self,
 
 
 static void
-draw_image(DiaRenderer *self,
-           Point *point,
-           real width, real height,
-           DiaImage *image)
+draw_image (DiaRenderer *self,
+            Point       *point,
+            double       width,
+            double       height,
+            DiaImage    *image)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER (self);
+  char d_buf[DTOSTR_BUF_SIZE];
 
-  if (renderer->color_pass)
+  if (renderer->color_pass) {
     return;
+  }
 
-  fprintf(renderer->file, "2 5 %d 0 -1 0 %d 0 -1 %s %d %d 0 0 0 5\n",
-         figLineStyle(renderer), figDepth(renderer),
-         xfig_dtostr(d_buf, figDashLength(renderer)),
-         figJoinStyle(renderer),
-         figCapsStyle(renderer));
-  fprintf(renderer->file, "\t0 %s\n", dia_image_filename(image));
-  fprintf(renderer->file, "\t%d %d %d %d %d %d %d %d %d %d\n",
-         (int)figCoord(renderer, point->x), (int)figCoord(renderer, point->y),
-         (int)figCoord(renderer, point->x+width), (int)figCoord(renderer, point->y),
-         (int)figCoord(renderer, point->x+width), (int)figCoord(renderer, point->y+height),
-         (int)figCoord(renderer, point->x), (int)figCoord(renderer, point->y+height),
-         (int)figCoord(renderer, point->x), (int)figCoord(renderer, point->y));
+  fprintf (renderer->file,
+           "2 5 %d 0 -1 0 %d 0 -1 %s %d %d 0 0 0 5\n"
+           "\t0 %s\n"
+           "\t%d %d %d %d %d %d %d %d %d %d\n",
+           figLineStyle (renderer),
+           figDepth (renderer),
+           xfig_dtostr (d_buf, figDashLength (renderer)),
+           figJoinStyle (renderer),
+           figCapsStyle (renderer),
+           dia_image_filename (image),
+           (int) figCoord (renderer, point->x),
+           (int) figCoord (renderer, point->y),
+           (int) figCoord (renderer, point->x+width),
+           (int) figCoord (renderer, point->y),
+           (int) figCoord (renderer, point->x+width),
+           (int) figCoord (renderer, point->y+height),
+           (int) figCoord (renderer, point->x),
+           (int) figCoord (renderer, point->y+height),
+           (int) figCoord (renderer, point->x),
+           (int) figCoord (renderer, point->y));
 }
 
 
@@ -1157,13 +1176,13 @@ draw_object (DiaRenderer *self,
              DiaObject   *object,
              DiaMatrix   *matrix)
 {
-  XfigRenderer *renderer = XFIG_RENDERER(self);
+  DiaXfigRenderer *renderer = DIA_XFIG_RENDERER(self);
 
   if (renderer->color_pass) {
     /* color pass does not need transformation */
     dia_object_draw (object, DIA_RENDERER (renderer));
   } else {
-    fprintf(renderer->file, "6 0 0 0 0\n");
+    fprintf (renderer->file, "6 0 0 0 0\n");
     if (matrix) {
       DiaRenderer *tr = dia_transform_renderer_new (self);
 
@@ -1173,11 +1192,65 @@ draw_object (DiaRenderer *self,
     } else {
       dia_object_draw (object, DIA_RENDERER (renderer));
     }
-    fprintf(renderer->file, "-6\n");
+    fprintf (renderer->file, "-6\n");
   }
 }
 
 
+static void
+dia_xfig_renderer_class_init (DiaXfigRendererClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  DiaRendererClass *renderer_class = DIA_RENDERER_CLASS (klass);
+
+  object_class->finalize = dia_xfig_renderer_finalize;
+  object_class->set_property = dia_xfig_renderer_set_property;
+  object_class->get_property = dia_xfig_renderer_get_property;
+
+  renderer_class->begin_render = begin_render;
+  renderer_class->end_render = end_render;
+
+  renderer_class->set_linewidth = set_linewidth;
+  renderer_class->set_linecaps = set_linecaps;
+  renderer_class->set_linejoin = set_linejoin;
+  renderer_class->set_linestyle = set_linestyle;
+  renderer_class->set_fillstyle = set_fillstyle;
+
+  renderer_class->draw_line = draw_line;
+  renderer_class->draw_polyline = draw_polyline;
+
+  renderer_class->draw_polygon = draw_polygon;
+
+  renderer_class->draw_arc = draw_arc;
+  renderer_class->fill_arc = fill_arc;
+
+  renderer_class->draw_ellipse = draw_ellipse;
+
+  renderer_class->draw_rect = draw_rect;
+  renderer_class->draw_bezier = draw_bezier;
+  renderer_class->draw_beziergon = draw_beziergon;
+
+  renderer_class->draw_string = draw_string;
+
+  renderer_class->draw_image = draw_image;
+
+  renderer_class->draw_line_with_arrows = draw_line_with_arrows;
+  renderer_class->draw_polyline_with_arrows = draw_polyline_with_arrows;
+  renderer_class->draw_arc_with_arrows = draw_arc_with_arrows;
+  renderer_class->draw_bezier_with_arrows = draw_bezier_with_arrows;
+  renderer_class->draw_object = draw_object;
+
+  g_object_class_override_property (object_class, PROP_FONT, "font");
+  g_object_class_override_property (object_class, PROP_FONT_HEIGHT, "font-height");
+}
+
+
+static void
+dia_xfig_renderer_init (DiaXfigRenderer *self)
+{
+}
+
+
 static gboolean
 export_fig (DiagramData *data,
             DiaContext  *ctx,
@@ -1186,32 +1259,32 @@ export_fig (DiagramData *data,
             void        *user_data)
 {
   FILE *file;
-  XfigRenderer *renderer;
-  gchar d_buf[DTOSTR_BUF_SIZE];
+  DiaXfigRenderer *renderer;
+  char d_buf[DTOSTR_BUF_SIZE];
 
-  file = g_fopen(filename, "w");
+  file = g_fopen (filename, "w");
 
   if (file == NULL) {
     dia_context_add_message_with_errno (ctx,
                                         errno,
                                         _("Can't open output file %s"),
-                                        dia_context_get_filename(ctx));
+                                        dia_context_get_filename (ctx));
     return FALSE;
   }
 
-  renderer = g_object_new (XFIG_TYPE_RENDERER, NULL);
+  renderer = g_object_new (DIA_XFIG_TYPE_RENDERER, NULL);
 
   renderer->file = file;
 
-  fprintf(file, "#FIG 3.2\n");
-  fprintf(file, (data->paper.is_portrait?"Portrait\n":"Landscape\n"));
-  fprintf(file, "Center\n");
-  fprintf(file, "Metric\n");
-  fprintf(file, "%s\n", data->paper.name);
-  fprintf(file, "%s\n", xfig_dtostr(d_buf, data->paper.scaling*100.0));
-  fprintf(file, "Single\n"); /* Could we do layers this way? */
-  fprintf(file, "-2\n");
-  fprintf(file, "1200 2\n");
+  fprintf (file, "#FIG 3.2\n");
+  fprintf (file, (data->paper.is_portrait ? "Portrait\n" : "Landscape\n"));
+  fprintf (file, "Center\n");
+  fprintf (file, "Metric\n");
+  fprintf (file, "%s\n", data->paper.name);
+  fprintf (file, "%s\n", xfig_dtostr (d_buf, data->paper.scaling * 100.0));
+  fprintf (file, "Single\n"); /* Could we do layers this way? */
+  fprintf (file, "-2\n");
+  fprintf (file, "1200 2\n");
 
   renderer->color_pass = TRUE;
 
@@ -1246,7 +1319,8 @@ export_fig (DiagramData *data,
   return TRUE;
 }
 
-static const gchar *extensions[] = { "fig", NULL };
+
+static const char *extensions[] = { "fig", NULL };
 DiaExportFilter xfig_export_filter = {
   N_("Xfig format"),
   extensions,


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