OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/inspector/LayoutEditor.h" | 6 #include "core/inspector/LayoutEditor.h" |
7 | 7 |
8 #include "core/css/CSSComputedStyleDeclaration.h" | 8 #include "core/css/CSSComputedStyleDeclaration.h" |
9 #include "core/dom/NodeComputedStyle.h" | 9 #include "core/dom/NodeComputedStyle.h" |
10 #include "core/frame/FrameView.h" | 10 #include "core/frame/FrameView.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 result.setP3(projection(projectOn.p3(), orthogonals.p3(), translatePoint(ori
gin.p3(), orthogonals.p1(), distance))); | 109 result.setP3(projection(projectOn.p3(), orthogonals.p3(), translatePoint(ori
gin.p3(), orthogonals.p1(), distance))); |
110 result.setP4(projection(projectOn.p4(), orthogonals.p4(), translatePoint(ori
gin.p4(), orthogonals.p2(), distance))); | 110 result.setP4(projection(projectOn.p4(), orthogonals.p4(), translatePoint(ori
gin.p4(), orthogonals.p2(), distance))); |
111 return result; | 111 return result; |
112 } | 112 } |
113 | 113 |
114 bool isMutableUnitType(CSSPrimitiveValue::UnitType unitType) | 114 bool isMutableUnitType(CSSPrimitiveValue::UnitType unitType) |
115 { | 115 { |
116 return unitType == CSSPrimitiveValue::UnitType::Pixels || unitType == CSSPri
mitiveValue::UnitType::Ems || unitType == CSSPrimitiveValue::UnitType::Percentag
e || unitType == CSSPrimitiveValue::UnitType::Rems; | 116 return unitType == CSSPrimitiveValue::UnitType::Pixels || unitType == CSSPri
mitiveValue::UnitType::Ems || unitType == CSSPrimitiveValue::UnitType::Percentag
e || unitType == CSSPrimitiveValue::UnitType::Rems; |
117 } | 117 } |
118 | 118 |
| 119 String truncateZeroes(const String& number) |
| 120 { |
| 121 if (!number.contains('.')) |
| 122 return number; |
| 123 |
| 124 int removeCount = 0; |
| 125 while (number[number.length() - removeCount - 1] == '0') |
| 126 removeCount++; |
| 127 |
| 128 if (number[number.length() - removeCount - 1] == '.') |
| 129 removeCount++; |
| 130 |
| 131 return number.left(number.length() - removeCount); |
| 132 } |
| 133 |
| 134 float toValidValue(CSSPropertyID propertyId, float newValue) |
| 135 { |
| 136 if (CSSPropertyPaddingBottom <= propertyId && propertyId <= CSSPropertyPaddi
ngTop) |
| 137 return newValue >= 0 ? newValue : 0; |
| 138 |
| 139 return newValue; |
| 140 } |
119 } // namespace | 141 } // namespace |
120 | 142 |
121 LayoutEditor::LayoutEditor(InspectorCSSAgent* cssAgent) | 143 LayoutEditor::LayoutEditor(InspectorCSSAgent* cssAgent) |
122 : m_element(nullptr) | 144 : m_element(nullptr) |
123 , m_cssAgent(cssAgent) | 145 , m_cssAgent(cssAgent) |
124 , m_changingProperty(CSSPropertyInvalid) | 146 , m_changingProperty(CSSPropertyInvalid) |
125 , m_propertyInitialValue(0) | 147 , m_propertyInitialValue(0) |
126 { | 148 { |
127 } | 149 } |
128 | 150 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 ASSERT_NOT_REACHED(); | 254 ASSERT_NOT_REACHED(); |
233 break; | 255 break; |
234 } | 256 } |
235 m_propertyInitialValue = cssValue ? cssValue->getFloatValue() : 0; | 257 m_propertyInitialValue = cssValue ? cssValue->getFloatValue() : 0; |
236 } | 258 } |
237 | 259 |
238 void LayoutEditor::overlayPropertyChanged(float cssDelta) | 260 void LayoutEditor::overlayPropertyChanged(float cssDelta) |
239 { | 261 { |
240 if (m_changingProperty && m_factor) { | 262 if (m_changingProperty && m_factor) { |
241 String errorString; | 263 String errorString; |
242 m_cssAgent->setCSSPropertyValue(&errorString, m_element.get(), m_changin
gProperty, String::format("%.2f", cssDelta / m_factor + m_propertyInitialValue)
+ CSSPrimitiveValue::unitTypeToString(m_valueUnitType)); | 264 float newValue = toValidValue(m_changingProperty, cssDelta / m_factor +
m_propertyInitialValue); |
| 265 m_cssAgent->setCSSPropertyValue(&errorString, m_element.get(), m_changin
gProperty, truncateZeroes(String::format("%.2f", newValue)) + CSSPrimitiveValue:
:unitTypeToString(m_valueUnitType)); |
243 } | 266 } |
244 } | 267 } |
245 | 268 |
246 void LayoutEditor::overlayEndedPropertyChange() | 269 void LayoutEditor::overlayEndedPropertyChange() |
247 { | 270 { |
248 m_changingProperty = CSSPropertyInvalid; | 271 m_changingProperty = CSSPropertyInvalid; |
249 m_propertyInitialValue = 0; | 272 m_propertyInitialValue = 0; |
250 m_factor = 0; | 273 m_factor = 0; |
251 m_valueUnitType = CSSPrimitiveValue::UnitType::Unknown; | 274 m_valueUnitType = CSSPrimitiveValue::UnitType::Unknown; |
252 } | 275 } |
253 | 276 |
254 } // namespace blink | 277 } // namespace blink |
OLD | NEW |