X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fcontrolpanel.cpp;fp=src%2Fcontrolpanel.cpp;h=462105f9b415bcca92bae8b1153e7f95b4df6dfc;hb=f0b6c9b6b95fde134927c395afbfbbbc057868e6;hp=daa4b2105d81fbc040be1ecf2beb4d4381b5e22e;hpb=6c0dfe752994312ee58d307b383948bfeb2d6e2e;p=ipdf%2Fcode.git diff --git a/src/controlpanel.cpp b/src/controlpanel.cpp index daa4b21..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(); @@ -347,7 +367,17 @@ void ControlPanel::LoadSVGIntoDocument() 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();