OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) |
4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> | 6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> |
7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. | 8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. |
9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
10 * | 10 * |
(...skipping 1163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1174 scrollPathIntoViewInternal(m_path); | 1174 scrollPathIntoViewInternal(m_path); |
1175 } | 1175 } |
1176 | 1176 |
1177 void CanvasRenderingContext2D::scrollPathIntoView(Path2D* path2d) | 1177 void CanvasRenderingContext2D::scrollPathIntoView(Path2D* path2d) |
1178 { | 1178 { |
1179 scrollPathIntoViewInternal(path2d->path()); | 1179 scrollPathIntoViewInternal(path2d->path()); |
1180 } | 1180 } |
1181 | 1181 |
1182 void CanvasRenderingContext2D::scrollPathIntoViewInternal(const Path& path) | 1182 void CanvasRenderingContext2D::scrollPathIntoViewInternal(const Path& path) |
1183 { | 1183 { |
1184 if (!state().m_invertibleCTM || path.isEmpty()) | 1184 RenderObject* renderer = canvas()->renderer(); |
| 1185 RenderBox* renderBox = canvas()->renderBox(); |
| 1186 if (!renderer || !renderBox || !state().m_invertibleCTM || path.isEmpty()) |
1185 return; | 1187 return; |
1186 | 1188 |
1187 canvas()->document().updateLayoutIgnorePendingStylesheets(); | 1189 canvas()->document().updateLayoutIgnorePendingStylesheets(); |
1188 | 1190 |
1189 // Apply transformation and get the bounding rect | 1191 // Apply transformation and get the bounding rect |
1190 Path transformedPath = path; | 1192 Path transformedPath = path; |
1191 transformedPath.transform(state().m_transform); | 1193 transformedPath.transform(state().m_transform); |
1192 FloatRect boundingRect = transformedPath.boundingRect(); | 1194 FloatRect boundingRect = transformedPath.boundingRect(); |
1193 | 1195 |
1194 // Offset by the canvas rect (We should take border and padding into account
). | 1196 // Offset by the canvas rect |
1195 RenderBoxModelObject* rbmo = canvas()->renderBoxModelObject(); | 1197 LayoutRect pathRect(boundingRect); |
1196 IntRect canvasRect = canvas()->renderer()->absoluteBoundingBoxRect(); | 1198 IntRect canvasRect = renderBox->absoluteContentBox(); |
1197 canvasRect.move(rbmo->borderLeft() + rbmo->paddingLeft(), | 1199 pathRect.move(canvasRect.x(), canvasRect.y()); |
1198 rbmo->borderTop() + rbmo->paddingTop()); | |
1199 LayoutRect pathRect = enclosingLayoutRect(boundingRect); | |
1200 pathRect.moveBy(canvasRect.location()); | |
1201 | 1200 |
1202 if (canvas()->renderer()) { | 1201 renderer->scrollRectToVisible( |
1203 canvas()->renderer()->scrollRectToVisible( | 1202 pathRect, ScrollAlignment::alignCenterAlways, ScrollAlignment::alignTopA
lways); |
1204 pathRect, ScrollAlignment::alignCenterAlways, ScrollAlignment::align
TopAlways); | |
1205 } | |
1206 | 1203 |
1207 // TODO: should implement "inform the user" that the caret and/or | 1204 // TODO: should implement "inform the user" that the caret and/or |
1208 // selection the specified rectangle of the canvas. See http://crbug.com/357
987 | 1205 // selection the specified rectangle of the canvas. See http://crbug.com/357
987 |
1209 } | 1206 } |
1210 | 1207 |
1211 void CanvasRenderingContext2D::clearRect(float x, float y, float width, float he
ight) | 1208 void CanvasRenderingContext2D::clearRect(float x, float y, float width, float he
ight) |
1212 { | 1209 { |
1213 if (!validateRectForCanvas(x, y, width, height)) | 1210 if (!validateRectForCanvas(x, y, width, height)) |
1214 return; | 1211 return; |
1215 GraphicsContext* context = drawingContext(); | 1212 GraphicsContext* context = drawingContext(); |
(...skipping 1226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2442 | 2439 |
2443 unsigned CanvasRenderingContext2D::hitRegionsCount() const | 2440 unsigned CanvasRenderingContext2D::hitRegionsCount() const |
2444 { | 2441 { |
2445 if (m_hitRegionManager) | 2442 if (m_hitRegionManager) |
2446 return m_hitRegionManager->getHitRegionsCount(); | 2443 return m_hitRegionManager->getHitRegionsCount(); |
2447 | 2444 |
2448 return 0; | 2445 return 0; |
2449 } | 2446 } |
2450 | 2447 |
2451 } // namespace WebCore | 2448 } // namespace WebCore |
OLD | NEW |