Index: cc/playback/draw_image.h |
diff --git a/cc/playback/draw_image.h b/cc/playback/draw_image.h |
index 3dbce12e5323570c892415da1549ffc54bb13aba..4ddf7fd4fc289a6afa54be6f022fba507f8912d3 100644 |
--- a/cc/playback/draw_image.h |
+++ b/cc/playback/draw_image.h |
@@ -16,23 +16,63 @@ class DrawImage { |
DrawImage() : image_(nullptr), filter_quality_(kNone_SkFilterQuality) {} |
DrawImage(const SkImage* image, |
const SkSize& scale, |
- SkFilterQuality filter_quality) |
- : image_(image), scale_(scale), filter_quality_(filter_quality) {} |
+ SkFilterQuality filter_quality, |
+ bool matrix_has_perspective, |
+ bool matrix_is_decomposable) |
+ : image_(image), |
+ scale_(scale), |
+ filter_quality_(filter_quality), |
+ matrix_has_perspective_(matrix_has_perspective), |
+ matrix_is_decomposable_(matrix_is_decomposable) {} |
const SkImage* image() const { return image_; } |
const SkSize& scale() const { return scale_; } |
SkFilterQuality filter_quality() const { return filter_quality_; } |
+ bool matrix_has_perspective() const { return matrix_has_perspective_; } |
+ bool matrix_is_decomposable() const { return matrix_is_decomposable_; } |
DrawImage ApplyScale(float scale) const { |
return DrawImage( |
image_, SkSize::Make(scale_.width() * scale, scale_.height() * scale), |
- filter_quality_); |
+ filter_quality_, matrix_has_perspective_, matrix_is_decomposable_); |
} |
private: |
const SkImage* image_; |
SkSize scale_; |
SkFilterQuality filter_quality_; |
+ bool matrix_has_perspective_; |
+ bool matrix_is_decomposable_; |
+}; |
+ |
+class DecodedDrawImage { |
enne (OOO)
2015/12/02 23:33:25
Different classes, different files?
vmpstr
2015/12/03 21:20:23
Done.
|
+ public: |
+ DecodedDrawImage(const SkImage* image, |
+ const SkSize& scale_adjustment, |
+ SkFilterQuality filter_quality) |
+ : image_(image), |
+ scale_adjustment_(scale_adjustment), |
+ filter_quality_(filter_quality), |
+ at_raster_decode_(false) {} |
+ |
+ const SkImage* image() const { return image_; } |
+ const SkSize& scale_adjustment() const { return scale_adjustment_; } |
+ SkFilterQuality filter_quality() const { return filter_quality_; } |
+ bool is_scale_adjustment_identity() const { |
+ return std::abs(scale_adjustment_.width() - 1.f) < FLT_EPSILON && |
+ std::abs(scale_adjustment_.height() - 1.f) < FLT_EPSILON; |
+ } |
+ |
+ void set_at_raster_decode(bool at_raster_decode) { |
+ at_raster_decode_ = at_raster_decode; |
+ } |
+ bool is_at_raster_decode() const { return at_raster_decode_; } |
+ |
+ private: |
+ const SkImage* image_; |
+ SkSize scale_adjustment_; |
+ SkFilterQuality filter_quality_; |
+ bool at_raster_decode_; |
}; |
} // namespace cc |