summaryrefslogtreecommitdiff
path: root/backend/impress/r_geometry.c
diff options
context:
space:
mode:
Diffstat (limited to 'backend/impress/r_geometry.c')
-rw-r--r--backend/impress/r_geometry.c208
1 files changed, 0 insertions, 208 deletions
diff --git a/backend/impress/r_geometry.c b/backend/impress/r_geometry.c
deleted file mode 100644
index 4819821a..00000000
--- a/backend/impress/r_geometry.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* imposter (OO.org Impress viewer)
-** Copyright (C) 2003-2005 Gurer Ozen
-** This code is free software; you can redistribute it and/or
-** modify it under the terms of GNU General Public License.
-*/
-
-#include <config.h>
-#include "common.h"
-#include "internal.h"
-#include <math.h>
-
-void
-r_parse_color(const char *color, ImpColor *ic)
-{
- unsigned int cval;
-
- if (1 != sscanf(color, "#%X", &cval)) return;
-
- ic->red = (cval & 0xFF0000) >> 8;
- ic->green = cval & 0x00FF00;
- ic->blue = (cval & 0xFF) << 8;
-}
-
-int
-r_get_color(ImpRenderCtx *ctx, iks *node, char *name, ImpColor *ic)
-{
- char *color;
-
- color = r_get_style(ctx, node, name);
- if (!color) return 0;
- r_parse_color(color, ic);
-
- return 1;
-}
-
-static void
-fg_color(ImpRenderCtx *ctx, void *drw_data, iks *node, char *name)
-{
- ImpColor ic;
-
- if (r_get_color(ctx, node, name, &ic)) {
- ctx->drw->set_fg_color(drw_data, &ic);
- }
-}
-
-int
-r_get_x (ImpRenderCtx *ctx, iks *node, char *name)
-{
- char *val;
-
- val = iks_find_attrib (node, name);
- if (!val) return 0;
- return atof (val) * ctx->fact_x;
-}
-
-int
-r_get_y (ImpRenderCtx *ctx, iks *node, char *name)
-{
- char *val;
-
- val = iks_find_attrib (node, name);
- if (!val) return 0;
- return atof (val) * ctx->fact_y;
-}
-
-int
-r_get_angle (iks *node, char *name, int def)
-{
- char *tmp;
-
- tmp = iks_find_attrib (node, name);
- if (!tmp) return def;
- return atof (tmp);
-}
-
-static int x, y, w, h;
-static int px, py, pw, ph;
-
-static void
-r_get_viewbox (iks *node)
-{
- char *tmp;
-
- tmp = iks_find_attrib (node, "svg:viewBox");
- if (!tmp) return;
- sscanf (tmp, "%d %d %d %d", &px, &py, &pw, &ph);
-}
-
-void
-r_polygon(ImpRenderCtx *ctx, void *drw_data, iks *node)
-{
- char *data;
- ImpPoint *points;
- int i, cnt, j;
- int num;
- int fill = 1;
-
- data = r_get_style (ctx, node, "draw:fill");
- if (!data || strcmp (data, "solid") != 0) fill = 0;
-
- x = r_get_x (ctx, node, "svg:x");
- y = r_get_y (ctx, node, "svg:y");
- w = r_get_x (ctx, node, "svg:width");
- h = r_get_y (ctx, node, "svg:height");
- r_get_viewbox (node);
-
- data = iks_find_attrib (node, "draw:points");
- points = malloc (sizeof (ImpPoint) * strlen (data) / 4);
-
- cnt = 0;
- j = 0;
- num = -1;
- for (i = 0; data[i]; i++) {
- if (data[i] >= '0' && data[i] <= '9') {
- if (num == -1) num = i;
- } else {
- if (num != -1) {
- if (j == 0) {
- points[cnt].x = atoi (data + num);
- j = 1;
- } else {
- points[cnt++].y = atoi (data + num);
- j = 0;
- }
- num = -1;
- }
- }
- }
- if (num != -1) {
- if (j == 0) {
- points[cnt].x = atoi (data + num);
- } else {
- points[cnt++].y = atoi (data + num);
- }
- }
- for (i = 0; i < cnt; i++) {
- points[i].x = x + points[i].x * w / pw;
- points[i].y = y + points[i].y * h / ph;
- }
-
- if (fill) {
- fg_color(ctx, drw_data, node, "draw:fill-color");
- ctx->drw->draw_polygon(drw_data, 1, points, cnt);
- }
- fg_color(ctx, drw_data, node, "svg:stroke-color");
- ctx->drw->draw_polygon(drw_data, 0, points, cnt);
-
- free (points);
-}
-
-void
-r_polyline(ImpRenderCtx *ctx, void *drw_data, iks *node)
-{
- char *data;
- ImpPoint *points;
- int i, cnt, j;
- int num;
- int pen_x, pen_y;
-
- x = r_get_x (ctx, node, "svg:x");
- y = r_get_y (ctx, node, "svg:y");
- w = r_get_x (ctx, node, "svg:width");
- h = r_get_y (ctx, node, "svg:height");
- r_get_viewbox (node);
-
- data = iks_find_attrib (node, "draw:points");
- points = malloc (sizeof (ImpPoint) * strlen (data) / 4);
-
- cnt = 0;
- j = 0;
- num = -1;
- for (i = 0; data[i]; i++) {
- if (data[i] >= '0' && data[i] <= '9') {
- if (num == -1) num = i;
- } else {
- if (num != -1) {
- if (j == 0) {
- points[cnt].x = atoi (data + num);
- j = 1;
- } else {
- points[cnt++].y = atoi (data + num);
- j = 0;
- }
- num = -1;
- }
- }
- }
- if (num != -1) {
- if (j == 0) {
- points[cnt].x = atoi (data + num);
- } else {
- points[cnt++].y = atoi (data + num);
- }
- }
-
- pen_x = x + points[0].x * w /pw;
- pen_y = y + points[0].y * h / ph;
- fg_color(ctx, drw_data, node, "svg:stroke-color");
- for (i = 1; i < cnt; i++) {
- int tx, ty;
- tx = x + points[i].x * w / pw;
- ty = y + points[i].y * h / ph;
- ctx->drw->draw_line(drw_data, pen_x, pen_y, tx, ty);
- pen_x = tx;
- pen_y = ty;
- }
- free (points);
-}