Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright 2014 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkBBHFactory_DEFINED
      9 #define SkBBHFactory_DEFINED
     10 
     11 #include "SkSize.h"
     12 #include "SkPoint.h"
     13 
     14 class SkBBoxHierarchy;
     15 
     16 class SK_API SkBBHFactory {
     17 public:
     18     /**
     19      *  Allocate a new SkBBoxHierarchy. Return NULL on failure.
     20      */
     21     virtual SkBBoxHierarchy* operator()(int width, int height) const = 0;
     22     virtual ~SkBBHFactory() {};
     23 };
     24 
     25 class SK_API SkRTreeFactory : public SkBBHFactory {
     26 public:
     27     virtual SkBBoxHierarchy* operator()(int width, int height) const SK_OVERRIDE;
     28 private:
     29     typedef SkBBHFactory INHERITED;
     30 };
     31 
     32 class SK_API SkTileGridFactory : public SkBBHFactory {
     33 public:
     34     struct TileGridInfo {
     35         /** Tile placement interval */
     36         SkISize  fTileInterval;
     37 
     38         /** Pixel coverage overlap between adjacent tiles */
     39         SkISize  fMargin;
     40 
     41         /** Offset added to device-space bounding box positions to convert
     42           * them to tile-grid space. This can be used to adjust the "phase"
     43           * of the tile grid to match probable query rectangles that will be
     44           * used to search into the tile grid. As long as the offset is smaller
     45           * or equal to the margin, there is no need to extend the domain of
     46           * the tile grid to prevent data loss.
     47           */
     48         SkIPoint fOffset;
     49     };
     50 
     51     SkTileGridFactory(const TileGridInfo& info) : fInfo(info) { }
     52 
     53     virtual SkBBoxHierarchy* operator()(int width, int height) const SK_OVERRIDE;
     54 
     55 private:
     56     TileGridInfo fInfo;
     57 
     58     typedef SkBBHFactory INHERITED;
     59 };
     60 
     61 #endif
     62