diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-07-07 18:18:30 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-07-10 18:15:54 +0000 |
| commit | 90b67c899f3a33f4ad8cf6e3d2da6ad57dd29e51 (patch) | |
| tree | b9cc15ddf5ad03533ab717da412ea87b7d60d71e /src/extension/internal/cairo-render-context.cpp | |
| parent | inkscape-version: offer variant without revision and date (diff) | |
| download | inkscape-90b67c899f3a33f4ad8cf6e3d2da6ad57dd29e51.tar.gz inkscape-90b67c899f3a33f4ad8cf6e3d2da6ad57dd29e51.zip | |
cairo-renderer: set metadata in output
- metadata is taken from the SVG document;
- fields that are compatible with the target format
(and also supported by cairo) are set accordingly
Diffstat (limited to 'src/extension/internal/cairo-render-context.cpp')
| -rw-r--r-- | src/extension/internal/cairo-render-context.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp index ab9f9e82f..2b4072336 100644 --- a/src/extension/internal/cairo-render-context.cpp +++ b/src/extension/internal/cairo-render-context.cpp @@ -885,6 +885,8 @@ CairoRenderContext::setupSurface(double width, double height) break; } + _setSurfaceMetadata(surface); + return _finishSurfaceSetup (surface, &ctm); } @@ -934,6 +936,42 @@ CairoRenderContext::_finishSurfaceSetup(cairo_surface_t *surface, cairo_matrix_t return true; } +void +CairoRenderContext::_setSurfaceMetadata(cairo_surface_t *surface) +{ + switch (_target) { +#if defined CAIRO_HAS_PDF_SURFACE && CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 4) + case CAIRO_SURFACE_TYPE_PDF: + if (!_metadata.title.empty()) { + cairo_pdf_surface_set_metadata(surface, CAIRO_PDF_METADATA_TITLE, _metadata.title.c_str()); + } + if (!_metadata.author.empty()) { + cairo_pdf_surface_set_metadata(surface, CAIRO_PDF_METADATA_AUTHOR, _metadata.author.c_str()); + } + if (!_metadata.subject.empty()) { + cairo_pdf_surface_set_metadata(surface, CAIRO_PDF_METADATA_SUBJECT, _metadata.subject.c_str()); + } + if (!_metadata.keywords.empty()) { + cairo_pdf_surface_set_metadata(surface, CAIRO_PDF_METADATA_KEYWORDS, _metadata.keywords.c_str()); + } + if (!_metadata.creator.empty()) { + cairo_pdf_surface_set_metadata(surface, CAIRO_PDF_METADATA_CREATOR, _metadata.creator.c_str()); + } + break; +#endif +#if defined CAIRO_HAS_PS_SURFACE + case CAIRO_SURFACE_TYPE_PS: + if (!_metadata.title.empty()) { + cairo_ps_surface_dsc_comment(surface, (Glib::ustring("%%Title: ") + _metadata.title).c_str()); + } + if (!_metadata.copyright.empty()) { + cairo_ps_surface_dsc_comment(surface, (Glib::ustring("%%Copyright: ") + _metadata.copyright).c_str()); + } + break; +#endif + } +} + bool CairoRenderContext::finish(bool finish_surface) { |
