| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 | 712 |
| 713 DrawLooper drawLooper; | 713 DrawLooper drawLooper; |
| 714 drawLooper.addShadow(shadowOffset, shadowBlur, shadowColor, | 714 drawLooper.addShadow(shadowOffset, shadowBlur, shadowColor, |
| 715 DrawLooper::ShadowRespectsTransforms, DrawLooper::ShadowIgnoresAlpha); | 715 DrawLooper::ShadowRespectsTransforms, DrawLooper::ShadowIgnoresAlpha); |
| 716 setDrawLooper(drawLooper); | 716 setDrawLooper(drawLooper); |
| 717 fillRectWithRoundedHole(outerRect, roundedHole, fillColor); | 717 fillRectWithRoundedHole(outerRect, roundedHole, fillColor); |
| 718 restore(); | 718 restore(); |
| 719 clearDrawLooper(); | 719 clearDrawLooper(); |
| 720 } | 720 } |
| 721 | 721 |
| 722 // This is only used to draw borders. | |
| 723 void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2) | 722 void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2) |
| 724 { | 723 { |
| 725 if (paintingDisabled()) | 724 if (paintingDisabled()) |
| 726 return; | 725 return; |
| 727 | 726 |
| 728 StrokeStyle penStyle = strokeStyle(); | 727 StrokeStyle penStyle = strokeStyle(); |
| 729 if (penStyle == NoStroke) | 728 if (penStyle == NoStroke) |
| 730 return; | 729 return; |
| 731 | 730 |
| 732 FloatPoint p1 = point1; | 731 FloatPoint p1 = point1; |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 900 } | 899 } |
| 901 | 900 |
| 902 void GraphicsContext::drawLineForText(const FloatPoint& pt, float width, bool pr
inting) | 901 void GraphicsContext::drawLineForText(const FloatPoint& pt, float width, bool pr
inting) |
| 903 { | 902 { |
| 904 if (paintingDisabled()) | 903 if (paintingDisabled()) |
| 905 return; | 904 return; |
| 906 | 905 |
| 907 if (width <= 0) | 906 if (width <= 0) |
| 908 return; | 907 return; |
| 909 | 908 |
| 910 int thickness = SkMax32(static_cast<int>(strokeThickness()), 1); | |
| 911 SkRect r; | |
| 912 r.fLeft = WebCoreFloatToSkScalar(pt.x()); | |
| 913 // Avoid anti-aliasing lines. Currently, these are always horizontal. | |
| 914 // Round to nearest pixel to match text and other content. | |
| 915 r.fTop = WebCoreFloatToSkScalar(floorf(pt.y() + 0.5f)); | |
| 916 r.fRight = r.fLeft + WebCoreFloatToSkScalar(width); | |
| 917 r.fBottom = r.fTop + SkIntToScalar(thickness); | |
| 918 | |
| 919 SkPaint paint; | 909 SkPaint paint; |
| 920 switch (strokeStyle()) { | 910 switch (strokeStyle()) { |
| 921 case NoStroke: | 911 case NoStroke: |
| 922 case SolidStroke: | 912 case SolidStroke: |
| 923 case DoubleStroke: | 913 case DoubleStroke: |
| 924 case WavyStroke: | 914 case WavyStroke: { |
| 915 int thickness = SkMax32(static_cast<int>(strokeThickness()), 1); |
| 916 SkRect r; |
| 917 r.fLeft = WebCoreFloatToSkScalar(pt.x()); |
| 918 // Avoid anti-aliasing lines. Currently, these are always horizontal. |
| 919 // Round to nearest pixel to match text and other content. |
| 920 r.fTop = WebCoreFloatToSkScalar(floorf(pt.y() + 0.5f)); |
| 921 r.fRight = r.fLeft + WebCoreFloatToSkScalar(width); |
| 922 r.fBottom = r.fTop + SkIntToScalar(thickness); |
| 925 paint = immutableState()->fillPaint(); | 923 paint = immutableState()->fillPaint(); |
| 926 break; | 924 // Text lines are drawn using the stroke color. |
| 925 paint.setColor(effectiveStrokeColor()); |
| 926 drawRect(r, paint); |
| 927 return; |
| 928 } |
| 927 case DottedStroke: | 929 case DottedStroke: |
| 928 case DashedStroke: | 930 case DashedStroke: { |
| 929 paint = immutableState()->strokePaint(); | 931 int y = floorf(pt.y() + std::max<float>(strokeThickness() / 2.0f, 0.5f))
; |
| 930 break; | 932 drawLine(IntPoint(pt.x(), y), IntPoint(pt.x() + width, y)); |
| 933 return; |
| 934 } |
| 931 } | 935 } |
| 932 | 936 |
| 933 // Text lines are drawn using the stroke color. | 937 ASSERT_NOT_REACHED(); |
| 934 paint.setColor(effectiveStrokeColor()); | |
| 935 drawRect(r, paint); | |
| 936 } | 938 } |
| 937 | 939 |
| 938 // Draws a filled rectangle with a stroked border. | 940 // Draws a filled rectangle with a stroked border. |
| 939 void GraphicsContext::drawRect(const IntRect& rect) | 941 void GraphicsContext::drawRect(const IntRect& rect) |
| 940 { | 942 { |
| 941 if (paintingDisabled()) | 943 if (paintingDisabled()) |
| 942 return; | 944 return; |
| 943 | 945 |
| 944 ASSERT(!rect.isEmpty()); | 946 ASSERT(!rect.isEmpty()); |
| 945 if (rect.isEmpty()) | 947 if (rect.isEmpty()) |
| (...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1908 | 1910 |
| 1909 void GraphicsContext::didDrawTextInRect(const SkRect& textRect) | 1911 void GraphicsContext::didDrawTextInRect(const SkRect& textRect) |
| 1910 { | 1912 { |
| 1911 if (m_trackTextRegion) { | 1913 if (m_trackTextRegion) { |
| 1912 TRACE_EVENT0("skia", "PlatformContextSkia::trackTextRegion"); | 1914 TRACE_EVENT0("skia", "PlatformContextSkia::trackTextRegion"); |
| 1913 m_textRegion.join(textRect); | 1915 m_textRegion.join(textRect); |
| 1914 } | 1916 } |
| 1915 } | 1917 } |
| 1916 | 1918 |
| 1917 } | 1919 } |
| OLD | NEW |