508fd32091
I don't necessarily like this long term, but in the short term Flutter would like to record pictures using their own type separate from SkRTree. This makes SkBBoxHierarchy public, and converts it to use other public types (SkTDArray -> vector). Change-Id: I29c5ef9da7d641d8f4ba18522b168ddf7cefe84f Reviewed-on: https://skia-review.googlesource.com/c/skia/+/270387 Commit-Queue: Mike Klein <mtklein@google.com> Reviewed-by: Mike Reed <reed@google.com>
52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
/*
|
|
* Copyright 2014 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef SkBBHFactory_DEFINED
|
|
#define SkBBHFactory_DEFINED
|
|
|
|
#include "include/core/SkRect.h"
|
|
#include "include/core/SkRefCnt.h"
|
|
#include "include/core/SkTypes.h"
|
|
#include <vector>
|
|
|
|
class SkBBoxHierarchy : public SkRefCnt {
|
|
public:
|
|
SkBBoxHierarchy() {}
|
|
virtual ~SkBBoxHierarchy() {}
|
|
|
|
/**
|
|
* Insert N bounding boxes into the hierarchy.
|
|
*/
|
|
virtual void insert(const SkRect[], int N) = 0;
|
|
|
|
/**
|
|
* Populate results with the indices of bounding boxes intersecting that query.
|
|
*/
|
|
virtual void search(const SkRect& query, std::vector<int>* results) const = 0;
|
|
|
|
/**
|
|
* Return approximate size in memory of *this.
|
|
*/
|
|
virtual size_t bytesUsed() const = 0;
|
|
};
|
|
|
|
class SK_API SkBBHFactory {
|
|
public:
|
|
/**
|
|
* Allocate a new SkBBoxHierarchy. Return NULL on failure.
|
|
*/
|
|
virtual sk_sp<SkBBoxHierarchy> operator()() const = 0;
|
|
virtual ~SkBBHFactory() {}
|
|
};
|
|
|
|
class SK_API SkRTreeFactory : public SkBBHFactory {
|
|
public:
|
|
sk_sp<SkBBoxHierarchy> operator()() const override;
|
|
};
|
|
|
|
#endif
|