Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: chrome/browser/android/compositor/layer/crushed_sprite_layer.h

Issue 1337703002: [Contextual Search] Add support for crushed sprites and animate the search provider icon (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes from self-review Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_CRUSHED_SPRITE_LAYER_H_
6 #define CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_CRUSHED_SPRITE_LAYER_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "cc/layers/content_layer_client.h"
10 #include "chrome/browser/android/compositor/layer/layer.h"
11 #include "ui/gfx/geometry/rect.h"
12
13 namespace cc {
14 class ContentLayerClient;
15 class Layer;
16 class PictureLayer;
17 }
18
19 namespace chrome {
20 namespace android {
21
22 // A layer which manages painting source rectangles from a crushed sprite sheet
23 // into a PictureLayer. The frames in a crushed sprite sheet are represented by
24 // a set of rectangles. Most frames consist of small rectangles representing the
25 // change from the previous frame. Typically, the rectangles for the current
26 // frame get painted on top of the previous frame.
27 class CrushedSpriteLayer : public Layer, cc::ContentLayerClient {
28 public:
29 static scoped_refptr<CrushedSpriteLayer> Create();
30
31 // Sets the source bitmap and source and destination rectangles. Source
32 // rectangles from the source bitmap are painted to the destination
33 // rectangles. |paint_previous_frame| should be true if the current frame's
34 // rectangles should be painted on top of the previous frame.
35 void UpdateCrushedSprite(
36 const SkBitmap& src_bitmap,
37 const std::vector<std::pair<gfx::Rect, gfx::Rect>>& src_dst_rects,
38 bool paint_previous_frame);
39
40 // Layer override.
41 scoped_refptr<cc::Layer> layer() override;
42
43 // ContentLayerClient implementation.
44 void PaintContents(SkCanvas* canvas,
45 const gfx::Rect& clip,
46 PaintingControlSetting painting_control) override;
47 scoped_refptr<cc::DisplayItemList> PaintContentsToDisplayList(
48 const gfx::Rect& clip,
49 PaintingControlSetting painting_control) override;
50 bool FillsBoundsCompletely() const override;
51 size_t GetApproximateUnsharedMemoryUsage() const override;
52
53 protected:
54 CrushedSpriteLayer();
55 ~CrushedSpriteLayer() override;
56
57 private:
58 scoped_refptr<cc::PictureLayer> layer_;
59 bool paint_previous_frame_;
60 skia::RefPtr<SkPicture> previous_frame_;
61 SkBitmap src_bitmap_;
62 std::vector<std::pair<gfx::Rect, gfx::Rect>> src_dst_rects_;
63
64 DISALLOW_COPY_AND_ASSIGN(CrushedSpriteLayer);
65 };
66
67 } // namespace android
68 } // namespace chrome
69
70 #endif // CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_CRUSHED_SPRITE_LAYER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698