1 /* === S Y N F I G ========================================================= */ 2 /*! \file synfig/rendering/common/task/tasklayer.cpp 3 ** \brief TaskLayer 4 ** 5 ** $Id$ 6 ** 7 ** \legal 8 ** ......... ... 2016 Ivan Mahonin 9 ** 10 ** This package is free software; you can redistribute it and/or 11 ** modify it under the terms of the GNU General Public License as 12 ** published by the Free Software Foundation; either version 2 of 13 ** the License, or (at your option) any later version. 14 ** 15 ** This package is distributed in the hope that it will be useful, 16 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 17 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 ** General Public License for more details. 19 ** \endlegal 20 */ 21 /* ========================================================================= */ 22 23 /* === H E A D E R S ======================================================= */ 24 25 #ifdef USING_PCH 26 # include "pch.h" 27 #else 28 #ifdef HAVE_CONFIG_H 29 # include <config.h> 30 #endif 31 32 #ifndef _WIN32 33 #include <unistd.h> 34 #include <sys/types.h> 35 #include <signal.h> 36 #endif 37 38 #include "tasklayer.h" 39 40 #include <synfig/context.h> 41 #include <synfig/layers/layer_rendering_task.h> 42 43 #endif 44 45 using namespace synfig; 46 using namespace rendering; 47 48 /* === M A C R O S ========================================================= */ 49 50 /* === G L O B A L S ======================================================= */ 51 52 /* === P R O C E D U R E S ================================================= */ 53 54 /* === M E T H O D S ======================================================= */ 55 56 Rect calc_bounds() const57TaskLayer::calc_bounds() const 58 { 59 if (!layer) return Rect::zero(); 60 61 etl::handle<Layer_RenderingTask> sub_layer(new Layer_RenderingTask()); 62 sub_layer->tasks.push_back(sub_task()); 63 64 CanvasBase fake_canvas_base; 65 fake_canvas_base.push_back(layer); 66 fake_canvas_base.push_back(sub_layer); 67 fake_canvas_base.push_back(Layer::Handle()); 68 69 Context context(fake_canvas_base.begin(), ContextParams()); 70 return context.get_full_bounding_rect(); 71 } 72 73 /* === E N T R Y P O I N T ================================================= */ 74