[dia] xfig: style fixes
- From: Zander Brown <zbrown src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dia] xfig: style fixes
- Date: Wed, 22 Sep 2021 23:23:55 +0000 (UTC)
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, ¢er, &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, ¢er, &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]