OLD | NEW |
1 // Copyright (c) 2008, Google Inc. | 1 // Copyright (c) 2008, Google Inc. |
2 // All rights reserved. | 2 // All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 return result.stripWhiteSpace(); | 267 return result.stripWhiteSpace(); |
268 } | 268 } |
269 | 269 |
270 // Computes the bounding box for the stroke and style currently selected into | 270 // Computes the bounding box for the stroke and style currently selected into |
271 // the given bounding box. This also takes into account the stroke width. | 271 // the given bounding box. This also takes into account the stroke width. |
272 static FloatRect boundingBoxForCurrentStroke(const GraphicsContext* context) | 272 static FloatRect boundingBoxForCurrentStroke(const GraphicsContext* context) |
273 { | 273 { |
274 SkPaint paint; | 274 SkPaint paint; |
275 context->platformContext()->setupPaintForStroking(&paint, 0, 0); | 275 context->platformContext()->setupPaintForStroking(&paint, 0, 0); |
276 SkPath boundingPath; | 276 SkPath boundingPath; |
277 paint.getFillPath( | 277 paint.getFillPath(context->platformContext()->currentPath(), &boundingPath); |
278 context->platformContext()->currentPathInLocalCoordinates(), | |
279 &boundingPath); | |
280 SkRect r; | 278 SkRect r; |
281 boundingPath.computeBounds(&r, SkPath::kExact_BoundsType); | 279 boundingPath.computeBounds(&r, SkPath::kExact_BoundsType); |
282 return r; | 280 return r; |
283 } | 281 } |
284 | 282 |
285 FloatRect Path::strokeBoundingRect(StrokeStyleApplier* applier) | 283 FloatRect Path::strokeBoundingRect(StrokeStyleApplier* applier) |
286 { | 284 { |
287 GraphicsContext* scratch = scratchContext(); | 285 GraphicsContext* scratch = scratchContext(); |
288 scratch->save(); | 286 scratch->save(); |
289 scratch->beginPath(); | 287 scratch->beginPath(); |
290 scratch->addPath(*this); | 288 scratch->addPath(*this); |
291 | 289 |
292 if (applier) | 290 if (applier) |
293 applier->strokeStyle(scratch); | 291 applier->strokeStyle(scratch); |
294 | 292 |
295 FloatRect r = boundingBoxForCurrentStroke(scratch); | 293 FloatRect r = boundingBoxForCurrentStroke(scratch); |
296 scratch->restore(); | 294 scratch->restore(); |
297 return r; | 295 return r; |
298 } | 296 } |
299 | 297 |
300 } // namespace WebCore | 298 } // namespace WebCore |
OLD | NEW |