unsigned data_index = AddPathData(path);
Rect bounds = path.SolveBounds(m_objects);
unsigned result = Add(PATH, bounds,data_index);
+ m_objects.paths[data_index].m_index = result;
//Debug("Added path %u -> %u (%u objects) colour {%u,%u,%u,%u}, stroke {%u,%u,%u,%u}", start_index, end_index, (end_index - start_index), fill.r, fill.g, fill.b, fill.a, stroke.r, stroke.g, stroke.b, stroke.a);
return result;
}
}
}
-void Document::TranslateObjects(const Real & dx, const Real & dy)
+void Document::TranslateObjects(const Real & dx, const Real & dy, ObjectType type)
{
for (unsigned i = 0; i < m_count; ++i)
{
- m_objects.bounds[i].x += dx;
- m_objects.bounds[i].y += dy;
+ if (type == NUMBER_OF_OBJECT_TYPES || m_objects.types[i] == type)
+ {
+ m_objects.bounds[i].x += dx;
+ m_objects.bounds[i].y += dy;
+ }
}
}
-void Document::ScaleObjectsAboutPoint(const Real & x, const Real & y, const Real & scale_amount)
+void Document::ScaleObjectsAboutPoint(const Real & x, const Real & y, const Real & scale_amount, ObjectType type)
{
for (unsigned i = 0; i < m_count; ++i)
{
+ if (type != NUMBER_OF_OBJECT_TYPES && m_objects.types[i] != type)
+ continue;
+
m_objects.bounds[i].w /= scale_amount;
m_objects.bounds[i].h /= scale_amount;
//m_objects.bounds[i].x = x + (m_objects.bounds[i].x-x)/scale_amount;
m_objects.bounds[i].y -= y;
m_objects.bounds[i].y /= scale_amount;
m_objects.bounds[i].y += y;
-
- }
-
+ }
}
+
+