1df6105803c4c56c020a56301c7c9c4890fd4158mathog/** @file
1df6105803c4c56c020a56301c7c9c4890fd4158mathog * @brief Metafile input - common functions
1df6105803c4c56c020a56301c7c9c4890fd4158mathog *//*
1df6105803c4c56c020a56301c7c9c4890fd4158mathog * Authors:
1df6105803c4c56c020a56301c7c9c4890fd4158mathog * David Mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog *
1df6105803c4c56c020a56301c7c9c4890fd4158mathog * Copyright (C) 2013 Authors
1df6105803c4c56c020a56301c7c9c4890fd4158mathog * Released under GNU GPL, read the file 'COPYING' for more information
1df6105803c4c56c020a56301c7c9c4890fd4158mathog */
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#ifndef SEEN_INKSCAPE_EXTENSION_INTERNAL_METAFILE_INOUT_H
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#define SEEN_INKSCAPE_EXTENSION_INTERNAL_METAFILE_INOUT_H
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#ifdef HAVE_CONFIG_H
1df6105803c4c56c020a56301c7c9c4890fd4158mathog# include "config.h"
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#endif
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#define PNG_SKIP_SETJMP_CHECK // else any further png.h include blows up in the compiler
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <png.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <stdio.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <stdlib.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <stdint.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <map>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <stack>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <glibmm/ustring.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <libuemf/uemf.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <2geom/affine.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include <2geom/pathvector.h>
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#include "extension/implementation/implementation.h"
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathogclass SPObject;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathognamespace Inkscape {
1df6105803c4c56c020a56301c7c9c4890fd4158mathogclass Pixbuf;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathognamespace Extension {
1df6105803c4c56c020a56301c7c9c4890fd4158mathognamespace Internal {
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog/* A coloured pixel. */
1df6105803c4c56c020a56301c7c9c4890fd4158mathogtypedef struct {
1df6105803c4c56c020a56301c7c9c4890fd4158mathog uint8_t red;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog uint8_t green;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog uint8_t blue;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog uint8_t opacity;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog} pixel_t;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog/* A picture. */
1df6105803c4c56c020a56301c7c9c4890fd4158mathog typedef struct {
1df6105803c4c56c020a56301c7c9c4890fd4158mathog pixel_t *pixels;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog size_t width;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog size_t height;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog} bitmap_t;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog/* structure to store PNG image bytes */
1df6105803c4c56c020a56301c7c9c4890fd4158mathogtypedef struct {
1df6105803c4c56c020a56301c7c9c4890fd4158mathog char *buffer;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog size_t size;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog} MEMPNG, *PMEMPNG;
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathogclass Metafile
1df6105803c4c56c020a56301c7c9c4890fd4158mathog : public Inkscape::Extension::Implementation::Implementation
1df6105803c4c56c020a56301c7c9c4890fd4158mathog{
1df6105803c4c56c020a56301c7c9c4890fd4158mathogpublic:
1df6105803c4c56c020a56301c7c9c4890fd4158mathog Metafile() {}
1df6105803c4c56c020a56301c7c9c4890fd4158mathog ~Metafile();
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathogprotected:
1df6105803c4c56c020a56301c7c9c4890fd4158mathog static uint32_t sethexcolor(U_COLORREF color);
1df6105803c4c56c020a56301c7c9c4890fd4158mathog static pixel_t *pixel_at (bitmap_t * bitmap, int x, int y);
1df6105803c4c56c020a56301c7c9c4890fd4158mathog static void my_png_write_data(png_structp png_ptr, png_bytep data, png_size_t length);
1df6105803c4c56c020a56301c7c9c4890fd4158mathog static void toPNG(PMEMPNG accum, int width, int height, const char *px);
1df6105803c4c56c020a56301c7c9c4890fd4158mathog static gchar *bad_image_png(void);
3b70d4b4adefa3ff65931070bee74f26bab2f6f6mathog static void setViewBoxIfMissing(SPDocument *doc);
034d7ccaa6acbcd03e37974a2d164706862c32a2mathog static int combine_ops_to_livarot(const int op);
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathogprivate:
1df6105803c4c56c020a56301c7c9c4890fd4158mathog};
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog} // namespace Internal
1df6105803c4c56c020a56301c7c9c4890fd4158mathog} // namespace Extension
1df6105803c4c56c020a56301c7c9c4890fd4158mathog} // namespace Inkscape
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog#endif // SEEN_INKSCAPE_EXTENSION_INTERNAL_METAFILE_INOUT_H
1df6105803c4c56c020a56301c7c9c4890fd4158mathog
1df6105803c4c56c020a56301c7c9c4890fd4158mathog/*
1df6105803c4c56c020a56301c7c9c4890fd4158mathog Local Variables:
1df6105803c4c56c020a56301c7c9c4890fd4158mathog mode:c++
1df6105803c4c56c020a56301c7c9c4890fd4158mathog c-file-style:"stroustrup"
1df6105803c4c56c020a56301c7c9c4890fd4158mathog c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
1df6105803c4c56c020a56301c7c9c4890fd4158mathog indent-tabs-mode:nil
1df6105803c4c56c020a56301c7c9c4890fd4158mathog fill-column:99
1df6105803c4c56c020a56301c7c9c4890fd4158mathog End:
1df6105803c4c56c020a56301c7c9c4890fd4158mathog*/