| 
							- #pragma once
 - 
 - #include <set>
 - #include <map>
 - 
 - #include "util/math.hpp"  // Vec
 - #include "tags.hpp"  // ModelTag enum
 - #include "widgets.hpp"
 - 
 - 
 - struct NVGcontext;
 - 
 - 
 - namespace rack {
 - 
 - 
 - struct Font;
 - struct Widget;
 - struct RackWidget;
 - struct Toolbar;
 - struct RackScene;
 - struct Scene;
 - struct Model;
 - struct ParamWidget;
 - struct TextField;
 - 
 - 
 - //
 - // the structure fields reflect the original file locations
 - //  (e.g. 'window' was originally located in 'window.cpp')
 - //
 - struct GlobalUI {
 - 
 -    struct {
 -       void *lglw; // lglw_t
 -       NVGcontext *gVg;
 -       NVGcontext *gFramebufferVg;
 -       std::shared_ptr<Font> gGuiFont;
 -       float gPixelRatio;
 -       float gWindowRatio;
 -       bool gAllowCursorLock;
 -       int gGuiFrame;
 -       Vec gMousePos;
 - 
 -       std::string lastWindowTitle;
 - 
 -       int windowX;
 -       int windowY;
 -       int windowWidth;
 -       int windowHeight;
 - 
 -       std::map<std::string, std::weak_ptr<Font>> font_cache;
 -       std::map<std::string, std::weak_ptr<Image>> image_cache;
 -       std::map<std::string, std::weak_ptr<SVG>> svg_cache;
 -    } window;
 - 
 -    struct {
 -       Widget *gHoveredWidget;
 -       Widget *gDraggedWidget;
 -       Widget *gDragHoveredWidget;
 -       Widget *gFocusedWidget;
 -       Widget *gTempWidget;
 -    } widgets;
 - 
 -    struct {
 -       Scene *gScene;
 -    } ui;
 - 
 -    struct {
 -       std::set<Model*> sFavoriteModels;
 -       std::string sAuthorFilter;
 -       ModelTag sTagFilter;
 -    } module_browser;
 - 
 -    struct {
 -       std::string gApplicationName;
 -       std::string gApplicationVersion;
 -       std::string gApiHost;
 -       std::string gLatestVersion;
 -       bool gCheckVersion;
 - 
 -       RackWidget *gRackWidget;
 -       Toolbar *gToolbar;
 -       RackScene *gRackScene;
 - 
 -       std::mutex mtx_param;
 - 
 -       bool bLoadVSTUniqueParamBaseId;  // temp. false while cloning ModuleWidget
 -    } app;
 - 
 -    struct {
 -       int bnd_icon_image;
 -       int bnd_font;
 -    } blendish;
 - 
 -    struct {
 -       const ParamWidget *last_param_widget;  // never dereferenced, may have already been deleted. unset after redraw().
 -       int last_param_gid;      // updated during redraw()
 -       float last_param_value;  // updated in onMouseMove() and onChange(). corresponding param may not exist anymore.
 -       float value_clipboard;
 -       TextField *tf_id;
 -       TextField *tf_value;
 -       bool b_lock;  // true=don't update info (e.g. when receiving VST parameter updates from host)
 -       int placeholder_framecount;
 -    } param_info;
 - 
 -    bool b_fbo;  // usually true. set to false when using the VirtualBox GL driver.
 -    bool b_fbo_shared;  // this may or may not work. default is false (=> don't use FBOs in dynamically loaded modules).
 -    int pending_swap_interval; // -1=none, 1=vsync on, 0=vsync off
 - 
 -    void init(void) {
 -       
 -       window.lglw = NULL;
 -       window.gVg = NULL;
 -       window.gFramebufferVg = NULL;
 -       window.gPixelRatio = 1.0;
 -       window.gWindowRatio = 1.0;
 -       window.gAllowCursorLock = true;
 -       window.gGuiFrame = 0;
 -       window.windowX = 0;
 -       window.windowY = 0;
 -       window.windowWidth = 0;
 -       window.windowHeight = 0;
 - 
 -       widgets.gHoveredWidget = NULL;
 -       widgets.gDraggedWidget = NULL;
 -       widgets.gDragHoveredWidget = NULL;
 -       widgets.gFocusedWidget = NULL;
 -       widgets.gTempWidget = NULL;
 - 
 -       ui.gScene = NULL;
 - 
 -       module_browser.sTagFilter = ModelTag::NO_TAG;
 - 
 -       app.gApplicationName = "VeeSeeVST Rack";
 -       app.gApplicationVersion = TOSTRING(VERSION);
 -       app.gApiHost = "https://api.vcvrack.com";
 -       // app.gApiHost = "http://localhost:8081";
 -       app.gCheckVersion = true;
 - 
 -       app.gRackWidget = NULL;
 -       app.gToolbar = NULL;
 -       app.gRackScene = NULL;
 -   
 -       app.bLoadVSTUniqueParamBaseId = true;
 - 
 -       blendish.bnd_icon_image = -1;
 -       blendish.bnd_font = -1;
 - 
 -       param_info.last_param_widget = NULL;
 -       param_info.last_param_gid = 0;
 -       param_info.last_param_value = 0.0f;
 -       param_info.value_clipboard = 0.0f;
 -       param_info.tf_id = NULL;
 -       param_info.tf_value = NULL;
 -       param_info.b_lock = false;
 -       param_info.placeholder_framecount = 0;
 - 
 -       b_fbo = true;
 -       b_fbo_shared = false;
 -       pending_swap_interval = -1;
 -    } 
 - 
 - };
 - 
 - 
 - } // namespace rack
 
 
  |