Code

remove desktop-affine.cpp
[inkscape.git] / src / main.cpp
index af896d7d6b912d703999a7e402dab1846f28ef5f..7bbe691d70f9abc871efc78a27d6141453db6be3 100644 (file)
@@ -69,7 +69,7 @@
 
 #include "inkscape-private.h"
 #include "inkscape-stock.h"
-#include "inkscape_version.h"
+#include "inkscape-version.h"
 
 #include "sp-namedview.h"
 #include "sp-guide.h"
@@ -143,6 +143,7 @@ enum {
     SP_ARG_EXPORT_EMF,
 #endif //WIN32
     SP_ARG_EXPORT_TEXT_TO_PATH,
+    SP_ARG_EXPORT_IGNORE_FILTERS,
     SP_ARG_EXTENSIONDIR,
     SP_ARG_QUERY_X,
     SP_ARG_QUERY_Y,
@@ -166,7 +167,7 @@ static void do_export_ps_pdf(SPDocument* doc, gchar const* uri, char const *mime
 #ifdef WIN32
 static void do_export_emf(SPDocument* doc, gchar const* uri, char const *mime);
 #endif //WIN32
-static void do_query_dimension (SPDocument *doc, bool extent, NR::Dim2 const axis, const gchar *id);
+static void do_query_dimension (SPDocument *doc, bool extent, Geom::Dim2 const axis, const gchar *id);
 static void do_query_all (SPDocument *doc);
 static void do_query_all_recurse (SPObject *o);
 
@@ -192,6 +193,7 @@ static gchar *sp_export_pdf = NULL;
 static gchar *sp_export_emf = NULL;
 #endif //WIN32
 static gboolean sp_export_text_to_path = FALSE;
+static gboolean sp_export_ignore_filters = FALSE;
 static gboolean sp_export_font = FALSE;
 static gboolean sp_query_x = FALSE;
 static gboolean sp_query_y = FALSE;
@@ -234,6 +236,7 @@ static void resetCommandlineGlobals() {
         sp_export_emf = NULL;
 #endif //WIN32
         sp_export_text_to_path = FALSE;
+        sp_export_ignore_filters = FALSE;
         sp_export_font = FALSE;
         sp_query_x = FALSE;
         sp_query_y = FALSE;
@@ -374,7 +377,12 @@ struct poptOption options[] = {
 
     {"export-text-to-path", 'T',
      POPT_ARG_NONE, &sp_export_text_to_path, SP_ARG_EXPORT_TEXT_TO_PATH,
-     N_("Convert text object to paths on export (EPS)"),
+     N_("Convert text object to paths on export (PS, EPS, PDF)"),
+     NULL},
+
+    {"export-ignore-filters", 0,
+     POPT_ARG_NONE, &sp_export_ignore_filters, SP_ARG_EXPORT_IGNORE_FILTERS,
+     N_("Render filtered objects without filters, instead of rasterizing (PS, EPS, PDF)"),
      NULL},
 
     {"query-x", 'X',
@@ -554,6 +562,9 @@ main(int argc, char **argv)
     rt.setPathInfo();
 #endif
 
+    // Prevents errors like "Unable to wrap GdkPixbuf..." (in nr-filter-image.cpp for example)
+    Gtk::Main::init_gtkmm_internals();
+
     // Bug #197475
     set_extensions_env();
 
@@ -914,9 +925,9 @@ void sp_process_file_list(GSList *fl)
             if (sp_query_all) {
                 do_query_all (doc);
             } else if (sp_query_width || sp_query_height) {
-                do_query_dimension (doc, true, sp_query_width? NR::X : NR::Y, sp_query_id);
+                do_query_dimension (doc, true, sp_query_width? Geom::X : Geom::Y, sp_query_id);
             } else if (sp_query_x || sp_query_y) {
-                do_query_dimension (doc, false, sp_query_x? NR::X : NR::Y, sp_query_id);
+                do_query_dimension (doc, false, sp_query_x? Geom::X : Geom::Y, sp_query_id);
             }
 
             delete doc;
@@ -940,7 +951,7 @@ int sp_main_shell(char const* command_name)
     gsize sizeLeft = buffer_size - offset;
     gchar *useme = command_line + offset;
 
-    fprintf(stdout, "Inkscape %s interactive shell mode. Type 'quit' to quit.\n", INKSCAPE_VERSION);
+    fprintf(stdout, "Inkscape %s interactive shell mode. Type 'quit' to quit.\n", Inkscape::version_string);
     fflush(stdout);
     char* linedata = 0;
     do {
@@ -1033,7 +1044,7 @@ int sp_main_console(int argc, char const **argv)
 }
 
 static void
-do_query_dimension (SPDocument *doc, bool extent, NR::Dim2 const axis, const gchar *id)
+do_query_dimension (SPDocument *doc, bool extent, Geom::Dim2 const axis, const gchar *id)
 {
     SPObject *o = NULL;
 
@@ -1183,7 +1194,7 @@ sp_do_export_png(SPDocument *doc)
             // write object bbox to area
             sp_document_ensure_up_to_date (doc);
             Geom::OptRect areaMaybe;
-            sp_item_invoke_bbox((SPItem *) o_area, areaMaybe, sp_item_i2r_affine((SPItem *) o_area), TRUE);
+            sp_item_invoke_bbox((SPItem *) o_area, areaMaybe, sp_item_i2d_affine((SPItem *) o_area), TRUE);
             if (areaMaybe) {
                 area = *areaMaybe;
             } else {
@@ -1384,6 +1395,12 @@ static void do_export_ps_pdf(SPDocument* doc, gchar const* uri, char const* mime
         (*i)->set_param_bool("textToPath", FALSE);
     }
 
+    if (sp_export_ignore_filters) {
+        (*i)->set_param_bool("blurToBitmap", FALSE);
+    } else {
+        (*i)->set_param_bool("blurToBitmap", TRUE);
+    }
+
     (*i)->save(doc, uri);
 }
 
@@ -1707,7 +1724,7 @@ sp_process_args(poptContext ctx)
                 break;
             }
             case SP_ARG_VERSION: {
-                printf("Inkscape %s (%s)\n", INKSCAPE_VERSION, __DATE__);
+                printf("Inkscape %s (%s)\n", Inkscape::version_string, __DATE__);
                 exit(0);
                 break;
             }