summaryrefslogtreecommitdiffstats
path: root/cc/CanvasLayerTextureUpdater.cpp
diff options
context:
space:
mode:
authorjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-25 00:09:14 +0000
committerjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-25 00:09:14 +0000
commit94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679 (patch)
tree530f51d5c75459999e4adf2a6895884ce1c15ce0 /cc/CanvasLayerTextureUpdater.cpp
parent56235947f2b023fc63cfad692c56df4e92199848 (diff)
downloadchromium_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.cpp70
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)