+38
-14
@@ -7,15 +7,20 @@
|
||||
#include <rlgl.h>
|
||||
#include <luma.hpp>
|
||||
#include <vamp_zero/library.hpp>
|
||||
#include <vamp_zero/parse.hpp>
|
||||
#include <vamp_zero/score.hpp>
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class score_view final : public luma::control {
|
||||
public:
|
||||
score_view(luma::application& app, vamp_zero::score_document score, std::string output, std::size_t page, std::bool_t& saved)
|
||||
: app_{app}, score_{std::move(score)}, output_{std::move(output)}, page_{page}, saved_{saved} {}
|
||||
auto measure(luma::draw_context&, luma::theme const&, luma::constraints) -> luma::size override { return {976,484}; }
|
||||
auto draw(luma::draw_context& context, luma::theme const&) const -> void override {
|
||||
score_view(luma::application &app, vamp_zero::score_document score, std::string output, std::size_t page, std::bool_t &saved)
|
||||
: app_{app}, score_{std::move(score)}, output_{std::move(output)}, page_{page}, saved_{saved} {}
|
||||
auto measure(luma::draw_context &, luma::theme const &, luma::constraints) -> luma::size override {
|
||||
return {976, 484};
|
||||
}
|
||||
auto draw(luma::draw_context &context, luma::theme const &) const -> void override {
|
||||
vamp_zero::draw_score_page(context, bounds(), score_, page_);
|
||||
rlDrawRenderBatchActive();
|
||||
auto image = LoadImageFromScreen();
|
||||
@@ -24,24 +29,43 @@ public:
|
||||
app_.request_stop();
|
||||
}
|
||||
private:
|
||||
luma::application& app_;
|
||||
luma::application &app_;
|
||||
vamp_zero::score_document score_;
|
||||
std::string output_;
|
||||
std::size_t page_;
|
||||
std::bool_t& saved_;
|
||||
std::bool_t &saved_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, std::char_t** argv) {
|
||||
if (argc < 3) { std::cerr << "Usage: vamp-render-score input.json output.png [page]\n"; return 2; }
|
||||
int main(int argc, std::char_t **argv) {
|
||||
if (argc < 3) {
|
||||
std::cerr << "Usage: vamp-render-score input.json output.png [page]\n";
|
||||
return 2;
|
||||
}
|
||||
auto page = std::size_t{};
|
||||
if (argc > 3) {
|
||||
auto parsed = vamp_zero::parse_integer<std::size_t>(argv[3], "page");
|
||||
if (!parsed) {
|
||||
std::cerr << parsed.error().describe() << '\n';
|
||||
return 2;
|
||||
}
|
||||
page = *parsed;
|
||||
}
|
||||
auto input = std::ifstream{argv[1]};
|
||||
auto json = std::string{std::istreambuf_iterator<std::char_t>{input},std::istreambuf_iterator<std::char_t>{}};
|
||||
auto score = vamp_zero::parse_score_document(json,argv[1]);
|
||||
if (!score) { std::cerr << score.error().describe() << '\n'; return 1; }
|
||||
auto app = luma::application{{.title="Notation Regression",.display={.width=976,.height=484,.target_fps=30,.fullscreen=false}}};
|
||||
auto json = std::string{std::istreambuf_iterator<std::char_t>{input}, std::istreambuf_iterator<std::char_t>{}};
|
||||
auto score = vamp_zero::parse_score_document(json, argv[1]);
|
||||
if (!score) {
|
||||
std::cerr << score.error().describe() << '\n';
|
||||
return 1;
|
||||
}
|
||||
auto app = luma::application{
|
||||
{.title = "Notation Regression", .display = {.width = 976, .height = 484, .target_fps = 30, .fullscreen = false}}};
|
||||
auto saved = std::bool_t{false};
|
||||
auto root = app.set_root(std::make_unique<score_view>(app,std::move(*score),argv[2],argc>3 ? std::stoul(argv[3]) : 0,saved));
|
||||
if (!root) return 1;
|
||||
auto root = app.set_root(std::make_unique<score_view>(app, std::move(*score), argv[2], page, saved));
|
||||
if (!root) {
|
||||
return 1;
|
||||
}
|
||||
auto ran = app.run();
|
||||
return ran && saved ? 0 : 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user