blob: af9c6cb5dbbcdd0856bcea6229302fa67889b584 [file] [log] [blame]
// Copyright 2018 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.
#include "modules/canvas/imagebitmap/ImageBitmapRenderingContextBase.h"
#include "bindings/modules/v8/rendering_context.h"
#include "core/imagebitmap/ImageBitmap.h"
#include "platform/graphics/GraphicsContext.h"
#include "platform/graphics/StaticBitmapImage.h"
#include "platform/graphics/gpu/ImageLayerBridge.h"
#include "third_party/skia/include/core/SkImage.h"
#include "third_party/skia/include/core/SkSurface.h"
namespace blink {
ImageBitmapRenderingContextBase::ImageBitmapRenderingContextBase(
CanvasRenderingContextHost* host,
const CanvasContextCreationAttributesCore& attrs)
: CanvasRenderingContext(host, attrs),
image_layer_bridge_(
new ImageLayerBridge(attrs.alpha ? kNonOpaque : kOpaque)) {}
ImageBitmapRenderingContextBase::~ImageBitmapRenderingContextBase() = default;
void ImageBitmapRenderingContextBase::Stop() {
image_layer_bridge_->Dispose();
}
void ImageBitmapRenderingContextBase::SetImage(ImageBitmap* image_bitmap) {
DCHECK(!image_bitmap || !image_bitmap->IsNeutered());
image_layer_bridge_->SetImage(image_bitmap ? image_bitmap->BitmapImage()
: nullptr);
DidDraw();
if (image_bitmap)
image_bitmap->close();
}
scoped_refptr<StaticBitmapImage> ImageBitmapRenderingContextBase::GetImage(
AccelerationHint) const {
return image_layer_bridge_->GetImage();
}
WebLayer* ImageBitmapRenderingContextBase::PlatformLayer() const {
return image_layer_bridge_->PlatformLayer();
}
bool ImageBitmapRenderingContextBase::IsPaintable() const {
return !!image_layer_bridge_->GetImage();
}
void ImageBitmapRenderingContextBase::Trace(blink::Visitor* visitor) {
visitor->Trace(image_layer_bridge_);
CanvasRenderingContext::Trace(visitor);
}
bool ImageBitmapRenderingContextBase::IsAccelerated() const {
return image_layer_bridge_->IsAccelerated();
}
} // namespace blink