Add targeted PPI payload automation
This commit is contained in:
@@ -46,6 +46,8 @@ struct SaveProjectArgs {
|
||||
std::uint32_t frames = 1;
|
||||
std::uint32_t frame_duration_ms = 100;
|
||||
bool include_test_face_payload = false;
|
||||
std::uint32_t payload_layer = 0;
|
||||
std::uint32_t payload_frame = 0;
|
||||
};
|
||||
|
||||
struct InspectImageArgs {
|
||||
@@ -206,7 +208,7 @@ void print_help()
|
||||
<< " load-project --path FILE\n"
|
||||
<< " parse-layout --path FILE\n"
|
||||
<< " record-render [--width N] [--height N]\n"
|
||||
<< " save-project --path FILE --width N --height N [--layer-name NAME] [--layer-opacity N] [--blend-mode N] [--alpha-locked] [--hidden] [--layers N] [--frames N] [--frame-duration-ms N] [--include-test-face-payload]\n"
|
||||
<< " save-project --path FILE --width N --height N [--layer-name NAME] [--layer-opacity N] [--blend-mode N] [--alpha-locked] [--hidden] [--layers N] [--frames N] [--frame-duration-ms N] [--include-test-face-payload] [--payload-layer N] [--payload-frame N]\n"
|
||||
<< " simulate-document-edits [--width N] [--height N]\n"
|
||||
<< " simulate-document-history [--width N] [--height N] [--history N]\n"
|
||||
<< " simulate-image-import [--width N] [--height N]\n"
|
||||
@@ -341,7 +343,8 @@ pp::foundation::Status parse_save_project_args(int argc, char** argv, SaveProjec
|
||||
} else if (key == "--hidden") {
|
||||
args.visible = false;
|
||||
} else if (key == "--width" || key == "--height" || key == "--layers" || key == "--frames"
|
||||
|| key == "--blend-mode" || key == "--frame-duration-ms") {
|
||||
|| key == "--blend-mode" || key == "--frame-duration-ms" || key == "--payload-layer"
|
||||
|| key == "--payload-frame") {
|
||||
if (i + 1 >= argc) {
|
||||
return pp::foundation::Status::invalid_argument("missing value for option");
|
||||
}
|
||||
@@ -361,6 +364,10 @@ pp::foundation::Status parse_save_project_args(int argc, char** argv, SaveProjec
|
||||
args.frames = value.value();
|
||||
} else if (key == "--blend-mode") {
|
||||
args.blend_mode = value.value();
|
||||
} else if (key == "--payload-layer") {
|
||||
args.payload_layer = value.value();
|
||||
} else if (key == "--payload-frame") {
|
||||
args.payload_frame = value.value();
|
||||
} else {
|
||||
args.frame_duration_ms = value.value();
|
||||
}
|
||||
@@ -403,6 +410,19 @@ pp::foundation::Status parse_save_project_args(int argc, char** argv, SaveProjec
|
||||
return pp::foundation::Status::invalid_argument("frame duration must be greater than zero");
|
||||
}
|
||||
|
||||
if (args.include_test_face_payload && args.payload_layer >= args.layers) {
|
||||
return pp::foundation::Status::out_of_range("payload layer must be inside the generated layer list");
|
||||
}
|
||||
|
||||
if (args.include_test_face_payload && args.payload_frame >= args.frames) {
|
||||
return pp::foundation::Status::out_of_range("payload frame must be inside the generated frame list");
|
||||
}
|
||||
|
||||
if (!args.include_test_face_payload && (args.payload_layer != 0 || args.payload_frame != 0)) {
|
||||
return pp::foundation::Status::invalid_argument(
|
||||
"payload layer/frame options require --include-test-face-payload");
|
||||
}
|
||||
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
@@ -418,6 +438,8 @@ int save_project(int argc, char** argv)
|
||||
const auto test_payload = transparent_png_1x1_bytes();
|
||||
const pp::assets::PpiDirtyFacePayloadConfig dirty_faces[] {
|
||||
{
|
||||
.layer_index = args.payload_layer,
|
||||
.frame_index = args.payload_frame,
|
||||
.face_index = 0,
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
@@ -476,6 +498,8 @@ int save_project(int argc, char** argv)
|
||||
<< ",\"visible\":" << (args.visible ? "true" : "false")
|
||||
<< ",\"frameDurationMs\":" << args.frame_duration_ms
|
||||
<< ",\"facePayloads\":" << (args.include_test_face_payload ? 1 : 0)
|
||||
<< ",\"payloadLayer\":" << args.payload_layer
|
||||
<< ",\"payloadFrame\":" << args.payload_frame
|
||||
<< "}}\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user