ofxSurfingImGui
ofxSurfingImGui copied to clipboard
( WIP ) ImGui Toolkit for openFrameworks apps: ofParameters Widgets and Layout Helpers. Modules/Engines: Log, Debugger, Docking, Layout Presets and more.
ofxSurfingImGui.
A Dear ImGui Toolkit
for openFrameworks
desktop app projects.
An extension for ofxImGui.
WORK IN PROGRESS!
OVERVIEW
- Bundled batteries for your full Desktop OF Apps.
- ofParameter Widgets.
- Layout and Style Helpers.
- Useful Modules/Systems.
- Workflow Engines for the final user.
FEATURES
-
Simple Setup:
- Simplified coder and user workflow.
- Many useful Internal states and persistent settings:
- Minimize, debug, extra, advanced, windows auto resize...
- Log, Notifier, and windows visibility and distribution.
- Global Scale.
- Useful API methods and Snippets:
- Help on populate Windows and Widgets.
- Speed-Up responsive Layout Helpers.
-
ofParameter Helpers:
- Many RAW DearImGui widgets adapted.
- Added custom useful widgets.
-
Multiple instances:
- Many windows around your classes and ofxAddons.
- All together without colliding.
- Four active Font Sizes for labels, widgets, and text paragraphs.
- Four optional extra fonts for alternate monospaced and non-monospaced.
- Extra Mouse Control:
- Wheel for tweaking:
- +Ctrl to finetune.
- Right-Click:
- To Reset to param Center.
- +Ctrl to Reset to Min.
- +Alt to Reset to Max.
- Wheel for tweaking:
-
Themes Editor example: ( WIP )
- 20+ bundled themes compilation.
- Hardcoded and
.ini
files. - File serializers, A-B compare, sizes and/or colors.
- Manager, Demo Window and Tester Widgets.
MODULES / SYSTEMS
-
Log System:
- With custom tags.
-
Notifier System:
- With custom layout and styles.
-
Debugger System:
- Metrics: frame rate and frame time.
- Profiler: Cpu and Gpu measurements.
-
Text Editor System:
- Language marks with custom marked keywords.
- Font sizes, color themes.
- Clipboard access and undo/redo history.
-
Image Inspector System:
- Zoom with pixel color picker.
-
Console System: ( WIP )
- Basic console/terminal module.
- Call methods/commands by typing into the console.
ENGINES
-
Windows Organizer:
- Aligner, cascade, and Group/Linker.
- Layout Presets Engine. ( WIP )
- Docking Helpers. ( WIP )
SCREENSHOTS
- Examples_0_Basic
- Examples_1_Widgets
- Examples_2_Modules
- Examples_3_Engines
- Examples_5_MultipleInstances
EXAMPLE: 00_HelloWorld
CODE
ofApp.h
#pragma once
#include "ofMain.h"
#include "ofxSurfingImGui.h"
class ofApp : public ofBaseApp
{
public:
void draw();
ofParameter<bool> bEnable{ "Enable", true };
ofParameter<float> speed{ "Speed", .5f, 0.f, 1.f };
ofParameterGroup params{ "MyGroup", bEnable, speed };
ofParameter<bool> bGui{ "Show", true };
ofxSurfingGui ui;
};
ofApp.cpp
#include "ofApp.h"
void ofApp::draw()
{
ui.Begin();
{
/* Put windows here */
if (ui.BeginWindow(bGui))
{
/* Put widgets here */
ui.AddLabelBig("00_HelloWorld");
ui.AddSpacing();
ui.Add(bEnable, OFX_IM_TOGGLE_BIG_BORDER_BLINK);
ui.Add(speed, OFX_IM_HSLIDER);
ui.AddSpacingSeparated();
ui.AddGroup(params, SurfingGuiGroupStyle_Collapsed);
ui.EndWindow();
}
}
ui.End();
}
REQUERIMENTS
IMGUI OF BACKEND
- Required: ofxImGui
- Dear ImGui v1.89.4 BackEnd for OF.
- Is the AWESOME @Daandelange's FORK.
- You MUST use this one!
- Do not use the @jvcleave's REPOSITORY!
WHY ANOTHER BACKEND FORK?
- What's new on the @Daandelange's ofxImGui FORK vs the @jvcleave's ORIGINAL REPOSITORY?
- Multi context/instances:
- Several ImGui windows from different addons without colliding.
- Easy to update to future NEW ImGui releases.
Currently, this fork is linked to the original develop branch from @jvcleave.
And will be probably merged into the master branch someday.
- Multi context/instances:
DATA ASSET FILES
- Recommended: JetBrainsMono-Bold.ttf
- The monospaced font file for the default theme.
- Put into
OF_APP/bin/data/assets/fonts/
.
- Optional: data.zip
- More font files (non-monospaced alternative) from the same family.
- Put into each OF project
OF_APP/bin/data/
.
ABOUT THE FONTS
The single font file for the currently used theme is JetBrainsMono-Bold.ttf. If that font is not located, it will search for a legacy font called telegrama_render.otf. If none of those fonts are located, it will work too, but using the default embedded ProggyClean.ttf font from ImGui. (So OF_APP/bin/data/
can also be completely empty too!)
RELATED LINKS
-
ofxSurfingImGuiExtra
- My Testing Sandbox with New WIP examples and new incoming widgets.
-
imgui/wiki/Useful-Extensions
- 3rd party ImGui modules/widgets that could be integrated.
-
imgui/labels/gallery
- Inspiration Gallery from ImGui user's apps.
-
ofxWindowApp
- Not required. Only for some examples.
-
ofxSurfingHelpers
- Not required. Only for some examples.
CURRENT SYSTEMS
-
Windows 11 / Visual Studio 2022.
- GitHub OF patch-release branch.
- Last official release OF 0.12.
-
macOS 12.5 Monterey / Xcode 14.2 OF 0.11.2. Intel.
- Not tested on M1/M2 Apple Silicon/iOS yet.
- Testers are welcome!
THANKS
Thanks to Omar Cornut for the fantastic Dear ImGui.
SUPER THANKS to @Daandelange for HIS AWESOME ofxImGui (maintained) FORK, and some macOS fixes.
Thanks to @alptugan for macOS testing and some fixes.
All source snippets and widgets from other authors are linked into header files as credits. Thanks!
AUTHOR
An addon by moebiusSurfing.
( ManuMolina ) 2021-2023