OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2006, Google Inc. All rights reserved. | 2 * Copyright (c) 2006, Google Inc. 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 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
399 SkPath path; | 399 SkPath path; |
400 path.addOval(oval, SkPath::kCCW_Direction); | 400 path.addOval(oval, SkPath::kCCW_Direction); |
401 platformContext()->canvas()->clipPath(path, SkRegion::kDifference_Op); | 401 platformContext()->canvas()->clipPath(path, SkRegion::kDifference_Op); |
402 } | 402 } |
403 | 403 |
404 void GraphicsContext::clipPath(WindRule clipRule) | 404 void GraphicsContext::clipPath(WindRule clipRule) |
405 { | 405 { |
406 if (paintingDisabled()) | 406 if (paintingDisabled()) |
407 return; | 407 return; |
408 | 408 |
409 const SkPath* oldPath = platformContext()->currentPath(); | 409 const SkPath* oldPath = platformContext()->currentPathInGlobalCoordinates(); |
410 SkPath path(*oldPath); | 410 SkPath path(*oldPath); |
411 path.setFillType(clipRule == RULE_EVENODD ? SkPath::kEvenOdd_FillType : SkPa th::kWinding_FillType); | 411 path.setFillType(clipRule == RULE_EVENODD ? SkPath::kEvenOdd_FillType : SkPa th::kWinding_FillType); |
412 platformContext()->canvas()->clipPath(path); | 412 platformContext()->canvas()->clipPath(path); |
413 } | 413 } |
414 | 414 |
415 void GraphicsContext::clipToImageBuffer(const FloatRect& rect, | 415 void GraphicsContext::clipToImageBuffer(const FloatRect& rect, |
416 const ImageBuffer* imageBuffer) | 416 const ImageBuffer* imageBuffer) |
417 { | 417 { |
418 if (paintingDisabled()) | 418 if (paintingDisabled()) |
419 return; | 419 return; |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
669 ClipRectToCanvas(*platformContext()->canvas(), r, &r); | 669 ClipRectToCanvas(*platformContext()->canvas(), r, &r); |
670 | 670 |
671 platformContext()->drawRect(r); | 671 platformContext()->drawRect(r); |
672 } | 672 } |
673 | 673 |
674 void GraphicsContext::fillPath() | 674 void GraphicsContext::fillPath() |
675 { | 675 { |
676 if (paintingDisabled()) | 676 if (paintingDisabled()) |
677 return; | 677 return; |
678 | 678 |
679 const SkPath& path = *platformContext()->currentPath(); | 679 SkPath path = platformContext()->currentPathInLocalCoordinates(); |
680 if (!isPathSkiaSafe(getCTM(), path)) | 680 if (!isPathSkiaSafe(getCTM(), path)) |
681 return; | 681 return; |
682 | 682 |
683 const GraphicsContextState& state = m_common->state; | 683 const GraphicsContextState& state = m_common->state; |
684 ColorSpace colorSpace = state.fillColorSpace; | 684 ColorSpace colorSpace = state.fillColorSpace; |
685 | 685 |
686 if (colorSpace == SolidColorSpace && !fillColor().alpha()) | 686 if (colorSpace == SolidColorSpace && !fillColor().alpha()) |
687 return; | 687 return; |
688 | 688 |
689 platformContext()->setFillRule(state.fillRule == RULE_EVENODD ? | 689 platformContext()->setFillRule(state.fillRule == RULE_EVENODD ? |
Evan Stade
2009/01/13 00:19:18
found the bug :(
since path is no longer a refere
brettw
2009/01/13 17:44:36
Actually, I think this current code is pretty weir
| |
690 SkPath::kEvenOdd_FillType : SkPath::kWinding_FillType); | 690 SkPath::kEvenOdd_FillType : SkPath::kWinding_FillType); |
691 | 691 |
692 SkPaint paint; | 692 SkPaint paint; |
693 platformContext()->setupPaintForFilling(&paint); | 693 platformContext()->setupPaintForFilling(&paint); |
694 | 694 |
695 if (colorSpace == PatternColorSpace) { | 695 if (colorSpace == PatternColorSpace) { |
696 SkShader* pat = state.fillPattern->createPlatformPattern(getCTM()); | 696 SkShader* pat = state.fillPattern->createPlatformPattern(getCTM()); |
697 paint.setShader(pat); | 697 paint.setShader(pat); |
698 pat->unref(); | 698 pat->unref(); |
699 } else if (colorSpace == GradientColorSpace) | 699 } else if (colorSpace == GradientColorSpace) |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1043 if (!isPathSkiaSafe(getCTM(), path)) | 1043 if (!isPathSkiaSafe(getCTM(), path)) |
1044 return; | 1044 return; |
1045 platformContext()->canvas()->drawPath(path, paint); | 1045 platformContext()->canvas()->drawPath(path, paint); |
1046 } | 1046 } |
1047 | 1047 |
1048 void GraphicsContext::strokePath() | 1048 void GraphicsContext::strokePath() |
1049 { | 1049 { |
1050 if (paintingDisabled()) | 1050 if (paintingDisabled()) |
1051 return; | 1051 return; |
1052 | 1052 |
1053 const SkPath& path = *platformContext()->currentPath(); | 1053 SkPath path = platformContext()->currentPathInLocalCoordinates(); |
1054 if (!isPathSkiaSafe(getCTM(), path)) | 1054 if (!isPathSkiaSafe(getCTM(), path)) |
1055 return; | 1055 return; |
1056 | 1056 |
1057 const GraphicsContextState& state = m_common->state; | 1057 const GraphicsContextState& state = m_common->state; |
1058 ColorSpace colorSpace = state.strokeColorSpace; | 1058 ColorSpace colorSpace = state.strokeColorSpace; |
1059 | 1059 |
1060 if (colorSpace == SolidColorSpace && !strokeColor().alpha()) | 1060 if (colorSpace == SolidColorSpace && !strokeColor().alpha()) |
1061 return; | 1061 return; |
1062 | 1062 |
1063 SkPaint paint; | 1063 SkPaint paint; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1113 void GraphicsContext::translate(float w, float h) | 1113 void GraphicsContext::translate(float w, float h) |
1114 { | 1114 { |
1115 if (paintingDisabled()) | 1115 if (paintingDisabled()) |
1116 return; | 1116 return; |
1117 | 1117 |
1118 platformContext()->canvas()->translate(WebCoreFloatToSkScalar(w), | 1118 platformContext()->canvas()->translate(WebCoreFloatToSkScalar(w), |
1119 WebCoreFloatToSkScalar(h)); | 1119 WebCoreFloatToSkScalar(h)); |
1120 } | 1120 } |
1121 | 1121 |
1122 } // namespace WebCore | 1122 } // namespace WebCore |
OLD | NEW |