+ #else
+ for (unsigned i = 0; i < m_document.m_objects.paths.size(); ++i)
+ {
+ Path & path = m_document.m_objects.paths[i];
+ Rect & pbounds = path.GetBounds(m_document.m_objects); // Not very efficient...
+ for (unsigned id = path.m_start; id <= path.m_end; ++id)
+ {
+ if (id < first_obj || id >= last_obj)
+ continue;
+
+ Rect obj_bounds = m_document.m_objects.bounds[id];
+
+ obj_bounds.x *= pbounds.w;
+ obj_bounds.x += pbounds.x;
+ obj_bounds.y *= pbounds.h;
+ obj_bounds.y += pbounds.y;
+ obj_bounds.w *= pbounds.w;
+ obj_bounds.h *= pbounds.h;
+
+ if (!m_use_gpu_transform)
+ obj_bounds = TransformToViewCoords(obj_bounds);
+ GPUObjBounds gpu_bounds = {
+ ClampFloat(obj_bounds.x),
+ ClampFloat(obj_bounds.y),
+ ClampFloat(obj_bounds.x + obj_bounds.w),
+ ClampFloat(obj_bounds.y + obj_bounds.h)
+ };
+ obj_bounds_builder.Add(gpu_bounds);
+ //Debug("Path %d %s -> %s via %s", id, m_document.m_objects.bounds[id].Str().c_str(), obj_bounds.Str().c_str(), pbounds.Str().c_str());
+ }
+ GPUObjBounds p_gpu_bounds = {
+ ClampFloat(pbounds.x),
+ ClampFloat(pbounds.y),
+ ClampFloat(pbounds.x + pbounds.w),
+ ClampFloat(pbounds.y + pbounds.h)
+ };
+ obj_bounds_builder.Add(p_gpu_bounds);
+ }
+ #endif