From: Carl Worth Date: Wed, 14 Nov 2007 17:33:04 +0000 (-0800) Subject: Convert svg2pdf into svg2png X-Git-Url: https://git.cworth.org/git?p=svg2png;a=commitdiff_plain;h=4c05a1f09003e7a082bb4731ddf68f364ecb9c70 Convert svg2pdf into svg2png --- diff --git a/.gitignore b/.gitignore index 815f21e..6407aec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ *~ -svg2pdf +svg2png diff --git a/Makefile b/Makefile index 4420818..9143522 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ -ALL=svg2pdf +ALL=svg2png -MYCFLAGS=`pkg-config --cflags librsvg-2.0 cairo-pdf` -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -fno-strict-aliasing -MYLDFLAGS=`pkg-config --libs librsvg-2.0 cairo-pdf` +MYCFLAGS=`pkg-config --cflags librsvg-2.0 cairo-png` -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -fno-strict-aliasing +MYLDFLAGS=`pkg-config --libs librsvg-2.0 cairo-png` all: $(ALL) diff --git a/svg2pdf.c b/svg2pdf.c deleted file mode 100644 index 6d586c3..0000000 --- a/svg2pdf.c +++ /dev/null @@ -1,83 +0,0 @@ -/* gcc `pkg-config --cflags --libs librsvg-2.0 cairo-pdf` -o svg2pdf svg2pdf.c - * - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * Copyright © 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: Kristian Høgsberg - * Carl Worth - * Behdad Esfahbod - */ - -#include -#include -#include -#include - -#include - -#define FAIL(msg) \ - do { fprintf (stderr, "FAIL: %s\n", msg); exit (-1); } while (0) - -#define PIXELS_PER_POINT 1 - -int main (int argc, char *argv[]) -{ - GError *error = NULL; - RsvgHandle *handle; - RsvgDimensionData dim; - double width, height; - const char *filename = argv[1]; - const char *output_filename = argv[2]; - cairo_surface_t *surface; - cairo_t *cr; - cairo_status_t status; - - if (argc != 3) - FAIL ("usage: svg2pdf input_file.svg output_file.pdf"); - - g_type_init (); - - rsvg_set_default_dpi (72.0); - handle = rsvg_handle_new_from_file (filename, &error); - if (error != NULL) - FAIL (error->message); - - rsvg_handle_get_dimensions (handle, &dim); - width = dim.width; - height = dim.height; - - surface = cairo_pdf_surface_create (output_filename, width, height); - cr = cairo_create (surface); - - rsvg_handle_render_cairo (handle, cr); - - status = cairo_status (cr); - if (status) - FAIL (cairo_status_to_string (status)); - - cairo_destroy (cr); - cairo_surface_destroy (surface); - - return 0; -} diff --git a/svg2png.c b/svg2png.c new file mode 100644 index 0000000..abb0ea0 --- /dev/null +++ b/svg2png.c @@ -0,0 +1,83 @@ +/* gcc `pkg-config --cflags --libs librsvg-2.0 cairo-png` -o svg2png svg2png.c + * + * Copyright © 2005 Red Hat, Inc. + * Copyright © 2006 Red Hat, Inc. + * Copyright © 2007 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: Kristian Høgsberg + * Carl Worth + * Behdad Esfahbod + */ + +#include +#include +#include +#include + +#include + +#define FAIL(msg) \ + do { fprintf (stderr, "FAIL: %s\n", msg); exit (-1); } while (0) + +int main (int argc, char *argv[]) +{ + GError *error = NULL; + RsvgHandle *handle; + RsvgDimensionData dim; + double width, height; + const char *filename = argv[1]; + const char *output_filename = argv[2]; + cairo_surface_t *surface; + cairo_t *cr; + cairo_status_t status; + + if (argc != 3) + FAIL ("usage: svg2pdf input_file.svg output_file.pdf"); + + g_type_init (); + + rsvg_set_default_dpi (72.0); + handle = rsvg_handle_new_from_file (filename, &error); + if (error != NULL) + FAIL (error->message); + + rsvg_handle_get_dimensions (handle, &dim); + width = dim.width; + height = dim.height; + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); + cr = cairo_create (surface); + + rsvg_handle_render_cairo (handle, cr); + + status = cairo_status (cr); + if (status) + FAIL (cairo_status_to_string (status)); + + cairo_surface_write_to_png (surface, output_filename); + + cairo_destroy (cr); + cairo_surface_destroy (surface); + + return 0; +}