X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fcontrolpanel.cpp;h=462105f9b415bcca92bae8b1153e7f95b4df6dfc;hp=f27bc7a03f1bfc452434e42158eded951089e96b;hb=HEAD;hpb=6ce000e7212d9f5db6e5998c41df15bcad2022c8 diff --git a/src/controlpanel.cpp b/src/controlpanel.cpp index f27bc7a..462105f 100644 --- a/src/controlpanel.cpp +++ b/src/controlpanel.cpp @@ -309,7 +309,17 @@ void ControlPanel::InsertTextIntoDocument() string msg = m_text_edit->toPlainText().toStdString(); Real scale = bounds.h / Real(2); Debug("Insert \"%s\" at %f, %f, scale %f", msg.c_str(), Float(xx), Float(yy), Float(scale)); +#ifndef QUADTREE_DISABLED + m_doc.SetQuadtreeInsertNode(m_view.GetCurrentQuadtreeNode()); +#endif m_doc.AddText(msg, scale, xx, yy); +#ifndef QUADTREE_DISABLED + m_doc.PropagateQuadChanges(m_view.GetCurrentQuadtreeNode()); + // We may have split the object across up-to four nodes, so try the neighbouring nodes. + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 0, 1, 0)); + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 1, 0, 0)); + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 1, 1, 0)); +#endif m_view.ForceRenderDirty(); m_view.ForceBufferDirty(); m_view.ForceBoundsDirty(); @@ -323,7 +333,17 @@ void ControlPanel::InsertSVGIntoDocument() bounds.w /= Real(m_screen.ViewportWidth()); bounds.h /= Real(m_screen.ViewportHeight()); +#ifndef QUADTREE_DISABLED + m_doc.SetQuadtreeInsertNode(m_view.GetCurrentQuadtreeNode()); +#endif m_doc.ParseSVG(m_text_edit->toPlainText().toStdString(), bounds); +#ifndef QUADTREE_DISABLED + m_doc.PropagateQuadChanges(m_view.GetCurrentQuadtreeNode()); + // We may have split the object across up-to four nodes, so try the neighbouring nodes. + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 0, 1, 0)); + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 1, 0, 0)); + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 1, 1, 0)); +#endif m_view.ForceRenderDirty(); m_view.ForceBufferDirty(); m_view.ForceBoundsDirty(); @@ -336,14 +356,28 @@ void ControlPanel::LoadSVGIntoDocument() if (filename == "") return; + #ifdef TRANSFORM_OBJECTS_NOT_VIEW + Rect bounds(0,0,1,1); + #else Rect bounds(m_view.GetBounds()); + #endif bounds.x += bounds.w/Real(2); bounds.y += bounds.h/Real(2); bounds.w /= Real(m_screen.ViewportWidth()); bounds.h /= Real(m_screen.ViewportHeight()); +#ifndef QUADTREE_DISABLED + m_doc.SetQuadtreeInsertNode(m_view.GetCurrentQuadtreeNode()); +#endif m_doc.LoadSVG(filename.toStdString(), bounds); +#ifndef QUADTREE_DISABLED + m_doc.PropagateQuadChanges(m_view.GetCurrentQuadtreeNode()); + // We may have split the object across up-to four nodes, so try the neighbouring nodes. + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 0, 1, 0)); + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 1, 0, 0)); + m_doc.PropagateQuadChanges(m_doc.GetQuadTree().GetNeighbour(m_view.GetCurrentQuadtreeNode(), 1, 1, 0)); +#endif m_view.ForceRenderDirty(); m_view.ForceBufferDirty(); m_view.ForceBoundsDirty();