OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/paint/BoxBorderPainter.h" | 5 #include "core/paint/BoxBorderPainter.h" |
6 | 6 |
7 #include "core/paint/BoxPainter.h" | 7 #include "core/paint/BoxPainter.h" |
8 #include "core/paint/ObjectPainter.h" | 8 #include "core/paint/ObjectPainter.h" |
9 #include "core/paint/PaintInfo.h" | 9 #include "core/paint/PaintInfo.h" |
10 #include "core/style/BorderEdge.h" | 10 #include "core/style/BorderEdge.h" |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
129 if (style != adjacentStyle) | 129 if (style != adjacentStyle) |
130 return true; | 130 return true; |
131 | 131 |
132 return borderStyleHasUnmatchedColorsAtCorner(style, side, adjacentSide); | 132 return borderStyleHasUnmatchedColorsAtCorner(style, side, adjacentSide); |
133 } | 133 } |
134 | 134 |
135 FloatRect calculateSideRect(const FloatRoundedRect& outerBorder, | 135 FloatRect calculateSideRect(const FloatRoundedRect& outerBorder, |
136 const BorderEdge& edge, | 136 const BorderEdge& edge, |
137 int side) { | 137 int side) { |
138 FloatRect sideRect = outerBorder.rect(); | 138 FloatRect sideRect = outerBorder.rect(); |
139 int width = edge.width; | 139 float width = edge.width(); |
140 | 140 |
141 if (side == BSTop) | 141 if (side == BSTop) |
142 sideRect.setHeight(width); | 142 sideRect.setHeight(width); |
143 else if (side == BSBottom) | 143 else if (side == BSBottom) |
144 sideRect.shiftYEdgeTo(sideRect.maxY() - width); | 144 sideRect.shiftYEdgeTo(sideRect.maxY() - width); |
145 else if (side == BSLeft) | 145 else if (side == BSLeft) |
146 sideRect.setWidth(width); | 146 sideRect.setWidth(width); |
147 else | 147 else |
148 sideRect.shiftXEdgeTo(sideRect.maxX() - width); | 148 sideRect.shiftXEdgeTo(sideRect.maxX() - width); |
149 | 149 |
150 return sideRect; | 150 return sideRect; |
151 } | 151 } |
152 | 152 |
153 FloatRect calculateSideRectIncludingInner(const FloatRoundedRect& outerBorder, | 153 FloatRect calculateSideRectIncludingInner(const FloatRoundedRect& outerBorder, |
154 const BorderEdge edges[], | 154 const BorderEdge edges[], |
155 BoxSide side) { | 155 BoxSide side) { |
156 FloatRect sideRect = outerBorder.rect(); | 156 FloatRect sideRect = outerBorder.rect(); |
157 int width; | 157 float width; |
158 | 158 |
159 switch (side) { | 159 switch (side) { |
160 case BSTop: | 160 case BSTop: |
161 width = sideRect.height() - edges[BSBottom].width; | 161 width = sideRect.height() - edges[BSBottom].width(); |
162 sideRect.setHeight(width); | 162 sideRect.setHeight(width); |
163 break; | 163 break; |
164 case BSBottom: | 164 case BSBottom: |
165 width = sideRect.height() - edges[BSTop].width; | 165 width = sideRect.height() - edges[BSTop].width(); |
166 sideRect.shiftYEdgeTo(sideRect.maxY() - width); | 166 sideRect.shiftYEdgeTo(sideRect.maxY() - width); |
167 break; | 167 break; |
168 case BSLeft: | 168 case BSLeft: |
169 width = sideRect.width() - edges[BSRight].width; | 169 width = sideRect.width() - edges[BSRight].width(); |
170 sideRect.setWidth(width); | 170 sideRect.setWidth(width); |
171 break; | 171 break; |
172 case BSRight: | 172 case BSRight: |
173 width = sideRect.width() - edges[BSLeft].width; | 173 width = sideRect.width() - edges[BSLeft].width(); |
174 sideRect.shiftXEdgeTo(sideRect.maxX() - width); | 174 sideRect.shiftXEdgeTo(sideRect.maxX() - width); |
175 break; | 175 break; |
176 } | 176 } |
177 | 177 |
178 return sideRect; | 178 return sideRect; |
179 } | 179 } |
180 | 180 |
181 FloatRoundedRect calculateAdjustedInnerBorder( | 181 FloatRoundedRect calculateAdjustedInnerBorder( |
182 const FloatRoundedRect& innerBorder, | 182 const FloatRoundedRect& innerBorder, |
183 BoxSide side) { | 183 BoxSide side) { |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
273 -edges[BSRight].getDoubleBorderStripeWidth(stripe), | 273 -edges[BSRight].getDoubleBorderStripeWidth(stripe), |
274 -edges[BSBottom].getDoubleBorderStripeWidth(stripe), | 274 -edges[BSBottom].getDoubleBorderStripeWidth(stripe), |
275 -edges[BSLeft].getDoubleBorderStripeWidth(stripe)); | 275 -edges[BSLeft].getDoubleBorderStripeWidth(stripe)); |
276 } | 276 } |
277 | 277 |
278 void drawSolidBorderRect(GraphicsContext& context, | 278 void drawSolidBorderRect(GraphicsContext& context, |
279 const FloatRect& borderRect, | 279 const FloatRect& borderRect, |
280 float borderWidth, | 280 float borderWidth, |
281 const Color& color) { | 281 const Color& color) { |
282 FloatRect strokeRect(borderRect); | 282 FloatRect strokeRect(borderRect); |
283 borderWidth = roundf(borderWidth); | |
pdr.
2017/01/24 06:57:31
Should we divide then round, or is this needed to
Karl Øygard
2017/01/24 22:42:58
This should be fine as it is. The following divis
| |
283 strokeRect.inflate(-borderWidth / 2); | 284 strokeRect.inflate(-borderWidth / 2); |
284 | 285 |
285 bool wasAntialias = context.shouldAntialias(); | 286 bool wasAntialias = context.shouldAntialias(); |
286 if (!wasAntialias) | 287 if (!wasAntialias) |
287 context.setShouldAntialias(true); | 288 context.setShouldAntialias(true); |
288 | 289 |
289 context.setStrokeStyle(SolidStroke); | 290 context.setStrokeStyle(SolidStroke); |
290 context.setStrokeColor(color); | 291 context.setStrokeColor(color); |
291 context.strokeRect(strokeRect, borderWidth); | 292 context.strokeRect(strokeRect, borderWidth); |
292 | 293 |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
506 return false; | 507 return false; |
507 | 508 |
508 if (firstEdge().borderStyle() != BorderStyleSolid && | 509 if (firstEdge().borderStyle() != BorderStyleSolid && |
509 firstEdge().borderStyle() != BorderStyleDouble) | 510 firstEdge().borderStyle() != BorderStyleDouble) |
510 return false; | 511 return false; |
511 | 512 |
512 if (m_visibleEdgeSet == AllBorderEdges) { | 513 if (m_visibleEdgeSet == AllBorderEdges) { |
513 if (firstEdge().borderStyle() == BorderStyleSolid) { | 514 if (firstEdge().borderStyle() == BorderStyleSolid) { |
514 if (m_isUniformWidth && !m_outer.isRounded()) { | 515 if (m_isUniformWidth && !m_outer.isRounded()) { |
515 // 4-side, solid, uniform-width, rectangular border => one drawRect() | 516 // 4-side, solid, uniform-width, rectangular border => one drawRect() |
516 drawSolidBorderRect(context, m_outer.rect(), firstEdge().width, | 517 drawSolidBorderRect(context, m_outer.rect(), firstEdge().width(), |
517 firstEdge().color); | 518 firstEdge().color); |
518 } else { | 519 } else { |
519 // 4-side, solid border => one drawDRRect() | 520 // 4-side, solid border => one drawDRRect() |
520 drawBleedAdjustedDRRect(context, m_bleedAvoidance, m_outer, m_inner, | 521 drawBleedAdjustedDRRect(context, m_bleedAvoidance, m_outer, m_inner, |
521 firstEdge().color); | 522 firstEdge().color); |
522 } | 523 } |
523 } else { | 524 } else { |
524 // 4-side, double border => 2x drawDRRect() | 525 // 4-side, double border => 2x drawDRRect() |
525 DCHECK(firstEdge().borderStyle() == BorderStyleDouble); | 526 DCHECK(firstEdge().borderStyle() == BorderStyleDouble); |
526 drawDoubleBorder(context, borderRect); | 527 drawDoubleBorder(context, borderRect); |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
629 | 630 |
630 m_hasAlpha |= edge.color.hasAlpha(); | 631 m_hasAlpha |= edge.color.hasAlpha(); |
631 | 632 |
632 if (m_visibleEdgeCount == 1) { | 633 if (m_visibleEdgeCount == 1) { |
633 m_firstVisibleEdge = i; | 634 m_firstVisibleEdge = i; |
634 continue; | 635 continue; |
635 } | 636 } |
636 | 637 |
637 m_isUniformStyle &= | 638 m_isUniformStyle &= |
638 edge.borderStyle() == m_edges[m_firstVisibleEdge].borderStyle(); | 639 edge.borderStyle() == m_edges[m_firstVisibleEdge].borderStyle(); |
639 m_isUniformWidth &= edge.width == m_edges[m_firstVisibleEdge].width; | 640 m_isUniformWidth &= edge.width() == m_edges[m_firstVisibleEdge].width(); |
640 m_isUniformColor &= edge.color == m_edges[m_firstVisibleEdge].color; | 641 m_isUniformColor &= edge.color == m_edges[m_firstVisibleEdge].color; |
641 } | 642 } |
642 } | 643 } |
643 | 644 |
644 void BoxBorderPainter::paintBorder(const PaintInfo& info, | 645 void BoxBorderPainter::paintBorder(const PaintInfo& info, |
645 const LayoutRect& rect) const { | 646 const LayoutRect& rect) const { |
646 if (!m_visibleEdgeCount || m_outer.rect().isEmpty()) | 647 if (!m_visibleEdgeCount || m_outer.rect().isEmpty()) |
647 return; | 648 return; |
648 | 649 |
649 GraphicsContext& graphicsContext = info.context; | 650 GraphicsContext& graphicsContext = info.context; |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
790 // readability. | 791 // readability. |
791 switch (side) { | 792 switch (side) { |
792 case BSTop: { | 793 case BSTop: { |
793 bool usePath = m_isRounded && | 794 bool usePath = m_isRounded && |
794 (borderStyleHasInnerDetail(edge.borderStyle()) || | 795 (borderStyleHasInnerDetail(edge.borderStyle()) || |
795 borderWillArcInnerEdge(m_inner.getRadii().topLeft(), | 796 borderWillArcInnerEdge(m_inner.getRadii().topLeft(), |
796 m_inner.getRadii().topRight())); | 797 m_inner.getRadii().topRight())); |
797 if (usePath) | 798 if (usePath) |
798 path = &borderInfo.roundedBorderPath; | 799 path = &borderInfo.roundedBorderPath; |
799 else | 800 else |
800 sideRect.setHeight(edge.width); | 801 sideRect.setHeight(roundf(edge.width())); |
801 | 802 |
802 paintOneBorderSide(context, sideRect, BSTop, BSLeft, BSRight, path, | 803 paintOneBorderSide(context, sideRect, BSTop, BSLeft, BSRight, path, |
803 borderInfo.antiAlias, color, completedEdges); | 804 borderInfo.antiAlias, color, completedEdges); |
804 break; | 805 break; |
805 } | 806 } |
806 case BSBottom: { | 807 case BSBottom: { |
807 bool usePath = m_isRounded && | 808 bool usePath = m_isRounded && |
808 (borderStyleHasInnerDetail(edge.borderStyle()) || | 809 (borderStyleHasInnerDetail(edge.borderStyle()) || |
809 borderWillArcInnerEdge(m_inner.getRadii().bottomLeft(), | 810 borderWillArcInnerEdge(m_inner.getRadii().bottomLeft(), |
810 m_inner.getRadii().bottomRight())); | 811 m_inner.getRadii().bottomRight())); |
811 if (usePath) | 812 if (usePath) |
812 path = &borderInfo.roundedBorderPath; | 813 path = &borderInfo.roundedBorderPath; |
813 else | 814 else |
814 sideRect.shiftYEdgeTo(sideRect.maxY() - edge.width); | 815 sideRect.shiftYEdgeTo(sideRect.maxY() - roundf(edge.width())); |
815 | 816 |
816 paintOneBorderSide(context, sideRect, BSBottom, BSLeft, BSRight, path, | 817 paintOneBorderSide(context, sideRect, BSBottom, BSLeft, BSRight, path, |
817 borderInfo.antiAlias, color, completedEdges); | 818 borderInfo.antiAlias, color, completedEdges); |
818 break; | 819 break; |
819 } | 820 } |
820 case BSLeft: { | 821 case BSLeft: { |
821 bool usePath = m_isRounded && | 822 bool usePath = m_isRounded && |
822 (borderStyleHasInnerDetail(edge.borderStyle()) || | 823 (borderStyleHasInnerDetail(edge.borderStyle()) || |
823 borderWillArcInnerEdge(m_inner.getRadii().bottomLeft(), | 824 borderWillArcInnerEdge(m_inner.getRadii().bottomLeft(), |
824 m_inner.getRadii().topLeft())); | 825 m_inner.getRadii().topLeft())); |
825 if (usePath) | 826 if (usePath) |
826 path = &borderInfo.roundedBorderPath; | 827 path = &borderInfo.roundedBorderPath; |
827 else | 828 else |
828 sideRect.setWidth(edge.width); | 829 sideRect.setWidth(roundf(edge.width())); |
829 | 830 |
830 paintOneBorderSide(context, sideRect, BSLeft, BSTop, BSBottom, path, | 831 paintOneBorderSide(context, sideRect, BSLeft, BSTop, BSBottom, path, |
831 borderInfo.antiAlias, color, completedEdges); | 832 borderInfo.antiAlias, color, completedEdges); |
832 break; | 833 break; |
833 } | 834 } |
834 case BSRight: { | 835 case BSRight: { |
835 bool usePath = m_isRounded && | 836 bool usePath = m_isRounded && |
836 (borderStyleHasInnerDetail(edge.borderStyle()) || | 837 (borderStyleHasInnerDetail(edge.borderStyle()) || |
837 borderWillArcInnerEdge(m_inner.getRadii().bottomRight(), | 838 borderWillArcInnerEdge(m_inner.getRadii().bottomRight(), |
838 m_inner.getRadii().topRight())); | 839 m_inner.getRadii().topRight())); |
839 if (usePath) | 840 if (usePath) |
840 path = &borderInfo.roundedBorderPath; | 841 path = &borderInfo.roundedBorderPath; |
841 else | 842 else |
842 sideRect.shiftXEdgeTo(sideRect.maxX() - edge.width); | 843 sideRect.shiftXEdgeTo(sideRect.maxX() - roundf(edge.width())); |
843 | 844 |
844 paintOneBorderSide(context, sideRect, BSRight, BSTop, BSBottom, path, | 845 paintOneBorderSide(context, sideRect, BSRight, BSTop, BSBottom, path, |
845 borderInfo.antiAlias, color, completedEdges); | 846 borderInfo.antiAlias, color, completedEdges); |
846 break; | 847 break; |
847 } | 848 } |
848 default: | 849 default: |
849 ASSERT_NOT_REACHED(); | 850 ASSERT_NOT_REACHED(); |
850 } | 851 } |
851 } | 852 } |
852 | 853 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
901 GraphicsContext& graphicsContext, | 902 GraphicsContext& graphicsContext, |
902 const FloatRect& sideRect, | 903 const FloatRect& sideRect, |
903 BoxSide side, | 904 BoxSide side, |
904 BoxSide adjacentSide1, | 905 BoxSide adjacentSide1, |
905 BoxSide adjacentSide2, | 906 BoxSide adjacentSide2, |
906 const Path* path, | 907 const Path* path, |
907 bool antialias, | 908 bool antialias, |
908 Color color, | 909 Color color, |
909 BorderEdgeFlags completedEdges) const { | 910 BorderEdgeFlags completedEdges) const { |
910 const BorderEdge& edgeToRender = m_edges[side]; | 911 const BorderEdge& edgeToRender = m_edges[side]; |
911 DCHECK(edgeToRender.width); | 912 DCHECK(edgeToRender.width()); |
912 const BorderEdge& adjacentEdge1 = m_edges[adjacentSide1]; | 913 const BorderEdge& adjacentEdge1 = m_edges[adjacentSide1]; |
913 const BorderEdge& adjacentEdge2 = m_edges[adjacentSide2]; | 914 const BorderEdge& adjacentEdge2 = m_edges[adjacentSide2]; |
914 | 915 |
915 if (path) { | 916 if (path) { |
916 MiterType miter1 = colorsMatchAtCorner(side, adjacentSide1, m_edges) | 917 MiterType miter1 = colorsMatchAtCorner(side, adjacentSide1, m_edges) |
917 ? HardMiter | 918 ? HardMiter |
918 : SoftMiter; | 919 : SoftMiter; |
919 MiterType miter2 = colorsMatchAtCorner(side, adjacentSide2, m_edges) | 920 MiterType miter2 = colorsMatchAtCorner(side, adjacentSide2, m_edges) |
920 ? HardMiter | 921 ? HardMiter |
921 : SoftMiter; | 922 : SoftMiter; |
922 | 923 |
923 GraphicsContextStateSaver stateSaver(graphicsContext); | 924 GraphicsContextStateSaver stateSaver(graphicsContext); |
924 if (m_inner.isRenderable()) | 925 if (m_inner.isRenderable()) |
925 clipBorderSidePolygon(graphicsContext, side, miter1, miter2); | 926 clipBorderSidePolygon(graphicsContext, side, miter1, miter2); |
926 else | 927 else |
927 clipBorderSideForComplexInnerPath(graphicsContext, side); | 928 clipBorderSideForComplexInnerPath(graphicsContext, side); |
928 float thickness = std::max( | 929 float thickness = |
929 std::max(edgeToRender.width, adjacentEdge1.width), adjacentEdge2.width); | 930 std::max(std::max(edgeToRender.width(), adjacentEdge1.width()), |
931 adjacentEdge2.width()); | |
930 drawBoxSideFromPath(graphicsContext, LayoutRect(m_outer.rect()), *path, | 932 drawBoxSideFromPath(graphicsContext, LayoutRect(m_outer.rect()), *path, |
931 edgeToRender.width, thickness, side, color, | 933 edgeToRender.width(), thickness, side, color, |
932 edgeToRender.borderStyle()); | 934 edgeToRender.borderStyle()); |
933 } else { | 935 } else { |
934 MiterType miter1 = | 936 MiterType miter1 = |
935 computeMiter(side, adjacentSide1, completedEdges, antialias); | 937 computeMiter(side, adjacentSide1, completedEdges, antialias); |
936 MiterType miter2 = | 938 MiterType miter2 = |
937 computeMiter(side, adjacentSide2, completedEdges, antialias); | 939 computeMiter(side, adjacentSide2, completedEdges, antialias); |
938 bool shouldClip = mitersRequireClipping( | 940 bool shouldClip = mitersRequireClipping( |
939 miter1, miter2, edgeToRender.borderStyle(), antialias); | 941 miter1, miter2, edgeToRender.borderStyle(), antialias); |
940 | 942 |
941 GraphicsContextStateSaver clipStateSaver(graphicsContext, shouldClip); | 943 GraphicsContextStateSaver clipStateSaver(graphicsContext, shouldClip); |
942 if (shouldClip) { | 944 if (shouldClip) { |
943 clipBorderSidePolygon(graphicsContext, side, miter1, miter2); | 945 clipBorderSidePolygon(graphicsContext, side, miter1, miter2); |
944 | 946 |
945 // Miters are applied via clipping, no need to draw them. | 947 // Miters are applied via clipping, no need to draw them. |
946 miter1 = miter2 = NoMiter; | 948 miter1 = miter2 = NoMiter; |
947 } | 949 } |
948 | 950 |
949 ObjectPainter::drawLineForBoxSide( | 951 ObjectPainter::drawLineForBoxSide( |
950 graphicsContext, sideRect.x(), sideRect.y(), sideRect.maxX(), | 952 graphicsContext, sideRect.x(), sideRect.y(), sideRect.maxX(), |
951 sideRect.maxY(), side, color, edgeToRender.borderStyle(), | 953 sideRect.maxY(), side, color, edgeToRender.borderStyle(), |
952 miter1 != NoMiter ? adjacentEdge1.width : 0, | 954 miter1 != NoMiter ? roundf(adjacentEdge1.width()) : 0, |
953 miter2 != NoMiter ? adjacentEdge2.width : 0, antialias); | 955 miter2 != NoMiter ? roundf(adjacentEdge2.width()) : 0, antialias); |
954 } | 956 } |
955 } | 957 } |
956 | 958 |
957 void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext& graphicsContext, | 959 void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext& graphicsContext, |
958 const LayoutRect& borderRect, | 960 const LayoutRect& borderRect, |
959 const Path& borderPath, | 961 const Path& borderPath, |
960 float thickness, | 962 float thickness, |
961 float drawThickness, | 963 float drawThickness, |
962 BoxSide side, | 964 BoxSide side, |
963 Color color, | 965 Color color, |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1067 s1 = BorderStyleOutset; | 1069 s1 = BorderStyleOutset; |
1068 s2 = BorderStyleInset; | 1070 s2 = BorderStyleInset; |
1069 } | 1071 } |
1070 | 1072 |
1071 // Paint full border | 1073 // Paint full border |
1072 drawBoxSideFromPath(graphicsContext, borderRect, borderPath, thickness, | 1074 drawBoxSideFromPath(graphicsContext, borderRect, borderPath, thickness, |
1073 drawThickness, side, color, s1); | 1075 drawThickness, side, color, s1); |
1074 | 1076 |
1075 // Paint inner only | 1077 // Paint inner only |
1076 GraphicsContextStateSaver stateSaver(graphicsContext); | 1078 GraphicsContextStateSaver stateSaver(graphicsContext); |
1077 LayoutUnit topWidth(m_edges[BSTop].usedWidth() / 2); | 1079 int topWidth = m_edges[BSTop].usedWidth() / 2; |
1078 LayoutUnit bottomWidth(m_edges[BSBottom].usedWidth() / 2); | 1080 int bottomWidth = m_edges[BSBottom].usedWidth() / 2; |
1079 LayoutUnit leftWidth(m_edges[BSLeft].usedWidth() / 2); | 1081 int leftWidth = m_edges[BSLeft].usedWidth() / 2; |
1080 LayoutUnit rightWidth(m_edges[BSRight].usedWidth() / 2); | 1082 int rightWidth = m_edges[BSRight].usedWidth() / 2; |
1081 | 1083 |
1082 FloatRoundedRect clipRect = m_style.getRoundedInnerBorderFor( | 1084 FloatRoundedRect clipRect = m_style.getRoundedInnerBorderFor( |
1083 borderRect, | 1085 borderRect, |
1084 LayoutRectOutsets(-topWidth, -rightWidth, -bottomWidth, -leftWidth), | 1086 LayoutRectOutsets(-topWidth, -rightWidth, -bottomWidth, -leftWidth), |
1085 m_includeLogicalLeftEdge, m_includeLogicalRightEdge); | 1087 m_includeLogicalLeftEdge, m_includeLogicalRightEdge); |
1086 | 1088 |
1087 graphicsContext.clipRoundedRect(clipRect); | 1089 graphicsContext.clipRoundedRect(clipRect); |
1088 drawBoxSideFromPath(graphicsContext, borderRect, borderPath, thickness, | 1090 drawBoxSideFromPath(graphicsContext, borderRect, borderPath, thickness, |
1089 drawThickness, side, color, s2); | 1091 drawThickness, side, color, s2); |
1090 return; | 1092 return; |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1292 FloatPoint secondQuad[4]; | 1294 FloatPoint secondQuad[4]; |
1293 secondQuad[0] = quad[0]; | 1295 secondQuad[0] = quad[0]; |
1294 secondQuad[1] = FloatPoint(quad[0].x() - r1 * cx, quad[0].y() - r1 * cy); | 1296 secondQuad[1] = FloatPoint(quad[0].x() - r1 * cx, quad[0].y() - r1 * cy); |
1295 secondQuad[2] = quad[2]; | 1297 secondQuad[2] = quad[2]; |
1296 secondQuad[3] = quad[3]; | 1298 secondQuad[3] = quad[3]; |
1297 clipQuad(graphicsContext, secondQuad, secondMiter == SoftMiter); | 1299 clipQuad(graphicsContext, secondQuad, secondMiter == SoftMiter); |
1298 } | 1300 } |
1299 } | 1301 } |
1300 | 1302 |
1301 } // namespace blink | 1303 } // namespace blink |
OLD | NEW |