Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: third_party/WebKit/Source/core/svg/SVGTransformDistance.cpp

Issue 2068053002: Rename Blink constants generated from IDL files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 2 * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public License 14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to 15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA. 17 * Boston, MA 02110-1301, USA.
18 */ 18 */
19 19
20 #include "core/svg/SVGTransformDistance.h" 20 #include "core/svg/SVGTransformDistance.h"
21 21
22 #include "platform/geometry/FloatPoint.h" 22 #include "platform/geometry/FloatPoint.h"
23 #include "platform/geometry/FloatSize.h" 23 #include "platform/geometry/FloatSize.h"
24 #include <math.h> 24 #include <math.h>
25 25
26 namespace blink { 26 namespace blink {
27 27
28 SVGTransformDistance::SVGTransformDistance() 28 SVGTransformDistance::SVGTransformDistance()
29 : m_transformType(SVG_TRANSFORM_UNKNOWN) 29 : m_transformType(kSvgTransformUnknown)
30 , m_angle(0) 30 , m_angle(0)
31 , m_cx(0) 31 , m_cx(0)
32 , m_cy(0) 32 , m_cy(0)
33 { 33 {
34 } 34 }
35 35
36 SVGTransformDistance::SVGTransformDistance(SVGTransformType transformType, float angle, float cx, float cy, const AffineTransform& transform) 36 SVGTransformDistance::SVGTransformDistance(SVGTransformType transformType, float angle, float cx, float cy, const AffineTransform& transform)
37 : m_transformType(transformType) 37 : m_transformType(transformType)
38 , m_angle(angle) 38 , m_angle(angle)
39 , m_cx(cx) 39 , m_cx(cx)
40 , m_cy(cy) 40 , m_cy(cy)
41 , m_transform(transform) 41 , m_transform(transform)
42 { 42 {
43 } 43 }
44 44
45 SVGTransformDistance::SVGTransformDistance(SVGTransform* fromSVGTransform, SVGTr ansform* toSVGTransform) 45 SVGTransformDistance::SVGTransformDistance(SVGTransform* fromSVGTransform, SVGTr ansform* toSVGTransform)
46 : m_angle(0) 46 : m_angle(0)
47 , m_cx(0) 47 , m_cx(0)
48 , m_cy(0) 48 , m_cy(0)
49 { 49 {
50 m_transformType = fromSVGTransform->transformType(); 50 m_transformType = fromSVGTransform->transformType();
51 ASSERT(m_transformType == toSVGTransform->transformType()); 51 ASSERT(m_transformType == toSVGTransform->transformType());
52 52
53 switch (m_transformType) { 53 switch (m_transformType) {
54 case SVG_TRANSFORM_MATRIX: 54 case kSvgTransformMatrix:
55 ASSERT_NOT_REACHED(); 55 ASSERT_NOT_REACHED();
56 case SVG_TRANSFORM_UNKNOWN: 56 case kSvgTransformUnknown:
57 break; 57 break;
58 case SVG_TRANSFORM_ROTATE: { 58 case kSvgTransformRotate: {
59 FloatSize centerDistance = toSVGTransform->rotationCenter() - fromSVGTra nsform->rotationCenter(); 59 FloatSize centerDistance = toSVGTransform->rotationCenter() - fromSVGTra nsform->rotationCenter();
60 m_angle = toSVGTransform->angle() - fromSVGTransform->angle(); 60 m_angle = toSVGTransform->angle() - fromSVGTransform->angle();
61 m_cx = centerDistance.width(); 61 m_cx = centerDistance.width();
62 m_cy = centerDistance.height(); 62 m_cy = centerDistance.height();
63 break; 63 break;
64 } 64 }
65 case SVG_TRANSFORM_TRANSLATE: { 65 case kSvgTransformTranslate: {
66 FloatSize translationDistance = toSVGTransform->translate() - fromSVGTra nsform->translate(); 66 FloatSize translationDistance = toSVGTransform->translate() - fromSVGTra nsform->translate();
67 m_transform.translate(translationDistance.width(), translationDistance.h eight()); 67 m_transform.translate(translationDistance.width(), translationDistance.h eight());
68 break; 68 break;
69 } 69 }
70 case SVG_TRANSFORM_SCALE: { 70 case kSvgTransformScale: {
71 float scaleX = toSVGTransform->scale().width() - fromSVGTransform->scale ().width(); 71 float scaleX = toSVGTransform->scale().width() - fromSVGTransform->scale ().width();
72 float scaleY = toSVGTransform->scale().height() - fromSVGTransform->scal e().height(); 72 float scaleY = toSVGTransform->scale().height() - fromSVGTransform->scal e().height();
73 m_transform.scaleNonUniform(scaleX, scaleY); 73 m_transform.scaleNonUniform(scaleX, scaleY);
74 break; 74 break;
75 } 75 }
76 case SVG_TRANSFORM_SKEWX: 76 case kSvgTransformSkewx:
77 case SVG_TRANSFORM_SKEWY: 77 case kSvgTransformSkewy:
78 m_angle = toSVGTransform->angle() - fromSVGTransform->angle(); 78 m_angle = toSVGTransform->angle() - fromSVGTransform->angle();
79 break; 79 break;
80 } 80 }
81 } 81 }
82 82
83 SVGTransformDistance SVGTransformDistance::scaledDistance(float scaleFactor) con st 83 SVGTransformDistance SVGTransformDistance::scaledDistance(float scaleFactor) con st
84 { 84 {
85 switch (m_transformType) { 85 switch (m_transformType) {
86 case SVG_TRANSFORM_MATRIX: 86 case kSvgTransformMatrix:
87 ASSERT_NOT_REACHED(); 87 ASSERT_NOT_REACHED();
88 case SVG_TRANSFORM_UNKNOWN: 88 case kSvgTransformUnknown:
89 return SVGTransformDistance(); 89 return SVGTransformDistance();
90 case SVG_TRANSFORM_ROTATE: 90 case kSvgTransformRotate:
91 return SVGTransformDistance(m_transformType, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform()); 91 return SVGTransformDistance(m_transformType, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform());
92 case SVG_TRANSFORM_SCALE: 92 case kSvgTransformScale:
93 return SVGTransformDistance(m_transformType, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform(m_transform).scale(scaleFact or)); 93 return SVGTransformDistance(m_transformType, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform(m_transform).scale(scaleFact or));
94 case SVG_TRANSFORM_TRANSLATE: { 94 case kSvgTransformTranslate: {
95 AffineTransform newTransform(m_transform); 95 AffineTransform newTransform(m_transform);
96 newTransform.setE(m_transform.e() * scaleFactor); 96 newTransform.setE(m_transform.e() * scaleFactor);
97 newTransform.setF(m_transform.f() * scaleFactor); 97 newTransform.setF(m_transform.f() * scaleFactor);
98 return SVGTransformDistance(m_transformType, 0, 0, 0, newTransform); 98 return SVGTransformDistance(m_transformType, 0, 0, 0, newTransform);
99 } 99 }
100 case SVG_TRANSFORM_SKEWX: 100 case kSvgTransformSkewx:
101 case SVG_TRANSFORM_SKEWY: 101 case kSvgTransformSkewy:
102 return SVGTransformDistance(m_transformType, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform()); 102 return SVGTransformDistance(m_transformType, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform());
103 } 103 }
104 104
105 ASSERT_NOT_REACHED(); 105 ASSERT_NOT_REACHED();
106 return SVGTransformDistance(); 106 return SVGTransformDistance();
107 } 107 }
108 108
109 SVGTransform* SVGTransformDistance::addSVGTransforms(SVGTransform* first, SVGTra nsform* second, unsigned repeatCount) 109 SVGTransform* SVGTransformDistance::addSVGTransforms(SVGTransform* first, SVGTra nsform* second, unsigned repeatCount)
110 { 110 {
111 ASSERT(first->transformType() == second->transformType()); 111 ASSERT(first->transformType() == second->transformType());
112 112
113 SVGTransform* transform = SVGTransform::create(); 113 SVGTransform* transform = SVGTransform::create();
114 114
115 switch (first->transformType()) { 115 switch (first->transformType()) {
116 case SVG_TRANSFORM_MATRIX: 116 case kSvgTransformMatrix:
117 ASSERT_NOT_REACHED(); 117 ASSERT_NOT_REACHED();
118 case SVG_TRANSFORM_UNKNOWN: 118 case kSvgTransformUnknown:
119 return transform; 119 return transform;
120 case SVG_TRANSFORM_ROTATE: { 120 case kSvgTransformRotate: {
121 transform->setRotate(first->angle() + second->angle() * repeatCount, fir st->rotationCenter().x() + second->rotationCenter().x() * repeatCount, first->ro tationCenter().y() + second->rotationCenter().y() * repeatCount); 121 transform->setRotate(first->angle() + second->angle() * repeatCount, fir st->rotationCenter().x() + second->rotationCenter().x() * repeatCount, first->ro tationCenter().y() + second->rotationCenter().y() * repeatCount);
122 return transform; 122 return transform;
123 } 123 }
124 case SVG_TRANSFORM_TRANSLATE: { 124 case kSvgTransformTranslate: {
125 float dx = first->translate().x() + second->translate().x() * repeatCoun t; 125 float dx = first->translate().x() + second->translate().x() * repeatCoun t;
126 float dy = first->translate().y() + second->translate().y() * repeatCoun t; 126 float dy = first->translate().y() + second->translate().y() * repeatCoun t;
127 transform->setTranslate(dx, dy); 127 transform->setTranslate(dx, dy);
128 return transform; 128 return transform;
129 } 129 }
130 case SVG_TRANSFORM_SCALE: { 130 case kSvgTransformScale: {
131 FloatSize scale = second->scale(); 131 FloatSize scale = second->scale();
132 scale.scale(repeatCount); 132 scale.scale(repeatCount);
133 scale += first->scale(); 133 scale += first->scale();
134 transform->setScale(scale.width(), scale.height()); 134 transform->setScale(scale.width(), scale.height());
135 return transform; 135 return transform;
136 } 136 }
137 case SVG_TRANSFORM_SKEWX: 137 case kSvgTransformSkewx:
138 transform->setSkewX(first->angle() + second->angle() * repeatCount); 138 transform->setSkewX(first->angle() + second->angle() * repeatCount);
139 return transform; 139 return transform;
140 case SVG_TRANSFORM_SKEWY: 140 case kSvgTransformSkewy:
141 transform->setSkewY(first->angle() + second->angle() * repeatCount); 141 transform->setSkewY(first->angle() + second->angle() * repeatCount);
142 return transform; 142 return transform;
143 } 143 }
144 ASSERT_NOT_REACHED(); 144 ASSERT_NOT_REACHED();
145 return transform; 145 return transform;
146 } 146 }
147 147
148 SVGTransform* SVGTransformDistance::addToSVGTransform(SVGTransform* transform) c onst 148 SVGTransform* SVGTransformDistance::addToSVGTransform(SVGTransform* transform) c onst
149 { 149 {
150 ASSERT(m_transformType == transform->transformType() || m_transformType == S VG_TRANSFORM_UNKNOWN); 150 DCHECK(m_transformType == transform->transformType() || m_transformType == k SvgTransformUnknown);
151 151
152 SVGTransform* newTransform = transform->clone(); 152 SVGTransform* newTransform = transform->clone();
153 153
154 switch (m_transformType) { 154 switch (m_transformType) {
155 case SVG_TRANSFORM_MATRIX: 155 case kSvgTransformMatrix:
156 ASSERT_NOT_REACHED(); 156 ASSERT_NOT_REACHED();
157 case SVG_TRANSFORM_UNKNOWN: 157 case kSvgTransformUnknown:
158 return SVGTransform::create(); 158 return SVGTransform::create();
159 case SVG_TRANSFORM_TRANSLATE: { 159 case kSvgTransformTranslate: {
160 FloatPoint translation = transform->translate(); 160 FloatPoint translation = transform->translate();
161 translation += FloatSize::narrowPrecision(m_transform.e(), m_transform.f ()); 161 translation += FloatSize::narrowPrecision(m_transform.e(), m_transform.f ());
162 newTransform->setTranslate(translation.x(), translation.y()); 162 newTransform->setTranslate(translation.x(), translation.y());
163 return newTransform; 163 return newTransform;
164 } 164 }
165 case SVG_TRANSFORM_SCALE: { 165 case kSvgTransformScale: {
166 FloatSize scale = transform->scale(); 166 FloatSize scale = transform->scale();
167 scale += FloatSize::narrowPrecision(m_transform.a(), m_transform.d()); 167 scale += FloatSize::narrowPrecision(m_transform.a(), m_transform.d());
168 newTransform->setScale(scale.width(), scale.height()); 168 newTransform->setScale(scale.width(), scale.height());
169 return newTransform; 169 return newTransform;
170 } 170 }
171 case SVG_TRANSFORM_ROTATE: { 171 case kSvgTransformRotate: {
172 FloatPoint center = transform->rotationCenter(); 172 FloatPoint center = transform->rotationCenter();
173 newTransform->setRotate(transform->angle() + m_angle, center.x() + m_cx, center.y() + m_cy); 173 newTransform->setRotate(transform->angle() + m_angle, center.x() + m_cx, center.y() + m_cy);
174 return newTransform; 174 return newTransform;
175 } 175 }
176 case SVG_TRANSFORM_SKEWX: 176 case kSvgTransformSkewx:
177 newTransform->setSkewX(transform->angle() + m_angle); 177 newTransform->setSkewX(transform->angle() + m_angle);
178 return newTransform; 178 return newTransform;
179 case SVG_TRANSFORM_SKEWY: 179 case kSvgTransformSkewy:
180 newTransform->setSkewY(transform->angle() + m_angle); 180 newTransform->setSkewY(transform->angle() + m_angle);
181 return newTransform; 181 return newTransform;
182 } 182 }
183 183
184 ASSERT_NOT_REACHED(); 184 ASSERT_NOT_REACHED();
185 return newTransform; 185 return newTransform;
186 } 186 }
187 187
188 float SVGTransformDistance::distance() const 188 float SVGTransformDistance::distance() const
189 { 189 {
190 switch (m_transformType) { 190 switch (m_transformType) {
191 case SVG_TRANSFORM_MATRIX: 191 case kSvgTransformMatrix:
192 ASSERT_NOT_REACHED(); 192 ASSERT_NOT_REACHED();
193 case SVG_TRANSFORM_UNKNOWN: 193 case kSvgTransformUnknown:
194 return 0; 194 return 0;
195 case SVG_TRANSFORM_ROTATE: 195 case kSvgTransformRotate:
196 return sqrtf(m_angle * m_angle + m_cx * m_cx + m_cy * m_cy); 196 return sqrtf(m_angle * m_angle + m_cx * m_cx + m_cy * m_cy);
197 case SVG_TRANSFORM_SCALE: 197 case kSvgTransformScale:
198 return static_cast<float>(sqrt(m_transform.a() * m_transform.a() + m_tra nsform.d() * m_transform.d())); 198 return static_cast<float>(sqrt(m_transform.a() * m_transform.a() + m_tra nsform.d() * m_transform.d()));
199 case SVG_TRANSFORM_TRANSLATE: 199 case kSvgTransformTranslate:
200 return static_cast<float>(sqrt(m_transform.e() * m_transform.e() + m_tra nsform.f() * m_transform.f())); 200 return static_cast<float>(sqrt(m_transform.e() * m_transform.e() + m_tra nsform.f() * m_transform.f()));
201 case SVG_TRANSFORM_SKEWX: 201 case kSvgTransformSkewx:
202 case SVG_TRANSFORM_SKEWY: 202 case kSvgTransformSkewy:
203 return m_angle; 203 return m_angle;
204 } 204 }
205 ASSERT_NOT_REACHED(); 205 ASSERT_NOT_REACHED();
206 return 0; 206 return 0;
207 } 207 }
208 208
209 } // namespace blink 209 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/svg/SVGTransform.cpp ('k') | third_party/WebKit/Source/core/svg/SVGTransformList.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698