Activity log for bug #174701

Date Who What changed Old value New value Message
2007-12-07 16:53:42 tbnorth bug added bug
2007-12-08 17:51:53 bbyak inkscape: importance Undecided High
2007-12-08 17:51:53 bbyak inkscape: assignee ted-gould
2007-12-08 17:51:53 bbyak inkscape: status New Confirmed
2007-12-08 23:59:17 tbnorth bug added attachment 'main.cpp.diff' (patch against main.cpp to add --query-all flag)
2007-12-08 23:59:53 tbnorth description This patch adds the command line switch --query-all which dumps id,x,y,w,h for all objects with an Id. Index: main.cpp =================================================================== --- main.cpp (revision 16644) +++ main.cpp (working copy) @@ -148,6 +148,7 @@ SP_ARG_QUERY_Y, SP_ARG_QUERY_WIDTH, SP_ARG_QUERY_HEIGHT, + SP_ARG_QUERY_ALL, SP_ARG_QUERY_ID, SP_ARG_VERSION, SP_ARG_VACUUM_DEFS, @@ -166,8 +167,9 @@ 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_all (SPDocument *doc); +static void do_query_all_recurse (SPObject *o); - static gchar *sp_global_printer = NULL; static gchar *sp_export_png = NULL; static gchar *sp_export_dpi = NULL; @@ -196,6 +198,7 @@ static gboolean sp_query_y = FALSE; static gboolean sp_query_width = FALSE; static gboolean sp_query_height = FALSE; +static gboolean sp_query_all = FALSE; static gchar *sp_query_id = NULL; static int sp_new_gui = FALSE; static gboolean sp_vacuum_defs = FALSE; @@ -367,6 +370,11 @@ N_("Query the height of the drawing or, if specified, of the object with --query-id"), NULL}, + {"query-all", 'S', + POPT_ARG_NONE, &sp_query_all, SP_ARG_QUERY_ALL, + N_("List id,x,y,w,h for all objects"), + NULL}, + {"query-id", 'I', POPT_ARG_STRING, &sp_query_id, SP_ARG_QUERY_ID, N_("The ID of the object whose dimensions are queried"), @@ -791,7 +799,9 @@ do_export_emf(doc, sp_export_emf, "image/x-emf"); } #endif //WIN32 - if (sp_query_width || sp_query_height) { + 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); } else if (sp_query_x || sp_query_y) { do_query_dimension (doc, false, sp_query_x? NR::X : NR::Y, sp_query_id); @@ -846,8 +856,45 @@ } } +static void +do_query_all (SPDocument *doc) +{ + SPObject *o = NULL; + o = SP_DOCUMENT_ROOT(doc); + + if (o) { + sp_document_ensure_up_to_date (doc); + do_query_all_recurse(o); + } +} + static void +do_query_all_recurse (SPObject *o) +{ + SPItem *item = ((SPItem *) o); + if (o->id && SP_IS_ITEM(item)) { + NR::Maybe<NR::Rect> area = item->getBounds(sp_item_i2doc_affine(item)); + if (area) { + Inkscape::SVGOStringStream os; + os << o->id; + os << "," << area->min()[NR::X]; + os << "," << area->min()[NR::Y]; + os << "," << area->extent(NR::X); + os << "," << area->extent(NR::Y); + g_print ("%s\n", os.str().c_str()); + } + } + + SPObject *child = o->children; + while (child) { + do_query_all_recurse (child); + child = child->next; + } +} + + +static void sp_do_export_png(SPDocument *doc) { const gchar *filename = NULL; This patch adds the command line switch --query-all which dumps id,x,y,w,h for all objects with an Id. [patch in attached file]
2007-12-18 21:55:48 nightrow inkscape: status Confirmed Triaged
2007-12-31 07:12:57 Bryce Harrington bug added attachment 'main.cpp-2.diff' (Modified version of above patch)
2007-12-31 07:13:39 Bryce Harrington inkscape: status Triaged Fix Released
2007-12-31 07:13:39 Bryce Harrington inkscape: assignee ted-gould bryceharrington