Route quick slider preview through app core
This commit is contained in:
@@ -525,6 +525,17 @@ struct PlanQuickOperationArgs {
|
||||
bool fire_event = false;
|
||||
};
|
||||
|
||||
struct PlanQuickSliderPreviewArgs {
|
||||
bool rtl = false;
|
||||
float slider_x = 10.0F;
|
||||
float slider_y = 20.0F;
|
||||
float slider_height = 40.0F;
|
||||
float zoom = 2.0F;
|
||||
bool pen_mode = true;
|
||||
bool line_mode = false;
|
||||
bool bad_float = false;
|
||||
};
|
||||
|
||||
struct PlanToolsMenuArgs {
|
||||
std::string command = "shortcuts";
|
||||
bool sonarpen_available = false;
|
||||
@@ -1996,6 +2007,7 @@ void print_help()
|
||||
<< " plan-history-operation --kind undo|redo|clear [--undo-count N] [--redo-count N] [--memory-bytes N]\n"
|
||||
<< " plan-main-toolbar --command open|save|undo|redo|clear-history|clear-canvas|message-box|settings [--undo-count N] [--redo-count N] [--memory-bytes N] [--no-canvas]\n"
|
||||
<< " plan-quick-operation --kind brush|color|restore|reset [--current-index N] [--slot-index N] [--brush-index N] [--color-index N] [--slot-count N] [--fire-event]\n"
|
||||
<< " plan-quick-slider-preview [--rtl] [--slider-x N] [--slider-y N] [--slider-height N] [--zoom N] [--pen-mode|--no-pen-mode] [--line-mode|--no-line-mode] [--bad-float]\n"
|
||||
<< " plan-share-file [--path FILE]\n"
|
||||
<< " plan-picked-path [--path FILE]\n"
|
||||
<< " plan-display-file [--path FILE]\n"
|
||||
@@ -7129,6 +7141,94 @@ int plan_quick_operation(int argc, char** argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
pp::foundation::Status parse_plan_quick_slider_preview_args(
|
||||
int argc,
|
||||
char** argv,
|
||||
PlanQuickSliderPreviewArgs& args)
|
||||
{
|
||||
for (int i = 2; i < argc; ++i) {
|
||||
const std::string_view key(argv[i]);
|
||||
if (key == "--slider-x" || key == "--slider-y" || key == "--slider-height" || key == "--zoom") {
|
||||
if (i + 1 >= argc) {
|
||||
return pp::foundation::Status::invalid_argument("missing value for option");
|
||||
}
|
||||
const auto value = parse_float_arg(argv[++i]);
|
||||
if (!value) {
|
||||
return value.status();
|
||||
}
|
||||
if (key == "--slider-x") {
|
||||
args.slider_x = value.value();
|
||||
} else if (key == "--slider-y") {
|
||||
args.slider_y = value.value();
|
||||
} else if (key == "--slider-height") {
|
||||
args.slider_height = value.value();
|
||||
} else {
|
||||
args.zoom = value.value();
|
||||
}
|
||||
} else if (key == "--rtl") {
|
||||
args.rtl = true;
|
||||
} else if (key == "--pen-mode") {
|
||||
args.pen_mode = true;
|
||||
} else if (key == "--no-pen-mode") {
|
||||
args.pen_mode = false;
|
||||
} else if (key == "--line-mode") {
|
||||
args.line_mode = true;
|
||||
} else if (key == "--no-line-mode") {
|
||||
args.line_mode = false;
|
||||
} else if (key == "--bad-float") {
|
||||
args.bad_float = true;
|
||||
} else {
|
||||
return pp::foundation::Status::invalid_argument("unknown option");
|
||||
}
|
||||
}
|
||||
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
int plan_quick_slider_preview(int argc, char** argv)
|
||||
{
|
||||
PlanQuickSliderPreviewArgs args;
|
||||
const auto status = parse_plan_quick_slider_preview_args(argc, argv, args);
|
||||
if (!status.ok()) {
|
||||
print_error("plan-quick-slider-preview", status.message);
|
||||
return 2;
|
||||
}
|
||||
|
||||
const auto plan = pp::app::plan_quick_slider_preview(pp::app::QuickSliderPreviewInput {
|
||||
.ui_rtl = args.rtl,
|
||||
.slider_x = args.bad_float ? std::nanf("") : args.slider_x,
|
||||
.slider_y = args.slider_y,
|
||||
.slider_height = args.slider_height,
|
||||
.zoom = args.zoom,
|
||||
.has_pen_mode = args.pen_mode,
|
||||
.has_line_mode = args.line_mode,
|
||||
});
|
||||
if (!plan) {
|
||||
print_error("plan-quick-slider-preview", plan.status().message);
|
||||
return 2;
|
||||
}
|
||||
|
||||
const auto& value = plan.value();
|
||||
std::cout << "{\"ok\":true,\"command\":\"plan-quick-slider-preview\""
|
||||
<< ",\"state\":{\"rtl\":" << json_bool(args.rtl)
|
||||
<< ",\"sliderX\":" << args.slider_x
|
||||
<< ",\"sliderY\":" << args.slider_y
|
||||
<< ",\"sliderHeight\":" << args.slider_height
|
||||
<< ",\"zoom\":" << args.zoom
|
||||
<< ",\"penMode\":" << json_bool(args.pen_mode)
|
||||
<< ",\"lineMode\":" << json_bool(args.line_mode)
|
||||
<< "},\"plan\":{\"cursorX\":" << value.cursor_x
|
||||
<< ",\"cursorY\":" << value.cursor_y
|
||||
<< ",\"updatesPenMode\":" << json_bool(value.updates_pen_mode)
|
||||
<< ",\"updatesLineMode\":" << json_bool(value.updates_line_mode)
|
||||
<< ",\"drawsTip\":" << json_bool(value.draws_tip)
|
||||
<< ",\"disablesPenOutline\":" << json_bool(value.disables_pen_outline)
|
||||
<< ",\"redrawsBrushPreview\":" << json_bool(value.redraws_brush_preview)
|
||||
<< ",\"invokesChangeCallback\":" << json_bool(value.invokes_change_callback)
|
||||
<< "}}\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
pp::foundation::Status parse_plan_share_file_args(
|
||||
int argc,
|
||||
char** argv,
|
||||
@@ -9669,6 +9769,10 @@ int main(int argc, char** argv)
|
||||
return plan_quick_operation(argc, argv);
|
||||
}
|
||||
|
||||
if (command == "plan-quick-slider-preview") {
|
||||
return plan_quick_slider_preview(argc, argv);
|
||||
}
|
||||
|
||||
if (command == "plan-share-file") {
|
||||
return plan_share_file(argc, argv);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user