File indexing completed on 2024-05-12 05:34:37
0001 #ifndef oxygenwidgetsizedata_h 0002 #define oxygenwidgetsizedata_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 * SPDX-FileCopyrightText: 2010 Ruslan Kabatsayev <b7.10110111@gmail.com> 0007 * 0008 * SPDX-License-Identifier: LGPL-2.0-or-later 0009 */ 0010 0011 #include "../oxygenflags.h" 0012 0013 #include <gtk/gtk.h> 0014 0015 namespace Oxygen 0016 { 0017 // track main window resize events 0018 class WidgetSizeData 0019 { 0020 0021 public: 0022 0023 //! constructor 0024 WidgetSizeData( void ): 0025 _target(NULL), 0026 _width(-1), 0027 _height(-1), 0028 _alpha(false) 0029 {} 0030 0031 //! destructor 0032 virtual ~WidgetSizeData( void ) 0033 {} 0034 0035 //! setup connections 0036 void connect( GtkWidget* widget ) 0037 { _target = widget; } 0038 0039 //! disconnect 0040 void disconnect( GtkWidget* ) 0041 { _target = 0L; } 0042 0043 //! changed flags 0044 enum ChangedFlag 0045 { 0046 SizeChanged = 1<<0, 0047 AlphaChanged = 1<<1 0048 }; 0049 0050 OX_DECLARE_FLAGS( ChangedFlags, ChangedFlag ) 0051 0052 //! update widget size and alpha 0053 /*! return bitmask on what was changed */ 0054 ChangedFlags update(); 0055 0056 //! width 0057 int width( void ) const 0058 { return _width; } 0059 0060 //! height 0061 int height( void ) const 0062 { return _height; } 0063 0064 //! alpha 0065 bool alpha( void ) const 0066 { return _alpha; } 0067 0068 private: 0069 0070 //! target widget 0071 GtkWidget* _target; 0072 0073 //! old width 0074 int _width; 0075 0076 //! old height 0077 int _height; 0078 0079 //! whether the widget has alpha channel 0080 bool _alpha; 0081 0082 }; 0083 0084 OX_DECLARE_OPERATORS_FOR_FLAGS( WidgetSizeData::ChangedFlags ) 0085 0086 } 0087 0088 #endif