|
SK_API void | DrawImageRect (SkCanvas *canvas, const SkImage *image, const SkRect &src, const SkRect &dst, const SkSamplingOptions &sampling={}, const SkPaint *paint=nullptr, SkCanvas::SrcRectConstraint constraint=SkCanvas::kFast_SrcRectConstraint) |
|
void | DrawImageRect (SkCanvas *canvas, const sk_sp< SkImage > &image, const SkRect &src, const SkRect &dst, const SkSamplingOptions &sampling={}, const SkPaint *paint=nullptr, SkCanvas::SrcRectConstraint constraint=SkCanvas::kFast_SrcRectConstraint) |
|
void | DrawImageRect (SkCanvas *canvas, const SkImage *image, const SkRect &dst, const SkSamplingOptions &sampling={}, const SkPaint *paint=nullptr, SkCanvas::SrcRectConstraint constraint=SkCanvas::kFast_SrcRectConstraint) |
|
void | DrawImageRect (SkCanvas *canvas, const sk_sp< SkImage > &image, const SkRect &dst, const SkSamplingOptions &sampling={}, const SkPaint *paint=nullptr, SkCanvas::SrcRectConstraint constraint=SkCanvas::kFast_SrcRectConstraint) |
|
void | DrawImage (SkCanvas *canvas, const SkImage *image, SkScalar x, SkScalar y, const SkSamplingOptions &sampling={}, const SkPaint *paint=nullptr, SkCanvas::SrcRectConstraint constraint=SkCanvas::kFast_SrcRectConstraint) |
|
void | DrawImage (SkCanvas *canvas, const sk_sp< SkImage > &image, SkScalar x, SkScalar y, const SkSamplingOptions &sampling={}, const SkPaint *paint=nullptr, SkCanvas::SrcRectConstraint constraint=SkCanvas::kFast_SrcRectConstraint) |
|
SK_API void | GetImageKeyValues (const SkImage *image, uint32_t keyValues[kNumImageKeyValues]) |
|
SkTiledImageUtils' DrawImage/DrawImageRect methods are intended to be direct replacements for their SkCanvas equivalents. The SkTiledImageUtils calls will break SkBitmap-backed SkImages into smaller tiles and draw them if the original image is too large to be uploaded to the GPU. If the original image doesn't need tiling or is already gpu-backed the DrawImage/DrawImageRect calls will fall through to the matching SkCanvas call.
void SkTiledImageUtils::GetImageKeyValues |
( |
const SkImage * |
image, |
|
|
uint32_t |
keyValues[kNumImageKeyValues] |
|
) |
| |
Retrieves a set of values that can be used as part of a cache key for the provided image.
Unfortunately, SkImage::uniqueID isn't sufficient as an SkImage cache key. In particular, SkBitmap-backed SkImages can share a single SkBitmap and refer to different subsets of it. In this situation the optimal key is based on the SkBitmap's generation ID and the subset rectangle. For Picture-backed images this method will attempt to generate a concise internally-based key (i.e., containing picture ID, matrix translation, width and height, etc.). For complicated Picture-backed images (i.e., those w/ a paint or a full matrix) it will fall back to using 'image's unique key.
- Parameters
-
image | The image for which key values are desired |
keyValues | The resulting key values |
Definition at line 47 of file SkTiledImageUtils.cpp.
47 {
48 if (!
image || !keyValues) {
49 if (keyValues) {
50 memset(keyValues, 0, kNumImageKeyValues * sizeof(uint32_t));
51 }
52 return;
53 }
54
57 keyValues[0] = bm->pixelRef()->getGenerationID();
59 subset.
offset(bm->pixelRefOrigin());
60
65
66 keyValues[1] = 0;
67 keyValues[2] = subset.
fLeft;
68 keyValues[3] = subset.
fTop;
69 keyValues[4] = subset.
fRight;
71 return;
72 }
73
77 return;
78 }
79 }
80
82 memset(&keyValues[1], 0, (kNumImageKeyValues-1) * sizeof(uint32_t));
83}
static SkImage_Base * as_IB(SkImage *image)
virtual Type type() const =0
virtual const SkBitmap * onPeekBitmap() const
bool getImageKeyValues(uint32_t keyValues[SkTiledImageUtils::kNumImageKeyValues]) const
uint32_t uniqueID() const
int32_t fBottom
larger y-axis bounds
int32_t fTop
smaller y-axis bounds
void offset(int32_t dx, int32_t dy)
int32_t fLeft
smaller x-axis bounds
int32_t fRight
larger x-axis bounds