Changeset 113184 in webkit
- Timestamp:
- Apr 4, 2012 6:52:46 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r113182 r113184 1 2012-04-04 Nikolas Zimmermann <nzimmermann@rim.com> 2 3 Implement animatedPathSegList support for SVGPathElement 4 https://bugs.webkit.org/show_bug.cgi?id=83140 5 6 Reviewed by Zoltan Herczeg. 7 8 Update all tests animating the SVGPathElement's 'd' attribute to verify 'animatedPathSegList' now gets animated, not 'pathSegList'. 9 10 * svg/animations/animate-path-animation-Cc-Ss-expected.txt: 11 * svg/animations/animate-path-animation-Ll-Vv-Hh-expected.txt: 12 * svg/animations/animate-path-animation-Qq-Tt-expected.txt: 13 * svg/animations/animate-path-animation-cC-sS-inverse-expected.txt: 14 * svg/animations/animate-path-animation-lL-vV-hH-inverse-expected.txt: 15 * svg/animations/animate-path-animation-qQ-tT-inverse-expected.txt: 16 * svg/animations/animate-path-to-animation-expected.txt: 17 * svg/animations/script-tests/animate-path-animation-Cc-Ss.js: 18 (checkBaseVal): 19 (sample1): 20 (sample2): 21 (sample3): 22 (sample4): 23 * svg/animations/script-tests/animate-path-animation-Ll-Vv-Hh.js: 24 (checkBaseVal): 25 (sample1): 26 (sample2): 27 (sample3): 28 (sample4): 29 * svg/animations/script-tests/animate-path-animation-Qq-Tt.js: 30 (checkBaseVal): 31 (sample1): 32 (sample2): 33 (sample3): 34 (sample4): 35 * svg/animations/script-tests/animate-path-animation-cC-sS-inverse.js: 36 (checkBaseVal): 37 (sample1): 38 (sample2): 39 (sample3): 40 (sample4): 41 * svg/animations/script-tests/animate-path-animation-lL-vV-hH-inverse.js: 42 (checkBaseVal): 43 (sample1): 44 (sample2): 45 (sample3): 46 (sample4): 47 * svg/animations/script-tests/animate-path-animation-qQ-tT-inverse.js: 48 (checkBaseVal): 49 (sample1): 50 (sample2): 51 (sample3): 52 (sample4): 53 * svg/animations/script-tests/animate-path-to-animation.js: 54 (checkBaseVal): 55 (sample1): 56 (sample2): 57 (sample3): 58 * svg/animations/script-tests/svgpath-animation-1.js: 59 (checkBaseVal): 60 (sample1): 61 (sample2): 62 (sample3): 63 * svg/animations/script-tests/svgtransform-animation-1.js: 64 * svg/animations/svgpath-animation-1-expected.txt: 65 1 66 2012-04-04 Philippe Normand <pnormand@igalia.com> 2 67 -
trunk/LayoutTests/svg/animations/animate-path-animation-Cc-Ss-expected.txt
r107791 r113184 6 6 7 7 8 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 8 PASS path.animatedPathSegList.numberOfItems is 4 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is -20 11 PASS path.animatedPathSegList.getItem(0).y is -20 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "C" 13 PASS path.animatedPathSegList.getItem(1).x is 20 14 PASS path.animatedPathSegList.getItem(1).y is 20 15 PASS path.animatedPathSegList.getItem(1).x1 is 20 16 PASS path.animatedPathSegList.getItem(1).y1 is -20 17 PASS path.animatedPathSegList.getItem(1).x2 is 20 18 PASS path.animatedPathSegList.getItem(1).y2 is -20 19 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "S" 20 PASS path.animatedPathSegList.getItem(2).x is -20 21 PASS path.animatedPathSegList.getItem(2).y is 20 22 PASS path.animatedPathSegList.getItem(2).x2 is 20 23 PASS path.animatedPathSegList.getItem(2).y2 is 40 24 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 25 PASS path.pathSegList.numberOfItems is 4 26 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 9 27 PASS path.pathSegList.getItem(0).x is -20 10 28 PASS path.pathSegList.getItem(0).y is -20 11 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'C'29 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "C" 12 30 PASS path.pathSegList.getItem(1).x is 20 13 31 PASS path.pathSegList.getItem(1).y is 20 … … 16 34 PASS path.pathSegList.getItem(1).x2 is 20 17 35 PASS path.pathSegList.getItem(1).y2 is -20 18 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'S'36 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "S" 19 37 PASS path.pathSegList.getItem(2).x is -20 20 38 PASS path.pathSegList.getItem(2).y is 20 21 39 PASS path.pathSegList.getItem(2).x2 is 20 22 40 PASS path.pathSegList.getItem(2).y2 is 40 23 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 41 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 42 PASS path.animatedPathSegList.numberOfItems is 4 43 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 44 PASS path.animatedPathSegList.getItem(0).x is -20 45 PASS path.animatedPathSegList.getItem(0).y is -20 46 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "C" 47 PASS path.animatedPathSegList.getItem(1).x is 20 48 PASS path.animatedPathSegList.getItem(1).y is 20 49 PASS path.animatedPathSegList.getItem(1).x1 is 10 50 PASS path.animatedPathSegList.getItem(1).y1 is -10 51 PASS path.animatedPathSegList.getItem(1).x2 is 10 52 PASS path.animatedPathSegList.getItem(1).y2 is -10 53 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "S" 54 PASS path.animatedPathSegList.getItem(2).x is -10 55 PASS path.animatedPathSegList.getItem(2).y is 10 56 PASS path.animatedPathSegList.getItem(2).x2 is 30 57 PASS path.animatedPathSegList.getItem(2).y2 is 35 58 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 59 PASS path.pathSegList.numberOfItems is 4 60 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 24 61 PASS path.pathSegList.getItem(0).x is -20 25 62 PASS path.pathSegList.getItem(0).y is -20 26 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'C' 27 PASS path.pathSegList.getItem(1).x is 20 28 PASS path.pathSegList.getItem(1).y is 20 29 PASS path.pathSegList.getItem(1).x1 is 10 30 PASS path.pathSegList.getItem(1).y1 is -10 31 PASS path.pathSegList.getItem(1).x2 is 10 32 PASS path.pathSegList.getItem(1).y2 is -10 33 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'S' 34 PASS path.pathSegList.getItem(2).x is -10 35 PASS path.pathSegList.getItem(2).y is 10 36 PASS path.pathSegList.getItem(2).x2 is 30 37 PASS path.pathSegList.getItem(2).y2 is 35 38 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 39 PASS path.pathSegList.getItem(0).x is -20 40 PASS path.pathSegList.getItem(0).y is -20 41 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'c' 42 PASS path.pathSegList.getItem(1).x is 40 43 PASS path.pathSegList.getItem(1).y is 40 44 PASS path.pathSegList.getItem(1).x1 is 10 45 PASS path.pathSegList.getItem(1).y1 is 30 46 PASS path.pathSegList.getItem(1).x2 is 10 47 PASS path.pathSegList.getItem(1).y2 is 30 48 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 's' 49 PASS path.pathSegList.getItem(2).x is -10 50 PASS path.pathSegList.getItem(2).y is -30 51 PASS path.pathSegList.getItem(2).x2 is 30 52 PASS path.pathSegList.getItem(2).y2 is 5 53 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 54 PASS path.pathSegList.getItem(0).x is -20 55 PASS path.pathSegList.getItem(0).y is -20 56 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'c' 57 PASS path.pathSegList.getItem(1).x is 40 58 PASS path.pathSegList.getItem(1).y is 40 59 PASS path.pathSegList.getItem(1).x1 is 0 60 PASS path.pathSegList.getItem(1).y1 is 40 61 PASS path.pathSegList.getItem(1).x2 is 0 62 PASS path.pathSegList.getItem(1).y2 is 40 63 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 's' 64 PASS path.pathSegList.getItem(2).x is -0 65 PASS path.pathSegList.getItem(2).y is -40 66 PASS path.pathSegList.getItem(2).x2 is 40 67 PASS path.pathSegList.getItem(2).y2 is 0 68 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 69 PASS path.pathSegList.getItem(0).x is -20 70 PASS path.pathSegList.getItem(0).y is -20 71 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'C' 63 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "C" 72 64 PASS path.pathSegList.getItem(1).x is 20 73 65 PASS path.pathSegList.getItem(1).y is 20 … … 76 68 PASS path.pathSegList.getItem(1).x2 is 20 77 69 PASS path.pathSegList.getItem(1).y2 is -20 78 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'S'70 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "S" 79 71 PASS path.pathSegList.getItem(2).x is -20 80 72 PASS path.pathSegList.getItem(2).y is 20 81 73 PASS path.pathSegList.getItem(2).x2 is 20 82 74 PASS path.pathSegList.getItem(2).y2 is 40 75 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 76 PASS path.animatedPathSegList.numberOfItems is 4 77 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 78 PASS path.animatedPathSegList.getItem(0).x is -20 79 PASS path.animatedPathSegList.getItem(0).y is -20 80 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "c" 81 PASS path.animatedPathSegList.getItem(1).x is 40 82 PASS path.animatedPathSegList.getItem(1).y is 40 83 PASS path.animatedPathSegList.getItem(1).x1 is 10 84 PASS path.animatedPathSegList.getItem(1).y1 is 30 85 PASS path.animatedPathSegList.getItem(1).x2 is 10 86 PASS path.animatedPathSegList.getItem(1).y2 is 30 87 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "s" 88 PASS path.animatedPathSegList.getItem(2).x is -10 89 PASS path.animatedPathSegList.getItem(2).y is -30 90 PASS path.animatedPathSegList.getItem(2).x2 is 30 91 PASS path.animatedPathSegList.getItem(2).y2 is 5 92 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 93 PASS path.pathSegList.numberOfItems is 4 94 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 95 PASS path.pathSegList.getItem(0).x is -20 96 PASS path.pathSegList.getItem(0).y is -20 97 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "C" 98 PASS path.pathSegList.getItem(1).x is 20 99 PASS path.pathSegList.getItem(1).y is 20 100 PASS path.pathSegList.getItem(1).x1 is 20 101 PASS path.pathSegList.getItem(1).y1 is -20 102 PASS path.pathSegList.getItem(1).x2 is 20 103 PASS path.pathSegList.getItem(1).y2 is -20 104 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "S" 105 PASS path.pathSegList.getItem(2).x is -20 106 PASS path.pathSegList.getItem(2).y is 20 107 PASS path.pathSegList.getItem(2).x2 is 20 108 PASS path.pathSegList.getItem(2).y2 is 40 109 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 110 PASS path.animatedPathSegList.numberOfItems is 4 111 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 112 PASS path.animatedPathSegList.getItem(0).x is -20 113 PASS path.animatedPathSegList.getItem(0).y is -20 114 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "c" 115 PASS path.animatedPathSegList.getItem(1).x is 40 116 PASS path.animatedPathSegList.getItem(1).y is 40 117 PASS path.animatedPathSegList.getItem(1).x1 is 0 118 PASS path.animatedPathSegList.getItem(1).y1 is 40 119 PASS path.animatedPathSegList.getItem(1).x2 is 0 120 PASS path.animatedPathSegList.getItem(1).y2 is 40 121 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "s" 122 PASS path.animatedPathSegList.getItem(2).x is -0 123 PASS path.animatedPathSegList.getItem(2).y is -40 124 PASS path.animatedPathSegList.getItem(2).x2 is 40 125 PASS path.animatedPathSegList.getItem(2).y2 is 0 126 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 127 PASS path.pathSegList.numberOfItems is 4 128 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 129 PASS path.pathSegList.getItem(0).x is -20 130 PASS path.pathSegList.getItem(0).y is -20 131 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "C" 132 PASS path.pathSegList.getItem(1).x is 20 133 PASS path.pathSegList.getItem(1).y is 20 134 PASS path.pathSegList.getItem(1).x1 is 20 135 PASS path.pathSegList.getItem(1).y1 is -20 136 PASS path.pathSegList.getItem(1).x2 is 20 137 PASS path.pathSegList.getItem(1).y2 is -20 138 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "S" 139 PASS path.pathSegList.getItem(2).x is -20 140 PASS path.pathSegList.getItem(2).y is 20 141 PASS path.pathSegList.getItem(2).x2 is 20 142 PASS path.pathSegList.getItem(2).y2 is 40 143 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 144 PASS path.animatedPathSegList.numberOfItems is 4 145 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 146 PASS path.animatedPathSegList.getItem(0).x is -20 147 PASS path.animatedPathSegList.getItem(0).y is -20 148 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "C" 149 PASS path.animatedPathSegList.getItem(1).x is 20 150 PASS path.animatedPathSegList.getItem(1).y is 20 151 PASS path.animatedPathSegList.getItem(1).x1 is 20 152 PASS path.animatedPathSegList.getItem(1).y1 is -20 153 PASS path.animatedPathSegList.getItem(1).x2 is 20 154 PASS path.animatedPathSegList.getItem(1).y2 is -20 155 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "S" 156 PASS path.animatedPathSegList.getItem(2).x is -20 157 PASS path.animatedPathSegList.getItem(2).y is 20 158 PASS path.animatedPathSegList.getItem(2).x2 is 20 159 PASS path.animatedPathSegList.getItem(2).y2 is 40 160 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 161 PASS path.pathSegList.numberOfItems is 4 162 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 163 PASS path.pathSegList.getItem(0).x is -20 164 PASS path.pathSegList.getItem(0).y is -20 165 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "C" 166 PASS path.pathSegList.getItem(1).x is 20 167 PASS path.pathSegList.getItem(1).y is 20 168 PASS path.pathSegList.getItem(1).x1 is 20 169 PASS path.pathSegList.getItem(1).y1 is -20 170 PASS path.pathSegList.getItem(1).x2 is 20 171 PASS path.pathSegList.getItem(1).y2 is -20 172 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "S" 173 PASS path.pathSegList.getItem(2).x is -20 174 PASS path.pathSegList.getItem(2).y is 20 175 PASS path.pathSegList.getItem(2).x2 is 20 176 PASS path.pathSegList.getItem(2).y2 is 40 177 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 83 178 PASS successfullyParsed is true 84 179 -
trunk/LayoutTests/svg/animations/animate-path-animation-Ll-Vv-Hh-expected.txt
r107791 r113184 6 6 7 7 8 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 8 PASS path.animatedPathSegList.numberOfItems is 5 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is -30 11 PASS path.animatedPathSegList.getItem(0).y is -30 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 13 PASS path.animatedPathSegList.getItem(1).x is 30 14 PASS path.animatedPathSegList.getItem(1).y is 0 15 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "V" 16 PASS path.animatedPathSegList.getItem(2).y is 30 17 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "H" 18 PASS path.animatedPathSegList.getItem(3).x is 0 19 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 20 PASS path.pathSegList.numberOfItems is 5 21 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 9 22 PASS path.pathSegList.getItem(0).x is -30 10 23 PASS path.pathSegList.getItem(0).y is -30 11 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'L'24 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 12 25 PASS path.pathSegList.getItem(1).x is 30 13 26 PASS path.pathSegList.getItem(1).y is 0 14 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'V'27 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "V" 15 28 PASS path.pathSegList.getItem(2).y is 30 16 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'H'29 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "H" 17 30 PASS path.pathSegList.getItem(3).x is 0 18 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 19 PASS path.pathSegList.getItem(0).x is -15 20 PASS path.pathSegList.getItem(0).y is -15 21 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'L' 22 PASS path.pathSegList.getItem(1).x is 15 23 PASS path.pathSegList.getItem(1).y is 0 24 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'V' 25 PASS path.pathSegList.getItem(2).y is 15 26 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'H' 27 PASS path.pathSegList.getItem(3).x is 0 28 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 29 PASS path.pathSegList.getItem(0).x is 15 30 PASS path.pathSegList.getItem(0).y is 15 31 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'l' 32 PASS path.pathSegList.getItem(1).x is -30 33 PASS path.pathSegList.getItem(1).y is -15 34 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'v' 35 PASS path.pathSegList.getItem(2).y is -15 36 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'h' 37 PASS path.pathSegList.getItem(3).x is 15 38 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 39 PASS path.pathSegList.getItem(0).x is 30 40 PASS path.pathSegList.getItem(0).y is 30 41 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'l' 42 PASS path.pathSegList.getItem(1).x is -60 43 PASS path.pathSegList.getItem(1).y is -30 44 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'v' 45 PASS path.pathSegList.getItem(2).y is -30 46 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'h' 47 PASS path.pathSegList.getItem(3).x is 30 48 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 31 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 32 PASS path.animatedPathSegList.numberOfItems is 5 33 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 34 PASS path.animatedPathSegList.getItem(0).x is -15 35 PASS path.animatedPathSegList.getItem(0).y is -15 36 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 37 PASS path.animatedPathSegList.getItem(1).x is 15 38 PASS path.animatedPathSegList.getItem(1).y is 0 39 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "V" 40 PASS path.animatedPathSegList.getItem(2).y is 15 41 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "H" 42 PASS path.animatedPathSegList.getItem(3).x is 0 43 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 44 PASS path.pathSegList.numberOfItems is 5 45 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 49 46 PASS path.pathSegList.getItem(0).x is -30 50 47 PASS path.pathSegList.getItem(0).y is -30 51 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'L'48 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 52 49 PASS path.pathSegList.getItem(1).x is 30 53 50 PASS path.pathSegList.getItem(1).y is 0 54 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'V'51 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "V" 55 52 PASS path.pathSegList.getItem(2).y is 30 56 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'H'53 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "H" 57 54 PASS path.pathSegList.getItem(3).x is 0 55 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 56 PASS path.animatedPathSegList.numberOfItems is 5 57 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 58 PASS path.animatedPathSegList.getItem(0).x is 15 59 PASS path.animatedPathSegList.getItem(0).y is 15 60 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "l" 61 PASS path.animatedPathSegList.getItem(1).x is -30 62 PASS path.animatedPathSegList.getItem(1).y is -15 63 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "v" 64 PASS path.animatedPathSegList.getItem(2).y is -15 65 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "h" 66 PASS path.animatedPathSegList.getItem(3).x is 15 67 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 68 PASS path.pathSegList.numberOfItems is 5 69 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 70 PASS path.pathSegList.getItem(0).x is -30 71 PASS path.pathSegList.getItem(0).y is -30 72 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 73 PASS path.pathSegList.getItem(1).x is 30 74 PASS path.pathSegList.getItem(1).y is 0 75 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "V" 76 PASS path.pathSegList.getItem(2).y is 30 77 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "H" 78 PASS path.pathSegList.getItem(3).x is 0 79 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 80 PASS path.animatedPathSegList.numberOfItems is 5 81 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 82 PASS path.animatedPathSegList.getItem(0).x is 30 83 PASS path.animatedPathSegList.getItem(0).y is 30 84 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "l" 85 PASS path.animatedPathSegList.getItem(1).x is -60 86 PASS path.animatedPathSegList.getItem(1).y is -30 87 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "v" 88 PASS path.animatedPathSegList.getItem(2).y is -30 89 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "h" 90 PASS path.animatedPathSegList.getItem(3).x is 30 91 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 92 PASS path.pathSegList.numberOfItems is 5 93 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 94 PASS path.pathSegList.getItem(0).x is -30 95 PASS path.pathSegList.getItem(0).y is -30 96 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 97 PASS path.pathSegList.getItem(1).x is 30 98 PASS path.pathSegList.getItem(1).y is 0 99 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "V" 100 PASS path.pathSegList.getItem(2).y is 30 101 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "H" 102 PASS path.pathSegList.getItem(3).x is 0 103 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 104 PASS path.animatedPathSegList.numberOfItems is 5 105 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 106 PASS path.animatedPathSegList.getItem(0).x is -30 107 PASS path.animatedPathSegList.getItem(0).y is -30 108 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 109 PASS path.animatedPathSegList.getItem(1).x is 30 110 PASS path.animatedPathSegList.getItem(1).y is 0 111 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "V" 112 PASS path.animatedPathSegList.getItem(2).y is 30 113 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "H" 114 PASS path.animatedPathSegList.getItem(3).x is 0 115 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 116 PASS path.pathSegList.numberOfItems is 5 117 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 118 PASS path.pathSegList.getItem(0).x is -30 119 PASS path.pathSegList.getItem(0).y is -30 120 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 121 PASS path.pathSegList.getItem(1).x is 30 122 PASS path.pathSegList.getItem(1).y is 0 123 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "V" 124 PASS path.pathSegList.getItem(2).y is 30 125 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "H" 126 PASS path.pathSegList.getItem(3).x is 0 127 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 58 128 PASS successfullyParsed is true 59 129 -
trunk/LayoutTests/svg/animations/animate-path-animation-Qq-Tt-expected.txt
r76830 r113184 6 6 7 7 8 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 8 PASS path.animatedPathSegList.numberOfItems is 4 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is -30 11 PASS path.animatedPathSegList.getItem(0).y is -30 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "Q" 13 PASS path.animatedPathSegList.getItem(1).x is 30 14 PASS path.animatedPathSegList.getItem(1).y is 0 15 PASS path.animatedPathSegList.getItem(1).x1 is 30 16 PASS path.animatedPathSegList.getItem(1).y1 is -30 17 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "T" 18 PASS path.animatedPathSegList.getItem(2).x is -30 19 PASS path.animatedPathSegList.getItem(2).y is 30 20 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 21 PASS path.pathSegList.numberOfItems is 4 22 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 9 23 PASS path.pathSegList.getItem(0).x is -30 10 24 PASS path.pathSegList.getItem(0).y is -30 11 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'Q'25 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "Q" 12 26 PASS path.pathSegList.getItem(1).x is 30 13 27 PASS path.pathSegList.getItem(1).y is 0 14 28 PASS path.pathSegList.getItem(1).x1 is 30 15 29 PASS path.pathSegList.getItem(1).y1 is -30 16 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'T'30 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "T" 17 31 PASS path.pathSegList.getItem(2).x is -30 18 32 PASS path.pathSegList.getItem(2).y is 30 19 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 33 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 34 PASS path.animatedPathSegList.numberOfItems is 4 35 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 36 PASS path.animatedPathSegList.getItem(0).x is -30 37 PASS path.animatedPathSegList.getItem(0).y is -30 38 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "Q" 39 PASS path.animatedPathSegList.getItem(1).x is 22.5 40 PASS path.animatedPathSegList.getItem(1).y is 0 41 PASS path.animatedPathSegList.getItem(1).x1 is 22.5 42 PASS path.animatedPathSegList.getItem(1).y1 is -30 43 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "T" 44 PASS path.animatedPathSegList.getItem(2).x is -30 45 PASS path.animatedPathSegList.getItem(2).y is 30 46 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 47 PASS path.pathSegList.numberOfItems is 4 48 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 20 49 PASS path.pathSegList.getItem(0).x is -30 21 50 PASS path.pathSegList.getItem(0).y is -30 22 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'Q' 23 PASS path.pathSegList.getItem(1).x is 22.5 24 PASS path.pathSegList.getItem(1).y is 0 25 PASS path.pathSegList.getItem(1).x1 is 22.5 26 PASS path.pathSegList.getItem(1).y1 is -30 27 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'T' 28 PASS path.pathSegList.getItem(2).x is -30 29 PASS path.pathSegList.getItem(2).y is 30 30 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 31 PASS path.pathSegList.getItem(0).x is -30 32 PASS path.pathSegList.getItem(0).y is -30 33 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'q' 34 PASS path.pathSegList.getItem(1).x is 37.5 35 PASS path.pathSegList.getItem(1).y is 30 36 PASS path.pathSegList.getItem(1).x1 is 37.5 37 PASS path.pathSegList.getItem(1).y1 is 0 38 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 't' 39 PASS path.pathSegList.getItem(2).x is -37.5 40 PASS path.pathSegList.getItem(2).y is 30 41 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 42 PASS path.pathSegList.getItem(0).x is -30 43 PASS path.pathSegList.getItem(0).y is -30 44 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'q' 45 PASS path.pathSegList.getItem(1).x is 30 46 PASS path.pathSegList.getItem(1).y is 30 47 PASS path.pathSegList.getItem(1).x1 is 30 48 PASS path.pathSegList.getItem(1).y1 is 0 49 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 't' 50 PASS path.pathSegList.getItem(2).x is -30 51 PASS path.pathSegList.getItem(2).y is 30 52 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 53 PASS path.pathSegList.getItem(0).x is -30 54 PASS path.pathSegList.getItem(0).y is -30 55 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'Q' 51 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "Q" 56 52 PASS path.pathSegList.getItem(1).x is 30 57 53 PASS path.pathSegList.getItem(1).y is 0 58 54 PASS path.pathSegList.getItem(1).x1 is 30 59 55 PASS path.pathSegList.getItem(1).y1 is -30 60 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'T'56 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "T" 61 57 PASS path.pathSegList.getItem(2).x is -30 62 58 PASS path.pathSegList.getItem(2).y is 30 59 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 60 PASS path.animatedPathSegList.numberOfItems is 4 61 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 62 PASS path.animatedPathSegList.getItem(0).x is -30 63 PASS path.animatedPathSegList.getItem(0).y is -30 64 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "q" 65 PASS path.animatedPathSegList.getItem(1).x is 37.5 66 PASS path.animatedPathSegList.getItem(1).y is 30 67 PASS path.animatedPathSegList.getItem(1).x1 is 37.5 68 PASS path.animatedPathSegList.getItem(1).y1 is 0 69 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "t" 70 PASS path.animatedPathSegList.getItem(2).x is -37.5 71 PASS path.animatedPathSegList.getItem(2).y is 30 72 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 73 PASS path.pathSegList.numberOfItems is 4 74 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 75 PASS path.pathSegList.getItem(0).x is -30 76 PASS path.pathSegList.getItem(0).y is -30 77 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "Q" 78 PASS path.pathSegList.getItem(1).x is 30 79 PASS path.pathSegList.getItem(1).y is 0 80 PASS path.pathSegList.getItem(1).x1 is 30 81 PASS path.pathSegList.getItem(1).y1 is -30 82 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "T" 83 PASS path.pathSegList.getItem(2).x is -30 84 PASS path.pathSegList.getItem(2).y is 30 85 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 86 PASS path.animatedPathSegList.numberOfItems is 4 87 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 88 PASS path.animatedPathSegList.getItem(0).x is -30 89 PASS path.animatedPathSegList.getItem(0).y is -30 90 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "q" 91 PASS path.animatedPathSegList.getItem(1).x is 30 92 PASS path.animatedPathSegList.getItem(1).y is 30 93 PASS path.animatedPathSegList.getItem(1).x1 is 30 94 PASS path.animatedPathSegList.getItem(1).y1 is 0 95 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "t" 96 PASS path.animatedPathSegList.getItem(2).x is -30 97 PASS path.animatedPathSegList.getItem(2).y is 30 98 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 99 PASS path.pathSegList.numberOfItems is 4 100 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 101 PASS path.pathSegList.getItem(0).x is -30 102 PASS path.pathSegList.getItem(0).y is -30 103 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "Q" 104 PASS path.pathSegList.getItem(1).x is 30 105 PASS path.pathSegList.getItem(1).y is 0 106 PASS path.pathSegList.getItem(1).x1 is 30 107 PASS path.pathSegList.getItem(1).y1 is -30 108 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "T" 109 PASS path.pathSegList.getItem(2).x is -30 110 PASS path.pathSegList.getItem(2).y is 30 111 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 112 PASS path.animatedPathSegList.numberOfItems is 4 113 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 114 PASS path.animatedPathSegList.getItem(0).x is -30 115 PASS path.animatedPathSegList.getItem(0).y is -30 116 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "Q" 117 PASS path.animatedPathSegList.getItem(1).x is 30 118 PASS path.animatedPathSegList.getItem(1).y is 0 119 PASS path.animatedPathSegList.getItem(1).x1 is 30 120 PASS path.animatedPathSegList.getItem(1).y1 is -30 121 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "T" 122 PASS path.animatedPathSegList.getItem(2).x is -30 123 PASS path.animatedPathSegList.getItem(2).y is 30 124 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 125 PASS path.pathSegList.numberOfItems is 4 126 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 127 PASS path.pathSegList.getItem(0).x is -30 128 PASS path.pathSegList.getItem(0).y is -30 129 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "Q" 130 PASS path.pathSegList.getItem(1).x is 30 131 PASS path.pathSegList.getItem(1).y is 0 132 PASS path.pathSegList.getItem(1).x1 is 30 133 PASS path.pathSegList.getItem(1).y1 is -30 134 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "T" 135 PASS path.pathSegList.getItem(2).x is -30 136 PASS path.pathSegList.getItem(2).y is 30 137 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 63 138 PASS successfullyParsed is true 64 139 -
trunk/LayoutTests/svg/animations/animate-path-animation-cC-sS-inverse-expected.txt
r107791 r113184 6 6 7 7 8 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 8 PASS path.animatedPathSegList.numberOfItems is 4 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is -20 11 PASS path.animatedPathSegList.getItem(0).y is -20 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "c" 13 PASS path.animatedPathSegList.getItem(1).x is 40 14 PASS path.animatedPathSegList.getItem(1).y is 40 15 PASS path.animatedPathSegList.getItem(1).x1 is 0 16 PASS path.animatedPathSegList.getItem(1).y1 is 40 17 PASS path.animatedPathSegList.getItem(1).x2 is 0 18 PASS path.animatedPathSegList.getItem(1).y2 is 40 19 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "s" 20 PASS path.animatedPathSegList.getItem(2).x is 0 21 PASS path.animatedPathSegList.getItem(2).y is -40 22 PASS path.animatedPathSegList.getItem(2).x2 is 40 23 PASS path.animatedPathSegList.getItem(2).y2 is 0 24 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 25 PASS path.pathSegList.numberOfItems is 4 26 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 9 27 PASS path.pathSegList.getItem(0).x is -20 10 28 PASS path.pathSegList.getItem(0).y is -20 11 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'c'29 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "c" 12 30 PASS path.pathSegList.getItem(1).x is 40 13 31 PASS path.pathSegList.getItem(1).y is 40 … … 16 34 PASS path.pathSegList.getItem(1).x2 is 0 17 35 PASS path.pathSegList.getItem(1).y2 is 40 18 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 's'36 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "s" 19 37 PASS path.pathSegList.getItem(2).x is 0 20 38 PASS path.pathSegList.getItem(2).y is -40 21 39 PASS path.pathSegList.getItem(2).x2 is 40 22 40 PASS path.pathSegList.getItem(2).y2 is 0 23 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 41 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 42 PASS path.animatedPathSegList.numberOfItems is 4 43 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 44 PASS path.animatedPathSegList.getItem(0).x is -20 45 PASS path.animatedPathSegList.getItem(0).y is -20 46 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "c" 47 PASS path.animatedPathSegList.getItem(1).x is 40 48 PASS path.animatedPathSegList.getItem(1).y is 40 49 PASS path.animatedPathSegList.getItem(1).x1 is 10 50 PASS path.animatedPathSegList.getItem(1).y1 is 30 51 PASS path.animatedPathSegList.getItem(1).x2 is 10 52 PASS path.animatedPathSegList.getItem(1).y2 is 30 53 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "s" 54 PASS path.animatedPathSegList.getItem(2).x is -10 55 PASS path.animatedPathSegList.getItem(2).y is -30 56 PASS path.animatedPathSegList.getItem(2).x2 is 30 57 PASS path.animatedPathSegList.getItem(2).y2 is 5 58 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 59 PASS path.pathSegList.numberOfItems is 4 60 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 24 61 PASS path.pathSegList.getItem(0).x is -20 25 62 PASS path.pathSegList.getItem(0).y is -20 26 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'c' 27 PASS path.pathSegList.getItem(1).x is 40 28 PASS path.pathSegList.getItem(1).y is 40 29 PASS path.pathSegList.getItem(1).x1 is 10 30 PASS path.pathSegList.getItem(1).y1 is 30 31 PASS path.pathSegList.getItem(1).x2 is 10 32 PASS path.pathSegList.getItem(1).y2 is 30 33 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 's' 34 PASS path.pathSegList.getItem(2).x is -10 35 PASS path.pathSegList.getItem(2).y is -30 36 PASS path.pathSegList.getItem(2).x2 is 30 37 PASS path.pathSegList.getItem(2).y2 is 5 38 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 39 PASS path.pathSegList.getItem(0).x is -20 40 PASS path.pathSegList.getItem(0).y is -20 41 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'C' 42 PASS path.pathSegList.getItem(1).x is 20 43 PASS path.pathSegList.getItem(1).y is 20 44 PASS path.pathSegList.getItem(1).x1 is 10 45 PASS path.pathSegList.getItem(1).y1 is -10 46 PASS path.pathSegList.getItem(1).x2 is 10 47 PASS path.pathSegList.getItem(1).y2 is -10 48 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'S' 49 PASS path.pathSegList.getItem(2).x is -10 50 PASS path.pathSegList.getItem(2).y is 10 51 PASS path.pathSegList.getItem(2).x2 is 30 52 PASS path.pathSegList.getItem(2).y2 is 35 53 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 54 PASS path.pathSegList.getItem(0).x is -20 55 PASS path.pathSegList.getItem(0).y is -20 56 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'C' 57 PASS path.pathSegList.getItem(1).x is 20 58 PASS path.pathSegList.getItem(1).y is 20 59 PASS path.pathSegList.getItem(1).x1 is 20 60 PASS path.pathSegList.getItem(1).y1 is -20 61 PASS path.pathSegList.getItem(1).x2 is 20 62 PASS path.pathSegList.getItem(1).y2 is -20 63 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'S' 64 PASS path.pathSegList.getItem(2).x is -20 65 PASS path.pathSegList.getItem(2).y is 20 66 PASS path.pathSegList.getItem(2).x2 is 20 67 PASS path.pathSegList.getItem(2).y2 is 40 68 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 69 PASS path.pathSegList.getItem(0).x is -20 70 PASS path.pathSegList.getItem(0).y is -20 71 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'c' 63 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "c" 72 64 PASS path.pathSegList.getItem(1).x is 40 73 65 PASS path.pathSegList.getItem(1).y is 40 … … 76 68 PASS path.pathSegList.getItem(1).x2 is 0 77 69 PASS path.pathSegList.getItem(1).y2 is 40 78 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 's'70 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "s" 79 71 PASS path.pathSegList.getItem(2).x is 0 80 72 PASS path.pathSegList.getItem(2).y is -40 81 73 PASS path.pathSegList.getItem(2).x2 is 40 82 74 PASS path.pathSegList.getItem(2).y2 is 0 75 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 76 PASS path.animatedPathSegList.numberOfItems is 4 77 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 78 PASS path.animatedPathSegList.getItem(0).x is -20 79 PASS path.animatedPathSegList.getItem(0).y is -20 80 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "C" 81 PASS path.animatedPathSegList.getItem(1).x is 20 82 PASS path.animatedPathSegList.getItem(1).y is 20 83 PASS path.animatedPathSegList.getItem(1).x1 is 10 84 PASS path.animatedPathSegList.getItem(1).y1 is -10 85 PASS path.animatedPathSegList.getItem(1).x2 is 10 86 PASS path.animatedPathSegList.getItem(1).y2 is -10 87 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "S" 88 PASS path.animatedPathSegList.getItem(2).x is -10 89 PASS path.animatedPathSegList.getItem(2).y is 10 90 PASS path.animatedPathSegList.getItem(2).x2 is 30 91 PASS path.animatedPathSegList.getItem(2).y2 is 35 92 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 93 PASS path.pathSegList.numberOfItems is 4 94 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 95 PASS path.pathSegList.getItem(0).x is -20 96 PASS path.pathSegList.getItem(0).y is -20 97 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "c" 98 PASS path.pathSegList.getItem(1).x is 40 99 PASS path.pathSegList.getItem(1).y is 40 100 PASS path.pathSegList.getItem(1).x1 is 0 101 PASS path.pathSegList.getItem(1).y1 is 40 102 PASS path.pathSegList.getItem(1).x2 is 0 103 PASS path.pathSegList.getItem(1).y2 is 40 104 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "s" 105 PASS path.pathSegList.getItem(2).x is 0 106 PASS path.pathSegList.getItem(2).y is -40 107 PASS path.pathSegList.getItem(2).x2 is 40 108 PASS path.pathSegList.getItem(2).y2 is 0 109 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 110 PASS path.animatedPathSegList.numberOfItems is 4 111 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 112 PASS path.animatedPathSegList.getItem(0).x is -20 113 PASS path.animatedPathSegList.getItem(0).y is -20 114 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "C" 115 PASS path.animatedPathSegList.getItem(1).x is 20 116 PASS path.animatedPathSegList.getItem(1).y is 20 117 PASS path.animatedPathSegList.getItem(1).x1 is 20 118 PASS path.animatedPathSegList.getItem(1).y1 is -20 119 PASS path.animatedPathSegList.getItem(1).x2 is 20 120 PASS path.animatedPathSegList.getItem(1).y2 is -20 121 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "S" 122 PASS path.animatedPathSegList.getItem(2).x is -20 123 PASS path.animatedPathSegList.getItem(2).y is 20 124 PASS path.animatedPathSegList.getItem(2).x2 is 20 125 PASS path.animatedPathSegList.getItem(2).y2 is 40 126 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 127 PASS path.pathSegList.numberOfItems is 4 128 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 129 PASS path.pathSegList.getItem(0).x is -20 130 PASS path.pathSegList.getItem(0).y is -20 131 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "c" 132 PASS path.pathSegList.getItem(1).x is 40 133 PASS path.pathSegList.getItem(1).y is 40 134 PASS path.pathSegList.getItem(1).x1 is 0 135 PASS path.pathSegList.getItem(1).y1 is 40 136 PASS path.pathSegList.getItem(1).x2 is 0 137 PASS path.pathSegList.getItem(1).y2 is 40 138 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "s" 139 PASS path.pathSegList.getItem(2).x is 0 140 PASS path.pathSegList.getItem(2).y is -40 141 PASS path.pathSegList.getItem(2).x2 is 40 142 PASS path.pathSegList.getItem(2).y2 is 0 143 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 144 PASS path.animatedPathSegList.numberOfItems is 4 145 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 146 PASS path.animatedPathSegList.getItem(0).x is -20 147 PASS path.animatedPathSegList.getItem(0).y is -20 148 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "c" 149 PASS path.animatedPathSegList.getItem(1).x is 40 150 PASS path.animatedPathSegList.getItem(1).y is 40 151 PASS path.animatedPathSegList.getItem(1).x1 is 0 152 PASS path.animatedPathSegList.getItem(1).y1 is 40 153 PASS path.animatedPathSegList.getItem(1).x2 is 0 154 PASS path.animatedPathSegList.getItem(1).y2 is 40 155 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "s" 156 PASS path.animatedPathSegList.getItem(2).x is 0 157 PASS path.animatedPathSegList.getItem(2).y is -40 158 PASS path.animatedPathSegList.getItem(2).x2 is 40 159 PASS path.animatedPathSegList.getItem(2).y2 is 0 160 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 161 PASS path.pathSegList.numberOfItems is 4 162 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 163 PASS path.pathSegList.getItem(0).x is -20 164 PASS path.pathSegList.getItem(0).y is -20 165 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "c" 166 PASS path.pathSegList.getItem(1).x is 40 167 PASS path.pathSegList.getItem(1).y is 40 168 PASS path.pathSegList.getItem(1).x1 is 0 169 PASS path.pathSegList.getItem(1).y1 is 40 170 PASS path.pathSegList.getItem(1).x2 is 0 171 PASS path.pathSegList.getItem(1).y2 is 40 172 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "s" 173 PASS path.pathSegList.getItem(2).x is 0 174 PASS path.pathSegList.getItem(2).y is -40 175 PASS path.pathSegList.getItem(2).x2 is 40 176 PASS path.pathSegList.getItem(2).y2 is 0 177 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 83 178 PASS successfullyParsed is true 84 179 -
trunk/LayoutTests/svg/animations/animate-path-animation-lL-vV-hH-inverse-expected.txt
r107791 r113184 6 6 7 7 8 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 8 PASS path.animatedPathSegList.numberOfItems is 5 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is 30 11 PASS path.animatedPathSegList.getItem(0).y is 30 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "l" 13 PASS path.animatedPathSegList.getItem(1).x is -60 14 PASS path.animatedPathSegList.getItem(1).y is -30 15 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "v" 16 PASS path.animatedPathSegList.getItem(2).y is -30 17 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "h" 18 PASS path.animatedPathSegList.getItem(3).x is 30 19 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 20 PASS path.pathSegList.numberOfItems is 5 21 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 9 22 PASS path.pathSegList.getItem(0).x is 30 10 23 PASS path.pathSegList.getItem(0).y is 30 11 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'l'24 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "l" 12 25 PASS path.pathSegList.getItem(1).x is -60 13 26 PASS path.pathSegList.getItem(1).y is -30 14 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'v'27 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "v" 15 28 PASS path.pathSegList.getItem(2).y is -30 16 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'h'29 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "h" 17 30 PASS path.pathSegList.getItem(3).x is 30 18 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 19 PASS path.pathSegList.getItem(0).x is 15 20 PASS path.pathSegList.getItem(0).y is 15 21 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'l' 22 PASS path.pathSegList.getItem(1).x is -30 23 PASS path.pathSegList.getItem(1).y is -15 24 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'v' 25 PASS path.pathSegList.getItem(2).y is -15 26 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'h' 27 PASS path.pathSegList.getItem(3).x is 15 28 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 29 PASS path.pathSegList.getItem(0).x is -15 30 PASS path.pathSegList.getItem(0).y is -15 31 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'L' 32 PASS path.pathSegList.getItem(1).x is 15 33 PASS path.pathSegList.getItem(1).y is 0 34 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'V' 35 PASS path.pathSegList.getItem(2).y is 15 36 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'H' 37 PASS path.pathSegList.getItem(3).x is 0 38 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 39 PASS path.pathSegList.getItem(0).x is -30 40 PASS path.pathSegList.getItem(0).y is -30 41 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'L' 42 PASS path.pathSegList.getItem(1).x is 30 43 PASS path.pathSegList.getItem(1).y is 0 44 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'V' 45 PASS path.pathSegList.getItem(2).y is 30 46 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'H' 47 PASS path.pathSegList.getItem(3).x is 0 48 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 31 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 32 PASS path.animatedPathSegList.numberOfItems is 5 33 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 34 PASS path.animatedPathSegList.getItem(0).x is 15 35 PASS path.animatedPathSegList.getItem(0).y is 15 36 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "l" 37 PASS path.animatedPathSegList.getItem(1).x is -30 38 PASS path.animatedPathSegList.getItem(1).y is -15 39 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "v" 40 PASS path.animatedPathSegList.getItem(2).y is -15 41 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "h" 42 PASS path.animatedPathSegList.getItem(3).x is 15 43 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 44 PASS path.pathSegList.numberOfItems is 5 45 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 49 46 PASS path.pathSegList.getItem(0).x is 30 50 47 PASS path.pathSegList.getItem(0).y is 30 51 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'l'48 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "l" 52 49 PASS path.pathSegList.getItem(1).x is -60 53 50 PASS path.pathSegList.getItem(1).y is -30 54 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'v'51 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "v" 55 52 PASS path.pathSegList.getItem(2).y is -30 56 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is 'h'53 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "h" 57 54 PASS path.pathSegList.getItem(3).x is 30 55 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 56 PASS path.animatedPathSegList.numberOfItems is 5 57 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 58 PASS path.animatedPathSegList.getItem(0).x is -15 59 PASS path.animatedPathSegList.getItem(0).y is -15 60 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 61 PASS path.animatedPathSegList.getItem(1).x is 15 62 PASS path.animatedPathSegList.getItem(1).y is 0 63 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "V" 64 PASS path.animatedPathSegList.getItem(2).y is 15 65 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "H" 66 PASS path.animatedPathSegList.getItem(3).x is 0 67 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 68 PASS path.pathSegList.numberOfItems is 5 69 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 70 PASS path.pathSegList.getItem(0).x is 30 71 PASS path.pathSegList.getItem(0).y is 30 72 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "l" 73 PASS path.pathSegList.getItem(1).x is -60 74 PASS path.pathSegList.getItem(1).y is -30 75 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "v" 76 PASS path.pathSegList.getItem(2).y is -30 77 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "h" 78 PASS path.pathSegList.getItem(3).x is 30 79 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 80 PASS path.animatedPathSegList.numberOfItems is 5 81 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 82 PASS path.animatedPathSegList.getItem(0).x is -30 83 PASS path.animatedPathSegList.getItem(0).y is -30 84 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 85 PASS path.animatedPathSegList.getItem(1).x is 30 86 PASS path.animatedPathSegList.getItem(1).y is 0 87 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "V" 88 PASS path.animatedPathSegList.getItem(2).y is 30 89 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "H" 90 PASS path.animatedPathSegList.getItem(3).x is 0 91 PASS path.pathSegList.numberOfItems is 5 92 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 93 PASS path.pathSegList.getItem(0).x is 30 94 PASS path.pathSegList.getItem(0).y is 30 95 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "l" 96 PASS path.pathSegList.getItem(1).x is -60 97 PASS path.pathSegList.getItem(1).y is -30 98 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "v" 99 PASS path.pathSegList.getItem(2).y is -30 100 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "h" 101 PASS path.pathSegList.getItem(3).x is 30 102 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 103 PASS path.animatedPathSegList.numberOfItems is 5 104 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 105 PASS path.animatedPathSegList.getItem(0).x is 30 106 PASS path.animatedPathSegList.getItem(0).y is 30 107 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "l" 108 PASS path.animatedPathSegList.getItem(1).x is -60 109 PASS path.animatedPathSegList.getItem(1).y is -30 110 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "v" 111 PASS path.animatedPathSegList.getItem(2).y is -30 112 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "h" 113 PASS path.animatedPathSegList.getItem(3).x is 30 114 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 115 PASS path.pathSegList.numberOfItems is 5 116 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 117 PASS path.pathSegList.getItem(0).x is 30 118 PASS path.pathSegList.getItem(0).y is 30 119 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "l" 120 PASS path.pathSegList.getItem(1).x is -60 121 PASS path.pathSegList.getItem(1).y is -30 122 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "v" 123 PASS path.pathSegList.getItem(2).y is -30 124 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "h" 125 PASS path.pathSegList.getItem(3).x is 30 126 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 58 127 PASS successfullyParsed is true 59 128 -
trunk/LayoutTests/svg/animations/animate-path-animation-qQ-tT-inverse-expected.txt
r76830 r113184 6 6 7 7 8 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 8 PASS path.animatedPathSegList.numberOfItems is 4 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is -30 11 PASS path.animatedPathSegList.getItem(0).y is -30 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "q" 13 PASS path.animatedPathSegList.getItem(1).x is 30 14 PASS path.animatedPathSegList.getItem(1).y is 30 15 PASS path.animatedPathSegList.getItem(1).x1 is 30 16 PASS path.animatedPathSegList.getItem(1).y1 is 0 17 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "t" 18 PASS path.animatedPathSegList.getItem(2).x is -30 19 PASS path.animatedPathSegList.getItem(2).y is 30 20 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 21 PASS path.pathSegList.numberOfItems is 4 22 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 9 23 PASS path.pathSegList.getItem(0).x is -30 10 24 PASS path.pathSegList.getItem(0).y is -30 11 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'q'25 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "q" 12 26 PASS path.pathSegList.getItem(1).x is 30 13 27 PASS path.pathSegList.getItem(1).y is 30 14 28 PASS path.pathSegList.getItem(1).x1 is 30 15 29 PASS path.pathSegList.getItem(1).y1 is 0 16 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 't'30 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "t" 17 31 PASS path.pathSegList.getItem(2).x is -30 18 32 PASS path.pathSegList.getItem(2).y is 30 19 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 33 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 34 PASS path.animatedPathSegList.numberOfItems is 4 35 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 36 PASS path.animatedPathSegList.getItem(0).x is -30 37 PASS path.animatedPathSegList.getItem(0).y is -30 38 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "q" 39 PASS path.animatedPathSegList.getItem(1).x is 37.5 40 PASS path.animatedPathSegList.getItem(1).y is 30 41 PASS path.animatedPathSegList.getItem(1).x1 is 37.5 42 PASS path.animatedPathSegList.getItem(1).y1 is 0 43 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "t" 44 PASS path.animatedPathSegList.getItem(2).x is -37.5 45 PASS path.animatedPathSegList.getItem(2).y is 30 46 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 47 PASS path.pathSegList.numberOfItems is 4 48 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 20 49 PASS path.pathSegList.getItem(0).x is -30 21 50 PASS path.pathSegList.getItem(0).y is -30 22 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'q' 23 PASS path.pathSegList.getItem(1).x is 37.5 24 PASS path.pathSegList.getItem(1).y is 30 25 PASS path.pathSegList.getItem(1).x1 is 37.5 26 PASS path.pathSegList.getItem(1).y1 is 0 27 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 't' 28 PASS path.pathSegList.getItem(2).x is -37.5 29 PASS path.pathSegList.getItem(2).y is 30 30 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 31 PASS path.pathSegList.getItem(0).x is -30 32 PASS path.pathSegList.getItem(0).y is -30 33 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'Q' 34 PASS path.pathSegList.getItem(1).x is 22.5 35 PASS path.pathSegList.getItem(1).y is 0 36 PASS path.pathSegList.getItem(1).x1 is 22.5 37 PASS path.pathSegList.getItem(1).y1 is -30 38 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'T' 39 PASS path.pathSegList.getItem(2).x is -30 40 PASS path.pathSegList.getItem(2).y is 30 41 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 42 PASS path.pathSegList.getItem(0).x is -30 43 PASS path.pathSegList.getItem(0).y is -30 44 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'Q' 45 PASS path.pathSegList.getItem(1).x is 30 46 PASS path.pathSegList.getItem(1).y is 0 47 PASS path.pathSegList.getItem(1).x1 is 30 48 PASS path.pathSegList.getItem(1).y1 is -30 49 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 'T' 50 PASS path.pathSegList.getItem(2).x is -30 51 PASS path.pathSegList.getItem(2).y is 30 52 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is 'M' 53 PASS path.pathSegList.getItem(0).x is -30 54 PASS path.pathSegList.getItem(0).y is -30 55 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is 'q' 51 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "q" 56 52 PASS path.pathSegList.getItem(1).x is 30 57 53 PASS path.pathSegList.getItem(1).y is 30 58 54 PASS path.pathSegList.getItem(1).x1 is 30 59 55 PASS path.pathSegList.getItem(1).y1 is 0 60 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is 't'56 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "t" 61 57 PASS path.pathSegList.getItem(2).x is -30 62 58 PASS path.pathSegList.getItem(2).y is 30 59 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 60 PASS path.animatedPathSegList.numberOfItems is 4 61 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 62 PASS path.animatedPathSegList.getItem(0).x is -30 63 PASS path.animatedPathSegList.getItem(0).y is -30 64 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "Q" 65 PASS path.animatedPathSegList.getItem(1).x is 22.5 66 PASS path.animatedPathSegList.getItem(1).y is 0 67 PASS path.animatedPathSegList.getItem(1).x1 is 22.5 68 PASS path.animatedPathSegList.getItem(1).y1 is -30 69 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "T" 70 PASS path.animatedPathSegList.getItem(2).x is -30 71 PASS path.animatedPathSegList.getItem(2).y is 30 72 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 73 PASS path.pathSegList.numberOfItems is 4 74 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 75 PASS path.pathSegList.getItem(0).x is -30 76 PASS path.pathSegList.getItem(0).y is -30 77 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "q" 78 PASS path.pathSegList.getItem(1).x is 30 79 PASS path.pathSegList.getItem(1).y is 30 80 PASS path.pathSegList.getItem(1).x1 is 30 81 PASS path.pathSegList.getItem(1).y1 is 0 82 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "t" 83 PASS path.pathSegList.getItem(2).x is -30 84 PASS path.pathSegList.getItem(2).y is 30 85 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 86 PASS path.animatedPathSegList.numberOfItems is 4 87 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 88 PASS path.animatedPathSegList.getItem(0).x is -30 89 PASS path.animatedPathSegList.getItem(0).y is -30 90 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "Q" 91 PASS path.animatedPathSegList.getItem(1).x is 30 92 PASS path.animatedPathSegList.getItem(1).y is 0 93 PASS path.animatedPathSegList.getItem(1).x1 is 30 94 PASS path.animatedPathSegList.getItem(1).y1 is -30 95 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "T" 96 PASS path.animatedPathSegList.getItem(2).x is -30 97 PASS path.animatedPathSegList.getItem(2).y is 30 98 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 99 PASS path.pathSegList.numberOfItems is 4 100 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 101 PASS path.pathSegList.getItem(0).x is -30 102 PASS path.pathSegList.getItem(0).y is -30 103 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "q" 104 PASS path.pathSegList.getItem(1).x is 30 105 PASS path.pathSegList.getItem(1).y is 30 106 PASS path.pathSegList.getItem(1).x1 is 30 107 PASS path.pathSegList.getItem(1).y1 is 0 108 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "t" 109 PASS path.pathSegList.getItem(2).x is -30 110 PASS path.pathSegList.getItem(2).y is 30 111 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 112 PASS path.animatedPathSegList.numberOfItems is 4 113 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 114 PASS path.animatedPathSegList.getItem(0).x is -30 115 PASS path.animatedPathSegList.getItem(0).y is -30 116 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "q" 117 PASS path.animatedPathSegList.getItem(1).x is 30 118 PASS path.animatedPathSegList.getItem(1).y is 30 119 PASS path.animatedPathSegList.getItem(1).x1 is 30 120 PASS path.animatedPathSegList.getItem(1).y1 is 0 121 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "t" 122 PASS path.animatedPathSegList.getItem(2).x is -30 123 PASS path.animatedPathSegList.getItem(2).y is 30 124 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "Z" 125 PASS path.pathSegList.numberOfItems is 4 126 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 127 PASS path.pathSegList.getItem(0).x is -30 128 PASS path.pathSegList.getItem(0).y is -30 129 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "q" 130 PASS path.pathSegList.getItem(1).x is 30 131 PASS path.pathSegList.getItem(1).y is 30 132 PASS path.pathSegList.getItem(1).x1 is 30 133 PASS path.pathSegList.getItem(1).y1 is 0 134 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "t" 135 PASS path.pathSegList.getItem(2).x is -30 136 PASS path.pathSegList.getItem(2).y is 30 137 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "Z" 63 138 PASS successfullyParsed is true 64 139 -
trunk/LayoutTests/svg/animations/animate-path-to-animation-expected.txt
r107791 r113184 6 6 7 7 8 PASS path.animatedPathSegList.numberOfItems is 5 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is 40 11 PASS path.animatedPathSegList.getItem(0).y is 40 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 13 PASS path.animatedPathSegList.getItem(1).x is 60 14 PASS path.animatedPathSegList.getItem(1).y is 40 15 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 16 PASS path.animatedPathSegList.getItem(2).x is 60 17 PASS path.animatedPathSegList.getItem(2).y is 60 18 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 19 PASS path.animatedPathSegList.getItem(3).x is 40 20 PASS path.animatedPathSegList.getItem(3).y is 60 21 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 22 PASS path.pathSegList.numberOfItems is 5 23 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 8 24 PASS path.pathSegList.getItem(0).x is 40 9 25 PASS path.pathSegList.getItem(0).y is 40 10 PASS path.pathSegList.getItem(0).x is 20 11 PASS path.pathSegList.getItem(0).y is 20 12 PASS path.pathSegList.getItem(0).x is 0 13 PASS path.pathSegList.getItem(0).y is 0 26 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 27 PASS path.pathSegList.getItem(1).x is 60 28 PASS path.pathSegList.getItem(1).y is 40 29 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 30 PASS path.pathSegList.getItem(2).x is 60 31 PASS path.pathSegList.getItem(2).y is 60 32 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 33 PASS path.pathSegList.getItem(3).x is 40 34 PASS path.pathSegList.getItem(3).y is 60 35 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 36 PASS path.animatedPathSegList.numberOfItems is 5 37 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 38 PASS path.animatedPathSegList.getItem(0).x is 20 39 PASS path.animatedPathSegList.getItem(0).y is 20 40 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 41 PASS path.animatedPathSegList.getItem(1).x is 80 42 PASS path.animatedPathSegList.getItem(1).y is 20 43 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 44 PASS path.animatedPathSegList.getItem(2).x is 80 45 PASS path.animatedPathSegList.getItem(2).y is 80 46 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 47 PASS path.animatedPathSegList.getItem(3).x is 20 48 PASS path.animatedPathSegList.getItem(3).y is 80 49 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 50 PASS path.pathSegList.numberOfItems is 5 51 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 14 52 PASS path.pathSegList.getItem(0).x is 40 15 53 PASS path.pathSegList.getItem(0).y is 40 54 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 55 PASS path.pathSegList.getItem(1).x is 60 56 PASS path.pathSegList.getItem(1).y is 40 57 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 58 PASS path.pathSegList.getItem(2).x is 60 59 PASS path.pathSegList.getItem(2).y is 60 60 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 61 PASS path.pathSegList.getItem(3).x is 40 62 PASS path.pathSegList.getItem(3).y is 60 63 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 64 PASS path.animatedPathSegList.numberOfItems is 5 65 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 66 PASS path.animatedPathSegList.getItem(0).x is 0 67 PASS path.animatedPathSegList.getItem(0).y is 0 68 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 69 PASS path.animatedPathSegList.getItem(1).x is 100 70 PASS path.animatedPathSegList.getItem(1).y is 0 71 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 72 PASS path.animatedPathSegList.getItem(2).x is 100 73 PASS path.animatedPathSegList.getItem(2).y is 100 74 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 75 PASS path.animatedPathSegList.getItem(3).x is 0 76 PASS path.animatedPathSegList.getItem(3).y is 100 77 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 78 PASS path.pathSegList.numberOfItems is 5 79 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 80 PASS path.pathSegList.getItem(0).x is 40 81 PASS path.pathSegList.getItem(0).y is 40 82 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 83 PASS path.pathSegList.getItem(1).x is 60 84 PASS path.pathSegList.getItem(1).y is 40 85 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 86 PASS path.pathSegList.getItem(2).x is 60 87 PASS path.pathSegList.getItem(2).y is 60 88 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 89 PASS path.pathSegList.getItem(3).x is 40 90 PASS path.pathSegList.getItem(3).y is 60 91 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 92 PASS path.animatedPathSegList.numberOfItems is 5 93 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 94 PASS path.animatedPathSegList.getItem(0).x is 40 95 PASS path.animatedPathSegList.getItem(0).y is 40 96 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 97 PASS path.animatedPathSegList.getItem(1).x is 60 98 PASS path.animatedPathSegList.getItem(1).y is 40 99 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 100 PASS path.animatedPathSegList.getItem(2).x is 60 101 PASS path.animatedPathSegList.getItem(2).y is 60 102 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 103 PASS path.animatedPathSegList.getItem(3).x is 40 104 PASS path.animatedPathSegList.getItem(3).y is 60 105 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 106 PASS path.pathSegList.numberOfItems is 5 107 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 108 PASS path.pathSegList.getItem(0).x is 40 109 PASS path.pathSegList.getItem(0).y is 40 110 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 111 PASS path.pathSegList.getItem(1).x is 60 112 PASS path.pathSegList.getItem(1).y is 40 113 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 114 PASS path.pathSegList.getItem(2).x is 60 115 PASS path.pathSegList.getItem(2).y is 60 116 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 117 PASS path.pathSegList.getItem(3).x is 40 118 PASS path.pathSegList.getItem(3).y is 60 119 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 16 120 PASS successfullyParsed is true 17 121 -
trunk/LayoutTests/svg/animations/script-tests/animate-path-animation-Cc-Ss.js
r110574 r113184 1 1 description("Test path animation where coordinate modes of start and end differ. You should see PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatedPathSegList, once it is implemented.4 3 5 4 // Setup test document … … 22 21 23 22 // Setup animation test 23 function checkBaseVal() { 24 shouldBe("path.pathSegList.numberOfItems", "4"); 25 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 26 shouldBe("path.pathSegList.getItem(0).x", "-20"); 27 shouldBe("path.pathSegList.getItem(0).y", "-20"); 28 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "C"); 29 shouldBe("path.pathSegList.getItem(1).x", "20"); 30 shouldBe("path.pathSegList.getItem(1).y", "20"); 31 shouldBe("path.pathSegList.getItem(1).x1", "20"); 32 shouldBe("path.pathSegList.getItem(1).y1", "-20"); 33 shouldBe("path.pathSegList.getItem(1).x2", "20"); 34 shouldBe("path.pathSegList.getItem(1).y2", "-20"); 35 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "S"); 36 shouldBe("path.pathSegList.getItem(2).x", "-20"); 37 shouldBe("path.pathSegList.getItem(2).y", "20"); 38 shouldBe("path.pathSegList.getItem(2).x2", "20"); 39 shouldBe("path.pathSegList.getItem(2).y2", "40"); 40 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 41 } 42 24 43 function sample1() { 25 44 // Check initial/end conditions 26 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 27 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 28 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 29 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'C'"); 30 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "20"); 31 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "20"); 32 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "20"); 33 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-20"); 34 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "20"); 35 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "-20"); 36 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'S'"); 37 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-20"); 38 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "20"); 39 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "20"); 40 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "40"); 45 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 46 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 47 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 48 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 49 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "C"); 50 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "20"); 51 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "20"); 52 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "20"); 53 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-20"); 54 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "20"); 55 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "-20"); 56 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "S"); 57 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-20"); 58 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "20"); 59 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "20"); 60 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "40"); 61 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 62 checkBaseVal(); 41 63 } 42 64 43 65 function sample2() { 44 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 45 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 46 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 47 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'C'"); 48 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "20"); 49 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "20"); 50 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "10"); 51 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-10"); 52 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "10"); 53 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "-10"); 54 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'S'"); 55 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-10"); 56 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "10"); 57 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "30"); 58 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "35"); 66 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 67 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 68 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 69 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 70 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "C"); 71 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "20"); 72 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "20"); 73 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "10"); 74 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-10"); 75 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "10"); 76 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "-10"); 77 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "S"); 78 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-10"); 79 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "10"); 80 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "30"); 81 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "35"); 82 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 83 checkBaseVal(); 59 84 } 60 85 61 86 function sample3() { 62 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 63 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 64 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 65 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'c'"); 66 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "40"); 67 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "40"); 68 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "10"); 69 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "30"); 70 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "10"); 71 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "30"); 72 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'s'"); 73 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-10"); 74 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-30"); 75 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "30"); 76 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "5"); 87 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 88 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 89 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 90 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 91 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "c"); 92 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "40"); 93 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "40"); 94 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "10"); 95 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "30"); 96 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "10"); 97 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "30"); 98 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "s"); 99 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-10"); 100 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-30"); 101 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "30"); 102 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "5"); 103 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 104 checkBaseVal(); 77 105 } 78 106 79 107 function sample4() { 80 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 81 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 82 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 83 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'c'"); 84 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "40"); 85 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "40"); 86 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "0"); 87 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "40"); 88 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "0"); 89 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "40"); 90 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'s'"); 91 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-0"); 92 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-40"); 93 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "40"); 94 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "0"); 108 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 109 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 110 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 111 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 112 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "c"); 113 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "40"); 114 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "40"); 115 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "0"); 116 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "40"); 117 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "0"); 118 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "40"); 119 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "s"); 120 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-0"); 121 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-40"); 122 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "40"); 123 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "0"); 124 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 125 checkBaseVal(); 95 126 } 96 127 -
trunk/LayoutTests/svg/animations/script-tests/animate-path-animation-Ll-Vv-Hh.js
r110574 r113184 1 1 description("Test path animation where coordinate modes of start and end differ. You should see PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatedPathSegList, once it is implemented.4 3 5 4 // Setup test document … … 22 21 23 22 // Setup animation test 23 function checkBaseVal() { 24 shouldBe("path.pathSegList.numberOfItems", "5"); 25 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 26 shouldBe("path.pathSegList.getItem(0).x", "-30"); 27 shouldBe("path.pathSegList.getItem(0).y", "-30"); 28 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "L"); 29 shouldBe("path.pathSegList.getItem(1).x", "30"); 30 shouldBe("path.pathSegList.getItem(1).y", "0"); 31 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "V"); 32 shouldBe("path.pathSegList.getItem(2).y", "30"); 33 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "H"); 34 shouldBe("path.pathSegList.getItem(3).x", "0"); 35 shouldBeEqualToString("path.pathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 36 } 37 24 38 function sample1() { 25 39 // Check initial/end conditions 26 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 27 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 28 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 29 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'L'"); 30 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "30"); 31 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 32 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'V'"); 33 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 34 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'H'"); 35 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "0"); 40 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 41 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 42 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 43 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 44 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 45 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "30"); 46 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 47 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "V"); 48 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 49 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "H"); 50 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "0"); 51 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 52 checkBaseVal(); 36 53 } 37 54 38 55 function sample2() { 39 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 40 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-15"); 41 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-15"); 42 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'L'"); 43 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "15"); 44 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 45 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'V'"); 46 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "15"); 47 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'H'"); 48 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "0"); 56 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 57 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 58 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-15"); 59 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-15"); 60 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 61 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "15"); 62 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 63 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "V"); 64 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "15"); 65 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "H"); 66 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "0"); 67 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 68 checkBaseVal(); 49 69 } 50 70 51 71 function sample3() { 52 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 53 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "15"); 54 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "15"); 55 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'l'"); 56 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "-30"); 57 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "-15"); 58 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'v'"); 59 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-15"); 60 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'h'"); 61 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "15"); 72 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 73 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 74 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "15"); 75 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "15"); 76 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "l"); 77 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "-30"); 78 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "-15"); 79 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "v"); 80 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-15"); 81 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "h"); 82 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "15"); 83 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 84 checkBaseVal(); 62 85 } 63 86 64 87 function sample4() { 65 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 66 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "30"); 67 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "30"); 68 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'l'"); 69 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "-60"); 70 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "-30"); 71 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'v'"); 72 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-30"); 73 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'h'"); 74 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "30"); 88 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 89 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 90 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "30"); 91 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "30"); 92 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "l"); 93 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "-60"); 94 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "-30"); 95 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "v"); 96 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-30"); 97 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "h"); 98 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "30"); 99 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 100 checkBaseVal(); 75 101 } 76 102 -
trunk/LayoutTests/svg/animations/script-tests/animate-path-animation-Qq-Tt.js
r110574 r113184 1 1 description("Test path animation where coordinate modes of start and end differ. You should see PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatedPathSegList, once it is implemented.4 3 5 4 // Setup test document … … 22 21 23 22 // Setup animation test 23 function checkBaseVal() { 24 shouldBe("path.pathSegList.numberOfItems", "4"); 25 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 26 shouldBe("path.pathSegList.getItem(0).x", "-30"); 27 shouldBe("path.pathSegList.getItem(0).y", "-30"); 28 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "Q"); 29 shouldBe("path.pathSegList.getItem(1).x", "30"); 30 shouldBe("path.pathSegList.getItem(1).y", "0"); 31 shouldBe("path.pathSegList.getItem(1).x1", "30"); 32 shouldBe("path.pathSegList.getItem(1).y1", "-30"); 33 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "T"); 34 shouldBe("path.pathSegList.getItem(2).x", "-30"); 35 shouldBe("path.pathSegList.getItem(2).y", "30"); 36 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 37 } 38 24 39 function sample1() { 25 40 // Check initial/end conditions 26 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 27 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 28 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 29 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'Q'"); 30 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "30"); 31 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 32 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "30"); 33 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-30"); 34 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'T'"); 35 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-30"); 36 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 41 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 42 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 43 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 44 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 45 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "Q"); 46 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "30"); 47 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 48 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "30"); 49 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-30"); 50 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "T"); 51 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-30"); 52 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 53 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 54 checkBaseVal(); 37 55 } 38 56 39 57 function sample2() { 40 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 41 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 42 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 43 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'Q'"); 44 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "22.5"); 45 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 46 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "22.5"); 47 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-30"); 48 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'T'"); 49 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-30"); 50 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 58 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 59 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 60 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 61 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 62 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "Q"); 63 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "22.5"); 64 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 65 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "22.5"); 66 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-30"); 67 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "T"); 68 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-30"); 69 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 70 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 71 checkBaseVal(); 51 72 } 52 73 53 74 function sample3() { 54 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 55 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 56 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 57 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'q'"); 58 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "37.5"); 59 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "30"); 60 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "37.5"); 61 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "0"); 62 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'t'"); 63 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-37.5"); 64 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 75 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 76 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 77 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 78 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 79 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "q"); 80 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "37.5"); 81 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "30"); 82 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "37.5"); 83 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "0"); 84 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "t"); 85 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-37.5"); 86 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 87 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 88 checkBaseVal(); 65 89 } 66 90 67 91 function sample4() { 68 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 69 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 70 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 71 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'q'"); 72 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "30"); 73 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "30"); 74 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "30"); 75 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "0"); 76 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'t'"); 77 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-30"); 78 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 92 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 93 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 94 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 95 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 96 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "q"); 97 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "30"); 98 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "30"); 99 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "30"); 100 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "0"); 101 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "t"); 102 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-30"); 103 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 104 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 105 checkBaseVal(); 79 106 } 80 107 -
trunk/LayoutTests/svg/animations/script-tests/animate-path-animation-cC-sS-inverse.js
r110574 r113184 1 1 description("Test path animation where coordinate modes of start and end differ. You should see PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatedPathSegList, once it is implemented.4 3 5 4 // Setup test document … … 22 21 23 22 // Setup animation test 23 function checkBaseVal() { 24 shouldBe("path.pathSegList.numberOfItems", "4"); 25 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 26 shouldBe("path.pathSegList.getItem(0).x", "-20"); 27 shouldBe("path.pathSegList.getItem(0).y", "-20"); 28 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "c"); 29 shouldBe("path.pathSegList.getItem(1).x", "40"); 30 shouldBe("path.pathSegList.getItem(1).y", "40"); 31 shouldBe("path.pathSegList.getItem(1).x1", "0"); 32 shouldBe("path.pathSegList.getItem(1).y1", "40"); 33 shouldBe("path.pathSegList.getItem(1).x2", "0"); 34 shouldBe("path.pathSegList.getItem(1).y2", "40"); 35 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "s"); 36 shouldBe("path.pathSegList.getItem(2).x", "0"); 37 shouldBe("path.pathSegList.getItem(2).y", "-40"); 38 shouldBe("path.pathSegList.getItem(2).x2", "40"); 39 shouldBe("path.pathSegList.getItem(2).y2", "0"); 40 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 41 } 42 24 43 function sample1() { 25 44 // Check initial/end conditions 26 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 27 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 28 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 29 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'c'"); 30 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "40"); 31 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "40"); 32 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "0"); 33 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "40"); 34 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "0"); 35 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "40"); 36 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'s'"); 37 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "0"); 38 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-40"); 39 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "40"); 40 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "0"); 45 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 46 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 47 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 48 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 49 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "c"); 50 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "40"); 51 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "40"); 52 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "0"); 53 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "40"); 54 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "0"); 55 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "40"); 56 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "s"); 57 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "0"); 58 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-40"); 59 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "40"); 60 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "0"); 61 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 62 checkBaseVal(); 41 63 } 42 64 43 65 function sample2() { 44 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 45 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 46 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 47 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'c'"); 48 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "40"); 49 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "40"); 50 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "10"); 51 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "30"); 52 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "10"); 53 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "30"); 54 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'s'"); 55 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-10"); 56 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-30"); 57 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "30"); 58 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "5"); 66 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 67 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 68 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 69 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 70 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "c"); 71 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "40"); 72 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "40"); 73 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "10"); 74 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "30"); 75 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "10"); 76 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "30"); 77 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "s"); 78 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-10"); 79 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-30"); 80 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "30"); 81 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "5"); 82 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 83 checkBaseVal(); 59 84 } 60 85 61 86 function sample3() { 62 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 63 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 64 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 65 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'C'"); 66 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "20"); 67 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "20"); 68 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "10"); 69 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-10"); 70 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "10"); 71 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "-10"); 72 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'S'"); 73 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-10"); 74 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "10"); 75 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "30"); 76 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "35"); 87 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 88 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 89 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 90 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 91 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "C"); 92 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "20"); 93 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "20"); 94 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "10"); 95 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-10"); 96 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "10"); 97 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "-10"); 98 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "S"); 99 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-10"); 100 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "10"); 101 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "30"); 102 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "35"); 103 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 104 checkBaseVal(); 77 105 } 78 106 79 107 function sample4() { 80 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 81 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-20"); 82 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-20"); 83 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'C'"); 84 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "20"); 85 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "20"); 86 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "20"); 87 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-20"); 88 shouldBeCloseEnough("path.pathSegList.getItem(1).x2", "20"); 89 shouldBeCloseEnough("path.pathSegList.getItem(1).y2", "-20"); 90 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'S'"); 91 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-20"); 92 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "20"); 93 shouldBeCloseEnough("path.pathSegList.getItem(2).x2", "20"); 94 shouldBeCloseEnough("path.pathSegList.getItem(2).y2", "40"); 108 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 109 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 110 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-20"); 111 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-20"); 112 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "C"); 113 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "20"); 114 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "20"); 115 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "20"); 116 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-20"); 117 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x2", "20"); 118 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y2", "-20"); 119 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "S"); 120 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-20"); 121 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "20"); 122 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x2", "20"); 123 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y2", "40"); 124 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 125 checkBaseVal(); 95 126 } 96 127 -
trunk/LayoutTests/svg/animations/script-tests/animate-path-animation-lL-vV-hH-inverse.js
r110574 r113184 1 1 description("Test path animation where coordinate modes of start and end differ. You should see PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatedPathSegList, once it is implemented.4 3 5 4 // Setup test document … … 22 21 23 22 // Setup animation test 23 function checkBaseVal() { 24 shouldBe("path.pathSegList.numberOfItems", "5"); 25 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 26 shouldBe("path.pathSegList.getItem(0).x", "30"); 27 shouldBe("path.pathSegList.getItem(0).y", "30"); 28 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "l"); 29 shouldBe("path.pathSegList.getItem(1).x", "-60"); 30 shouldBe("path.pathSegList.getItem(1).y", "-30"); 31 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "v"); 32 shouldBe("path.pathSegList.getItem(2).y", "-30"); 33 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "h"); 34 shouldBe("path.pathSegList.getItem(3).x", "30"); 35 shouldBeEqualToString("path.pathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 36 } 37 24 38 function sample1() { 25 39 // Check initial/end conditions 26 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 27 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "30"); 28 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "30"); 29 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'l'"); 30 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "-60"); 31 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "-30"); 32 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'v'"); 33 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-30"); 34 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'h'"); 35 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "30"); 40 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 41 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 42 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "30"); 43 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "30"); 44 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "l"); 45 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "-60"); 46 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "-30"); 47 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "v"); 48 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-30"); 49 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "h"); 50 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "30"); 51 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 52 checkBaseVal(); 36 53 } 37 54 38 55 function sample2() { 39 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 40 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "15"); 41 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "15"); 42 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'l'"); 43 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "-30"); 44 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "-15"); 45 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'v'"); 46 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "-15"); 47 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'h'"); 48 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "15"); 56 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 57 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 58 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "15"); 59 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "15"); 60 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "l"); 61 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "-30"); 62 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "-15"); 63 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "v"); 64 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "-15"); 65 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "h"); 66 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "15"); 67 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 68 checkBaseVal(); 49 69 } 50 70 51 71 function sample3() { 52 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 53 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-15"); 54 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-15"); 55 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'L'"); 56 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "15"); 57 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 58 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'V'"); 59 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "15"); 60 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'H'"); 61 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "0"); 72 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 73 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 74 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-15"); 75 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-15"); 76 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 77 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "15"); 78 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 79 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "V"); 80 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "15"); 81 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "H"); 82 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "0"); 83 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 84 checkBaseVal(); 62 85 } 63 86 64 87 function sample4() { 65 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 66 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 67 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 68 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'L'"); 69 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "30"); 70 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 71 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'V'"); 72 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 73 shouldBe("path.pathSegList.getItem(3).pathSegTypeAsLetter", "'H'"); 74 shouldBeCloseEnough("path.pathSegList.getItem(3).x", "0"); 88 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 89 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 90 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 91 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 92 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 93 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "30"); 94 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 95 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "V"); 96 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 97 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "H"); 98 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "0"); 99 checkBaseVal(); 75 100 } 76 101 -
trunk/LayoutTests/svg/animations/script-tests/animate-path-animation-qQ-tT-inverse.js
r110574 r113184 1 1 description("Test path animation where coordinate modes of start and end differ. You should see PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatedPathSegList, once it is implemented.4 3 5 4 // Setup test document … … 22 21 23 22 // Setup animation test 23 function checkBaseVal() { 24 shouldBe("path.pathSegList.numberOfItems", "4"); 25 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 26 shouldBe("path.pathSegList.getItem(0).x", "-30"); 27 shouldBe("path.pathSegList.getItem(0).y", "-30"); 28 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "q"); 29 shouldBe("path.pathSegList.getItem(1).x", "30"); 30 shouldBe("path.pathSegList.getItem(1).y", "30"); 31 shouldBe("path.pathSegList.getItem(1).x1", "30"); 32 shouldBe("path.pathSegList.getItem(1).y1", "0"); 33 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "t"); 34 shouldBe("path.pathSegList.getItem(2).x", "-30"); 35 shouldBe("path.pathSegList.getItem(2).y", "30"); 36 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 37 } 38 24 39 function sample1() { 25 40 // Check initial/end conditions 26 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 27 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 28 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 29 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'q'"); 30 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "30"); 31 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "30"); 32 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "30"); 33 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "0"); 34 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'t'"); 35 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-30"); 36 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 41 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 42 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 43 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 44 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 45 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "q"); 46 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "30"); 47 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "30"); 48 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "30"); 49 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "0"); 50 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "t"); 51 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-30"); 52 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 53 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 54 checkBaseVal(); 37 55 } 38 56 39 57 function sample2() { 40 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 41 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 42 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 43 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'q'"); 44 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "37.5"); 45 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "30"); 46 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "37.5"); 47 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "0"); 48 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'t'"); 49 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-37.5"); 50 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 58 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 59 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 60 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 61 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 62 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "q"); 63 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "37.5"); 64 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "30"); 65 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "37.5"); 66 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "0"); 67 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "t"); 68 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-37.5"); 69 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 70 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 71 checkBaseVal(); 51 72 } 52 73 53 74 function sample3() { 54 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 55 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 56 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 57 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'Q'"); 58 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "22.5"); 59 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 60 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "22.5"); 61 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-30"); 62 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'T'"); 63 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-30"); 64 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 75 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 76 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 77 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 78 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 79 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "Q"); 80 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "22.5"); 81 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 82 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "22.5"); 83 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-30"); 84 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "T"); 85 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-30"); 86 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 87 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 88 checkBaseVal(); 65 89 } 66 90 67 91 function sample4() { 68 shouldBe("path.pathSegList.getItem(0).pathSegTypeAsLetter", "'M'"); 69 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "-30"); 70 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "-30"); 71 shouldBe("path.pathSegList.getItem(1).pathSegTypeAsLetter", "'Q'"); 72 shouldBeCloseEnough("path.pathSegList.getItem(1).x", "30"); 73 shouldBeCloseEnough("path.pathSegList.getItem(1).y", "0"); 74 shouldBeCloseEnough("path.pathSegList.getItem(1).x1", "30"); 75 shouldBeCloseEnough("path.pathSegList.getItem(1).y1", "-30"); 76 shouldBe("path.pathSegList.getItem(2).pathSegTypeAsLetter", "'T'"); 77 shouldBeCloseEnough("path.pathSegList.getItem(2).x", "-30"); 78 shouldBeCloseEnough("path.pathSegList.getItem(2).y", "30"); 92 shouldBe("path.animatedPathSegList.numberOfItems", "4"); 93 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 94 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "-30"); 95 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "-30"); 96 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "Q"); 97 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "30"); 98 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 99 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x1", "30"); 100 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y1", "-30"); 101 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "T"); 102 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "-30"); 103 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "30"); 104 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "Z"); 105 checkBaseVal(); 79 106 } 80 107 -
trunk/LayoutTests/svg/animations/script-tests/animate-path-to-animation.js
r110574 r113184 1 1 description("Test calcMode spline with to animation. You should see a green 100x100 path and only PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatePathSegList, once it is implemented.4 3 5 4 // Setup test document … … 20 19 21 20 // Setup animation test 21 function checkBaseVal() { 22 shouldBe("path.pathSegList.numberOfItems", "5"); 23 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 24 shouldBe("path.pathSegList.getItem(0).x", "40"); 25 shouldBe("path.pathSegList.getItem(0).y", "40"); 26 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "L"); 27 shouldBe("path.pathSegList.getItem(1).x", "60"); 28 shouldBe("path.pathSegList.getItem(1).y", "40"); 29 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "L"); 30 shouldBe("path.pathSegList.getItem(2).x", "60"); 31 shouldBe("path.pathSegList.getItem(2).y", "60"); 32 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "L"); 33 shouldBe("path.pathSegList.getItem(3).x", "40"); 34 shouldBe("path.pathSegList.getItem(3).y", "60"); 35 shouldBeEqualToString("path.pathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 36 } 37 22 38 function sample1() { 23 39 // Check initial/end conditions 24 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "40"); 25 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "40"); 40 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 41 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 42 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "40"); 43 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "40"); 44 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 45 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "60"); 46 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "40"); 47 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "L"); 48 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "60"); 49 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "60"); 50 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "L"); 51 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "40"); 52 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).y", "60"); 53 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 54 checkBaseVal(); 26 55 } 27 56 28 57 function sample2() { 29 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "20"); 30 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "20"); 58 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 59 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 60 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "20"); 61 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "20"); 62 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 63 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "80"); 64 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "20"); 65 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "L"); 66 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "80"); 67 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "80"); 68 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "L"); 69 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "20"); 70 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).y", "80"); 71 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 72 checkBaseVal(); 31 73 } 32 74 33 75 function sample3() { 34 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "0"); 35 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "0"); 76 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 77 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 78 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "0"); 79 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "0"); 80 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 81 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "100"); 82 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 83 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "L"); 84 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "100"); 85 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "100"); 86 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "L"); 87 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "0"); 88 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).y", "100"); 89 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 90 checkBaseVal(); 36 91 } 37 92 -
trunk/LayoutTests/svg/animations/script-tests/svgpath-animation-1.js
r110574 r113184 1 1 description("Test fallback to 'to' animation if user specifies 'by' animation on path. You should see a green 100x100 path and only PASS messages"); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatePathSegList, once it is implemented.4 3 5 4 // Setup test document … … 21 20 22 21 // Setup animation test 22 function checkBaseVal() { 23 shouldBe("path.pathSegList.numberOfItems", "5"); 24 shouldBeEqualToString("path.pathSegList.getItem(0).pathSegTypeAsLetter", "M"); 25 shouldBe("path.pathSegList.getItem(0).x", "40"); 26 shouldBe("path.pathSegList.getItem(0).y", "40"); 27 shouldBeEqualToString("path.pathSegList.getItem(1).pathSegTypeAsLetter", "L"); 28 shouldBe("path.pathSegList.getItem(1).x", "60"); 29 shouldBe("path.pathSegList.getItem(1).y", "40"); 30 shouldBeEqualToString("path.pathSegList.getItem(2).pathSegTypeAsLetter", "L"); 31 shouldBe("path.pathSegList.getItem(2).x", "60"); 32 shouldBe("path.pathSegList.getItem(2).y", "60"); 33 shouldBeEqualToString("path.pathSegList.getItem(3).pathSegTypeAsLetter", "L"); 34 shouldBe("path.pathSegList.getItem(3).x", "40"); 35 shouldBe("path.pathSegList.getItem(3).y", "60"); 36 shouldBeEqualToString("path.pathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 37 } 38 23 39 function sample1() { 24 40 // Check initial/end conditions 25 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "40"); 26 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "40"); 41 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 42 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 43 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "40"); 44 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "40"); 45 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 46 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "60"); 47 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "40"); 48 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "L"); 49 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "60"); 50 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "60"); 51 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "L"); 52 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "40"); 53 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).y", "60"); 54 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 55 checkBaseVal(); 27 56 } 28 57 29 58 function sample2() { 30 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "20"); 31 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "20"); 59 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 60 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 61 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "20"); 62 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "20"); 63 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 64 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "80"); 65 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "20"); 66 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "L"); 67 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "80"); 68 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "80"); 69 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "L"); 70 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "20"); 71 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).y", "80"); 72 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 73 checkBaseVal(); 32 74 } 33 75 34 76 function sample3() { 35 shouldBeCloseEnough("path.pathSegList.getItem(0).x", "0"); 36 shouldBeCloseEnough("path.pathSegList.getItem(0).y", "0"); 77 shouldBe("path.animatedPathSegList.numberOfItems", "5"); 78 shouldBeEqualToString("path.animatedPathSegList.getItem(0).pathSegTypeAsLetter", "M"); 79 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).x", "0"); 80 shouldBeCloseEnough("path.animatedPathSegList.getItem(0).y", "0"); 81 shouldBeEqualToString("path.animatedPathSegList.getItem(1).pathSegTypeAsLetter", "L"); 82 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).x", "100"); 83 shouldBeCloseEnough("path.animatedPathSegList.getItem(1).y", "0"); 84 shouldBeEqualToString("path.animatedPathSegList.getItem(2).pathSegTypeAsLetter", "L"); 85 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).x", "100"); 86 shouldBeCloseEnough("path.animatedPathSegList.getItem(2).y", "100"); 87 shouldBeEqualToString("path.animatedPathSegList.getItem(3).pathSegTypeAsLetter", "L"); 88 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).x", "0"); 89 shouldBeCloseEnough("path.animatedPathSegList.getItem(3).y", "100"); 90 shouldBeEqualToString("path.animatedPathSegList.getItem(4).pathSegTypeAsLetter", "Z"); 91 checkBaseVal(); 37 92 } 38 93 -
trunk/LayoutTests/svg/animations/script-tests/svgtransform-animation-1.js
r110574 r113184 1 1 description("Test accumulate=sum animation on SVGAnimateTransform."); 2 2 createSVGTestCase(); 3 // FIXME: We should move to animatePathSegList, once it is implemented.4 3 5 4 // Setup test document -
trunk/LayoutTests/svg/animations/svgpath-animation-1-expected.txt
r107791 r113184 6 6 7 7 8 PASS path.animatedPathSegList.numberOfItems is 5 9 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 10 PASS path.animatedPathSegList.getItem(0).x is 40 11 PASS path.animatedPathSegList.getItem(0).y is 40 12 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 13 PASS path.animatedPathSegList.getItem(1).x is 60 14 PASS path.animatedPathSegList.getItem(1).y is 40 15 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 16 PASS path.animatedPathSegList.getItem(2).x is 60 17 PASS path.animatedPathSegList.getItem(2).y is 60 18 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 19 PASS path.animatedPathSegList.getItem(3).x is 40 20 PASS path.animatedPathSegList.getItem(3).y is 60 21 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 22 PASS path.pathSegList.numberOfItems is 5 23 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 8 24 PASS path.pathSegList.getItem(0).x is 40 9 25 PASS path.pathSegList.getItem(0).y is 40 10 PASS path.pathSegList.getItem(0).x is 20 11 PASS path.pathSegList.getItem(0).y is 20 12 PASS path.pathSegList.getItem(0).x is 0 13 PASS path.pathSegList.getItem(0).y is 0 26 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 27 PASS path.pathSegList.getItem(1).x is 60 28 PASS path.pathSegList.getItem(1).y is 40 29 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 30 PASS path.pathSegList.getItem(2).x is 60 31 PASS path.pathSegList.getItem(2).y is 60 32 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 33 PASS path.pathSegList.getItem(3).x is 40 34 PASS path.pathSegList.getItem(3).y is 60 35 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 36 PASS path.animatedPathSegList.numberOfItems is 5 37 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 38 PASS path.animatedPathSegList.getItem(0).x is 20 39 PASS path.animatedPathSegList.getItem(0).y is 20 40 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 41 PASS path.animatedPathSegList.getItem(1).x is 80 42 PASS path.animatedPathSegList.getItem(1).y is 20 43 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 44 PASS path.animatedPathSegList.getItem(2).x is 80 45 PASS path.animatedPathSegList.getItem(2).y is 80 46 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 47 PASS path.animatedPathSegList.getItem(3).x is 20 48 PASS path.animatedPathSegList.getItem(3).y is 80 49 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 50 PASS path.pathSegList.numberOfItems is 5 51 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 14 52 PASS path.pathSegList.getItem(0).x is 40 15 53 PASS path.pathSegList.getItem(0).y is 40 54 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 55 PASS path.pathSegList.getItem(1).x is 60 56 PASS path.pathSegList.getItem(1).y is 40 57 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 58 PASS path.pathSegList.getItem(2).x is 60 59 PASS path.pathSegList.getItem(2).y is 60 60 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 61 PASS path.pathSegList.getItem(3).x is 40 62 PASS path.pathSegList.getItem(3).y is 60 63 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 64 PASS path.animatedPathSegList.numberOfItems is 5 65 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 66 PASS path.animatedPathSegList.getItem(0).x is 0 67 PASS path.animatedPathSegList.getItem(0).y is 0 68 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 69 PASS path.animatedPathSegList.getItem(1).x is 100 70 PASS path.animatedPathSegList.getItem(1).y is 0 71 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 72 PASS path.animatedPathSegList.getItem(2).x is 100 73 PASS path.animatedPathSegList.getItem(2).y is 100 74 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 75 PASS path.animatedPathSegList.getItem(3).x is 0 76 PASS path.animatedPathSegList.getItem(3).y is 100 77 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 78 PASS path.pathSegList.numberOfItems is 5 79 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 80 PASS path.pathSegList.getItem(0).x is 40 81 PASS path.pathSegList.getItem(0).y is 40 82 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 83 PASS path.pathSegList.getItem(1).x is 60 84 PASS path.pathSegList.getItem(1).y is 40 85 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 86 PASS path.pathSegList.getItem(2).x is 60 87 PASS path.pathSegList.getItem(2).y is 60 88 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 89 PASS path.pathSegList.getItem(3).x is 40 90 PASS path.pathSegList.getItem(3).y is 60 91 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 92 PASS path.animatedPathSegList.numberOfItems is 5 93 PASS path.animatedPathSegList.getItem(0).pathSegTypeAsLetter is "M" 94 PASS path.animatedPathSegList.getItem(0).x is 40 95 PASS path.animatedPathSegList.getItem(0).y is 40 96 PASS path.animatedPathSegList.getItem(1).pathSegTypeAsLetter is "L" 97 PASS path.animatedPathSegList.getItem(1).x is 60 98 PASS path.animatedPathSegList.getItem(1).y is 40 99 PASS path.animatedPathSegList.getItem(2).pathSegTypeAsLetter is "L" 100 PASS path.animatedPathSegList.getItem(2).x is 60 101 PASS path.animatedPathSegList.getItem(2).y is 60 102 PASS path.animatedPathSegList.getItem(3).pathSegTypeAsLetter is "L" 103 PASS path.animatedPathSegList.getItem(3).x is 40 104 PASS path.animatedPathSegList.getItem(3).y is 60 105 PASS path.animatedPathSegList.getItem(4).pathSegTypeAsLetter is "Z" 106 PASS path.pathSegList.numberOfItems is 5 107 PASS path.pathSegList.getItem(0).pathSegTypeAsLetter is "M" 108 PASS path.pathSegList.getItem(0).x is 40 109 PASS path.pathSegList.getItem(0).y is 40 110 PASS path.pathSegList.getItem(1).pathSegTypeAsLetter is "L" 111 PASS path.pathSegList.getItem(1).x is 60 112 PASS path.pathSegList.getItem(1).y is 40 113 PASS path.pathSegList.getItem(2).pathSegTypeAsLetter is "L" 114 PASS path.pathSegList.getItem(2).x is 60 115 PASS path.pathSegList.getItem(2).y is 60 116 PASS path.pathSegList.getItem(3).pathSegTypeAsLetter is "L" 117 PASS path.pathSegList.getItem(3).x is 40 118 PASS path.pathSegList.getItem(3).y is 60 119 PASS path.pathSegList.getItem(4).pathSegTypeAsLetter is "Z" 16 120 PASS successfullyParsed is true 17 121 -
trunk/Source/WebCore/ChangeLog
r113179 r113184 1 2012-04-04 Nikolas Zimmermann <nzimmermann@rim.com> 2 3 Implement animatedPathSegList support for SVGPathElement 4 https://bugs.webkit.org/show_bug.cgi?id=83140 5 6 Reviewed by Zoltan Herczeg. 7 8 Add the last missing piece of animVal support: animations of the SVGPathElement's 'd' attribute 9 should be reflected in the 'animatedPathSegList' not the 'pathSegList'. 10 11 The SVGAnimatedPathAnimator is special as it doesn't operate on the SVGPathSegList types 12 directly, but on the SVGPathByteStreams for performance reasons. The SVGPathSegLists 13 are refcounted and exposed to JS, thus require lots of memory, compared to a simple 14 byte stream, which SVGPathByteStream is. Only build an 'animatedPathSegList' while 15 animating if its actually observed by the bindings, as this operation is heavy. 16 17 This marks the finish of the animVal patch series: no more string round trips during 18 animation. Previously paths were animated as byte streams, then converted to a String 19 passed to pathElement->setAttribute("d", "newString"), parsed again to a byte stream, etc. 20 21 A follow-up patch will remove the last crufts of direct setAttribute() animation. 22 23 Extend all existing animated SVGPathElement tests to cover animatedPathSegList. 24 25 * svg/SVGAnimatedColor.h: 26 (WebCore::SVGAnimatedColorAnimator::startAnimValAnimation): 27 (WebCore::SVGAnimatedColorAnimator::stopAnimValAnimation): 28 (WebCore::SVGAnimatedColorAnimator::resetAnimValToBaseVal): 29 (WebCore::SVGAnimatedColorAnimator::animValWillChange): 30 (WebCore::SVGAnimatedColorAnimator::animValDidChange): 31 (SVGAnimatedColorAnimator): 32 * svg/SVGAnimatedPath.cpp: 33 (WebCore::SVGAnimatedPathAnimator::constructFromString): 34 (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): 35 (WebCore): 36 (WebCore::SVGAnimatedPathAnimator::stopAnimValAnimation): 37 (WebCore::SVGAnimatedPathAnimator::resetAnimValToBaseVal): 38 (WebCore::SVGAnimatedPathAnimator::animValWillChange): 39 (WebCore::SVGAnimatedPathAnimator::animValDidChange): 40 (WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue): 41 * svg/SVGAnimatedPath.h: 42 (SVGAnimatedPathAnimator): 43 * svg/SVGAnimatedType.cpp: 44 (WebCore::SVGAnimatedType::valueAsString): 45 (WebCore::SVGAnimatedType::setValueAsString): 46 (WebCore::SVGAnimatedType::supportsAnimVal): 47 * svg/SVGAnimatedTypeAnimator.h: 48 (SVGAnimatedTypeAnimator): 49 (WebCore::SVGAnimatedTypeAnimator::findAnimatedPropertiesForAttributeName): 50 * svg/SVGPathElement.cpp: 51 (WebCore::SVGPathElement::SVGPathElement): 52 (WebCore::SVGPathElement::getTotalLength): 53 (WebCore::SVGPathElement::getPointAtLength): 54 (WebCore::SVGPathElement::getPathSegAtLength): 55 (WebCore::SVGPathElement::parseAttribute): 56 (WebCore::SVGPathElement::svgAttributeChanged): 57 (WebCore::SVGPathElement::pathByteStream): 58 (WebCore): 59 (WebCore::SVGPathElement::lookupOrCreateDWrapper): 60 (WebCore::SVGPathElement::pathSegList): 61 (WebCore::SVGPathElement::animatedPathSegList): 62 (WebCore::SVGPathElement::pathSegListChanged): 63 * svg/SVGPathElement.h: 64 (WebCore): 65 (SVGPathElement): 66 (WebCore::SVGPathElement::isAnimValObserved): 67 * svg/SVGPathParserFactory.cpp: 68 (WebCore::SVGPathParserFactory::buildSVGPathByteStreamFromSVGPathSegList): 69 (WebCore::SVGPathParserFactory::buildSVGPathByteStreamFromString): 70 (WebCore::SVGPathParserFactory::buildAnimatedSVGPathByteStream): 71 * svg/SVGPathParserFactory.h: 72 (SVGPathParserFactory): 73 * svg/SVGPathSegWithContext.h: 74 * svg/properties/SVGAnimatedListPropertyTearOff.h: 75 (SVGAnimatedListPropertyTearOff): 76 (WebCore::SVGAnimatedListPropertyTearOff::baseVal): 77 (WebCore::SVGAnimatedListPropertyTearOff::animVal): 78 (WebCore::SVGAnimatedListPropertyTearOff::removeItemFromList): 79 (WebCore::SVGAnimatedListPropertyTearOff::detachListWrappers): 80 (WebCore::SVGAnimatedListPropertyTearOff::currentAnimatedValue): 81 (WebCore::SVGAnimatedListPropertyTearOff::animationStarted): 82 (WebCore::SVGAnimatedListPropertyTearOff::animationEnded): 83 (WebCore::SVGAnimatedListPropertyTearOff::synchronizeWrappersIfNeeded): 84 * svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: 85 (WebCore::SVGAnimatedPathSegListPropertyTearOff::baseVal): 86 (WebCore::SVGAnimatedPathSegListPropertyTearOff::animVal): 87 (WebCore::SVGAnimatedPathSegListPropertyTearOff::removeItemFromList): 88 (SVGAnimatedPathSegListPropertyTearOff): 89 (WebCore::SVGAnimatedPathSegListPropertyTearOff::animationStarted): 90 (WebCore::SVGAnimatedPathSegListPropertyTearOff::animationEnded): 91 (WebCore::SVGAnimatedPathSegListPropertyTearOff::animValDidChange): 92 (WebCore::SVGAnimatedPathSegListPropertyTearOff::animatedPathByteStream): 93 (WebCore::SVGAnimatedPathSegListPropertyTearOff::SVGAnimatedPathSegListPropertyTearOff): 94 * svg/properties/SVGAnimatedTransformListPropertyTearOff.h: 95 (WebCore::SVGAnimatedTransformListPropertyTearOff::baseVal): 96 (WebCore::SVGAnimatedTransformListPropertyTearOff::animVal): 97 * svg/properties/SVGListProperty.h: 98 (WebCore::SVGListProperty::setValuesAndWrappers): 99 (WebCore::SVGListProperty::SVGListProperty): 100 (WebCore::SVGListProperty::~SVGListProperty): 101 (SVGListProperty): 102 1 103 2012-04-04 Allan Sandfeld Jensen <allan.jensen@nokia.com> 2 104 -
trunk/Source/WebCore/svg/SVGAnimatedColor.h
r95901 r113184 29 29 30 30 class SVGAnimatedColorAnimator : public SVGAnimatedTypeAnimator { 31 32 31 public: 33 32 SVGAnimatedColorAnimator(SVGAnimationElement*, SVGElement*); … … 35 34 36 35 virtual PassOwnPtr<SVGAnimatedType> constructFromString(const String&); 37 36 virtual PassOwnPtr<SVGAnimatedType> startAnimValAnimation(const Vector<SVGAnimatedProperty*>&) { return PassOwnPtr<SVGAnimatedType>(); } 37 virtual void stopAnimValAnimation(const Vector<SVGAnimatedProperty*>&) { } 38 virtual void resetAnimValToBaseVal(const Vector<SVGAnimatedProperty*>&, SVGAnimatedType*) { } 39 virtual void animValWillChange(const Vector<SVGAnimatedProperty*>&) { } 40 virtual void animValDidChange(const Vector<SVGAnimatedProperty*>&) { } 41 38 42 virtual void calculateFromAndToValues(OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, const String& fromString, const String& toString); 39 43 virtual void calculateFromAndByValues(OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, const String& fromString, const String& byString); -
trunk/Source/WebCore/svg/SVGAnimatedPath.cpp
r95901 r113184 1 1 /* 2 * Copyright (C) Research In Motion Limited 2011 . All rights reserved.2 * Copyright (C) Research In Motion Limited 2011, 2012. All rights reserved. 3 3 * 4 4 * This library is free software; you can redistribute it and/or … … 24 24 25 25 #include "SVGAnimateElement.h" 26 #include "SVGAnimatedPathSegListPropertyTearOff.h" 26 27 #include "SVGPathParserFactory.h" 27 28 … … 42 43 { 43 44 OwnPtr<SVGPathByteStream> byteStream = SVGPathByteStream::create(); 44 result = SVGPathParserFactory::self()->buildSVGPathByteStreamFromString(string, byteStream , UnalteredParsing);45 result = SVGPathParserFactory::self()->buildSVGPathByteStreamFromString(string, byteStream.get(), UnalteredParsing); 45 46 return SVGAnimatedType::createPath(byteStream.release()); 47 } 48 49 PassOwnPtr<SVGAnimatedType> SVGAnimatedPathAnimator::startAnimValAnimation(const Vector<SVGAnimatedProperty*>& properties) 50 { 51 ASSERT(properties.size() == 1); 52 SVGAnimatedPathSegListPropertyTearOff* property = castAnimatedPropertyToActualType<SVGAnimatedPathSegListPropertyTearOff>(properties[0]); 53 const SVGPathSegList& baseValue = property->currentBaseValue(); 54 55 // Build initial path byte stream. 56 OwnPtr<SVGPathByteStream> byteStream = SVGPathByteStream::create(); 57 SVGPathParserFactory::self()->buildSVGPathByteStreamFromSVGPathSegList(baseValue, byteStream.get(), UnalteredParsing); 58 59 Vector<SVGAnimatedPathSegListPropertyTearOff*> result; 60 result.append(property); 61 62 SVGElementInstance::InstanceUpdateBlocker blocker(property->contextElement()); 63 collectAnimatedPropertiesFromInstances(result, 0, property->contextElement(), property->attributeName()); 64 65 size_t resultSize = result.size(); 66 for (size_t i = 0; i < resultSize; ++i) 67 result[i]->animationStarted(byteStream.get(), &baseValue); 68 69 return SVGAnimatedType::createPath(byteStream.release()); 70 } 71 72 void SVGAnimatedPathAnimator::stopAnimValAnimation(const Vector<SVGAnimatedProperty*>& properties) 73 { 74 stopAnimValAnimationForType<SVGAnimatedPathSegListPropertyTearOff>(properties); 75 } 76 77 void SVGAnimatedPathAnimator::resetAnimValToBaseVal(const Vector<SVGAnimatedProperty*>& properties, SVGAnimatedType* type) 78 { 79 ASSERT(properties.size() == 1); 80 ASSERT(type); 81 ASSERT(type->type() == m_type); 82 const SVGPathSegList& baseValue = castAnimatedPropertyToActualType<SVGAnimatedPathSegListPropertyTearOff>(properties[0])->currentBaseValue(); 83 SVGPathParserFactory::self()->buildSVGPathByteStreamFromSVGPathSegList(baseValue, type->path(), UnalteredParsing); 84 } 85 86 void SVGAnimatedPathAnimator::animValWillChange(const Vector<SVGAnimatedProperty*>& properties) 87 { 88 animValWillChangeForType<SVGAnimatedPathSegListPropertyTearOff>(properties); 89 } 90 91 void SVGAnimatedPathAnimator::animValDidChange(const Vector<SVGAnimatedProperty*>& properties) 92 { 93 animValDidChangeForType<SVGAnimatedPathSegListPropertyTearOff>(properties); 46 94 } 47 95 … … 106 154 } 107 155 108 OwnPtr<SVGPathByteStream> newAnimatedPath = adoptPtr(animatedPath); 109 bool success = SVGPathParserFactory::self()->buildAnimatedSVGPathByteStream(fromPath, toPath, newAnimatedPath, percentage); 110 animatedPath = newAnimatedPath.leakPtr(); 156 bool success = SVGPathParserFactory::self()->buildAnimatedSVGPathByteStream(fromPath, toPath, animatedPath, percentage); 111 157 if (success) 112 158 return; -
trunk/Source/WebCore/svg/SVGAnimatedPath.h
r95901 r113184 1 1 /* 2 * Copyright (C) Research In Motion Limited 2011 . All rights reserved.2 * Copyright (C) Research In Motion Limited 2011, 2012. All rights reserved. 3 3 * 4 4 * This library is free software; you can redistribute it and/or … … 29 29 30 30 class SVGAnimatedPathAnimator : public SVGAnimatedTypeAnimator { 31 32 31 public: 33 32 SVGAnimatedPathAnimator(SVGAnimationElement*, SVGElement*); … … 35 34 36 35 virtual PassOwnPtr<SVGAnimatedType> constructFromString(const String&); 36 virtual PassOwnPtr<SVGAnimatedType> startAnimValAnimation(const Vector<SVGAnimatedProperty*>&); 37 virtual void stopAnimValAnimation(const Vector<SVGAnimatedProperty*>&); 38 virtual void resetAnimValToBaseVal(const Vector<SVGAnimatedProperty*>&, SVGAnimatedType*); 39 virtual void animValWillChange(const Vector<SVGAnimatedProperty*>&); 40 virtual void animValDidChange(const Vector<SVGAnimatedProperty*>&); 37 41 38 42 virtual void calculateFromAndToValues(OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, const String& fromString, const String& toString); -
trunk/Source/WebCore/svg/SVGAnimatedType.cpp
r113008 r113184 355 355 ASSERT(m_data.number); 356 356 return String::number(*m_data.number); 357 case AnimatedPath: {358 ASSERT(m_data.path);359 String result;360 SVGPathParserFactory::self()->buildStringFromByteStream(m_data.path, result, UnalteredParsing);361 return result;362 }363 357 case AnimatedRect: 364 358 ASSERT(m_data.rect); … … 377 371 case AnimatedNumberList: 378 372 case AnimatedNumberOptionalNumber: 373 case AnimatedPath: 379 374 case AnimatedPoints: 380 375 case AnimatedPreserveAspectRatio: … … 391 386 bool SVGAnimatedType::setValueAsString(const QualifiedName& attrName, const String& value) 392 387 { 393 ExceptionCode ec = 0;394 388 switch (m_type) { 395 389 case AnimatedColor: … … 397 391 *m_data.color = value.isEmpty() ? Color() : SVGColor::colorFromRGBColorString(value); 398 392 break; 399 case AnimatedLength: 393 case AnimatedLength: { 400 394 ASSERT(m_data.length); 395 ExceptionCode ec = 0; 401 396 m_data.length->setValueAsString(value, SVGLength::lengthModeForAnimatedLengthAttribute(attrName), ec); 402 break; 397 return !ec; 398 } 403 399 case AnimatedLengthList: 404 400 ASSERT(m_data.lengthList); … … 409 405 parseNumberFromString(value, *m_data.number); 410 406 break; 411 case AnimatedPath: {412 ASSERT(m_data.path);413 OwnPtr<SVGPathByteStream> pathByteStream = adoptPtr(m_data.path);414 if (!SVGPathParserFactory::self()->buildSVGPathByteStreamFromString(value, pathByteStream, UnalteredParsing))415 ec = 1; // Arbitary value > 0, it doesn't matter as we don't report the exception code.416 m_data.path = pathByteStream.leakPtr();417 break;418 }419 407 case AnimatedRect: 420 408 ASSERT(m_data.rect); … … 434 422 case AnimatedNumberList: 435 423 case AnimatedNumberOptionalNumber: 424 case AnimatedPath: 436 425 case AnimatedPoints: 437 426 case AnimatedPreserveAspectRatio: … … 442 431 break; 443 432 } 444 return !ec;433 return true; 445 434 } 446 435 447 436 bool SVGAnimatedType::supportsAnimVal(AnimatedPropertyType type) 448 437 { 449 switch (type) { 450 case AnimatedAngle: 451 case AnimatedBoolean: 452 case AnimatedEnumeration: 453 case AnimatedInteger: 454 case AnimatedIntegerOptionalInteger: 455 case AnimatedLength: 456 case AnimatedLengthList: 457 case AnimatedNumber: 458 case AnimatedNumberList: 459 case AnimatedNumberOptionalNumber: 460 case AnimatedPoints: 461 case AnimatedPreserveAspectRatio: 462 case AnimatedRect: 463 case AnimatedString: 464 case AnimatedTransformList: 465 return true; 466 467 // Types only used for CSS property animations. 468 case AnimatedColor: 469 return false; 470 471 // FIXME: Handle the remaining types in animVal concept. 472 case AnimatedPath: 473 case AnimatedUnknown: 474 return false; 475 } 476 477 ASSERT_NOT_REACHED(); 478 return false; 438 // AnimatedColor is only used for CSS property animations. 439 return type != AnimatedUnknown && type != AnimatedColor; 479 440 } 480 441 -
trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h
r113003 r113184 37 37 virtual ~SVGAnimatedTypeAnimator() { } 38 38 virtual PassOwnPtr<SVGAnimatedType> constructFromString(const String&) = 0; 39 40 // FIXME: Make these pure once all types implement this. 41 virtual PassOwnPtr<SVGAnimatedType> startAnimValAnimation(const Vector<SVGAnimatedProperty*>&) { return PassOwnPtr<SVGAnimatedType>(); } 42 virtual void stopAnimValAnimation(const Vector<SVGAnimatedProperty*>&) { } 43 virtual void resetAnimValToBaseVal(const Vector<SVGAnimatedProperty*>&, SVGAnimatedType*) { } 44 virtual void animValWillChange(const Vector<SVGAnimatedProperty*>&) { } 45 virtual void animValDidChange(const Vector<SVGAnimatedProperty*>&) { } 46 39 virtual PassOwnPtr<SVGAnimatedType> startAnimValAnimation(const Vector<SVGAnimatedProperty*>&) = 0; 40 virtual void stopAnimValAnimation(const Vector<SVGAnimatedProperty*>&) = 0; 41 virtual void resetAnimValToBaseVal(const Vector<SVGAnimatedProperty*>&, SVGAnimatedType*) = 0; 42 virtual void animValWillChange(const Vector<SVGAnimatedProperty*>&) = 0; 43 virtual void animValDidChange(const Vector<SVGAnimatedProperty*>&) = 0; 47 44 virtual void calculateFromAndToValues(OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, const String& fromString, const String& toString) = 0; 48 45 virtual void calculateFromAndByValues(OwnPtr<SVGAnimatedType>& fromValue, OwnPtr<SVGAnimatedType>& toValue, const String& fromString, const String& toString) = 0; … … 62 59 targetElement->localAttributeToPropertyMap().animatedPropertiesForAttribute(targetElement, attributeName, properties); 63 60 64 // FIXME: This check can go away once all types support animVal.65 61 if (!SVGAnimatedType::supportsAnimVal(m_type)) 66 62 return Vector<SVGAnimatedProperty*>(); … … 181 177 } 182 178 183 AnimatedPropertyType m_type;184 SVGAnimationElement* m_animationElement;185 SVGElement* m_contextElement;186 187 private:188 179 template<typename AnimValType> 189 180 AnimValType* castAnimatedPropertyToActualType(SVGAnimatedProperty* property) … … 218 209 } 219 210 211 AnimatedPropertyType m_type; 212 SVGAnimationElement* m_animationElement; 213 SVGElement* m_contextElement; 214 215 private: 220 216 enum AnimationAction { 221 217 StartAnimationAction, -
trunk/Source/WebCore/svg/SVGPathElement.cpp
r112224 r113184 78 78 , m_pathSegList(PathSegUnalteredRole) 79 79 , m_cachedBBoxRectIsValid(false) 80 , m_isAnimValObserved(false) 80 81 { 81 82 ASSERT(hasTagName(SVGNames::pathTag)); … … 91 92 { 92 93 float totalLength = 0; 93 SVGPathParserFactory::self()->getTotalLengthOfSVGPathByteStream( m_pathByteStream.get(), totalLength);94 SVGPathParserFactory::self()->getTotalLengthOfSVGPathByteStream(pathByteStream(), totalLength); 94 95 return totalLength; 95 96 } … … 98 99 { 99 100 FloatPoint point; 100 SVGPathParserFactory::self()->getPointAtLengthOfSVGPathByteStream( m_pathByteStream.get(), length, point);101 SVGPathParserFactory::self()->getPointAtLengthOfSVGPathByteStream(pathByteStream(), length, point); 101 102 return point; 102 103 } … … 105 106 { 106 107 unsigned pathSeg = 0; 107 SVGPathParserFactory::self()->getSVGPathSegAtLengthFromSVGPathByteStream( m_pathByteStream.get(), length, pathSeg);108 SVGPathParserFactory::self()->getSVGPathSegAtLengthFromSVGPathByteStream(pathByteStream(), length, pathSeg); 108 109 return pathSeg; 109 110 } … … 226 227 if (attr->name() == SVGNames::dAttr) { 227 228 SVGPathParserFactory* factory = SVGPathParserFactory::self(); 228 if (!factory->buildSVGPathByteStreamFromString(attr->value(), m_pathByteStream , UnalteredParsing))229 if (!factory->buildSVGPathByteStreamFromString(attr->value(), m_pathByteStream.get(), UnalteredParsing)) 229 230 document()->accessSVGExtensions()->reportError("Problem parsing d=\"" + attr->value() + "\""); 230 231 return; … … 263 264 264 265 if (attrName == SVGNames::dAttr) { 265 if ( SVGAnimatedProperty::lookupWrapper<SVGPathElement, SVGAnimatedPathSegListPropertyTearOff, true>(this, dPropertyInfo())) {266 if (m_pathSegList.shouldSynchronize && !SVGAnimatedProperty::lookupWrapper<SVGPathElement, SVGAnimatedPathSegListPropertyTearOff, true>(this, dPropertyInfo())->isAnimating()) { 266 267 SVGPathSegList newList(PathSegUnalteredRole); 267 268 SVGPathParserFactory* factory = SVGPathParserFactory::self(); … … 279 280 } 280 281 282 SVGPathByteStream* SVGPathElement::pathByteStream() const 283 { 284 SVGAnimatedProperty* property = SVGAnimatedProperty::lookupWrapper<SVGPathElement, SVGAnimatedPathSegListPropertyTearOff, true>(this, dPropertyInfo()); 285 if (!property || !property->isAnimating()) 286 return m_pathByteStream.get(); 287 return static_cast<SVGAnimatedPathSegListPropertyTearOff*>(property)->animatedPathByteStream(); 288 } 289 281 290 PassRefPtr<SVGAnimatedProperty> SVGPathElement::lookupOrCreateDWrapper(void* contextElement) 282 291 { … … 284 293 SVGPathElement* ownerType = static_cast<SVGPathElement*>(contextElement); 285 294 295 if (SVGAnimatedProperty* property = SVGAnimatedProperty::lookupWrapper<SVGPathElement, SVGAnimatedPathSegListPropertyTearOff, true>(ownerType, dPropertyInfo())) 296 return property; 297 298 // Build initial SVGPathSegList. 286 299 SVGPathParserFactory* factory = SVGPathParserFactory::self(); 287 300 factory->buildSVGPathSegListFromByteStream(ownerType->m_pathByteStream.get(), ownerType, ownerType->m_pathSegList.value, UnalteredParsing); … … 303 316 { 304 317 m_pathSegList.shouldSynchronize = true; 305 if (!m_animatablePathSegList) 306 m_animatablePathSegList = static_pointer_cast<SVGAnimatedPathSegListPropertyTearOff>(lookupOrCreateDWrapper(this)); 307 return static_cast<SVGPathSegListPropertyTearOff*>(m_animatablePathSegList->baseVal(PathSegUnalteredRole)); 318 return static_cast<SVGPathSegListPropertyTearOff*>(static_pointer_cast<SVGAnimatedPathSegListPropertyTearOff>(lookupOrCreateDWrapper(this))->baseVal()); 308 319 } 309 320 … … 317 328 { 318 329 m_pathSegList.shouldSynchronize = true; 319 if (!m_animatablePathSegList) 320 m_animatablePathSegList = static_pointer_cast<SVGAnimatedPathSegListPropertyTearOff>(lookupOrCreateDWrapper(this)); 321 return static_cast<SVGPathSegListPropertyTearOff*>(m_animatablePathSegList->animVal(PathSegUnalteredRole)); 330 m_isAnimValObserved = true; 331 return static_cast<SVGPathSegListPropertyTearOff*>(static_pointer_cast<SVGAnimatedPathSegListPropertyTearOff>(lookupOrCreateDWrapper(this))->animVal()); 322 332 } 323 333 … … 337 347 break; 338 348 case PathSegUnalteredRole: 339 m_pathByteStream->clear(); 340 factory->buildSVGPathByteStreamFromSVGPathSegList(m_pathSegList.value, m_pathByteStream, UnalteredParsing); 349 factory->buildSVGPathByteStreamFromSVGPathSegList(m_pathSegList.value, m_pathByteStream.get(), UnalteredParsing); 341 350 break; 342 351 case PathSegUndefinedRole: -
trunk/Source/WebCore/svg/SVGPathElement.h
r112224 r113184 25 25 #include "SVGAnimatedBoolean.h" 26 26 #include "SVGAnimatedNumber.h" 27 #include "SVGAnimatedPathSegListPropertyTearOff.h"28 27 #include "SVGExternalResourcesRequired.h" 29 28 #include "SVGLangSpace.h" 30 29 #include "SVGPathByteStream.h" 30 #include "SVGPathSegList.h" 31 31 #include "SVGStyledTransformableElement.h" 32 32 #include "SVGTests.h" … … 53 53 class SVGPathSegCurvetoQuadraticSmoothAbs; 54 54 class SVGPathSegCurvetoQuadraticSmoothRel; 55 class SVGPathSegListPropertyTearOff; 55 56 56 57 class SVGPathElement : public SVGStyledTransformableElement, … … 91 92 SVGPathSegListPropertyTearOff* animatedNormalizedPathSegList(); 92 93 93 SVGPathByteStream* pathByteStream() const { return m_pathByteStream.get(); }94 SVGPathByteStream* pathByteStream() const; 94 95 95 96 void pathSegListChanged(SVGPathSegRole); … … 98 99 99 100 virtual FloatRect getBBox(StyleUpdateStrategy = AllowStyleUpdate); 101 102 bool isAnimValObserved() const { return m_isAnimValObserved; } 100 103 101 104 private: … … 129 132 OwnPtr<SVGPathByteStream> m_pathByteStream; 130 133 mutable SVGSynchronizableAnimatedProperty<SVGPathSegList> m_pathSegList; 131 RefPtr<SVGAnimatedPathSegListPropertyTearOff> m_animatablePathSegList;132 134 FloatRect m_cachedBBoxRect; 133 135 bool m_cachedBBoxRectIsValid; 136 bool m_isAnimValObserved; 134 137 }; 135 138 -
trunk/Source/WebCore/svg/SVGPathParserFactory.cpp
r112224 r113184 141 141 } 142 142 143 bool SVGPathParserFactory::buildSVGPathByteStreamFromSVGPathSegList(const SVGPathSegList& list, OwnPtr<SVGPathByteStream>& result, PathParsingMode parsingMode) 144 { 145 if (result) 146 result->clear(); 147 else 148 result = SVGPathByteStream::create(); 149 143 bool SVGPathParserFactory::buildSVGPathByteStreamFromSVGPathSegList(const SVGPathSegList& list, SVGPathByteStream* result, PathParsingMode parsingMode) 144 { 145 ASSERT(result); 146 result->clear(); 150 147 if (list.isEmpty()) 151 148 return false; 152 149 153 SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result .get());150 SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result); 154 151 155 152 OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(list); … … 222 219 } 223 220 224 bool SVGPathParserFactory::buildSVGPathByteStreamFromString(const String& d, OwnPtr<SVGPathByteStream>& result, PathParsingMode parsingMode) 225 { 226 if (result) 227 result->clear(); 228 else 229 result = SVGPathByteStream::create(); 230 221 bool SVGPathParserFactory::buildSVGPathByteStreamFromString(const String& d, SVGPathByteStream* result, PathParsingMode parsingMode) 222 { 223 ASSERT(result); 224 result->clear(); 231 225 if (d.isEmpty()) 232 226 return false; 233 227 234 SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result .get());228 SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result); 235 229 236 230 OwnPtr<SVGPathStringSource> source = SVGPathStringSource::create(d); … … 241 235 } 242 236 243 bool SVGPathParserFactory::buildAnimatedSVGPathByteStream(SVGPathByteStream* fromStream, SVGPathByteStream* toStream, OwnPtr<SVGPathByteStream>&result, float progress)237 bool SVGPathParserFactory::buildAnimatedSVGPathByteStream(SVGPathByteStream* fromStream, SVGPathByteStream* toStream, SVGPathByteStream* result, float progress) 244 238 { 245 239 ASSERT(fromStream); 246 240 ASSERT(toStream); 247 if (result) 248 result->clear(); 249 else 250 result = SVGPathByteStream::create(); 251 241 ASSERT(result); 242 result->clear(); 252 243 if (fromStream->isEmpty() || toStream->isEmpty()) 253 244 return false; 254 245 255 SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result .get());246 SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result); 256 247 257 248 OwnPtr<SVGPathByteStreamSource> fromSource = SVGPathByteStreamSource::create(fromStream); -
trunk/Source/WebCore/svg/SVGPathParserFactory.h
r112224 r113184 43 43 44 44 // SVGPathSegList/String -> SVGPathByteStream 45 bool buildSVGPathByteStreamFromSVGPathSegList(const SVGPathSegList&, OwnPtr<SVGPathByteStream>&, PathParsingMode);46 bool buildSVGPathByteStreamFromString(const String&, OwnPtr<SVGPathByteStream>&, PathParsingMode);45 bool buildSVGPathByteStreamFromSVGPathSegList(const SVGPathSegList&, SVGPathByteStream*, PathParsingMode); 46 bool buildSVGPathByteStreamFromString(const String&, SVGPathByteStream*, PathParsingMode); 47 47 48 48 // SVGPathByteStream/SVGPathSegList -> String … … 53 53 bool buildSVGPathSegListFromByteStream(SVGPathByteStream*, SVGPathElement*, SVGPathSegList&, PathParsingMode); 54 54 55 bool buildAnimatedSVGPathByteStream(SVGPathByteStream*, SVGPathByteStream*, OwnPtr<SVGPathByteStream>&, float);55 bool buildAnimatedSVGPathByteStream(SVGPathByteStream*, SVGPathByteStream*, SVGPathByteStream*, float); 56 56 bool getSVGPathSegAtLengthFromSVGPathByteStream(SVGPathByteStream*, float length, unsigned& pathSeg); 57 57 bool getTotalLengthOfSVGPathByteStream(SVGPathByteStream*, float& totalLength); -
trunk/Source/WebCore/svg/SVGPathSegWithContext.h
r95901 r113184 22 22 23 23 #if ENABLE(SVG) 24 #include "SVG PathElement.h"24 #include "SVGAnimatedPathSegListPropertyTearOff.h" 25 25 26 26 namespace WebCore { -
trunk/Source/WebCore/svg/properties/SVGAnimatedListPropertyTearOff.h
r113003 r113184 37 37 typedef SVGPropertyTearOff<ListItemType> ListItemTearOff; 38 38 typedef Vector<RefPtr<ListItemTearOff> > ListWrapperCache; 39 typedef SVGListProperty<PropertyType> ListProperty; 39 40 typedef SVGListPropertyTearOff<PropertyType> ListPropertyTearOff; 40 41 typedef PropertyType ContentType; 41 42 42 ListPropertyTearOff* baseVal()43 virtual ListProperty* baseVal() 43 44 { 44 45 if (!m_baseVal) 45 46 m_baseVal = ListPropertyTearOff::create(this, BaseValRole, m_values, m_wrappers); 46 return static_cast<ListProperty TearOff*>(m_baseVal.get());47 return static_cast<ListProperty*>(m_baseVal.get()); 47 48 } 48 49 49 ListPropertyTearOff* animVal()50 virtual ListProperty* animVal() 50 51 { 51 52 if (!m_animVal) 52 53 m_animVal = ListPropertyTearOff::create(this, AnimValRole, m_values, m_wrappers); 53 return static_cast<ListProperty TearOff*>(m_animVal.get());54 return static_cast<ListProperty*>(m_animVal.get()); 54 55 } 55 56 … … 59 60 { 60 61 // This should ever be called for our baseVal, as animVal can't modify the list. 62 // It's safe to cast to ListPropertyTearOff here as all classes inheriting from us supply their own removeItemFromList() method. 61 63 typedef SVGPropertyTearOff<typename SVGPropertyTraits<PropertyType>::ListItemType> ListItemTearOff; 62 64 return static_cast<ListPropertyTearOff*>(m_baseVal.get())->removeItemFromList(static_cast<ListItemTearOff*>(property), shouldSynchronizeWrappers); … … 66 68 { 67 69 if (m_baseVal) 68 baseVal()->detachListWrappers(newListSize);70 static_cast<ListProperty*>(m_baseVal.get())->detachListWrappers(newListSize); 69 71 } 70 72 … … 73 75 ASSERT(m_isAnimating); 74 76 ASSERT(m_animVal); 75 return animVal()->values();77 return static_cast<ListProperty*>(m_animVal.get())->values(); 76 78 } 77 79 … … 81 83 } 82 84 83 void animationStarted(PropertyType* newAnimVal )85 void animationStarted(PropertyType* newAnimVal, bool shouldOwnValues = false) 84 86 { 85 87 ASSERT(!m_isAnimating); … … 92 94 m_animatedWrappers.fill(0, newAnimVal->size()); 93 95 94 animVal()->setValuesAndWrappers(newAnimVal, &m_animatedWrappers); 95 ASSERT(animVal()->values().size() == animVal()->wrappers().size()); 96 ASSERT(animVal()->wrappers().size() == m_animatedWrappers.size()); 96 ListProperty* animVal = static_cast<ListProperty*>(this->animVal()); 97 animVal->setValuesAndWrappers(newAnimVal, &m_animatedWrappers, shouldOwnValues); 98 ASSERT(animVal->values().size() == animVal->wrappers().size()); 99 ASSERT(animVal->wrappers().size() == m_animatedWrappers.size()); 97 100 m_isAnimating = true; 98 101 } … … 103 106 ASSERT(m_animVal); 104 107 ASSERT(m_values.size() == m_wrappers.size()); 105 ASSERT(animVal()->values().size() == animVal()->wrappers().size());106 ASSERT(animVal()->wrappers().size() == m_animatedWrappers.size());107 108 108 animVal()->setValuesAndWrappers(&m_values, &m_wrappers); 109 ASSERT(animVal()->values().size() == animVal()->wrappers().size()); 110 ASSERT(animVal()->wrappers().size() == m_wrappers.size()); 109 ListProperty* animVal = static_cast<ListProperty*>(m_animVal.get()); 110 ASSERT(animVal->values().size() == animVal->wrappers().size()); 111 ASSERT(animVal->wrappers().size() == m_animatedWrappers.size()); 112 113 animVal->setValuesAndWrappers(&m_values, &m_wrappers, false); 114 ASSERT(animVal->values().size() == animVal->wrappers().size()); 115 ASSERT(animVal->wrappers().size() == m_wrappers.size()); 111 116 112 117 m_animatedWrappers.clear(); … … 124 129 // of them is created, so existing animVal variables in JS are kept-alive). If we'd detach them later the underlying 125 130 // SVGLengthList was already mutated, and our list item wrapper tear offs would point nowhere. Assertions would fire. 126 animVal()->detachListWrappers(animVal()->values().size()); 131 ListProperty* animVal = static_cast<ListProperty*>(m_animVal.get()); 132 animVal->detachListWrappers(animVal->values().size()); 127 133 128 ASSERT(animVal ()->values().size() == animVal()->wrappers().size());129 ASSERT(animVal ()->wrappers().size() == m_animatedWrappers.size());134 ASSERT(animVal->values().size() == animVal->wrappers().size()); 135 ASSERT(animVal->wrappers().size() == m_animatedWrappers.size()); 130 136 } 131 137 -
trunk/Source/WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h
r110835 r113184 1 1 /* 2 * Copyright (C) Research In Motion Limited 2010 . All rights reserved.2 * Copyright (C) Research In Motion Limited 2010, 2012. All rights reserved. 3 3 * 4 4 * This library is free software; you can redistribute it and/or … … 23 23 #if ENABLE(SVG) 24 24 #include "SVGAnimatedListPropertyTearOff.h" 25 #include "SVGPathByteStream.h" 26 #include "SVGPathElement.h" 27 #include "SVGPathParserFactory.h" 25 28 #include "SVGPathSegList.h" 26 29 #include "SVGPathSegListPropertyTearOff.h" … … 28 31 namespace WebCore { 29 32 30 class SVGPathSegListPropertyTearOff;31 32 33 class SVGAnimatedPathSegListPropertyTearOff : public SVGAnimatedListPropertyTearOff<SVGPathSegList> { 33 34 public: 34 SVGProperty* baseVal(SVGPathSegRole role)35 virtual SVGListProperty<SVGPathSegList>* baseVal() 35 36 { 36 37 if (!m_baseVal) 37 m_baseVal = SVGPathSegListPropertyTearOff::create(this, BaseValRole, role, m_values, m_wrappers);38 return m_baseVal.get();38 m_baseVal = SVGPathSegListPropertyTearOff::create(this, BaseValRole, PathSegUnalteredRole, m_values, m_wrappers); 39 return static_cast<SVGListProperty<SVGPathSegList>*>(m_baseVal.get()); 39 40 } 40 41 41 SVGProperty* animVal(SVGPathSegRole role)42 virtual SVGListProperty<SVGPathSegList>* animVal() 42 43 { 43 44 if (!m_animVal) 44 m_animVal = SVGPathSegListPropertyTearOff::create(this, AnimValRole, role, m_values, m_wrappers);45 return m_animVal.get();45 m_animVal = SVGPathSegListPropertyTearOff::create(this, AnimValRole, PathSegUnalteredRole, m_values, m_wrappers); 46 return static_cast<SVGListProperty<SVGPathSegList>*>(m_animVal.get()); 46 47 } 47 48 … … 49 50 { 50 51 // This should ever be called for our baseVal, as animVal can't modify the list. 51 return static_pointer_cast<SVGPathSegListPropertyTearOff>(m_baseVal)->removeItemFromList(segment, shouldSynchronizeWrappers); 52 ASSERT(m_baseVal); 53 return static_cast<SVGPathSegListPropertyTearOff*>(m_baseVal.get())->removeItemFromList(segment, shouldSynchronizeWrappers); 52 54 } 53 55 … … 58 60 } 59 61 62 using SVGAnimatedListPropertyTearOff<SVGPathSegList>::animationStarted; 63 void animationStarted(SVGPathByteStream* byteStream, const SVGPathSegList* baseValue) 64 { 65 ASSERT(byteStream); 66 ASSERT(baseValue); 67 ASSERT(!m_animatedPathByteStream); 68 m_animatedPathByteStream = byteStream; 69 70 // Pass shouldOwnValues=true, as the SVGPathSegList lifetime is solely managed by its tear off class. 71 SVGPathSegList* copy = new SVGPathSegList(*baseValue); 72 SVGAnimatedListPropertyTearOff<SVGPathSegList>::animationStarted(copy, true); 73 } 74 75 void animationEnded() 76 { 77 ASSERT(m_animatedPathByteStream); 78 m_animatedPathByteStream = 0; 79 SVGAnimatedListPropertyTearOff<SVGPathSegList>::animationEnded(); 80 } 81 82 void animValDidChange() 83 { 84 ASSERT(m_animatedPathByteStream); 85 SVGPathElement* pathElement = static_cast<SVGPathElement*>(contextElement()); 86 87 // If the animVal is observed from JS, we have to update it on each animation step. 88 // This is an expensive operation and only done, if someone actually observes the animatedPathSegList() while an animation is running. 89 if (pathElement->isAnimValObserved()) { 90 SVGPathSegList& animatedList = currentAnimatedValue(); 91 animatedList.clear(); 92 SVGPathParserFactory::self()->buildSVGPathSegListFromByteStream(m_animatedPathByteStream, pathElement, animatedList, UnalteredParsing); 93 } 94 95 SVGAnimatedListPropertyTearOff<SVGPathSegList>::animValDidChange(); 96 } 97 98 SVGPathByteStream* animatedPathByteStream() const { return m_animatedPathByteStream; } 99 60 100 private: 61 101 SVGAnimatedPathSegListPropertyTearOff(SVGElement* contextElement, const QualifiedName& attributeName, AnimatedPropertyType animatedPropertyType, SVGPathSegList& values) 62 102 : SVGAnimatedListPropertyTearOff<SVGPathSegList>(contextElement, attributeName, animatedPropertyType, values) 103 , m_animatedPathByteStream(0) 63 104 { 64 105 } 106 107 SVGPathByteStream* m_animatedPathByteStream; 65 108 }; 66 109 -
trunk/Source/WebCore/svg/properties/SVGAnimatedTransformListPropertyTearOff.h
r110835 r113184 30 30 class SVGAnimatedTransformListPropertyTearOff : public SVGAnimatedListPropertyTearOff<SVGTransformList> { 31 31 public: 32 SVGProperty* baseVal()32 virtual SVGListPropertyTearOff<SVGTransformList>* baseVal() 33 33 { 34 34 if (!m_baseVal) 35 35 m_baseVal = SVGTransformListPropertyTearOff::create(this, BaseValRole, m_values, m_wrappers); 36 return m_baseVal.get();36 return static_cast<SVGListPropertyTearOff<SVGTransformList>*>(m_baseVal.get()); 37 37 } 38 38 39 SVGProperty* animVal()39 virtual SVGListPropertyTearOff<SVGTransformList>* animVal() 40 40 { 41 41 if (!m_animVal) 42 42 m_animVal = SVGTransformListPropertyTearOff::create(this, AnimValRole, m_values, m_wrappers); 43 return m_animVal.get();43 return static_cast<SVGListPropertyTearOff<SVGTransformList>*>(m_animVal.get()); 44 44 } 45 45 -
trunk/Source/WebCore/svg/properties/SVGListProperty.h
r110835 r113184 70 70 } 71 71 72 void setValuesAndWrappers(PropertyType* values, ListWrapperCache* wrappers )72 void setValuesAndWrappers(PropertyType* values, ListWrapperCache* wrappers, bool shouldOwnValues) 73 73 { 74 74 // This is only used for animVal support, to switch the underlying values & wrappers … … 77 77 ASSERT(m_wrappers); 78 78 ASSERT(m_role == AnimValRole); 79 79 if (m_ownsValues) 80 delete m_values; 80 81 m_values = values; 82 m_ownsValues = shouldOwnValues; 81 83 m_wrappers = wrappers; 82 84 ASSERT(m_values->size() == m_wrappers->size()); … … 431 433 SVGListProperty(SVGPropertyRole role, PropertyType& values, ListWrapperCache* wrappers) 432 434 : m_role(role) 435 , m_ownsValues(false) 433 436 , m_values(&values) 434 437 , m_wrappers(wrappers) 435 438 { 439 } 440 441 virtual ~SVGListProperty() 442 { 443 if (m_ownsValues) 444 delete m_values; 436 445 } 437 446 … … 441 450 442 451 SVGPropertyRole m_role; 452 bool m_ownsValues; 443 453 PropertyType* m_values; 444 454 ListWrapperCache* m_wrappers;
Note: See TracChangeset
for help on using the changeset viewer.