File indexing completed on 2024-05-12 05:34:33

0001 #ifndef oxygenflatwidgetengine_h
0002 #define oxygenflatwidgetengine_h
0003 /*
0004 * this file is part of the oxygen gtk engine
0005 * SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0006 *
0007 * SPDX-License-Identifier: LGPL-2.0-or-later
0008 */
0009 
0010 #include "oxygenbaseengine.h"
0011 
0012 #include <gtk/gtk.h>
0013 #include <cassert>
0014 #include <set>
0015 
0016 namespace Oxygen
0017 {
0018     //! forward declaration
0019     class Animations;
0020 
0021     //! associates widgets with some type of data
0022     class FlatWidgetEngine: public BaseEngine
0023     {
0024 
0025         public:
0026 
0027         //! constructor
0028         FlatWidgetEngine( Animations* widget ):
0029             BaseEngine( widget )
0030             {}
0031 
0032         //! destructor
0033         virtual ~FlatWidgetEngine( void )
0034         {}
0035 
0036         //! register widget
0037         virtual bool registerWidget( GtkWidget* widget )
0038         { return registerFlatWidget( widget ); }
0039 
0040         //! register widget
0041         virtual bool registerFlatWidget( GtkWidget* );
0042 
0043         //! register widget
0044         virtual bool registerPaintWidget( GtkWidget* );
0045 
0046         //! unregister widget
0047         virtual void unregisterWidget( GtkWidget* widget )
0048         {
0049             _flatData.erase( widget );
0050             _paintData.erase( widget );
0051         }
0052 
0053         //! true if one of widgets parent is included
0054         virtual GtkWidget* flatParent( GtkWidget* );
0055 
0056         protected:
0057 
0058         bool containsFlat( GtkWidget* widget ) const
0059         { return _flatData.find( widget ) != _flatData.end(); }
0060 
0061         bool containsPaint( GtkWidget* widget ) const
0062         { return _paintData.find( widget ) != _paintData.end(); }
0063 
0064         private:
0065 
0066         //! store registered widgets
0067         std::set<GtkWidget*> _flatData;
0068         std::set<GtkWidget*> _paintData;
0069 
0070     };
0071 
0072 }
0073 
0074 #endif