1 /* AbiSource Application Framework 2 * Copyright (C) 2010 Patrik Fimml 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 2 7 * of the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 17 * 02110-1301 USA. 18 */ 19 20 #ifndef XAP_CUSTOMWIDGET_H 21 #define XAP_CUSTOMWIDGET_H 22 23 #include "ut_misc.h" 24 #include "gr_Graphics.h" 25 26 class ABI_EXPORT XAP_CustomWidget 27 { 28 public: XAP_CustomWidget()29 XAP_CustomWidget() {} ~XAP_CustomWidget()30 virtual ~XAP_CustomWidget() {} 31 32 virtual void queueDraw(const UT_Rect *clip=NULL); 33 34 /* derived classes should do their actual drawing here */ 35 virtual void draw(const UT_Rect *clip=NULL) = 0; 36 }; 37 38 /* utility class for widgets drawing in layout units */ 39 class ABI_EXPORT XAP_CustomWidgetLU: virtual public XAP_CustomWidget 40 { 41 public: 42 virtual GR_Graphics *getGraphics() const = 0; 43 virtual void queueDrawLU(const UT_Rect *clip); 44 45 virtual void draw(const UT_Rect *clip); 46 47 protected: 48 virtual void drawLU(const UT_Rect *clip) = 0; 49 }; 50 51 #endif 52