OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/render_surface_impl.h" | 5 #include "cc/render_surface_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 { | 196 { |
197 DCHECK(!forReplica || m_owningLayer->hasReplica()); | 197 DCHECK(!forReplica || m_owningLayer->hasReplica()); |
198 | 198 |
199 gfx::Rect clippedRectInTarget = computeClippedRectInTarget(m_owningLayer); | 199 gfx::Rect clippedRectInTarget = computeClippedRectInTarget(m_owningLayer); |
200 const WebTransformationMatrix& drawTransform = forReplica ? m_replicaDrawTra
nsform : m_drawTransform; | 200 const WebTransformationMatrix& drawTransform = forReplica ? m_replicaDrawTra
nsform : m_drawTransform; |
201 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(SharedQuadSta
te::create(drawTransform, m_contentRect, clippedRectInTarget, m_drawOpacity).Pas
s()); | 201 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(SharedQuadSta
te::create(drawTransform, m_contentRect, clippedRectInTarget, m_drawOpacity).Pas
s()); |
202 | 202 |
203 if (m_owningLayer->showDebugBorders()) { | 203 if (m_owningLayer->showDebugBorders()) { |
204 SkColor color = forReplica ? DebugColors::SurfaceReplicaBorderColor() :
DebugColors::SurfaceBorderColor(); | 204 SkColor color = forReplica ? DebugColors::SurfaceReplicaBorderColor() :
DebugColors::SurfaceBorderColor(); |
205 float width = forReplica ? DebugColors::SurfaceReplicaBorderWidth(m_owni
ngLayer->layerTreeHostImpl()) : DebugColors::SurfaceBorderWidth(m_owningLayer->l
ayerTreeHostImpl()); | 205 float width = forReplica ? DebugColors::SurfaceReplicaBorderWidth(m_owni
ngLayer->layerTreeHostImpl()) : DebugColors::SurfaceBorderWidth(m_owningLayer->l
ayerTreeHostImpl()); |
206 quadSink.append(DebugBorderDrawQuad::create(sharedQuadState, contentRect
(), color, width).PassAs<DrawQuad>(), appendQuadsData); | 206 scoped_ptr<DebugBorderDrawQuad> debugBorderQuad = DebugBorderDrawQuad::C
reate(); |
| 207 debugBorderQuad->SetNew(sharedQuadState, contentRect(), color, width); |
| 208 quadSink.append(debugBorderQuad.PassAs<DrawQuad>(), appendQuadsData); |
207 } | 209 } |
208 | 210 |
209 // FIXME: By using the same RenderSurfaceImpl for both the content and its r
eflection, | 211 // FIXME: By using the same RenderSurfaceImpl for both the content and its r
eflection, |
210 // it's currently not possible to apply a separate mask to the reflection la
yer | 212 // it's currently not possible to apply a separate mask to the reflection la
yer |
211 // or correctly handle opacity in reflections (opacity must be applied after
drawing | 213 // or correctly handle opacity in reflections (opacity must be applied after
drawing |
212 // both the layer and its reflection). The solution is to introduce yet anot
her RenderSurfaceImpl | 214 // both the layer and its reflection). The solution is to introduce yet anot
her RenderSurfaceImpl |
213 // to draw the layer and its reflection in. For now we only apply a separate
reflection | 215 // to draw the layer and its reflection in. For now we only apply a separate
reflection |
214 // mask if the contents don't have a mask of their own. | 216 // mask if the contents don't have a mask of their own. |
215 LayerImpl* maskLayer = m_owningLayer->maskLayer(); | 217 LayerImpl* maskLayer = m_owningLayer->maskLayer(); |
216 if (maskLayer && (!maskLayer->drawsContent() || maskLayer->bounds().IsEmpty(
))) | 218 if (maskLayer && (!maskLayer->drawsContent() || maskLayer->bounds().IsEmpty(
))) |
(...skipping 12 matching lines...) Expand all Loading... |
229 if (maskLayer) { | 231 if (maskLayer) { |
230 maskTexCoordScaleX = contentRect().width() / maskLayer->contentsScaleX()
/ maskLayer->bounds().width(); | 232 maskTexCoordScaleX = contentRect().width() / maskLayer->contentsScaleX()
/ maskLayer->bounds().width(); |
231 maskTexCoordScaleY = contentRect().height() / maskLayer->contentsScaleY(
) / maskLayer->bounds().height(); | 233 maskTexCoordScaleY = contentRect().height() / maskLayer->contentsScaleY(
) / maskLayer->bounds().height(); |
232 maskTexCoordOffsetX = static_cast<float>(contentRect().x()) / contentRec
t().width() * maskTexCoordScaleX; | 234 maskTexCoordOffsetX = static_cast<float>(contentRect().x()) / contentRec
t().width() * maskTexCoordScaleX; |
233 maskTexCoordOffsetY = static_cast<float>(contentRect().y()) / contentRec
t().height() * maskTexCoordScaleY; | 235 maskTexCoordOffsetY = static_cast<float>(contentRect().y()) / contentRec
t().height() * maskTexCoordScaleY; |
234 } | 236 } |
235 | 237 |
236 ResourceProvider::ResourceId maskResourceId = maskLayer ? maskLayer->content
sResourceId() : 0; | 238 ResourceProvider::ResourceId maskResourceId = maskLayer ? maskLayer->content
sResourceId() : 0; |
237 gfx::Rect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect
: gfx::Rect(); | 239 gfx::Rect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect
: gfx::Rect(); |
238 | 240 |
239 quadSink.append(RenderPassDrawQuad::create(sharedQuadState, contentRect(), r
enderPassId, forReplica, maskResourceId, contentsChangedSinceLastFrame, | 241 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); |
240 maskTexCoordScaleX, maskTexCoordS
caleY, maskTexCoordOffsetX, maskTexCoordOffsetY).PassAs<DrawQuad>(), appendQuads
Data); | 242 quad->SetNew(sharedQuadState, contentRect(), renderPassId, forReplica, maskR
esourceId, contentsChangedSinceLastFrame, |
| 243 maskTexCoordScaleX, maskTexCoordScaleY, maskTexCoordOffsetX, ma
skTexCoordOffsetY); |
| 244 quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); |
241 } | 245 } |
242 | 246 |
243 } // namespace cc | 247 } // namespace cc |
OLD | NEW |