synfig::Layer::Handle Layer_PasteCanvas::hit_check(synfig::Context context, const synfig::Point &pos)const { if(depth==MAX_DEPTH)return 0; depth_counter counter(depth); Transformation transformation(get_summary_transformation()); bool children_lock=param_children_lock.get(bool(true)); ContextParams cp(context.get_params()); apply_z_range_to_params(cp); if (canvas) { Point target_pos = transformation.back_transform(pos); if(canvas && get_amount() && canvas->get_context(cp).get_color(target_pos).get_a()>=0.25) { if(!children_lock) { return canvas->get_context(cp).hit_check(target_pos); } return const_cast<Layer_PasteCanvas*>(this); } } return context.hit_check(pos); }
synfig::Layer::Handle Layer_PasteCanvas::hit_check(synfig::Context context, const synfig::Point &pos)const { if(depth==MAX_DEPTH)return 0;depth_counter counter(depth); Vector origin=param_origin.get(Vector()); Vector focus=param_focus.get(Vector()); Real zoom=param_zoom.get(Real()); bool children_lock=param_children_lock.get(bool(true)); ContextParams cp(context.get_params()); cp.z_range=param_z_range.get(bool()); cp.z_range_position=param_z_range_position.get(Real()); cp.z_range_depth=param_z_range_depth.get(Real()); cp.z_range_blur=param_z_range_blur.get(Real()); if (canvas) { Point target_pos=(pos-focus-origin)/exp(zoom)+focus; if(canvas && get_amount() && canvas->get_context(cp).get_color(target_pos).get_a()>=0.25) { if(!children_lock) { return canvas->get_context(cp).hit_check(target_pos); } return const_cast<Layer_PasteCanvas*>(this); } } return context.hit_check(pos); }