/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkRTree_DEFINED #define SkRTree_DEFINED #include "include/core/SkBBHFactory.h" #include "include/core/SkRect.h" #include <cstddef> #include <cstdint> #include <vector> /** * An R-Tree implementation. In short, it is a balanced n-ary tree containing a hierarchy of * bounding rectangles. * * It only supports bulk-loading, i.e. creation from a batch of bounding rectangles. * This performs a bottom-up bulk load using the STR (sort-tile-recursive) algorithm. * * TODO: Experiment with other bulk-load algorithms (in particular the Hilbert pack variant, * which groups rects by position on the Hilbert curve, is probably worth a look). There also * exist top-down bulk load variants (VAMSplit, TopDownGreedy, etc). * * For more details see: * * Beckmann, N.; Kriegel, H. P.; Schneider, R.; Seeger, B. (1990). "The R*-tree: * an efficient and robust access method for points and rectangles" */ class SkRTree : public SkBBoxHierarchy { … }; #endif