blob: afdf062de998b162061d48b8fdbd8096f7544209 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
// 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.
#ifndef CCRenderSurface_h
#define CCRenderSurface_h
#if USE(ACCELERATED_COMPOSITING)
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "CCRenderPass.h"
#include "CCSharedQuadState.h"
#include "FloatRect.h"
#include "IntRect.h"
#include <public/WebTransformationMatrix.h>
namespace cc {
class CCDamageTracker;
class CCDelegatedRendererLayerImpl;
class CCQuadSink;
class CCRenderPassSink;
class CCLayerImpl;
struct CCAppendQuadsData;
class CCRenderSurface {
public:
explicit CCRenderSurface(CCLayerImpl*);
virtual ~CCRenderSurface();
std::string name() const;
void dumpSurface(std::string*, int indent) const;
FloatPoint contentRectCenter() const { return FloatRect(m_contentRect).center(); }
// Returns the rect that encloses the RenderSurface including any reflection.
FloatRect drawableContentRect() const;
float drawOpacity() const { return m_drawOpacity; }
void setDrawOpacity(float opacity) { m_drawOpacity = opacity; }
void setNearestAncestorThatMovesPixels(CCRenderSurface* surface) { m_nearestAncestorThatMovesPixels = surface; }
const CCRenderSurface* nearestAncestorThatMovesPixels() const { return m_nearestAncestorThatMovesPixels; }
bool drawOpacityIsAnimating() const { return m_drawOpacityIsAnimating; }
void setDrawOpacityIsAnimating(bool drawOpacityIsAnimating) { m_drawOpacityIsAnimating = drawOpacityIsAnimating; }
void setDrawTransform(const WebKit::WebTransformationMatrix& drawTransform) { m_drawTransform = drawTransform; }
const WebKit::WebTransformationMatrix& drawTransform() const { return m_drawTransform; }
void setScreenSpaceTransform(const WebKit::WebTransformationMatrix& screenSpaceTransform) { m_screenSpaceTransform = screenSpaceTransform; }
const WebKit::WebTransformationMatrix& screenSpaceTransform() const { return m_screenSpaceTransform; }
void setReplicaDrawTransform(const WebKit::WebTransformationMatrix& replicaDrawTransform) { m_replicaDrawTransform = replicaDrawTransform; }
const WebKit::WebTransformationMatrix& replicaDrawTransform() const { return m_replicaDrawTransform; }
void setReplicaScreenSpaceTransform(const WebKit::WebTransformationMatrix& replicaScreenSpaceTransform) { m_replicaScreenSpaceTransform = replicaScreenSpaceTransform; }
const WebKit::WebTransformationMatrix& replicaScreenSpaceTransform() const { return m_replicaScreenSpaceTransform; }
bool targetSurfaceTransformsAreAnimating() const { return m_targetSurfaceTransformsAreAnimating; }
void setTargetSurfaceTransformsAreAnimating(bool animating) { m_targetSurfaceTransformsAreAnimating = animating; }
bool screenSpaceTransformsAreAnimating() const { return m_screenSpaceTransformsAreAnimating; }
void setScreenSpaceTransformsAreAnimating(bool animating) { m_screenSpaceTransformsAreAnimating = animating; }
void setClipRect(const IntRect&);
const IntRect& clipRect() const { return m_clipRect; }
bool contentsChanged() const;
void setContentRect(const IntRect&);
const IntRect& contentRect() const { return m_contentRect; }
std::vector<CCLayerImpl*>& layerList() { return m_layerList; }
void addContributingDelegatedRenderPassLayer(CCLayerImpl*);
void clearLayerLists();
int owningLayerId() const;
void resetPropertyChangedFlag() { m_surfacePropertyChanged = false; }
bool surfacePropertyChanged() const;
bool surfacePropertyChangedOnlyFromDescendant() const;
CCDamageTracker* damageTracker() const { return m_damageTracker.get(); }
CCRenderPass::Id renderPassId();
void appendRenderPasses(CCRenderPassSink&);
void appendQuads(CCQuadSink&, CCAppendQuadsData&, bool forReplica, CCRenderPass::Id renderPassId);
private:
CCLayerImpl* m_owningLayer;
// Uses this surface's space.
IntRect m_contentRect;
bool m_surfacePropertyChanged;
float m_drawOpacity;
bool m_drawOpacityIsAnimating;
WebKit::WebTransformationMatrix m_drawTransform;
WebKit::WebTransformationMatrix m_screenSpaceTransform;
WebKit::WebTransformationMatrix m_replicaDrawTransform;
WebKit::WebTransformationMatrix m_replicaScreenSpaceTransform;
bool m_targetSurfaceTransformsAreAnimating;
bool m_screenSpaceTransformsAreAnimating;
// Uses the space of the surface's target surface.
IntRect m_clipRect;
std::vector<CCLayerImpl*> m_layerList;
std::vector<CCDelegatedRendererLayerImpl*> m_contributingDelegatedRenderPassLayerList;
// The nearest ancestor target surface that will contain the contents of this surface, and that is going
// to move pixels within the surface (such as with a blur). This can point to itself.
CCRenderSurface* m_nearestAncestorThatMovesPixels;
scoped_ptr<CCDamageTracker> m_damageTracker;
// For CCLayerIteratorActions
int m_targetRenderSurfaceLayerIndexHistory;
int m_currentLayerIndexHistory;
friend struct CCLayerIteratorActions;
DISALLOW_COPY_AND_ASSIGN(CCRenderSurface);
};
}
#endif // USE(ACCELERATED_COMPOSITING)
#endif
|