| @@ -7,7 +7,7 @@ namespace rack { | |||||
| namespace app { | namespace app { | ||||
| widget::Widget* browserCreate(); | |||||
| PRIVATE widget::Widget* browserCreate(); | |||||
| } // namespace app | } // namespace app | ||||
| @@ -7,7 +7,7 @@ namespace rack { | |||||
| namespace app { | namespace app { | ||||
| widget::Widget* createMenuBar(); | |||||
| PRIVATE widget::Widget* createMenuBar(); | |||||
| } // namespace app | } // namespace app | ||||
| @@ -116,10 +116,10 @@ struct ModuleWidget : widget::OpaqueWidget { | |||||
| void removeAction(); | void removeAction(); | ||||
| void createContextMenu(); | void createContextMenu(); | ||||
| INTERNAL math::Vec& dragOffset(); | |||||
| INTERNAL bool& dragEnabled(); | |||||
| INTERNAL math::Vec& oldPos(); | |||||
| INTERNAL engine::Module* releaseModule(); | |||||
| PRIVATE math::Vec& dragOffset(); | |||||
| PRIVATE bool& dragEnabled(); | |||||
| PRIVATE math::Vec& oldPos(); | |||||
| PRIVATE engine::Module* releaseModule(); | |||||
| }; | }; | ||||
| @@ -16,8 +16,8 @@ struct RackScrollWidget : ui::ScrollWidget { | |||||
| widget::ZoomWidget* zoomWidget; | widget::ZoomWidget* zoomWidget; | ||||
| RackWidget* rackWidget; | RackWidget* rackWidget; | ||||
| RackScrollWidget(); | |||||
| ~RackScrollWidget(); | |||||
| PRIVATE RackScrollWidget(); | |||||
| PRIVATE ~RackScrollWidget(); | |||||
| void reset(); | void reset(); | ||||
| /** Gets the top-left scroll offset in grid coordinates. | /** Gets the top-left scroll offset in grid coordinates. | ||||
| @@ -26,8 +26,8 @@ struct RackWidget : widget::OpaqueWidget { | |||||
| ParamWidget* touchedParam = NULL; | ParamWidget* touchedParam = NULL; | ||||
| int nextCableColorId = 0; | int nextCableColorId = 0; | ||||
| RackWidget(); | |||||
| ~RackWidget(); | |||||
| PRIVATE RackWidget(); | |||||
| PRIVATE ~RackWidget(); | |||||
| void step() override; | void step() override; | ||||
| void draw(const DrawArgs& args) override; | void draw(const DrawArgs& args) override; | ||||
| @@ -23,8 +23,8 @@ struct Scene : widget::OpaqueWidget { | |||||
| /** The last mouse position in the Scene */ | /** The last mouse position in the Scene */ | ||||
| math::Vec mousePos; | math::Vec mousePos; | ||||
| Scene(); | |||||
| ~Scene(); | |||||
| PRIVATE Scene(); | |||||
| PRIVATE ~Scene(); | |||||
| math::Vec getMousePos(); | math::Vec getMousePos(); | ||||
| void step() override; | void step() override; | ||||
| void draw(const DrawArgs& args) override; | void draw(const DrawArgs& args) override; | ||||
| @@ -7,7 +7,7 @@ namespace rack { | |||||
| namespace app { | namespace app { | ||||
| widget::Widget* tipWindowCreate(); | |||||
| PRIVATE widget::Widget* tipWindowCreate(); | |||||
| } // namespace app | } // namespace app | ||||
| @@ -19,7 +19,7 @@ struct Module; | |||||
| namespace asset { | namespace asset { | ||||
| void init(); | |||||
| PRIVATE void init(); | |||||
| /** Returns the path of a system asset. Read-only files. */ | /** Returns the path of a system asset. Read-only files. */ | ||||
| std::string system(std::string filename = ""); | std::string system(std::string filename = ""); | ||||
| @@ -37,10 +37,10 @@ std::string plugin(plugin::Plugin* plugin, std::string filename = ""); | |||||
| // Set these before calling init() to override the default paths | // Set these before calling init() to override the default paths | ||||
| extern std::string systemDir; | |||||
| extern std::string userDir; | |||||
| PRIVATE extern std::string systemDir; | |||||
| PRIVATE extern std::string userDir; | |||||
| // Only defined on Mac | // Only defined on Mac | ||||
| extern std::string bundlePath; | |||||
| PRIVATE extern std::string bundlePath; | |||||
| } // namespace asset | } // namespace asset | ||||
| @@ -194,8 +194,8 @@ struct Port { | |||||
| }; | }; | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| /** Registers a new audio driver. Takes pointer ownership. | /** Registers a new audio driver. Takes pointer ownership. | ||||
| Driver ID is stored in patches and must be unique. -1 is reserved. | Driver ID is stored in patches and must be unique. -1 is reserved. | ||||
| */ | */ | ||||
| @@ -15,8 +15,6 @@ | |||||
| #include <string> | #include <string> | ||||
| #include <stdexcept> | #include <stdexcept> | ||||
| #include <logger.hpp> | |||||
| /** Attribute for deprecated functions and symbols. | /** Attribute for deprecated functions and symbols. | ||||
| E.g. | E.g. | ||||
| @@ -30,12 +28,10 @@ E.g. | |||||
| #endif | #endif | ||||
| /** Attribute for private functions and symbols not intended to be used by plugins. | /** Attribute for private functions and symbols not intended to be used by plugins. | ||||
| When #including rack.hpp, using an INTERNAL function prints a compile-time warning and will not link. | |||||
| When #including rack.hpp, attempting to call PRIVATE functions or access variables will result in a compile-time error. | |||||
| */ | */ | ||||
| #if defined ARCH_WIN | |||||
| #define INTERNAL | |||||
| #else | |||||
| #define INTERNAL __attribute__((visibility("hidden"))) | |||||
| #ifndef PRIVATE | |||||
| #define PRIVATE | |||||
| #endif | #endif | ||||
| @@ -271,3 +267,7 @@ extern const std::string API_URL; | |||||
| } // namespace rack | } // namespace rack | ||||
| // Logger depends on common.hpp, but it is handy to include it along with common.hpp. | |||||
| #include <logger.hpp> | |||||
| @@ -31,10 +31,10 @@ using namespace window; | |||||
| static const NVGcolor SCHEME_BLACK_TRANSPARENT = nvgRGBA(0x00, 0x00, 0x00, 0x00); | static const NVGcolor SCHEME_BLACK_TRANSPARENT = nvgRGBA(0x00, 0x00, 0x00, 0x00); | ||||
| static const NVGcolor SCHEME_BLACK = nvgRGB(0x00, 0x00, 0x00); | static const NVGcolor SCHEME_BLACK = nvgRGB(0x00, 0x00, 0x00); | ||||
| static const NVGcolor SCHEME_WHITE = nvgRGB(0xff, 0xff, 0xff); | static const NVGcolor SCHEME_WHITE = nvgRGB(0xff, 0xff, 0xff); | ||||
| static const NVGcolor SCHEME_RED = nvgRGB(0xed, 0x2c, 0x24); | |||||
| static const NVGcolor SCHEME_RED = nvgRGB(0xff, 0x00, 0x48); | |||||
| static const NVGcolor SCHEME_ORANGE = nvgRGB(0xf2, 0xb1, 0x20); | static const NVGcolor SCHEME_ORANGE = nvgRGB(0xf2, 0xb1, 0x20); | ||||
| static const NVGcolor SCHEME_YELLOW = nvgRGB(0xf9, 0xdf, 0x1c); | static const NVGcolor SCHEME_YELLOW = nvgRGB(0xf9, 0xdf, 0x1c); | ||||
| static const NVGcolor SCHEME_GREEN = nvgRGB(0x90, 0xc7, 0x3e); | |||||
| static const NVGcolor SCHEME_GREEN = nvgRGB(0x00, 0xe6, 0x72); | |||||
| static const NVGcolor SCHEME_CYAN = nvgRGB(0x22, 0xe6, 0xef); | static const NVGcolor SCHEME_CYAN = nvgRGB(0x22, 0xe6, 0xef); | ||||
| static const NVGcolor SCHEME_BLUE = nvgRGB(0x29, 0xb2, 0xef); | static const NVGcolor SCHEME_BLUE = nvgRGB(0x29, 0xb2, 0xef); | ||||
| static const NVGcolor SCHEME_PURPLE = nvgRGB(0xd5, 0x2b, 0xed); | static const NVGcolor SCHEME_PURPLE = nvgRGB(0xd5, 0x2b, 0xed); | ||||
| @@ -7,8 +7,8 @@ namespace rack { | |||||
| namespace discord { | namespace discord { | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| } // namespace discord | } // namespace discord | ||||
| @@ -20,7 +20,7 @@ struct Cable { | |||||
| json_t* toJson(); | json_t* toJson(); | ||||
| void fromJson(json_t* rootJ); | void fromJson(json_t* rootJ); | ||||
| INTERNAL static void jsonStripIds(json_t* rootJ); | |||||
| PRIVATE static void jsonStripIds(json_t* rootJ); | |||||
| }; | }; | ||||
| @@ -23,14 +23,14 @@ struct Engine { | |||||
| struct Internal; | struct Internal; | ||||
| Internal* internal; | Internal* internal; | ||||
| Engine(); | |||||
| ~Engine(); | |||||
| PRIVATE Engine(); | |||||
| PRIVATE ~Engine(); | |||||
| /** Removes all modules and cables. | /** Removes all modules and cables. | ||||
| Write-locks. | Write-locks. | ||||
| */ | */ | ||||
| void clear(); | void clear(); | ||||
| INTERNAL void clear_NoLock(); | |||||
| PRIVATE void clear_NoLock(); | |||||
| /** Advances the engine by `frames` frames. | /** Advances the engine by `frames` frames. | ||||
| Only call this method from the master module. | Only call this method from the master module. | ||||
| Read-locks. Also locks so only one stepBlock() can be called simultaneously or recursively. | Read-locks. Also locks so only one stepBlock() can be called simultaneously or recursively. | ||||
| @@ -42,7 +42,7 @@ struct Engine { | |||||
| Write-locks. | Write-locks. | ||||
| */ | */ | ||||
| void setMasterModule(Module* module); | void setMasterModule(Module* module); | ||||
| INTERNAL void setMasterModule_NoLock(Module* module); | |||||
| PRIVATE void setMasterModule_NoLock(Module* module); | |||||
| Module* getMasterModule(); | Module* getMasterModule(); | ||||
| /** Returns the sample rate used by the engine for stepping each module. | /** Returns the sample rate used by the engine for stepping each module. | ||||
| @@ -51,7 +51,7 @@ struct Engine { | |||||
| /** Sets the sample rate to step the modules. | /** Sets the sample rate to step the modules. | ||||
| Write-locks. | Write-locks. | ||||
| */ | */ | ||||
| INTERNAL void setSampleRate(float sampleRate); | |||||
| PRIVATE void setSampleRate(float sampleRate); | |||||
| /** Sets the sample rate if the sample rate in the settings is "Auto". | /** Sets the sample rate if the sample rate in the settings is "Auto". | ||||
| Write-locks. | Write-locks. | ||||
| */ | */ | ||||
| @@ -116,7 +116,7 @@ struct Engine { | |||||
| Write-locks. | Write-locks. | ||||
| */ | */ | ||||
| void removeModule(Module* module); | void removeModule(Module* module); | ||||
| INTERNAL void removeModule_NoLock(Module* module); | |||||
| PRIVATE void removeModule_NoLock(Module* module); | |||||
| /** Checks whether a Module is in the rack. | /** Checks whether a Module is in the rack. | ||||
| Read-locks. | Read-locks. | ||||
| */ | */ | ||||
| @@ -173,7 +173,7 @@ struct Engine { | |||||
| Write-locks. | Write-locks. | ||||
| */ | */ | ||||
| void removeCable(Cable* cable); | void removeCable(Cable* cable); | ||||
| INTERNAL void removeCable_NoLock(Cable* cable); | |||||
| PRIVATE void removeCable_NoLock(Cable* cable); | |||||
| /** Checks whether a Cable is in the rack. | /** Checks whether a Cable is in the rack. | ||||
| Read-locks. | Read-locks. | ||||
| */ | */ | ||||
| @@ -203,7 +203,7 @@ struct Engine { | |||||
| Write-locks. | Write-locks. | ||||
| */ | */ | ||||
| void removeParamHandle(ParamHandle* paramHandle); | void removeParamHandle(ParamHandle* paramHandle); | ||||
| INTERNAL void removeParamHandle_NoLock(ParamHandle* paramHandle); | |||||
| PRIVATE void removeParamHandle_NoLock(ParamHandle* paramHandle); | |||||
| /** Returns the unique ParamHandle for the given paramId | /** Returns the unique ParamHandle for the given paramId | ||||
| Read-locks. | Read-locks. | ||||
| */ | */ | ||||
| @@ -229,7 +229,7 @@ struct Engine { | |||||
| /** If no master module is set, the fallback Engine thread will step blocks, using the CPU clock for timing. | /** If no master module is set, the fallback Engine thread will step blocks, using the CPU clock for timing. | ||||
| */ | */ | ||||
| void startFallbackThread(); | |||||
| PRIVATE void startFallbackThread(); | |||||
| }; | }; | ||||
| @@ -440,12 +440,12 @@ struct Module { | |||||
| virtual void onSampleRateChange() {} | virtual void onSampleRateChange() {} | ||||
| bool isBypassed(); | bool isBypassed(); | ||||
| INTERNAL void setBypassed(bool bypassed); | |||||
| INTERNAL const float* meterBuffer(); | |||||
| INTERNAL int meterLength(); | |||||
| INTERNAL int meterIndex(); | |||||
| INTERNAL void doProcess(const ProcessArgs& args); | |||||
| INTERNAL static void jsonStripIds(json_t* rootJ); | |||||
| PRIVATE void setBypassed(bool bypassed); | |||||
| PRIVATE const float* meterBuffer(); | |||||
| PRIVATE int meterLength(); | |||||
| PRIVATE int meterIndex(); | |||||
| PRIVATE void doProcess(const ProcessArgs& args); | |||||
| PRIVATE static void jsonStripIds(json_t* rootJ); | |||||
| }; | }; | ||||
| @@ -7,8 +7,8 @@ namespace rack { | |||||
| namespace gamepad { | namespace gamepad { | ||||
| void init(); | |||||
| void step(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void step(); | |||||
| } // namespace gamepad | } // namespace gamepad | ||||
| @@ -166,9 +166,9 @@ struct State { | |||||
| /** Action index of saved patch state. */ | /** Action index of saved patch state. */ | ||||
| int savedIndex; | int savedIndex; | ||||
| State(); | |||||
| ~State(); | |||||
| void clear(); | |||||
| PRIVATE State(); | |||||
| PRIVATE ~State(); | |||||
| PRIVATE void clear(); | |||||
| void push(Action* action); | void push(Action* action); | ||||
| void undo(); | void undo(); | ||||
| void redo(); | void redo(); | ||||
| @@ -8,7 +8,7 @@ namespace rack { | |||||
| namespace keyboard { | namespace keyboard { | ||||
| void init(); | |||||
| PRIVATE void init(); | |||||
| void press(int key); | void press(int key); | ||||
| void release(int key); | void release(int key); | ||||
| /** pos is in the unit box. */ | /** pos is in the unit box. */ | ||||
| @@ -17,19 +17,19 @@ struct UpdateInfo { | |||||
| }; | }; | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| void checkAppUpdate(); | |||||
| PRIVATE void checkAppUpdate(); | |||||
| bool isAppUpdateAvailable(); | bool isAppUpdateAvailable(); | ||||
| bool isLoggedIn(); | bool isLoggedIn(); | ||||
| void logIn(std::string email, std::string password); | |||||
| void logOut(); | |||||
| void checkUpdates(); | |||||
| bool hasUpdates(); | |||||
| void syncUpdate(std::string slug); | |||||
| void syncUpdates(); | |||||
| PRIVATE void logIn(std::string email, std::string password); | |||||
| PRIVATE void logOut(); | |||||
| PRIVATE void checkUpdates(); | |||||
| PRIVATE bool hasUpdates(); | |||||
| PRIVATE void syncUpdate(std::string slug); | |||||
| PRIVATE void syncUpdates(); | |||||
| extern std::string appVersion; | extern std::string appVersion; | ||||
| @@ -1,4 +1,5 @@ | |||||
| #pragma once | #pragma once | ||||
| #include <common.hpp> | |||||
| /** Example usage: | /** Example usage: | ||||
| @@ -30,8 +31,8 @@ enum Level { | |||||
| FATAL_LEVEL | FATAL_LEVEL | ||||
| }; | }; | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| /** Do not use this function directly. Use the macros above. | /** Do not use this function directly. Use the macros above. | ||||
| Thread-safe, meaning messages cannot overlap each other in the log. | Thread-safe, meaning messages cannot overlap each other in the log. | ||||
| */ | */ | ||||
| @@ -39,7 +40,7 @@ __attribute__((format(printf, 5, 6))) | |||||
| void log(Level level, const char* filename, int line, const char* func, const char* format, ...); | void log(Level level, const char* filename, int line, const char* func, const char* format, ...); | ||||
| /** Returns whether the last log file failed to end properly, due to a possible crash. | /** Returns whether the last log file failed to end properly, due to a possible crash. | ||||
| */ | */ | ||||
| bool wasTruncated(); | |||||
| PRIVATE bool wasTruncated(); | |||||
| } // namespace logger | } // namespace logger | ||||
| @@ -288,8 +288,8 @@ struct Output : Port { | |||||
| }; | }; | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| /** Registers a new MIDI driver. Takes pointer ownership. */ | /** Registers a new MIDI driver. Takes pointer ownership. */ | ||||
| void addDriver(int driverId, Driver* driver); | void addDriver(int driverId, Driver* driver); | ||||
| std::vector<int> getDriverIds(); | std::vector<int> getDriverIds(); | ||||
| @@ -20,8 +20,8 @@ enum Method { | |||||
| METHOD_DELETE, | METHOD_DELETE, | ||||
| }; | }; | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| /** Requests a JSON API URL over HTTP(S), using the data as the query (GET) or the body (POST, etc) | /** Requests a JSON API URL over HTTP(S), using the data as the query (GET) or the body (POST, etc) | ||||
| Caller must json_decref() if return value is non-NULL. | Caller must json_decref() if return value is non-NULL. | ||||
| */ | */ | ||||
| @@ -25,9 +25,9 @@ struct Manager { | |||||
| /** Append to this while loading/saving a patch to display messages to the user after success. */ | /** Append to this while loading/saving a patch to display messages to the user after success. */ | ||||
| std::string warningLog; | std::string warningLog; | ||||
| Manager(); | |||||
| ~Manager(); | |||||
| void launch(std::string pathArg); | |||||
| PRIVATE Manager(); | |||||
| PRIVATE ~Manager(); | |||||
| PRIVATE void launch(std::string pathArg); | |||||
| /** Clears the patch. */ | /** Clears the patch. */ | ||||
| void clear(); | void clear(); | ||||
| /** Saves the patch and nothing else. */ | /** Saves the patch and nothing else. */ | ||||
| @@ -11,8 +11,8 @@ namespace rack { | |||||
| namespace plugin { | namespace plugin { | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| /** Finds a loaded Plugin by slug. */ | /** Finds a loaded Plugin by slug. */ | ||||
| Plugin* getPlugin(const std::string& pluginSlug); | Plugin* getPlugin(const std::string& pluginSlug); | ||||
| /** Finds a loaded Model by plugin and model slug. */ | /** Finds a loaded Model by plugin and model slug. */ | ||||
| @@ -6,6 +6,15 @@ The following headers are the "public" API of Rack. | |||||
| Directly including Rack headers other than rack.hpp in your plugin is unsupported/unstable, since filenames and locations of symbols may change in any Rack version. | Directly including Rack headers other than rack.hpp in your plugin is unsupported/unstable, since filenames and locations of symbols may change in any Rack version. | ||||
| */ | */ | ||||
| #ifdef PRIVATE | |||||
| #error "Plugins must only include rack.hpp. Including other Rack headers is unsupported." | |||||
| #endif | |||||
| /** Functions and symbols with the PRIVATE attribute should not be called/used by plugins. | |||||
| */ | |||||
| #define PRIVATE __attribute__((error("Using internal Rack function or symbol"))) | |||||
| #include <common.hpp> | #include <common.hpp> | ||||
| #include <math.hpp> | #include <math.hpp> | ||||
| #include <string.hpp> | #include <string.hpp> | ||||
| @@ -113,14 +122,6 @@ Directly including Rack headers other than rack.hpp in your plugin is unsupporte | |||||
| #include <simd/functions.hpp> | #include <simd/functions.hpp> | ||||
| #undef INTERNAL | |||||
| #if defined ARCH_WIN | |||||
| #define INTERNAL __attribute__((error("Using internal Rack function or symbol"))) | |||||
| #else | |||||
| #define INTERNAL __attribute__((visibility("hidden"))) __attribute__((error("Using internal Rack function or symbol"))) | |||||
| #endif | |||||
| namespace rack { | namespace rack { | ||||
| @@ -5,7 +5,7 @@ | |||||
| namespace rack { | namespace rack { | ||||
| void rtaudioInit(); | |||||
| PRIVATE void rtaudioInit(); | |||||
| } // namespace rack | } // namespace rack | ||||
| @@ -5,7 +5,7 @@ | |||||
| namespace rack { | namespace rack { | ||||
| void rtmidiInit(); | |||||
| PRIVATE void rtmidiInit(); | |||||
| } // namespace rack | } // namespace rack | ||||
| @@ -101,11 +101,11 @@ extern std::map<std::string, std::set<std::string>> moduleWhitelist; | |||||
| bool isModuleWhitelisted(const std::string& pluginSlug, const std::string& moduleSlug); | bool isModuleWhitelisted(const std::string& pluginSlug, const std::string& moduleSlug); | ||||
| void init(); | |||||
| json_t* toJson(); | |||||
| void fromJson(json_t* rootJ); | |||||
| void save(std::string path = ""); | |||||
| void load(std::string path = ""); | |||||
| PRIVATE void init(); | |||||
| PRIVATE json_t* toJson(); | |||||
| PRIVATE void fromJson(json_t* rootJ); | |||||
| PRIVATE void save(std::string path = ""); | |||||
| PRIVATE void load(std::string path = ""); | |||||
| } // namespace settings | } // namespace settings | ||||
| @@ -189,7 +189,7 @@ The launched process will continue running if the current process is closed. | |||||
| */ | */ | ||||
| void runProcessDetached(const std::string& path); | void runProcessDetached(const std::string& path); | ||||
| void init(); | |||||
| PRIVATE void init(); | |||||
| } // namespace system | } // namespace system | ||||
| @@ -21,8 +21,8 @@ namespace rack { | |||||
| namespace ui { | namespace ui { | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| void setTheme(NVGcolor bg, NVGcolor fg); | void setTheme(NVGcolor bg, NVGcolor fg); | ||||
| @@ -65,19 +65,19 @@ struct Window { | |||||
| float windowRatio = 1.f; | float windowRatio = 1.f; | ||||
| std::shared_ptr<Font> uiFont; | std::shared_ptr<Font> uiFont; | ||||
| Window(); | |||||
| ~Window(); | |||||
| PRIVATE Window(); | |||||
| PRIVATE ~Window(); | |||||
| math::Vec getSize(); | math::Vec getSize(); | ||||
| void setSize(math::Vec size); | void setSize(math::Vec size); | ||||
| void run(); | |||||
| void step(); | |||||
| PRIVATE void run(); | |||||
| PRIVATE void step(); | |||||
| void activateContext(); | void activateContext(); | ||||
| /** Takes a screenshot of the screen and saves it to a PNG file. */ | /** Takes a screenshot of the screen and saves it to a PNG file. */ | ||||
| void screenshot(const std::string& screenshotPath); | |||||
| PRIVATE void screenshot(const std::string& screenshotPath); | |||||
| /** Saves a PNG image of all modules to `screenshotsDir/<plugin slug>/<module slug>.png`. | /** Saves a PNG image of all modules to `screenshotsDir/<plugin slug>/<module slug>.png`. | ||||
| Skips screenshot if the file already exists. | Skips screenshot if the file already exists. | ||||
| */ | */ | ||||
| void screenshotModules(const std::string& screenshotsDir, float zoom = 1.f); | |||||
| PRIVATE void screenshotModules(const std::string& screenshotsDir, float zoom = 1.f); | |||||
| /** Request Window to be closed after rendering the current frame. */ | /** Request Window to be closed after rendering the current frame. */ | ||||
| void close(); | void close(); | ||||
| void cursorLock(); | void cursorLock(); | ||||
| @@ -100,12 +100,12 @@ struct Window { | |||||
| return Svg::load(filename); | return Svg::load(filename); | ||||
| } | } | ||||
| INTERNAL bool& fbDirtyOnSubpixelChange(); | |||||
| PRIVATE bool& fbDirtyOnSubpixelChange(); | |||||
| }; | }; | ||||
| void init(); | |||||
| void destroy(); | |||||
| PRIVATE void init(); | |||||
| PRIVATE void destroy(); | |||||
| } // namespace window | } // namespace window | ||||