String SVGTransformList::StringFromTransformList() const
{
	IO::StringWriter str;

	unsigned int numberOfItems = m_p->m_items.GetSize();

	for (size_t i = 0; i < numberOfItems; i++)
	{
		SVGTransform* transform = m_p->m_items[i];

		SVGTransformType type = transform->get_type();

		SVGMatrix* matrix = transform->get_matrix();

		double a = matrix->get_a();
		double b = matrix->get_b();
		double c = matrix->get_c();
		double d = matrix->get_d();
		double e = matrix->get_e();
		double f = matrix->get_f();

		if (i > 0) str << " ";

		switch (type)
		{
			case SVG_TRANSFORM_TRANSLATE:
			{
				str << "translate(" << e << "," << f << ")";
			}
			break;

			case SVG_TRANSFORM_SCALE:
			{
			//	swprintf(str2, OLESTR("scale(%g, %g)"), a, d);
			//	str += str2;
				str << "scale(" << a << "," << d << ")";
			}
			break;

			case SVG_TRANSFORM_ROTATE:
			{
				double angle = transform->get_angle();
			//	swprintf(str2, OLESTR("rotate(%g, %g, %g)"), angle, e, f);
			//	str += str2;
				str << "rotate(" << angle << "," << e << "," << f << ")";
			}
			break;

			case SVG_TRANSFORM_SKEWX:
			{
				double angle = transform->get_angle();
		//		swprintf(str2, OLESTR("skewX(%g)"), angle);
		//		str += str2;
				str << "skewX(" << angle << ")";
			}
			break;

			case SVG_TRANSFORM_SKEWY:
			{
				double angle = transform->get_angle();
			//	swprintf(str2, OLESTR("skewY(%g)"), angle);
			//	str += str2;
				str << "skewY(" << angle << ")";
			}
			break;

			case SVG_TRANSFORM_MATRIX:
			{
			//	swprintf(str2, OLESTR("matrix(%g %g %g %g %g %g)"), a, b, c, d, e, f);
			//	str += str2;
				str << "matrix(" << a << "," << b << "," << c << "," << d << "," << e << "," << f << ")";
			}
			break;

			default:
				ASSERT(0);
		}
	}

	return str.str();
}