void SVGAngle::setValue(float value) { switch (m_unitType) { case SVG_ANGLETYPE_GRAD: m_valueInSpecifiedUnits = deg2grad(value); break; case SVG_ANGLETYPE_RAD: m_valueInSpecifiedUnits = deg2rad(value); break; case SVG_ANGLETYPE_UNSPECIFIED: case SVG_ANGLETYPE_UNKNOWN: case SVG_ANGLETYPE_DEG: m_valueInSpecifiedUnits = value; break; } }
void SVGAngleValue::setValue(float value) { switch (m_unitType) { case SVG_ANGLETYPE_GRAD: m_valueInSpecifiedUnits = deg2grad(value); return; case SVG_ANGLETYPE_RAD: m_valueInSpecifiedUnits = deg2rad(value); return; case SVG_ANGLETYPE_UNSPECIFIED: case SVG_ANGLETYPE_UNKNOWN: case SVG_ANGLETYPE_DEG: m_valueInSpecifiedUnits = value; return; } ASSERT_NOT_REACHED(); }
void SVGAngle::convertToSpecifiedUnits(unsigned short unitType) { if (m_unitType == unitType) return; if (m_unitType == SVG_ANGLETYPE_DEG && unitType == SVG_ANGLETYPE_RAD) m_valueInSpecifiedUnits = deg2rad(m_valueInSpecifiedUnits); else if (m_unitType == SVG_ANGLETYPE_GRAD && unitType == SVG_ANGLETYPE_RAD) m_valueInSpecifiedUnits = grad2rad(m_valueInSpecifiedUnits); else if (m_unitType == SVG_ANGLETYPE_DEG && unitType == SVG_ANGLETYPE_GRAD) m_valueInSpecifiedUnits = deg2grad(m_valueInSpecifiedUnits); else if (m_unitType == SVG_ANGLETYPE_RAD && unitType == SVG_ANGLETYPE_GRAD) m_valueInSpecifiedUnits = rad2grad(m_valueInSpecifiedUnits); else if (m_unitType == SVG_ANGLETYPE_RAD && unitType == SVG_ANGLETYPE_DEG) m_valueInSpecifiedUnits = rad2deg(m_valueInSpecifiedUnits); else if (m_unitType == SVG_ANGLETYPE_GRAD && unitType == SVG_ANGLETYPE_DEG) m_valueInSpecifiedUnits = grad2deg(m_valueInSpecifiedUnits); m_unitType = (SVGAngleType)unitType; }
void SVGAngle::convertToSpecifiedUnits(unsigned short unitType, ExceptionCode& ec) { if (unitType == SVG_ANGLETYPE_UNKNOWN || m_unitType == SVG_ANGLETYPE_UNKNOWN || unitType > SVG_ANGLETYPE_GRAD) { ec = NOT_SUPPORTED_ERR; return; } if (unitType == m_unitType) return; switch (m_unitType) { case SVG_ANGLETYPE_RAD: switch (unitType) { case SVG_ANGLETYPE_GRAD: m_valueInSpecifiedUnits = rad2grad(m_valueInSpecifiedUnits); break; case SVG_ANGLETYPE_UNSPECIFIED: case SVG_ANGLETYPE_DEG: m_valueInSpecifiedUnits = rad2deg(m_valueInSpecifiedUnits); break; case SVG_ANGLETYPE_RAD: case SVG_ANGLETYPE_UNKNOWN: ASSERT_NOT_REACHED(); break; } break; case SVG_ANGLETYPE_GRAD: switch (unitType) { case SVG_ANGLETYPE_RAD: m_valueInSpecifiedUnits = grad2rad(m_valueInSpecifiedUnits); break; case SVG_ANGLETYPE_UNSPECIFIED: case SVG_ANGLETYPE_DEG: m_valueInSpecifiedUnits = grad2deg(m_valueInSpecifiedUnits); break; case SVG_ANGLETYPE_GRAD: case SVG_ANGLETYPE_UNKNOWN: ASSERT_NOT_REACHED(); break; } break; case SVG_ANGLETYPE_UNSPECIFIED: // Spec: For angles, a unitless value is treated the same as if degrees were specified. case SVG_ANGLETYPE_DEG: switch (unitType) { case SVG_ANGLETYPE_RAD: m_valueInSpecifiedUnits = deg2rad(m_valueInSpecifiedUnits); break; case SVG_ANGLETYPE_GRAD: m_valueInSpecifiedUnits = deg2grad(m_valueInSpecifiedUnits); break; case SVG_ANGLETYPE_UNSPECIFIED: break; case SVG_ANGLETYPE_DEG: case SVG_ANGLETYPE_UNKNOWN: ASSERT_NOT_REACHED(); break; } break; case SVG_ANGLETYPE_UNKNOWN: ASSERT_NOT_REACHED(); break; } m_unitType = static_cast<SVGAngleType>(unitType); }
double CSSAngleValue::gradians() const { return deg2grad(degrees()); }