Skip to content

Commit 1ed1565

Browse files
Added OpaqueRegionSkia::currentTrackingOpaqueRect
[chromium] Add OpaqueRegionSkia::currentTrackingOpaqueRect https://bugs.webkit.org/show_bug.cgi?id=106267 Reviewed by Stephen White. No new tests needed. No change in functionality. * platform/graphics/skia/OpaqueRegionSkia.cpp: (WebCore::OpaqueRegionSkia::applyOpaqueRegionFromLayer): (WebCore::OpaqueRegionSkia::markRectAsOpaque): (WebCore::OpaqueRegionSkia::markRectAsNonOpaque): (WebCore::OpaqueRegionSkia::markAllAsNonOpaque): (WebCore::OpaqueRegionSkia::currentTrackingOpaqueRect): (WebCore): * platform/graphics/skia/OpaqueRegionSkia.h: (OpaqueRegionSkia): Canonical link: https://commits.webkit.org/124539@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@139083 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent fbe84e4 commit 1ed1565

File tree

3 files changed

+33
-12
lines changed

3 files changed

+33
-12
lines changed

Source/WebCore/ChangeLog

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
2013-01-08 Alok Priyadarshi <alokp@chromium.org>
2+
3+
Added OpaqueRegionSkia::currentTrackingOpaqueRect
4+
5+
[chromium] Add OpaqueRegionSkia::currentTrackingOpaqueRect
6+
https://bugs.webkit.org/show_bug.cgi?id=106267
7+
8+
Reviewed by Stephen White.
9+
10+
No new tests needed. No change in functionality.
11+
12+
* platform/graphics/skia/OpaqueRegionSkia.cpp:
13+
(WebCore::OpaqueRegionSkia::applyOpaqueRegionFromLayer):
14+
(WebCore::OpaqueRegionSkia::markRectAsOpaque):
15+
(WebCore::OpaqueRegionSkia::markRectAsNonOpaque):
16+
(WebCore::OpaqueRegionSkia::markAllAsNonOpaque):
17+
(WebCore::OpaqueRegionSkia::currentTrackingOpaqueRect):
18+
(WebCore):
19+
* platform/graphics/skia/OpaqueRegionSkia.h:
20+
(OpaqueRegionSkia):
21+
122
2013-01-08 Zan Dobersek <zandobersek@gmail.com>
223

324
[GTK] Build failures when building with python 3.3

Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -164,14 +164,6 @@ static inline bool getDeviceClipAsRect(const PlatformContextSkia* context, SkRec
164164
return true;
165165
}
166166

167-
static inline SkRect& currentTrackingOpaqueRect(SkRect& rootOpaqueRect, Vector<OpaqueRegionSkia::CanvasLayerState, 3>& canvasLayerStack)
168-
{
169-
// If we are drawing into a canvas layer, then track the opaque rect in that layer.
170-
if (!canvasLayerStack.isEmpty())
171-
return canvasLayerStack.last().opaqueRect;
172-
return rootOpaqueRect;
173-
}
174-
175167
void OpaqueRegionSkia::pushCanvasLayer(const SkPaint* paint)
176168
{
177169
CanvasLayerState state;
@@ -333,7 +325,7 @@ void OpaqueRegionSkia::applyOpaqueRegionFromLayer(const PlatformContextSkia* con
333325

334326
SkRect sourceOpaqueRect = layerOpaqueRect;
335327
// Save the opaque area in the destination, so we can preserve the parts of it under the source opaque area if possible.
336-
SkRect destinationOpaqueRect = currentTrackingOpaqueRect(m_opaqueRect, m_canvasLayerStack);
328+
SkRect destinationOpaqueRect = currentTrackingOpaqueRect();
337329

338330
bool outsideSourceOpaqueRectPreservesOpaque = xfermodePreservesOpaque(paint, false);
339331
if (!outsideSourceOpaqueRectPreservesOpaque)
@@ -363,7 +355,7 @@ void OpaqueRegionSkia::markRectAsOpaque(const SkRect& rect)
363355
// rectangle then we do that, as that is the cheapest way to increase the area returned
364356
// without increasing the complexity.
365357

366-
SkRect& opaqueRect = currentTrackingOpaqueRect(m_opaqueRect, m_canvasLayerStack);
358+
SkRect& opaqueRect = currentTrackingOpaqueRect();
367359

368360
if (rect.isEmpty())
369361
return;
@@ -397,7 +389,7 @@ void OpaqueRegionSkia::markRectAsNonOpaque(const SkRect& rect)
397389
// We want to keep as much of the current opaque rectangle as we can, so find the one largest
398390
// rectangle inside m_opaqueRect that does not intersect with |rect|.
399391

400-
SkRect& opaqueRect = currentTrackingOpaqueRect(m_opaqueRect, m_canvasLayerStack);
392+
SkRect& opaqueRect = currentTrackingOpaqueRect();
401393

402394
if (!SkRect::Intersects(rect, opaqueRect))
403395
return;
@@ -432,8 +424,14 @@ void OpaqueRegionSkia::markRectAsNonOpaque(const SkRect& rect)
432424

433425
void OpaqueRegionSkia::markAllAsNonOpaque()
434426
{
435-
SkRect& opaqueRect = currentTrackingOpaqueRect(m_opaqueRect, m_canvasLayerStack);
427+
SkRect& opaqueRect = currentTrackingOpaqueRect();
436428
opaqueRect.setEmpty();
437429
}
438430

431+
SkRect& OpaqueRegionSkia::currentTrackingOpaqueRect()
432+
{
433+
// If we are drawing into a canvas layer, then track the opaque rect in that layer.
434+
return m_canvasLayerStack.isEmpty() ? m_opaqueRect : m_canvasLayerStack.last().opaqueRect;
435+
}
436+
439437
} // namespace WebCore

Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ class OpaqueRegionSkia {
9191
void markRectAsNonOpaque(const SkRect&);
9292
void markAllAsNonOpaque();
9393

94+
SkRect& currentTrackingOpaqueRect();
95+
9496
SkRect m_opaqueRect;
9597

9698
Vector<CanvasLayerState, 3> m_canvasLayerStack;

0 commit comments

Comments
 (0)