WidgetPrivateData.hpp (2288B)
1 /* 2 * DISTRHO Plugin Framework (DPF) 3 * Copyright (C) 2012-2022 Filipe Coelho <falktx@falktx.com> 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any purpose with 6 * or without fee is hereby granted, provided that the above copyright notice and this 7 * permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD 10 * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN 11 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 12 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef DGL_WIDGET_PRIVATE_DATA_HPP_INCLUDED 18 #define DGL_WIDGET_PRIVATE_DATA_HPP_INCLUDED 19 20 #include "../Widget.hpp" 21 22 #include <list> 23 24 START_NAMESPACE_DGL 25 26 // -------------------------------------------------------------------------------------------------------------------- 27 28 struct Widget::PrivateData { 29 Widget* const self; 30 TopLevelWidget* const topLevelWidget; 31 Widget* const parentWidget; 32 uint id; 33 char* name; 34 bool needsScaling; 35 bool visible; 36 Size<uint> size; 37 std::list<SubWidget*> subWidgets; 38 39 // called via TopLevelWidget 40 explicit PrivateData(Widget* const s, TopLevelWidget* const tlw); 41 // called via SubWidget 42 explicit PrivateData(Widget* const s, Widget* const pw); 43 ~PrivateData(); 44 45 void displaySubWidgets(uint width, uint height, double autoScaleFactor); 46 47 bool giveKeyboardEventForSubWidgets(const KeyboardEvent& ev); 48 bool giveCharacterInputEventForSubWidgets(const CharacterInputEvent& ev); 49 bool giveMouseEventForSubWidgets(MouseEvent& ev); 50 bool giveMotionEventForSubWidgets(MotionEvent& ev); 51 bool giveScrollEventForSubWidgets(ScrollEvent& ev); 52 53 static TopLevelWidget* findTopLevelWidget(Widget* const w); 54 55 DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) 56 }; 57 58 // -------------------------------------------------------------------------------------------------------------------- 59 60 END_NAMESPACE_DGL 61 62 #endif // DGL_WIDGET_PRIVATE_DATA_HPP_INCLUDED