Route canvas view execution through app core
This commit is contained in:
@@ -2033,6 +2033,8 @@ void print_help()
|
||||
<< " plan-canvas-tool --kind draw|erase|line|camera|grid|copy|cut|fill|mask-free|mask-line|bucket|pick|touch-lock [--current-mode-draw]\n"
|
||||
<< " plan-canvas-tool-state [--mode draw|erase|line|camera|grid|copy|cut|fill|mask-free|mask-line|bucket] [--picking] [--touch-lock]\n"
|
||||
<< " plan-canvas-camera-reset\n"
|
||||
<< " plan-canvas-view-density [--density N] [--bad-float]\n"
|
||||
<< " plan-canvas-view-cursor-mode [--mode N]\n"
|
||||
<< " plan-canvas-cursor [--mode draw|erase|line|camera|grid|copy|cut|fill|mask-free|mask-line|bucket] [--visibility never|small-brush|not-painting|always] [--brush-size N] [--no-brush] [--drawing] [--alt] [--resizing] [--picking] [--bad-size]\n"
|
||||
<< " plan-grid-operation --kind pick|load|reload|clear|render|commit [--path FILE] [--no-heightmap] [--no-canvas] [--float32] [--float16] [--texture-resolution N] [--samples N]\n"
|
||||
<< " plan-history-operation --kind undo|redo|clear [--undo-count N] [--redo-count N] [--memory-bytes N]\n"
|
||||
@@ -6770,6 +6772,78 @@ int plan_canvas_camera_reset(int argc, char** argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int plan_canvas_view_density(int argc, char** argv)
|
||||
{
|
||||
float density = 1.0F;
|
||||
bool bad_float = false;
|
||||
for (int i = 2; i < argc; ++i) {
|
||||
const std::string_view key(argv[i]);
|
||||
if (key == "--density") {
|
||||
if (i + 1 >= argc) {
|
||||
print_error("plan-canvas-view-density", "missing value for option");
|
||||
return 2;
|
||||
}
|
||||
const auto value = parse_float_arg(argv[++i]);
|
||||
if (!value) {
|
||||
print_error("plan-canvas-view-density", value.status().message);
|
||||
return 2;
|
||||
}
|
||||
density = value.value();
|
||||
} else if (key == "--bad-float") {
|
||||
bad_float = true;
|
||||
} else {
|
||||
print_error("plan-canvas-view-density", "unknown option");
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
const auto plan = pp::app::plan_canvas_view_density(bad_float ? std::nanf("") : density);
|
||||
if (!plan) {
|
||||
print_error("plan-canvas-view-density", plan.status().message);
|
||||
return 2;
|
||||
}
|
||||
|
||||
std::cout << "{\"ok\":true,\"command\":\"plan-canvas-view-density\""
|
||||
<< ",\"density\":" << plan.value().density
|
||||
<< ",\"recreatesBuffers\":" << json_bool(plan.value().recreates_buffers)
|
||||
<< "}\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
int plan_canvas_view_cursor_mode(int argc, char** argv)
|
||||
{
|
||||
int mode = 0;
|
||||
for (int i = 2; i < argc; ++i) {
|
||||
const std::string_view key(argv[i]);
|
||||
if (key == "--mode") {
|
||||
if (i + 1 >= argc) {
|
||||
print_error("plan-canvas-view-cursor-mode", "missing value for option");
|
||||
return 2;
|
||||
}
|
||||
const auto value = parse_i32_arg(argv[++i]);
|
||||
if (!value) {
|
||||
print_error("plan-canvas-view-cursor-mode", value.status().message);
|
||||
return 2;
|
||||
}
|
||||
mode = value.value();
|
||||
} else {
|
||||
print_error("plan-canvas-view-cursor-mode", "unknown option");
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
const auto plan = pp::app::plan_canvas_view_cursor_mode(mode);
|
||||
if (!plan) {
|
||||
print_error("plan-canvas-view-cursor-mode", plan.status().message);
|
||||
return 2;
|
||||
}
|
||||
|
||||
std::cout << "{\"ok\":true,\"command\":\"plan-canvas-view-cursor-mode\""
|
||||
<< ",\"mode\":" << static_cast<int>(plan.value().mode)
|
||||
<< "}\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
pp::foundation::Status parse_plan_canvas_cursor_args(
|
||||
int argc,
|
||||
char** argv,
|
||||
@@ -9933,6 +10007,14 @@ int main(int argc, char** argv)
|
||||
return plan_canvas_camera_reset(argc, argv);
|
||||
}
|
||||
|
||||
if (command == "plan-canvas-view-density") {
|
||||
return plan_canvas_view_density(argc, argv);
|
||||
}
|
||||
|
||||
if (command == "plan-canvas-view-cursor-mode") {
|
||||
return plan_canvas_view_cursor_mode(argc, argv);
|
||||
}
|
||||
|
||||
if (command == "plan-canvas-cursor") {
|
||||
return plan_canvas_cursor(argc, argv);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user