DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

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