void Page::doRebuildBspTree() { int n = 0; scanElements(&n, countElements, false); QRectF r; if (score()->layoutMode() == LayoutMode::LINE) { qreal w = 0.0; qreal h = 0.0; if (!_systems.empty()) { h = _systems.front()->height(); if (!_systems.front()->measures().empty()) { MeasureBase* mb = _systems.front()->measures().back(); w = mb->x() + mb->width(); } } r = QRectF(0.0, 0.0, w, h); } else r = abbox(); bspTree.initialize(r, n); scanElements(&bspTree, &bspInsert, false); bspTreeValid = true; }
void Page::doRebuildBspTree() { QList<Element*> el; for (System* s : _systems) { for (MeasureBase* m : s->measures()) m->scanElements(&el, collectElements, false); } scanElements(&el, collectElements, false); int n = el.size(); if (score()->layoutMode() == LayoutMode::LINE) { if (_systems.isEmpty()) return; if (_systems.front()->measures().isEmpty()) return; qreal h = _systems.front()->height(); MeasureBase* mb = _systems.front()->measures().back(); qreal w = mb->x() + mb->width(); bspTree.initialize(QRectF(0.0, 0.0, w, h), n); } else bspTree.initialize(abbox(), n); for (int i = 0; i < n; ++i) bspTree.insert(el.at(i)); bspTreeValid = true; }