diff --git a/src/fart/Cli.cpp b/src/fart/Cli.cpp index e7a924a..c29d198 100644 --- a/src/fart/Cli.cpp +++ b/src/fart/Cli.cpp @@ -139,7 +139,7 @@ int Cli::run(int argc, char * argv[]) return 0; } -static bool parse_size(const char * flag, const char * value, size_t * out) +static bool parse_size(const char * flag, const char * value, opt * out) { bool valid = value[0] != '\0'; for (const char * c = value; *c != '\0'; c++) diff --git a/src/fart/RenderParams.cpp b/src/fart/RenderParams.cpp index c289a1b..f7d3ed4 100644 --- a/src/fart/RenderParams.cpp +++ b/src/fart/RenderParams.cpp @@ -1,7 +1,25 @@ #include -RenderParams::RenderParams() +void RenderParams::merge(const RenderParams & other) { - width = 800; - height = 600; + if (!width) + { + width = other.width; + } + if (!height) + { + height = other.height; + } +} + +void RenderParams::apply_defaults() +{ + if (!width) + { + width = 800u; + } + if (!height) + { + height = 600u; + } } diff --git a/src/fart/RenderParams.h b/src/fart/RenderParams.h index 39afac4..0ec22d3 100644 --- a/src/fart/RenderParams.h +++ b/src/fart/RenderParams.h @@ -4,8 +4,12 @@ struct RenderParams { - size_t width = 0u; - size_t height = 0u; + opt width; + opt height; - RenderParams(); + /* Set each field that is not already set to the value from other. */ + void merge(const RenderParams & other); + + /* Fill in any unset fields with default values. */ + void apply_defaults(); };