SubWidgetPrivateData.hpp (2043B)
1 /* 2 * DISTRHO Plugin Framework (DPF) 3 * Copyright (C) 2012-2021 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_SUBWIDGET_PRIVATE_DATA_HPP_INCLUDED 18 #define DGL_SUBWIDGET_PRIVATE_DATA_HPP_INCLUDED 19 20 #include "../SubWidget.hpp" 21 22 START_NAMESPACE_DGL 23 24 // -------------------------------------------------------------------------------------------------------------------- 25 26 struct SubWidget::PrivateData { 27 SubWidget* const self; 28 Widget* const selfw; 29 Widget* const parentWidget; 30 Point<int> absolutePos; 31 Point<int> margin; 32 bool needsFullViewportForDrawing; // needed for widgets drawing out of bounds 33 bool needsViewportScaling; // needed for NanoVG 34 bool skipDrawing; // for context reuse in NanoVG based guis 35 double viewportScaleFactor; // auto-scaling for NanoVG 36 37 explicit PrivateData(SubWidget* const s, Widget* const pw); 38 ~PrivateData(); 39 40 // NOTE display function is different depending on build type, must call displaySubWidgets at the end 41 void display(uint width, uint height, double autoScaleFactor); 42 43 DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) 44 }; 45 46 // -------------------------------------------------------------------------------------------------------------------- 47 48 END_NAMESPACE_DGL 49 50 #endif // DGL_SUBWIDGET_PRIVATE_DATA_HPP_INCLUDED