// when a pastecanvas that contains another pastecanvas is copy/pasted // from one document to another, only the outermost pastecanvas was // getting its renddesc set to match that of its new parent. this // function is used to recurse through the pastecanvas copying its // renddesc to any pastecanvases it contains (bug #2116947, svn r2200) void Layer_PasteCanvas::update_renddesc() { if(!get_canvas() || !canvas || !canvas->is_inline()) return; canvas->rend_desc()=get_canvas()->rend_desc(); for (IndependentContext iter = canvas->get_independent_context(); !iter->empty(); iter++) { etl::handle<Layer_PasteCanvas> paste = etl::handle<Layer_PasteCanvas>::cast_dynamic(*iter); if (paste) paste->update_renddesc(); } }
void Import::set_time(IndependentContext context, Time time, const Point &pos)const { Time time_offset=param_time_offset.get(Time()); switch (get_method()) { case SOFTWARE: if(get_amount() && importer && importer->is_animated()) importer->get_frame(surface,get_canvas()->rend_desc(),time+time_offset,trimmed,width,height,top,left); break; case OPENGL: break; case CAIRO: { if(get_amount() && cimporter && cimporter->is_animated()) { cairo_surface_t* cs; cimporter->get_frame(cs, get_canvas()->rend_desc(), time+time_offset, trimmed, width, height, top, left); if(cs) { csurface.set_cairo_surface(cs); csurface.map_cairo_image(); cairo_surface_destroy(cs); } } break; } } context.set_time(time,pos); }
void Import::load_resources_vfunc(IndependentContext context, Time time)const { Time time_offset=param_time_offset.get(Time()); if(get_amount() && importer && importer->is_animated()) rendering_surface = new rendering::SurfaceResource( importer->get_frame(get_canvas()->rend_desc(), time+time_offset) ); context.load_resources(time); }
void Layer_PasteCanvas::set_time(IndependentContext context, Time time)const { Time time_offset=param_time_offset.get(Time()); if(depth==MAX_DEPTH)return;depth_counter counter(depth); param_curr_time.set(time); context.set_time(time); if(canvas) canvas->set_time(time+time_offset); }
void Layer_MotionBlur::set_time(IndependentContext context, Time time, const Point &pos)const { context.set_time(time,pos); time_cur=time; }
void Layer_MotionBlur::set_time(IndependentContext context, Time time)const { context.set_time(time); time_cur=time; }
void Layer_Skeleton::set_time(IndependentContext context, Time time, const Point &pos)const { const_cast<Layer_Skeleton*>(this)->sync(); context.set_time(time,pos); }
void Region::set_time(IndependentContext context, Time time, Vector pos)const { const_cast<Region*>(this)->sync(); context.set_time(time,pos); }