diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-25 00:09:14 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-25 00:09:14 +0000 |
commit | 94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679 (patch) | |
tree | 530f51d5c75459999e4adf2a6895884ce1c15ce0 /cc/CanvasLayerTextureUpdater.cpp | |
parent | 56235947f2b023fc63cfad692c56df4e92199848 (diff) | |
download | chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.zip chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.tar.gz chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.tar.bz2 |
Here are gyp targets and stubs for compiling libcc and the webkit_compositor bindings in chromium. Everything is guarded behind the off-by-default use_libcc_for_compositor gyp variable. I haven't included the actual code here, but there are scripts to sync. I plan to land + manually sync the code into place until we're ready to flip the gyp switch.
Snapshot from r126652
BUG=
Review URL: https://chromiumcodereview.appspot.com/10828381
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153354 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/CanvasLayerTextureUpdater.cpp')
-rw-r--r-- | cc/CanvasLayerTextureUpdater.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/cc/CanvasLayerTextureUpdater.cpp b/cc/CanvasLayerTextureUpdater.cpp new file mode 100644 index 0000000..dd63b97 --- /dev/null +++ b/cc/CanvasLayerTextureUpdater.cpp @@ -0,0 +1,70 @@ +// Copyright 2011 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 "config.h" + +#if USE(ACCELERATED_COMPOSITING) + +#include "CanvasLayerTextureUpdater.h" + +#include "CCRenderingStats.h" +#include "FloatRect.h" +#include "LayerPainterChromium.h" +#include "SkCanvas.h" +#include "SkPaint.h" +#include "SkRect.h" +#include "SkiaUtils.h" +#include "TraceEvent.h" +#include <wtf/CurrentTime.h> + +namespace WebCore { + +CanvasLayerTextureUpdater::CanvasLayerTextureUpdater(PassOwnPtr<LayerPainterChromium> painter) + : m_painter(painter) +{ +} + +CanvasLayerTextureUpdater::~CanvasLayerTextureUpdater() +{ +} + +void CanvasLayerTextureUpdater::paintContents(SkCanvas* canvas, const IntRect& contentRect, float contentsWidthScale, float contentsHeightScale, IntRect& resultingOpaqueRect, CCRenderingStats& stats) +{ + TRACE_EVENT0("cc", "CanvasLayerTextureUpdater::paintContents"); + canvas->save(); + canvas->translate(WebCoreFloatToSkScalar(-contentRect.x()), WebCoreFloatToSkScalar(-contentRect.y())); + + IntRect layerRect = contentRect; + + if (contentsWidthScale != 1 || contentsHeightScale != 1) { + canvas->scale(WebCoreFloatToSkScalar(contentsWidthScale), WebCoreFloatToSkScalar(contentsHeightScale)); + + FloatRect rect = contentRect; + rect.scale(1 / contentsWidthScale, 1 / contentsHeightScale); + layerRect = enclosingIntRect(rect); + } + + SkPaint paint; + paint.setAntiAlias(false); + paint.setXfermodeMode(SkXfermode::kClear_Mode); + SkRect layerSkRect = SkRect::MakeXYWH(layerRect.x(), layerRect.y(), layerRect.width(), layerRect.height()); + canvas->drawRect(layerSkRect, paint); + canvas->clipRect(layerSkRect); + + FloatRect opaqueLayerRect; + double paintBeginTime = monotonicallyIncreasingTime(); + m_painter->paint(canvas, layerRect, opaqueLayerRect); + stats.totalPaintTimeInSeconds += monotonicallyIncreasingTime() - paintBeginTime; + canvas->restore(); + + FloatRect opaqueContentRect = opaqueLayerRect; + opaqueContentRect.scale(contentsWidthScale, contentsHeightScale); + resultingOpaqueRect = enclosedIntRect(opaqueContentRect); + + m_contentRect = contentRect; +} + +} // namespace WebCore +#endif // USE(ACCELERATED_COMPOSITING) |