mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Includes patches to sky/viewer/cc/ and ui/compositor/ for the following: cc: Toggle LCD text at raster time instead of record time. https://codereview.chromium.org/684543006 https://crrev.com/304623 and Make Keyframe use TimeTicks/TimeDelta to represent time instead of double. https://codereview.chromium.org/719453007 https://crrev.com/304612 Review URL: https://codereview.chromium.org/737943002
70 lines
2.2 KiB
C++
70 lines
2.2 KiB
C++
// Copyright 2014 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 "sky/viewer/cc/web_content_layer_impl.h"
|
|
|
|
#include "cc/layers/content_layer.h"
|
|
#include "cc/layers/picture_layer.h"
|
|
#include "sky/engine/public/platform/WebContentLayerClient.h"
|
|
#include "sky/engine/public/platform/WebFloatPoint.h"
|
|
#include "sky/engine/public/platform/WebFloatRect.h"
|
|
#include "sky/engine/public/platform/WebRect.h"
|
|
#include "sky/engine/public/platform/WebSize.h"
|
|
#include "third_party/skia/include/utils/SkMatrix44.h"
|
|
|
|
using cc::ContentLayer;
|
|
using cc::PictureLayer;
|
|
|
|
namespace sky_viewer_cc {
|
|
|
|
WebContentLayerImpl::WebContentLayerImpl(blink::WebContentLayerClient* client)
|
|
: client_(client) {
|
|
if (WebLayerImpl::UsingPictureLayer())
|
|
layer_ = make_scoped_ptr(new WebLayerImpl(PictureLayer::Create(this)));
|
|
else
|
|
layer_ = make_scoped_ptr(new WebLayerImpl(ContentLayer::Create(this)));
|
|
layer_->layer()->SetIsDrawable(true);
|
|
}
|
|
|
|
WebContentLayerImpl::~WebContentLayerImpl() {
|
|
if (WebLayerImpl::UsingPictureLayer())
|
|
static_cast<PictureLayer*>(layer_->layer())->ClearClient();
|
|
else
|
|
static_cast<ContentLayer*>(layer_->layer())->ClearClient();
|
|
}
|
|
|
|
blink::WebLayer* WebContentLayerImpl::layer() {
|
|
return layer_.get();
|
|
}
|
|
|
|
void WebContentLayerImpl::setDoubleSided(bool double_sided) {
|
|
layer_->layer()->SetDoubleSided(double_sided);
|
|
}
|
|
|
|
void WebContentLayerImpl::setDrawCheckerboardForMissingTiles(bool enable) {
|
|
layer_->layer()->SetDrawCheckerboardForMissingTiles(enable);
|
|
}
|
|
|
|
void WebContentLayerImpl::PaintContents(
|
|
SkCanvas* canvas,
|
|
const gfx::Rect& clip,
|
|
ContentLayerClient::GraphicsContextStatus graphics_context_status) {
|
|
if (!client_)
|
|
return;
|
|
|
|
blink::WebFloatRect web_opaque;
|
|
bool can_use_lcd_text = false;
|
|
client_->paintContents(
|
|
canvas, clip, can_use_lcd_text, web_opaque,
|
|
graphics_context_status == ContentLayerClient::GRAPHICS_CONTEXT_ENABLED
|
|
? blink::WebContentLayerClient::GraphicsContextEnabled
|
|
: blink::WebContentLayerClient::GraphicsContextDisabled);
|
|
}
|
|
|
|
bool WebContentLayerImpl::FillsBoundsCompletely() const {
|
|
return false;
|
|
}
|
|
|
|
} // namespace sky_viewer_cc
|