From e674f2ed46656d100d883cf2cd9f14d25997b685 Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Fri, 11 Jan 2008 18:00:46 +0000 Subject: Check for perspective in document defs (to avoid hanging/crashes after vacuum defs or when opening pre-0.46 documents); partly fixes LP #182031 (bzr r4461) --- src/persp3d.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/persp3d.cpp') diff --git a/src/persp3d.cpp b/src/persp3d.cpp index 82160d467..41ef4906b 100644 --- a/src/persp3d.cpp +++ b/src/persp3d.cpp @@ -220,8 +220,29 @@ persp3d_create_xml_element (SPDocument *document, Persp3D *dup) {// if dup is gi if (dup) { repr = SP_OBJECT_REPR(dup)->duplicate (xml_doc); } else { + /* if no perspective is given, create a default one */ repr = xml_doc->createElement("inkscape:perspective"); repr->setAttribute("sodipodi:type", "inkscape:persp3d"); + + Proj::Pt2 proj_vp_x = Proj::Pt2 (-50.0, 600.0, 1.0); + Proj::Pt2 proj_vp_y = Proj::Pt2 ( 0.0,1000.0, 0.0); + Proj::Pt2 proj_vp_z = Proj::Pt2 (700.0, 600.0, 1.0); + Proj::Pt2 proj_origin = Proj::Pt2 (300.0, 400.0, 1.0); + + gchar *str = NULL; + str = proj_vp_x.coord_string(); + repr->setAttribute("inkscape:vp_x", str); + g_free (str); + str = proj_vp_y.coord_string(); + repr->setAttribute("inkscape:vp_y", str); + g_free (str); + str = proj_vp_z.coord_string(); + repr->setAttribute("inkscape:vp_z", str); + g_free (str); + str = proj_origin.coord_string(); + repr->setAttribute("inkscape:persp3d-origin", str); + g_free (str); + Inkscape::GC::release(repr); } /* Append the new persp3d to defs */ -- cgit v1.2.3