Chromium Code Reviews| 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 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 992 clipInternal(m_path, windingRuleString); | 992 clipInternal(m_path, windingRuleString); |
| 993 } | 993 } |
| 994 | 994 |
| 995 void CanvasRenderingContext2D::clip(DOMPath* domPath, const String& windingRuleS tring) | 995 void CanvasRenderingContext2D::clip(DOMPath* domPath, const String& windingRuleS tring) |
| 996 { | 996 { |
| 997 clipInternal(domPath->path(), windingRuleString); | 997 clipInternal(domPath->path(), windingRuleString); |
| 998 } | 998 } |
| 999 | 999 |
| 1000 bool CanvasRenderingContext2D::isPointInPath(const float x, const float y, const String& windingRuleString) | 1000 bool CanvasRenderingContext2D::isPointInPath(const float x, const float y, const String& windingRuleString) |
| 1001 { | 1001 { |
| 1002 return isPointInPathInternal(m_path, x, y, windingRuleString); | |
| 1003 } | |
| 1004 | |
| 1005 bool CanvasRenderingContext2D::isPointInPath(DOMPath* domPath, const float x, co nst float y, const String& windingRuleString) | |
| 1006 { | |
| 1007 if (!domPath) | |
|
Justin Novosad
2014/02/25 16:45:08
Shouldn't this case throw a type mismatch DOM exce
| |
| 1008 return false; | |
| 1009 | |
| 1010 return isPointInPathInternal(domPath->path(), x, y, windingRuleString); | |
| 1011 } | |
| 1012 | |
| 1013 bool CanvasRenderingContext2D::isPointInPathInternal(const Path& path, const flo at x, const float y, const String& windingRuleString) | |
| 1014 { | |
| 1002 GraphicsContext* c = drawingContext(); | 1015 GraphicsContext* c = drawingContext(); |
| 1003 if (!c) | 1016 if (!c) |
| 1004 return false; | 1017 return false; |
| 1005 if (!state().m_invertibleCTM) | 1018 if (!state().m_invertibleCTM) |
| 1006 return false; | 1019 return false; |
| 1007 | 1020 |
| 1008 FloatPoint point(x, y); | 1021 FloatPoint point(x, y); |
| 1009 AffineTransform ctm = state().m_transform; | 1022 AffineTransform ctm = state().m_transform; |
| 1010 FloatPoint transformedPoint = ctm.inverse().mapPoint(point); | 1023 FloatPoint transformedPoint = ctm.inverse().mapPoint(point); |
| 1011 if (!std::isfinite(transformedPoint.x()) || !std::isfinite(transformedPoint. y())) | 1024 if (!std::isfinite(transformedPoint.x()) || !std::isfinite(transformedPoint. y())) |
| 1012 return false; | 1025 return false; |
| 1013 | 1026 |
| 1014 WindRule windRule = RULE_NONZERO; | 1027 WindRule windRule = RULE_NONZERO; |
| 1015 if (!parseWinding(windingRuleString, windRule)) | 1028 if (!parseWinding(windingRuleString, windRule)) |
| 1016 return false; | 1029 return false; |
| 1017 | 1030 |
| 1018 return m_path.contains(transformedPoint, windRule); | 1031 return path.contains(transformedPoint, windRule); |
| 1019 } | 1032 } |
| 1020 | 1033 |
| 1034 bool CanvasRenderingContext2D::isPointInStroke(const float x, const float y) | |
| 1035 { | |
| 1036 return isPointInStrokeInternal(m_path, x, y); | |
| 1037 } | |
| 1021 | 1038 |
| 1022 bool CanvasRenderingContext2D::isPointInStroke(const float x, const float y) | 1039 bool CanvasRenderingContext2D::isPointInStroke(DOMPath* domPath, const float x, const float y) |
| 1040 { | |
| 1041 if (!domPath) | |
|
Justin Novosad
2014/02/25 16:45:08
DOM exception?
Rik
2014/02/25 17:37:54
Shouldn't that be called by blink's IDL preprocess
jcgregorio
2014/02/25 17:48:31
It should be caught by the code generated from the
| |
| 1042 return false; | |
| 1043 | |
| 1044 return isPointInStrokeInternal(domPath->path(), x, y); | |
| 1045 } | |
| 1046 | |
| 1047 bool CanvasRenderingContext2D::isPointInStrokeInternal(const Path& path, const f loat x, const float y) | |
| 1023 { | 1048 { |
| 1024 GraphicsContext* c = drawingContext(); | 1049 GraphicsContext* c = drawingContext(); |
| 1025 if (!c) | 1050 if (!c) |
| 1026 return false; | 1051 return false; |
| 1027 if (!state().m_invertibleCTM) | 1052 if (!state().m_invertibleCTM) |
| 1028 return false; | 1053 return false; |
| 1029 | 1054 |
| 1030 FloatPoint point(x, y); | 1055 FloatPoint point(x, y); |
| 1031 AffineTransform ctm = state().m_transform; | 1056 AffineTransform ctm = state().m_transform; |
| 1032 FloatPoint transformedPoint = ctm.inverse().mapPoint(point); | 1057 FloatPoint transformedPoint = ctm.inverse().mapPoint(point); |
| 1033 if (!std::isfinite(transformedPoint.x()) || !std::isfinite(transformedPoint. y())) | 1058 if (!std::isfinite(transformedPoint.x()) || !std::isfinite(transformedPoint. y())) |
| 1034 return false; | 1059 return false; |
| 1035 | 1060 |
| 1036 StrokeData strokeData; | 1061 StrokeData strokeData; |
| 1037 strokeData.setThickness(lineWidth()); | 1062 strokeData.setThickness(lineWidth()); |
| 1038 strokeData.setLineCap(getLineCap()); | 1063 strokeData.setLineCap(getLineCap()); |
| 1039 strokeData.setLineJoin(getLineJoin()); | 1064 strokeData.setLineJoin(getLineJoin()); |
| 1040 strokeData.setMiterLimit(miterLimit()); | 1065 strokeData.setMiterLimit(miterLimit()); |
| 1041 strokeData.setLineDash(getLineDash(), lineDashOffset()); | 1066 strokeData.setLineDash(getLineDash(), lineDashOffset()); |
| 1042 return m_path.strokeContains(transformedPoint, strokeData); | 1067 return path.strokeContains(transformedPoint, strokeData); |
| 1043 } | 1068 } |
| 1044 | 1069 |
| 1045 void CanvasRenderingContext2D::clearRect(float x, float y, float width, float he ight) | 1070 void CanvasRenderingContext2D::clearRect(float x, float y, float width, float he ight) |
| 1046 { | 1071 { |
| 1047 if (!validateRectForCanvas(x, y, width, height)) | 1072 if (!validateRectForCanvas(x, y, width, height)) |
| 1048 return; | 1073 return; |
| 1049 GraphicsContext* context = drawingContext(); | 1074 GraphicsContext* context = drawingContext(); |
| 1050 if (!context) | 1075 if (!context) |
| 1051 return; | 1076 return; |
| 1052 if (!state().m_invertibleCTM) | 1077 if (!state().m_invertibleCTM) |
| (...skipping 1384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2437 const int focusRingWidth = 5; | 2462 const int focusRingWidth = 5; |
| 2438 const int focusRingOutline = 0; | 2463 const int focusRingOutline = 0; |
| 2439 c->drawFocusRing(path, focusRingWidth, focusRingOutline, focusRingColor); | 2464 c->drawFocusRing(path, focusRingWidth, focusRingOutline, focusRingColor); |
| 2440 | 2465 |
| 2441 c->restore(); | 2466 c->restore(); |
| 2442 | 2467 |
| 2443 didDraw(dirtyRect); | 2468 didDraw(dirtyRect); |
| 2444 } | 2469 } |
| 2445 | 2470 |
| 2446 } // namespace WebCore | 2471 } // namespace WebCore |
| OLD | NEW |