Index: cc/picture.cc |
diff --git a/cc/picture.cc b/cc/picture.cc |
deleted file mode 100644 |
index 789bedb96cc32d421aad3599be20752e404bad8d..0000000000000000000000000000000000000000 |
--- a/cc/picture.cc |
+++ /dev/null |
@@ -1,161 +0,0 @@ |
-// Copyright 2012 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 "base/debug/trace_event.h" |
-#include "cc/content_layer_client.h" |
-#include "cc/debug/rendering_stats.h" |
-#include "cc/picture.h" |
-#include "skia/ext/analysis_canvas.h" |
-#include "third_party/skia/include/core/SkCanvas.h" |
-#include "third_party/skia/include/core/SkData.h" |
-#include "third_party/skia/include/utils/SkPictureUtils.h" |
-#include "ui/gfx/rect_conversions.h" |
-#include "ui/gfx/skia_util.h" |
- |
-namespace { |
-// URI label for a lazily decoded SkPixelRef. |
-const char labelLazyDecoded[] = "lazy"; |
-} |
- |
-namespace cc { |
- |
-scoped_refptr<Picture> Picture::Create(gfx::Rect layer_rect) { |
- return make_scoped_refptr(new Picture(layer_rect)); |
-} |
- |
-Picture::Picture(gfx::Rect layer_rect) |
- : layer_rect_(layer_rect) { |
-} |
- |
-Picture::Picture(const skia::RefPtr<SkPicture>& picture, |
- gfx::Rect layer_rect, |
- gfx::Rect opaque_rect) : |
- layer_rect_(layer_rect), |
- opaque_rect_(opaque_rect), |
- picture_(picture) { |
-} |
- |
-Picture::~Picture() { |
-} |
- |
-scoped_refptr<Picture> Picture::GetCloneForDrawingOnThread( |
- unsigned thread_index) const { |
- // SkPicture is not thread-safe to rasterize with, this returns a clone |
- // to rasterize with on a specific thread. |
- CHECK_GT(clones_.size(), thread_index); |
- return clones_[thread_index]; |
-} |
- |
-void Picture::CloneForDrawing(int num_threads) { |
- TRACE_EVENT1("cc", "Picture::CloneForDrawing", "num_threads", num_threads); |
- |
- DCHECK(picture_); |
- scoped_array<SkPicture> clones(new SkPicture[num_threads]); |
- picture_->clone(&clones[0], num_threads); |
- |
- clones_.clear(); |
- for (int i = 0; i < num_threads; i++) { |
- scoped_refptr<Picture> clone = make_scoped_refptr( |
- new Picture(skia::AdoptRef(new SkPicture(clones[i])), |
- layer_rect_, |
- opaque_rect_)); |
- clones_.push_back(clone); |
- } |
-} |
- |
-void Picture::Record(ContentLayerClient* painter, |
- RenderingStats* stats, |
- const SkTileGridPicture::TileGridInfo& tileGridInfo) { |
- TRACE_EVENT2("cc", "Picture::Record", |
- "width", layer_rect_.width(), "height", layer_rect_.height()); |
- |
- // Record() should only be called once. |
- DCHECK(!picture_); |
- DCHECK(!tileGridInfo.fTileInterval.isEmpty()); |
- picture_ = skia::AdoptRef(new SkTileGridPicture( |
- layer_rect_.width(), layer_rect_.height(), tileGridInfo)); |
- |
- SkCanvas* canvas = picture_->beginRecording( |
- layer_rect_.width(), |
- layer_rect_.height(), |
- SkPicture::kUsePathBoundsForClip_RecordingFlag | |
- SkPicture::kOptimizeForClippedPlayback_RecordingFlag); |
- |
- canvas->save(); |
- canvas->translate(SkFloatToScalar(-layer_rect_.x()), |
- SkFloatToScalar(-layer_rect_.y())); |
- |
- SkPaint paint; |
- paint.setAntiAlias(false); |
- paint.setXfermodeMode(SkXfermode::kClear_Mode); |
- SkRect layer_skrect = SkRect::MakeXYWH(layer_rect_.x(), |
- layer_rect_.y(), |
- layer_rect_.width(), |
- layer_rect_.height()); |
- canvas->clipRect(layer_skrect); |
- canvas->drawRect(layer_skrect, paint); |
- |
- gfx::RectF opaque_layer_rect; |
- base::TimeTicks begin_paint_time; |
- if (stats) |
- begin_paint_time = base::TimeTicks::Now(); |
- painter->PaintContents(canvas, layer_rect_, &opaque_layer_rect); |
- if (stats) { |
- stats->totalPaintTime += base::TimeTicks::Now() - begin_paint_time; |
- stats->totalPixelsPainted += |
- layer_rect_.width() * layer_rect_.height(); |
- } |
- |
- canvas->restore(); |
- picture_->endRecording(); |
- |
- opaque_rect_ = gfx::ToEnclosedRect(opaque_layer_rect); |
-} |
- |
-void Picture::Raster( |
- SkCanvas* canvas, |
- gfx::Rect content_rect, |
- float contents_scale) { |
- TRACE_EVENT2("cc", "Picture::Raster", |
- "layer width", layer_rect_.width(), |
- "layer height", layer_rect_.height()); |
- DCHECK(picture_); |
- |
- canvas->save(); |
- canvas->clipRect(gfx::RectToSkRect(content_rect)); |
- canvas->scale(contents_scale, contents_scale); |
- canvas->translate(layer_rect_.x(), layer_rect_.y()); |
- canvas->drawPicture(*picture_); |
- canvas->restore(); |
-} |
- |
-void Picture::GatherPixelRefs(const gfx::Rect& layer_rect, |
- std::list<skia::LazyPixelRef*>& pixel_ref_list) { |
- DCHECK(picture_); |
- SkData* pixel_refs = SkPictureUtils::GatherPixelRefs( |
- picture_.get(), SkRect::MakeXYWH(layer_rect.x(), |
- layer_rect.y(), |
- layer_rect.width(), |
- layer_rect.height())); |
- if (!pixel_refs) |
- return; |
- |
- void* data = const_cast<void*>(pixel_refs->data()); |
- if (!data) { |
- pixel_refs->unref(); |
- return; |
- } |
- |
- SkPixelRef** refs = reinterpret_cast<SkPixelRef**>(data); |
- for (unsigned int i = 0; i < pixel_refs->size() / sizeof(SkPixelRef*); ++i) { |
- if (*refs && (*refs)->getURI() && !strncmp( |
- (*refs)->getURI(), labelLazyDecoded, 4)) { |
- pixel_ref_list.push_back(static_cast<skia::LazyPixelRef*>(*refs)); |
- } |
- refs++; |
- } |
- pixel_refs->unref(); |
-} |
- |
-} // namespace cc |