diff options
Diffstat (limited to 'cc/playback/image_hijack_canvas.h')
-rw-r--r-- | cc/playback/image_hijack_canvas.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cc/playback/image_hijack_canvas.h b/cc/playback/image_hijack_canvas.h new file mode 100644 index 0000000..c8045ab --- /dev/null +++ b/cc/playback/image_hijack_canvas.h @@ -0,0 +1,52 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CC_PLAYBACK_IMAGE_HIJACK_CANVAS_H_ +#define CC_PLAYBACK_IMAGE_HIJACK_CANVAS_H_ + +#include "base/macros.h" +#include "third_party/skia/include/core/SkCanvas.h" +#include "third_party/skia/include/utils/SkNWayCanvas.h" + +namespace cc { + +class ImageDecodeController; + +// TODO(vmpstr): Convert this to SkCanvas override and plumb through the raster +// pipeline. +class ImageHijackCanvas : public SkNWayCanvas { + public: + ImageHijackCanvas(int width, + int height, + ImageDecodeController* image_decode_controller); + + private: + // Ensure that pictures are unpacked by this canvas, instead of being + // forwarded to the raster canvas. + void onDrawPicture(const SkPicture* picture, + const SkMatrix* matrix, + const SkPaint* paint) override; + + void onDrawImage(const SkImage* image, + SkScalar x, + SkScalar y, + const SkPaint* paint) override; + void onDrawImageRect(const SkImage* image, + const SkRect* src, + const SkRect& dst, + const SkPaint* paint, + SrcRectConstraint constraint) override; + void onDrawImageNine(const SkImage* image, + const SkIRect& center, + const SkRect& dst, + const SkPaint* paint) override; + + ImageDecodeController* image_decode_controller_; + + DISALLOW_COPY_AND_ASSIGN(ImageHijackCanvas); +}; + +} // namespace cc + +#endif // CC_PLAYBACK_IMAGE_HIJACK_CANVAS_H_ |