mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-13 19:29:58 +01:00
Documentation and icons for FrameBuffer filters
unified icons, new entry in help window.
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
#include "FrameBufferFilter.h"
|
#include "FrameBufferFilter.h"
|
||||||
|
|
||||||
const char* FrameBufferFilter::type_label[FrameBufferFilter::FILTER_INVALID] = {
|
const char* FrameBufferFilter::type_label[FrameBufferFilter::FILTER_INVALID] = {
|
||||||
"None", "Delay", "Resample", "Blur", "Sharpen", "Smooth & Noise", "Edge", "Transparency", "Custom shader"
|
"None", "Delay", "Resample", "Blur", "Sharpen", "Smooth & Noise", "Edge", "Alpha", "Custom shader"
|
||||||
};
|
};
|
||||||
|
|
||||||
FrameBufferFilter::FrameBufferFilter() : enabled_(true), input_(nullptr)
|
FrameBufferFilter::FrameBufferFilter() : enabled_(true), input_(nullptr)
|
||||||
|
|||||||
@@ -7,6 +7,17 @@
|
|||||||
class Visitor;
|
class Visitor;
|
||||||
class FrameBuffer;
|
class FrameBuffer;
|
||||||
|
|
||||||
|
|
||||||
|
#define ICON_FILTER_DELAY 10, 15
|
||||||
|
#define ICON_FILTER_RESAMPLE 1, 10
|
||||||
|
#define ICON_FILTER_BLUR 0, 9
|
||||||
|
#define ICON_FILTER_SHARPEN 2, 1
|
||||||
|
#define ICON_FILTER_SMOOTH 14, 8
|
||||||
|
#define ICON_FILTER_EDGE 16, 8
|
||||||
|
#define ICON_FILTER_ALPHA 13, 4
|
||||||
|
#define ICON_FILTER_IMAGE 1, 4
|
||||||
|
|
||||||
|
|
||||||
class FrameBufferFilter
|
class FrameBufferFilter
|
||||||
{
|
{
|
||||||
bool enabled_;
|
bool enabled_;
|
||||||
|
|||||||
@@ -724,7 +724,7 @@ void ImGuiVisitor::visit (PassthroughFilter&)
|
|||||||
|
|
||||||
void ImGuiVisitor::visit (DelayFilter& f)
|
void ImGuiVisitor::visit (DelayFilter& f)
|
||||||
{
|
{
|
||||||
if (ImGuiToolkit::IconButton(10, 15)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_DELAY)) {
|
||||||
f.setDelay(0.f);
|
f.setDelay(0.f);
|
||||||
Action::manager().store("Delay 0 s");
|
Action::manager().store("Delay 0 s");
|
||||||
}
|
}
|
||||||
@@ -745,7 +745,7 @@ void ImGuiVisitor::visit (ResampleFilter& f)
|
|||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
|
|
||||||
// Resampling Factor selection
|
// Resampling Factor selection
|
||||||
if (ImGuiToolkit::IconButton(8, 5)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_RESAMPLE)) {
|
||||||
f.setFactor( 0 );
|
f.setFactor( 0 );
|
||||||
oss << "Resample " << ResampleFilter::factor_label[0];
|
oss << "Resample " << ResampleFilter::factor_label[0];
|
||||||
Action::manager().store(oss.str());
|
Action::manager().store(oss.str());
|
||||||
@@ -766,7 +766,7 @@ void ImGuiVisitor::visit (BlurFilter& f)
|
|||||||
oss << "Blur ";
|
oss << "Blur ";
|
||||||
|
|
||||||
// Method selection
|
// Method selection
|
||||||
if (ImGuiToolkit::IconButton(7, 16)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_BLUR)) {
|
||||||
f.setMethod( 0 );
|
f.setMethod( 0 );
|
||||||
oss << BlurFilter::method_label[0];
|
oss << BlurFilter::method_label[0];
|
||||||
Action::manager().store(oss.str());
|
Action::manager().store(oss.str());
|
||||||
@@ -812,7 +812,7 @@ void ImGuiVisitor::visit (SharpenFilter& f)
|
|||||||
oss << "Sharpen ";
|
oss << "Sharpen ";
|
||||||
|
|
||||||
// Method selection
|
// Method selection
|
||||||
if (ImGuiToolkit::IconButton(2, 1)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_SHARPEN)) {
|
||||||
f.setMethod( 0 );
|
f.setMethod( 0 );
|
||||||
oss << SharpenFilter::method_label[0];
|
oss << SharpenFilter::method_label[0];
|
||||||
Action::manager().store(oss.str());
|
Action::manager().store(oss.str());
|
||||||
@@ -857,7 +857,7 @@ void ImGuiVisitor::visit (SmoothFilter& f)
|
|||||||
oss << "Smooth ";
|
oss << "Smooth ";
|
||||||
|
|
||||||
// Method selection
|
// Method selection
|
||||||
if (ImGuiToolkit::IconButton(14, 8)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_SMOOTH)) {
|
||||||
f.setMethod( 0 );
|
f.setMethod( 0 );
|
||||||
oss << SmoothFilter::method_label[0];
|
oss << SmoothFilter::method_label[0];
|
||||||
Action::manager().store(oss.str());
|
Action::manager().store(oss.str());
|
||||||
@@ -902,7 +902,7 @@ void ImGuiVisitor::visit (EdgeFilter& f)
|
|||||||
oss << "Edge ";
|
oss << "Edge ";
|
||||||
|
|
||||||
// Method selection
|
// Method selection
|
||||||
if (ImGuiToolkit::IconButton(16, 8)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_EDGE)) {
|
||||||
f.setMethod( 0 );
|
f.setMethod( 0 );
|
||||||
oss << EdgeFilter::method_label[0];
|
oss << EdgeFilter::method_label[0];
|
||||||
Action::manager().store(oss.str());
|
Action::manager().store(oss.str());
|
||||||
@@ -947,7 +947,7 @@ void ImGuiVisitor::visit (AlphaFilter& f)
|
|||||||
oss << "Alpha ";
|
oss << "Alpha ";
|
||||||
|
|
||||||
// Method selection
|
// Method selection
|
||||||
if (ImGuiToolkit::IconButton(13, 4)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_ALPHA)) {
|
||||||
f.setOperation( 0 );
|
f.setOperation( 0 );
|
||||||
oss << AlphaFilter::operation_label[0];
|
oss << AlphaFilter::operation_label[0];
|
||||||
Action::manager().store(oss.str());
|
Action::manager().store(oss.str());
|
||||||
@@ -1029,7 +1029,7 @@ void ImGuiVisitor::visit (AlphaFilter& f)
|
|||||||
void ImGuiVisitor::visit (ImageFilter& f)
|
void ImGuiVisitor::visit (ImageFilter& f)
|
||||||
{
|
{
|
||||||
// Selection of Algorithm
|
// Selection of Algorithm
|
||||||
if (ImGuiToolkit::IconButton(1, 4)) {
|
if (ImGuiToolkit::IconButton(ICON_FILTER_IMAGE)) {
|
||||||
FilteringProgram target;
|
FilteringProgram target;
|
||||||
f.setProgram( target );
|
f.setProgram( target );
|
||||||
}
|
}
|
||||||
@@ -1071,7 +1071,6 @@ void ImGuiVisitor::visit (ImageFilter& f)
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// Open Editor
|
// Open Editor
|
||||||
// ImGuiToolkit::IconButton(18, 18);
|
|
||||||
ImGui::SameLine(0, IMGUI_SAME_LINE);
|
ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
if ( ImGui::Button( ICON_FA_CODE " Open editor", ImVec2(IMGUI_RIGHT_ALIGN, 0)) )
|
if ( ImGui::Button( ICON_FA_CODE " Open editor", ImVec2(IMGUI_RIGHT_ALIGN, 0)) )
|
||||||
Settings::application.widget.shader_editor = true;
|
Settings::application.widget.shader_editor = true;
|
||||||
|
|||||||
@@ -1592,8 +1592,8 @@ void HelperToolbox::Render()
|
|||||||
if (ImGui::BeginMenu(IMGUI_TITLE_HELP))
|
if (ImGui::BeginMenu(IMGUI_TITLE_HELP))
|
||||||
{
|
{
|
||||||
// Enable/Disable Ableton Link
|
// Enable/Disable Ableton Link
|
||||||
if ( ImGui::MenuItem( ICON_FA_EXTERNAL_LINK_ALT " Online user manual") ) {
|
if ( ImGui::MenuItem( ICON_FA_BOOK_OPEN " Online wiki") ) {
|
||||||
SystemToolkit::open("https://github.com/brunoherbelin/vimix/wiki/User-manual");
|
SystemToolkit::open("https://github.com/brunoherbelin/vimix/wiki");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable/Disable tooltips
|
// Enable/Disable tooltips
|
||||||
@@ -1615,6 +1615,25 @@ void HelperToolbox::Render()
|
|||||||
const float width_window = ImGui::GetWindowSize().x - ImGui::GetFontSize();
|
const float width_window = ImGui::GetWindowSize().x - ImGui::GetFontSize();
|
||||||
const float width_column0 = ImGui::GetFontSize() * 6;
|
const float width_column0 = ImGui::GetFontSize() * 6;
|
||||||
|
|
||||||
|
|
||||||
|
if (ImGui::CollapsingHeader("Documentation", ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
|
{
|
||||||
|
|
||||||
|
ImGui::Columns(2, "viewscolumn", false); // 4-ways, with border
|
||||||
|
ImGui::SetColumnWidth(0, width_column0);
|
||||||
|
|
||||||
|
ImGui::Text("User manual"); ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::ButtonOpenUrl("Online user manual", "https://github.com/brunoherbelin/vimix/wiki/User-manual", ImVec2(ImGui::GetContentRegionAvail().x, 0));
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGui::Text("OSC"); ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::ButtonOpenUrl("Open Sound Control API", "https://github.com/brunoherbelin/vimix/wiki/Open-Sound-Control-API", ImVec2(ImGui::GetContentRegionAvail().x, 0));
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGui::Text("SRT"); ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::ButtonOpenUrl("Secure Reliable Transport Broadcast", "https://github.com/brunoherbelin/vimix/wiki/SRT-stream-I-O", ImVec2(ImGui::GetContentRegionAvail().x, 0));
|
||||||
|
|
||||||
|
ImGui::Columns(1);
|
||||||
|
}
|
||||||
|
|
||||||
if (ImGui::CollapsingHeader("Views"))
|
if (ImGui::CollapsingHeader("Views"))
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -1729,7 +1748,7 @@ void HelperToolbox::Render()
|
|||||||
ImGui::Text ("Displays the rendering output as a source, with or without loopback.");
|
ImGui::Text ("Displays the rendering output as a source, with or without loopback.");
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
ImGuiToolkit::Icon(ICON_SOURCE_CLONE); ImGui::SameLine(0, IMGUI_SAME_LINE);ImGui::Text("Clone"); ImGui::NextColumn();
|
ImGuiToolkit::Icon(ICON_SOURCE_CLONE); ImGui::SameLine(0, IMGUI_SAME_LINE);ImGui::Text("Clone"); ImGui::NextColumn();
|
||||||
ImGui::Text ("Clone a source into another source, possibly with a short delay.");
|
ImGui::Text ("Clone a source into another source with a filter.");
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
ImGuiToolkit::Icon(ICON_SOURCE_GROUP); ImGui::SameLine(0, IMGUI_SAME_LINE);ImGui::Text("Group"); ImGui::NextColumn();
|
ImGuiToolkit::Icon(ICON_SOURCE_GROUP); ImGui::SameLine(0, IMGUI_SAME_LINE);ImGui::Text("Group"); ImGui::NextColumn();
|
||||||
ImGui::Text ("Group of sources rendered together after flattenning them in Layers view.");
|
ImGui::Text ("Group of sources rendered together after flattenning them in Layers view.");
|
||||||
@@ -1738,7 +1757,53 @@ void HelperToolbox::Render()
|
|||||||
ImGui::PopTextWrapPos();
|
ImGui::PopTextWrapPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::CollapsingHeader("Inputs"))
|
if (ImGui::CollapsingHeader("Filters"))
|
||||||
|
{
|
||||||
|
ImGui::Text("Select 'Clone & Filter' on a source to access filters;");
|
||||||
|
|
||||||
|
ImGui::Columns(2, "windowcolumn", false); // 4-ways, with border
|
||||||
|
ImGui::SetColumnWidth(0, width_column0);
|
||||||
|
ImGui::PushTextWrapPos(width_window );
|
||||||
|
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_DELAY); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Delay"); ImGui::NextColumn();
|
||||||
|
ImGui::Text("Postpones the display of the input source by a given delay (between 0.0 and 2.0 seconds).");
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_RESAMPLE); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Resample"); ImGui::NextColumn();
|
||||||
|
ImGui::Text ("Displays the input source with a different resolution. Downsampling is producing a smaller resolution (half or quarter). Upsampling is producing a higher resolution (double). GPU filtering is applied to improve scaling quality.");
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_BLUR); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Blur"); ImGui::NextColumn();
|
||||||
|
ImGui::Text ("Applies a real-time GPU bluring filter. Radius of the filter (when available) is a fraction of the image height. ");
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_SHARPEN); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Sharpen"); ImGui::NextColumn();
|
||||||
|
ImGui::Text ("Applies a real-time GPU sharpening filter.");
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_SMOOTH); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Smooth"); ImGui::NextColumn();
|
||||||
|
ImGui::Text ("Applies a real-time GPU smoothing filters to reduce noise. Inverse filters to add noise or grain are also available.");
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_EDGE); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Edge"); ImGui::NextColumn();
|
||||||
|
ImGui::Text ("Applies a real-time GPU filter to outline edges.");
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_ALPHA); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Alpha"); ImGui::NextColumn();
|
||||||
|
ImGui::Text ("Applies a real-time GPU chroma-key (green screen) or luma-key (black screen). Inverse filter fills transparent alpha with an opaque color.");
|
||||||
|
ImGui::NextColumn();
|
||||||
|
ImGuiToolkit::Icon(ICON_FILTER_IMAGE); ImGui::SameLine(0, IMGUI_SAME_LINE);
|
||||||
|
ImGui::Text("Custom"); ImGui::NextColumn();
|
||||||
|
ImGui::Text ("Applies a real-time GPU fragment shader defined by custom code in OpenGL Shading Language (GLSL). ");
|
||||||
|
ImGuiToolkit::ButtonOpenUrl("About GLSL", "https://www.khronos.org/opengl/wiki/OpenGL_Shading_Language", ImVec2(ImGui::GetContentRegionAvail().x, 0));
|
||||||
|
ImGuiToolkit::ButtonOpenUrl("Browse shadertoy.com", "https://www.shadertoy.com", ImVec2(ImGui::GetContentRegionAvail().x, 0));
|
||||||
|
|
||||||
|
ImGui::Columns(1);
|
||||||
|
ImGui::PopTextWrapPos();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::CollapsingHeader("Input Mapping"))
|
||||||
{
|
{
|
||||||
ImGui::Columns(2, "inputcolumn", false); // 4-ways, with border
|
ImGui::Columns(2, "inputcolumn", false); // 4-ways, with border
|
||||||
ImGui::SetColumnWidth(0, width_column0);
|
ImGui::SetColumnWidth(0, width_column0);
|
||||||
@@ -1761,7 +1826,7 @@ void HelperToolbox::Render()
|
|||||||
ImGui::PopTextWrapPos();
|
ImGui::PopTextWrapPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::CollapsingHeader("Keyboard shortcuts", ImGuiTreeNodeFlags_DefaultOpen))
|
if (ImGui::CollapsingHeader("Keyboard shortcuts"))
|
||||||
{
|
{
|
||||||
ImGui::Columns(2, "keyscolumns", false); // 4-ways, with border
|
ImGui::Columns(2, "keyscolumns", false); // 4-ways, with border
|
||||||
ImGui::SetColumnWidth(0, width_column0);
|
ImGui::SetColumnWidth(0, width_column0);
|
||||||
@@ -1770,6 +1835,10 @@ void HelperToolbox::Render()
|
|||||||
ImGui::Text(ICON_FA_BARS " Main menu"); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_BARS " Main menu"); ImGui::NextColumn();
|
||||||
ImGui::Text("INS"); ImGui::NextColumn();
|
ImGui::Text("INS"); ImGui::NextColumn();
|
||||||
ImGui::Text(ICON_FA_PLUS " New source"); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_PLUS " New source"); ImGui::NextColumn();
|
||||||
|
ImGui::Text("DEL"); ImGui::NextColumn();
|
||||||
|
ImGui::Text(ICON_FA_BACKSPACE " Delete source"); ImGui::NextColumn();
|
||||||
|
ImGui::Text("TAB"); ImGui::NextColumn();
|
||||||
|
ImGui::Text(ICON_FA_EXCHANGE_ALT " Switch Current source"); ImGui::NextColumn();
|
||||||
ImGui::Text("F1"); ImGui::NextColumn();
|
ImGui::Text("F1"); ImGui::NextColumn();
|
||||||
ImGui::Text(ICON_FA_BULLSEYE " Mixing view"); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_BULLSEYE " Mixing view"); ImGui::NextColumn();
|
||||||
ImGui::Text("F2"); ImGui::NextColumn();
|
ImGui::Text("F2"); ImGui::NextColumn();
|
||||||
@@ -1778,10 +1847,6 @@ void HelperToolbox::Render()
|
|||||||
ImGui::Text(ICON_FA_LAYER_GROUP " Layers view"); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_LAYER_GROUP " Layers view"); ImGui::NextColumn();
|
||||||
ImGui::Text("F4"); ImGui::NextColumn();
|
ImGui::Text("F4"); ImGui::NextColumn();
|
||||||
ImGui::Text(ICON_FA_CHESS_BOARD " Texturing view"); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_CHESS_BOARD " Texturing view"); ImGui::NextColumn();
|
||||||
ImGui::Text(ICON_FA_BACKSPACE " DEL"); ImGui::NextColumn();
|
|
||||||
ImGui::Text("Delete Current source"); ImGui::NextColumn();
|
|
||||||
ImGui::Text(ICON_FA_EXCHANGE_ALT " TAB"); ImGui::NextColumn();
|
|
||||||
ImGui::Text("Switch Current source"); ImGui::NextColumn();
|
|
||||||
ImGui::Text(CTRL_MOD "TAB"); ImGui::NextColumn();
|
ImGui::Text(CTRL_MOD "TAB"); ImGui::NextColumn();
|
||||||
ImGui::Text("Switch view"); ImGui::NextColumn();
|
ImGui::Text("Switch view"); ImGui::NextColumn();
|
||||||
ImGui::Text(SHORTCUT_FULLSCREEN); ImGui::NextColumn();
|
ImGui::Text(SHORTCUT_FULLSCREEN); ImGui::NextColumn();
|
||||||
@@ -1795,6 +1860,8 @@ void HelperToolbox::Render()
|
|||||||
ImGui::Text(ICON_FA_CLOCK " " TOOLTIP_TIMER "window"); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_CLOCK " " TOOLTIP_TIMER "window"); ImGui::NextColumn();
|
||||||
ImGui::Text(SHORTCUT_INPUTS); ImGui::NextColumn();
|
ImGui::Text(SHORTCUT_INPUTS); ImGui::NextColumn();
|
||||||
ImGui::Text(ICON_FA_HAND_PAPER " " TOOLTIP_INPUTS "window"); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_HAND_PAPER " " TOOLTIP_INPUTS "window"); ImGui::NextColumn();
|
||||||
|
ImGui::Text(SHORTCUT_SHADEREDITOR); ImGui::NextColumn();
|
||||||
|
ImGui::Text(ICON_FA_CODE " " TOOLTIP_SHADEREDITOR "window"); ImGui::NextColumn();
|
||||||
ImGui::Text(SHORTCUT_NOTE); ImGui::NextColumn();
|
ImGui::Text(SHORTCUT_NOTE); ImGui::NextColumn();
|
||||||
ImGui::Text(ICON_FA_STICKY_NOTE " " TOOLTIP_NOTE); ImGui::NextColumn();
|
ImGui::Text(ICON_FA_STICKY_NOTE " " TOOLTIP_NOTE); ImGui::NextColumn();
|
||||||
ImGui::Text("ESC"); ImGui::NextColumn();
|
ImGui::Text("ESC"); ImGui::NextColumn();
|
||||||
@@ -5418,7 +5485,7 @@ void ShaderEditor::Render()
|
|||||||
|
|
||||||
if (ImGui::MenuItem( MENU_UNDO, SHORTCUT_UNDO, nullptr, !ro && _editor.CanUndo()))
|
if (ImGui::MenuItem( MENU_UNDO, SHORTCUT_UNDO, nullptr, !ro && _editor.CanUndo()))
|
||||||
_editor.Undo();
|
_editor.Undo();
|
||||||
if (ImGui::MenuItem( MENU_REDO, SHORTCUT_REDO, nullptr, !ro && _editor.CanRedo()))
|
if (ImGui::MenuItem( MENU_REDO, CTRL_MOD "Y", nullptr, !ro && _editor.CanRedo()))
|
||||||
_editor.Redo();
|
_editor.Redo();
|
||||||
if (ImGui::MenuItem( MENU_COPY, SHORTCUT_COPY, nullptr, _editor.HasSelection()))
|
if (ImGui::MenuItem( MENU_COPY, SHORTCUT_COPY, nullptr, _editor.HasSelection()))
|
||||||
_editor.Copy();
|
_editor.Copy();
|
||||||
@@ -5493,7 +5560,7 @@ void ShaderEditor::Render()
|
|||||||
std::string num = m.str().substr(2, m.length()-2);
|
std::string num = m.str().substr(2, m.length()-2);
|
||||||
if ( BaseToolkit::is_a_number(num, &l)){
|
if ( BaseToolkit::is_a_number(num, &l)){
|
||||||
status_ += "line ";
|
status_ += "line ";
|
||||||
status_ += std::to_string(l-16);
|
status_ += std::to_string(l-15);
|
||||||
}
|
}
|
||||||
s = m.suffix().str();
|
s = m.suffix().str();
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user