1 /** 2 * @file 3 * @brief Header file for RendererBase class 4 * @author Duzy Chan <code@duzy.info> 5 * 6 * @ref License 7 */ 8 9 /* LICENSE 10 * 11 * Copyright (c) 2008-2019 OpenShot Studios, LLC 12 * <http://www.openshotstudios.com/>. This file is part of 13 * OpenShot Library (libopenshot), an open-source project dedicated to 14 * delivering high quality video editing and animation solutions to the 15 * world. For more information visit <http://www.openshot.org/>. 16 * 17 * OpenShot Library (libopenshot) is free software: you can redistribute it 18 * and/or modify it under the terms of the GNU Lesser General Public License 19 * as published by the Free Software Foundation, either version 3 of the 20 * License, or (at your option) any later version. 21 * 22 * OpenShot Library (libopenshot) is distributed in the hope that it will be 23 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 * GNU Lesser General Public License for more details. 26 * 27 * You should have received a copy of the GNU Lesser General Public License 28 * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>. 29 */ 30 31 #ifndef OPENSHOT_RENDERER_BASE_H 32 #define OPENSHOT_RENDERER_BASE_H 33 34 #include "Frame.h" 35 #include <cstdlib> // for realloc 36 #include <memory> 37 38 namespace openshot 39 { 40 class Frame; 41 42 /** 43 * @brief This is the base class of all Renderers in libopenshot. 44 * 45 * Renderers are responsible for rendering images of a video onto a 46 * display device. 47 */ 48 class RendererBase 49 { 50 public: 51 52 /// Paint(render) a video Frame. 53 void paint(const std::shared_ptr<openshot::Frame> & frame); 54 55 /// Allow manual override of the QWidget that is used to display 56 virtual void OverrideWidget(int64_t qwidget_address) = 0; 57 58 protected: 59 RendererBase(); 60 virtual ~RendererBase(); 61 62 virtual void render(std::shared_ptr<QImage> image) = 0; 63 }; 64 65 } 66 67 #endif 68