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 26 matching lines...) Expand all Loading... |
37 #include "bindings/v8/ExceptionMessages.h" | 37 #include "bindings/v8/ExceptionMessages.h" |
38 #include "bindings/v8/ExceptionState.h" | 38 #include "bindings/v8/ExceptionState.h" |
39 #include "bindings/v8/ExceptionStatePlaceholder.h" | 39 #include "bindings/v8/ExceptionStatePlaceholder.h" |
40 #include "core/accessibility/AXObjectCache.h" | 40 #include "core/accessibility/AXObjectCache.h" |
41 #include "core/css/CSSFontSelector.h" | 41 #include "core/css/CSSFontSelector.h" |
42 #include "core/css/parser/BisonCSSParser.h" | 42 #include "core/css/parser/BisonCSSParser.h" |
43 #include "core/css/StylePropertySet.h" | 43 #include "core/css/StylePropertySet.h" |
44 #include "core/css/resolver/StyleResolver.h" | 44 #include "core/css/resolver/StyleResolver.h" |
45 #include "core/dom/ExceptionCode.h" | 45 #include "core/dom/ExceptionCode.h" |
46 #include "core/fetch/ImageResource.h" | 46 #include "core/fetch/ImageResource.h" |
| 47 #include "core/frame/ImageBitmap.h" |
47 #include "core/html/HTMLCanvasElement.h" | 48 #include "core/html/HTMLCanvasElement.h" |
48 #include "core/html/HTMLImageElement.h" | 49 #include "core/html/HTMLImageElement.h" |
49 #include "core/html/HTMLMediaElement.h" | 50 #include "core/html/HTMLMediaElement.h" |
50 #include "core/html/HTMLVideoElement.h" | 51 #include "core/html/HTMLVideoElement.h" |
51 #include "core/html/ImageData.h" | 52 #include "core/html/ImageData.h" |
52 #include "core/html/TextMetrics.h" | 53 #include "core/html/TextMetrics.h" |
53 #include "core/html/canvas/CanvasGradient.h" | 54 #include "core/html/canvas/CanvasGradient.h" |
54 #include "core/html/canvas/CanvasPattern.h" | 55 #include "core/html/canvas/CanvasPattern.h" |
55 #include "core/html/canvas/CanvasStyle.h" | 56 #include "core/html/canvas/CanvasStyle.h" |
56 #include "core/html/canvas/DOMPath.h" | 57 #include "core/html/canvas/Path2D.h" |
57 #include "core/frame/ImageBitmap.h" | |
58 #include "core/rendering/RenderImage.h" | 58 #include "core/rendering/RenderImage.h" |
59 #include "core/rendering/RenderLayer.h" | 59 #include "core/rendering/RenderLayer.h" |
60 #include "core/rendering/RenderTheme.h" | 60 #include "core/rendering/RenderTheme.h" |
61 #include "platform/fonts/FontCache.h" | 61 #include "platform/fonts/FontCache.h" |
62 #include "platform/geometry/FloatQuad.h" | 62 #include "platform/geometry/FloatQuad.h" |
63 #include "platform/graphics/GraphicsContextStateSaver.h" | 63 #include "platform/graphics/GraphicsContextStateSaver.h" |
64 #include "platform/graphics/DrawLooper.h" | 64 #include "platform/graphics/DrawLooper.h" |
65 #include "platform/text/TextRun.h" | 65 #include "platform/text/TextRun.h" |
66 #include "platform/weborigin/SecurityOrigin.h" | 66 #include "platform/weborigin/SecurityOrigin.h" |
67 #include "wtf/CheckedArithmetic.h" | 67 #include "wtf/CheckedArithmetic.h" |
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 if (state().m_fillStyle && state().m_fillStyle->isEquivalentCMYKA(c, m, y, k
, a)) | 819 if (state().m_fillStyle && state().m_fillStyle->isEquivalentCMYKA(c, m, y, k
, a)) |
820 return; | 820 return; |
821 setFillStyle(CanvasStyle::createFromCMYKAChannels(c, m, y, k, a)); | 821 setFillStyle(CanvasStyle::createFromCMYKAChannels(c, m, y, k, a)); |
822 } | 822 } |
823 | 823 |
824 void CanvasRenderingContext2D::beginPath() | 824 void CanvasRenderingContext2D::beginPath() |
825 { | 825 { |
826 m_path.clear(); | 826 m_path.clear(); |
827 } | 827 } |
828 | 828 |
829 PassRefPtr<DOMPath> CanvasRenderingContext2D::currentPath() | 829 PassRefPtr<Path2D> CanvasRenderingContext2D::currentPath() |
830 { | 830 { |
831 return DOMPath::create(m_path); | 831 return Path2D::create(m_path); |
832 } | 832 } |
833 | 833 |
834 void CanvasRenderingContext2D::setCurrentPath(DOMPath* path) | 834 void CanvasRenderingContext2D::setCurrentPath(Path2D* path) |
835 { | 835 { |
836 if (!path) | 836 if (!path) |
837 return; | 837 return; |
838 m_path = path->path(); | 838 m_path = path->path(); |
839 } | 839 } |
840 | 840 |
841 static bool validateRectForCanvas(float& x, float& y, float& width, float& heigh
t) | 841 static bool validateRectForCanvas(float& x, float& y, float& width, float& heigh
t) |
842 { | 842 { |
843 if (!std::isfinite(x) | !std::isfinite(y) | !std::isfinite(width) | !std::is
finite(height)) | 843 if (!std::isfinite(x) | !std::isfinite(y) | !std::isfinite(width) | !std::is
finite(height)) |
844 return false; | 844 return false; |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
925 } | 925 } |
926 | 926 |
927 c->setFillRule(windRule); | 927 c->setFillRule(windRule); |
928 } | 928 } |
929 | 929 |
930 void CanvasRenderingContext2D::fill(const String& windingRuleString) | 930 void CanvasRenderingContext2D::fill(const String& windingRuleString) |
931 { | 931 { |
932 fillInternal(m_path, windingRuleString); | 932 fillInternal(m_path, windingRuleString); |
933 } | 933 } |
934 | 934 |
935 void CanvasRenderingContext2D::fill(DOMPath* domPath, ExceptionState& exceptionS
tate) | 935 void CanvasRenderingContext2D::fill(Path2D* domPath, ExceptionState& exceptionSt
ate) |
936 { | 936 { |
937 fill(domPath, "nonzero", exceptionState); | 937 fill(domPath, "nonzero", exceptionState); |
938 } | 938 } |
939 | 939 |
940 void CanvasRenderingContext2D::fill(DOMPath* domPath, const String& windingRuleS
tring, ExceptionState& exceptionState) | 940 void CanvasRenderingContext2D::fill(Path2D* domPath, const String& windingRuleSt
ring, ExceptionState& exceptionState) |
941 { | 941 { |
942 if (!domPath) { | 942 if (!domPath) { |
943 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); | 943 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); |
944 return; | 944 return; |
945 } | 945 } |
946 | 946 |
947 fillInternal(domPath->path(), windingRuleString); | 947 fillInternal(domPath->path(), windingRuleString); |
948 } | 948 } |
949 | 949 |
950 void CanvasRenderingContext2D::strokeInternal(const Path& path) | 950 void CanvasRenderingContext2D::strokeInternal(const Path& path) |
(...skipping 22 matching lines...) Expand all Loading... |
973 c->strokePath(path); | 973 c->strokePath(path); |
974 didDraw(dirtyRect); | 974 didDraw(dirtyRect); |
975 } | 975 } |
976 } | 976 } |
977 | 977 |
978 void CanvasRenderingContext2D::stroke() | 978 void CanvasRenderingContext2D::stroke() |
979 { | 979 { |
980 strokeInternal(m_path); | 980 strokeInternal(m_path); |
981 } | 981 } |
982 | 982 |
983 void CanvasRenderingContext2D::stroke(DOMPath* domPath, ExceptionState& exceptio
nState) | 983 void CanvasRenderingContext2D::stroke(Path2D* domPath, ExceptionState& exception
State) |
984 { | 984 { |
985 if (!domPath) { | 985 if (!domPath) { |
986 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); | 986 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); |
987 return; | 987 return; |
988 } | 988 } |
989 | 989 |
990 strokeInternal(domPath->path()); | 990 strokeInternal(domPath->path()); |
991 } | 991 } |
992 | 992 |
993 void CanvasRenderingContext2D::clipInternal(const Path& path, const String& wind
ingRuleString) | 993 void CanvasRenderingContext2D::clipInternal(const Path& path, const String& wind
ingRuleString) |
(...skipping 13 matching lines...) Expand all Loading... |
1007 | 1007 |
1008 realizeSaves(); | 1008 realizeSaves(); |
1009 c->canvasClip(path, newWindRule); | 1009 c->canvasClip(path, newWindRule); |
1010 } | 1010 } |
1011 | 1011 |
1012 void CanvasRenderingContext2D::clip(const String& windingRuleString) | 1012 void CanvasRenderingContext2D::clip(const String& windingRuleString) |
1013 { | 1013 { |
1014 clipInternal(m_path, windingRuleString); | 1014 clipInternal(m_path, windingRuleString); |
1015 } | 1015 } |
1016 | 1016 |
1017 void CanvasRenderingContext2D::clip(DOMPath* domPath, ExceptionState& exceptionS
tate) | 1017 void CanvasRenderingContext2D::clip(Path2D* domPath, ExceptionState& exceptionSt
ate) |
1018 { | 1018 { |
1019 clip(domPath, "nonzero", exceptionState); | 1019 clip(domPath, "nonzero", exceptionState); |
1020 } | 1020 } |
1021 | 1021 |
1022 void CanvasRenderingContext2D::clip(DOMPath* domPath, const String& windingRuleS
tring, ExceptionState& exceptionState) | 1022 void CanvasRenderingContext2D::clip(Path2D* domPath, const String& windingRuleSt
ring, ExceptionState& exceptionState) |
1023 { | 1023 { |
1024 if (!domPath) { | 1024 if (!domPath) { |
1025 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); | 1025 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); |
1026 return; | 1026 return; |
1027 } | 1027 } |
1028 | 1028 |
1029 clipInternal(domPath->path(), windingRuleString); | 1029 clipInternal(domPath->path(), windingRuleString); |
1030 } | 1030 } |
1031 | 1031 |
1032 bool CanvasRenderingContext2D::isPointInPath(const float x, const float y, const
String& windingRuleString) | 1032 bool CanvasRenderingContext2D::isPointInPath(const float x, const float y, const
String& windingRuleString) |
1033 { | 1033 { |
1034 return isPointInPathInternal(m_path, x, y, windingRuleString); | 1034 return isPointInPathInternal(m_path, x, y, windingRuleString); |
1035 } | 1035 } |
1036 | 1036 |
1037 bool CanvasRenderingContext2D::isPointInPath(DOMPath* domPath, const float x, co
nst float y, ExceptionState& exceptionState) | 1037 bool CanvasRenderingContext2D::isPointInPath(Path2D* domPath, const float x, con
st float y, ExceptionState& exceptionState) |
1038 { | 1038 { |
1039 return isPointInPath(domPath, x, y, "nonzero", exceptionState); | 1039 return isPointInPath(domPath, x, y, "nonzero", exceptionState); |
1040 } | 1040 } |
1041 | 1041 |
1042 bool CanvasRenderingContext2D::isPointInPath(DOMPath* domPath, const float x, co
nst float y, const String& windingRuleString, ExceptionState& exceptionState) | 1042 bool CanvasRenderingContext2D::isPointInPath(Path2D* domPath, const float x, con
st float y, const String& windingRuleString, ExceptionState& exceptionState) |
1043 { | 1043 { |
1044 if (!domPath) { | 1044 if (!domPath) { |
1045 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); | 1045 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); |
1046 return false; | 1046 return false; |
1047 } | 1047 } |
1048 | 1048 |
1049 return isPointInPathInternal(domPath->path(), x, y, windingRuleString); | 1049 return isPointInPathInternal(domPath->path(), x, y, windingRuleString); |
1050 } | 1050 } |
1051 | 1051 |
1052 bool CanvasRenderingContext2D::isPointInPathInternal(const Path& path, const flo
at x, const float y, const String& windingRuleString) | 1052 bool CanvasRenderingContext2D::isPointInPathInternal(const Path& path, const flo
at x, const float y, const String& windingRuleString) |
(...skipping 15 matching lines...) Expand all Loading... |
1068 return false; | 1068 return false; |
1069 | 1069 |
1070 return path.contains(transformedPoint, windRule); | 1070 return path.contains(transformedPoint, windRule); |
1071 } | 1071 } |
1072 | 1072 |
1073 bool CanvasRenderingContext2D::isPointInStroke(const float x, const float y) | 1073 bool CanvasRenderingContext2D::isPointInStroke(const float x, const float y) |
1074 { | 1074 { |
1075 return isPointInStrokeInternal(m_path, x, y); | 1075 return isPointInStrokeInternal(m_path, x, y); |
1076 } | 1076 } |
1077 | 1077 |
1078 bool CanvasRenderingContext2D::isPointInStroke(DOMPath* domPath, const float x,
const float y, ExceptionState& exceptionState) | 1078 bool CanvasRenderingContext2D::isPointInStroke(Path2D* domPath, const float x, c
onst float y, ExceptionState& exceptionState) |
1079 { | 1079 { |
1080 if (!domPath) { | 1080 if (!domPath) { |
1081 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); | 1081 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
rgumentNullOrIncorrectType(1, "Path")); |
1082 return false; | 1082 return false; |
1083 } | 1083 } |
1084 | 1084 |
1085 return isPointInStrokeInternal(domPath->path(), x, y); | 1085 return isPointInStrokeInternal(domPath->path(), x, y); |
1086 } | 1086 } |
1087 | 1087 |
1088 bool CanvasRenderingContext2D::isPointInStrokeInternal(const Path& path, const f
loat x, const float y) | 1088 bool CanvasRenderingContext2D::isPointInStrokeInternal(const Path& path, const f
loat x, const float y) |
(...skipping 1427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2516 const int focusRingWidth = 5; | 2516 const int focusRingWidth = 5; |
2517 const int focusRingOutline = 0; | 2517 const int focusRingOutline = 0; |
2518 c->drawFocusRing(path, focusRingWidth, focusRingOutline, focusRingColor); | 2518 c->drawFocusRing(path, focusRingWidth, focusRingOutline, focusRingColor); |
2519 | 2519 |
2520 c->restore(); | 2520 c->restore(); |
2521 | 2521 |
2522 didDraw(dirtyRect); | 2522 didDraw(dirtyRect); |
2523 } | 2523 } |
2524 | 2524 |
2525 } // namespace WebCore | 2525 } // namespace WebCore |
OLD | NEW |