Code

remove const assignment error
[inkscape.git] / src / extension / internal / cairo-pdf-out.cpp
index b33fee9bfea6801ae2fb706738a7da1ce9d9d02c..93dad1e6436f9b1bc280d2a693a49007d21209b7 100644 (file)
@@ -61,20 +61,24 @@ pdf_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int
     context.module = mod;
     /* fixme: This has to go into module constructor somehow */
     /* Create new arena */
-               const gchar* exportId = mod->get_param_string("exportId");
-               bool exportDrawing = mod->get_param_bool("exportDrawing");
-               if (exportId && strcmp(exportId, "")) {
-      // we want to export the given item only, not page
-                       mod->base = SP_ITEM(doc->getObjectById(exportId));
-                       mod->set_param_bool("pageBoundingBox", FALSE);
-               } else {
-      // we want to export the entire document from root
-                       mod->base = SP_ITEM(sp_document_root(doc));
-                       if (exportDrawing)
-                               mod->set_param_bool("pageBoundingBox", FALSE);
-                       else
-                               mod->set_param_bool("pageBoundingBox", TRUE);
-               }
+    const gchar* exportId = mod->get_param_string("exportId");
+    bool exportDrawing = mod->get_param_bool("exportDrawing");
+    bool exportCanvas = mod->get_param_bool("exportCanvas");
+    if (exportId && strcmp(exportId, "")) {
+        // we want to export the given item only
+        mod->base = SP_ITEM(doc->getObjectById(exportId));
+        if (exportCanvas)
+            mod->set_param_bool("pageBoundingBox", TRUE);
+        else
+            mod->set_param_bool("pageBoundingBox", FALSE);
+    } else {
+        // we want to export the entire document from root
+        mod->base = SP_ITEM(sp_document_root(doc));
+        if (exportDrawing)
+            mod->set_param_bool("pageBoundingBox", FALSE);
+        else
+            mod->set_param_bool("pageBoundingBox", TRUE);
+    }
     mod->arena = NRArena::create();
     mod->dkey = sp_item_display_key_new(1);
     mod->root = sp_item_invoke_show(mod->base, mod->arena, mod->dkey, SP_ITEM_SHOW_DISPLAY);
@@ -144,8 +148,8 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g
         g_warning("Parameter <blurToBitmap> might not exist");
     }
 
-               const gchar* old_exportId = NULL;
-               const gchar* new_exportId = NULL;
+    const gchar* old_exportId = NULL;
+    const gchar* new_exportId = NULL;
     try {
         old_exportId  = ext->get_param_string("exportId");
         new_exportId  = mod->get_param_string("exportId");
@@ -155,8 +159,8 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g
         g_warning("Parameter <exportId> might not exist");
     }
 
-               bool old_exportDrawing = NULL;
-               bool new_exportDrawing = NULL;
+    bool old_exportDrawing = false;
+    bool new_exportDrawing = false;
     try {
         old_exportDrawing  = ext->get_param_bool("exportDrawing");
         new_exportDrawing  = mod->get_param_bool("exportDrawing");
@@ -166,10 +170,21 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g
         g_warning("Parameter <exportDrawing> might not exist");
     }
 
-       gchar * final_name;
-       final_name = g_strdup_printf("> %s", uri);
-       ret = pdf_print_document_to_file(doc, final_name, 0, new_textToPath, new_blurToBitmap);
-       g_free(final_name);
+    bool old_exportCanvas = false;
+    bool new_exportCanvas = false;
+    try {
+        old_exportCanvas  = ext->get_param_bool("exportCanvas");
+        new_exportCanvas  = mod->get_param_bool("exportCanvas");
+        ext->set_param_bool("exportCanvas", new_exportCanvas);
+    }
+    catch(...) {
+        g_warning("Parameter <exportCanvas> might not exist");
+    }
+
+    gchar * final_name;
+    final_name = g_strdup_printf("> %s", uri);
+    ret = pdf_print_document_to_file(doc, final_name, 0, new_textToPath, new_blurToBitmap);
+    g_free(final_name);
 
     try {
         ext->set_param_bool("blurToBitmap", old_blurToBitmap);
@@ -195,11 +210,17 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g
     catch(...) {
         g_warning("Parameter <exportDrawing> might not exist");
     }
+    try {
+        ext->set_param_bool("exportCanvas", old_exportCanvas);
+    }
+    catch(...) {
+        g_warning("Parameter <exportCanvas> might not exist");
+    }
 
-       if (!ret)
-           throw Inkscape::Extension::Output::save_failed();
+    if (!ret)
+        throw Inkscape::Extension::Output::save_failed();
 
-       return;
+    return;
 }
 
 #include "clear-n_.h"
@@ -214,7 +235,7 @@ void
 CairoPdfOutput::init (void)
 {
        Inkscape::Extension::build_from_mem(
-               "<inkscape-extension>\n"
+               "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n"
                        "<name>" N_("Cairo PDF Output") "</name>\n"
                        "<id>org.inkscape.output.pdf.cairo</id>\n"
                        "<param name=\"PDFversion\" gui-text=\"" N_("Restrict to PDF version") "\" type=\"enum\" >\n"
@@ -224,6 +245,7 @@ CairoPdfOutput::init (void)
                        "<param name=\"blurToBitmap\" gui-text=\"" N_("Convert blur effects to bitmaps") "\" type=\"boolean\">false</param>\n"
       "<param name=\"resolution\" gui-text=\"" N_("Preferred resolution (DPI) of bitmaps") "\" type=\"int\" min=\"72\" max=\"2400\">90</param>\n"
       "<param name=\"exportDrawing\" gui-text=\"" N_("Export drawing, not page") "\" type=\"boolean\">false</param>\n"
+      "<param name=\"exportCanvas\" gui-text=\"" N_("Export canvas") "\" type=\"boolean\">false</param>\n"
       "<param name=\"exportId\" gui-text=\"" N_("Limit export to the object with ID") "\" type=\"string\"></param>\n"
       "<output>\n"
                                "<extension>.pdf</extension>\n"
@@ -239,3 +261,14 @@ CairoPdfOutput::init (void)
 } } }  /* namespace Inkscape, Extension, Implementation */
 
 #endif /* HAVE_CAIRO_PDF */
+
+/*
+  Local Variables:
+  mode:c++
+  c-file-style:"stroustrup"
+  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+  indent-tabs-mode:nil
+  fill-column:99
+  End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :