summaryrefslogtreecommitdiff
path: root/cli/hitomezashi_cli.h
diff options
context:
space:
mode:
Diffstat (limited to 'cli/hitomezashi_cli.h')
-rw-r--r--cli/hitomezashi_cli.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/cli/hitomezashi_cli.h b/cli/hitomezashi_cli.h
new file mode 100644
index 0000000..d83de7b
--- /dev/null
+++ b/cli/hitomezashi_cli.h
@@ -0,0 +1,39 @@
+/** @file */
+#ifndef HITOMEZASHI_CLI_H
+#define HITOMEZASHI_CLI_H
+
+#include <stddef.h>
+
+/** Exit codes for main().
+ */
+enum Hitomezashi_Cli_Exit_Code {
+ /** The program completed successfully. */
+ Hitomezashi_Cli_Exit_Code_Success = 0,
+ /** The arguments were invalid or the program could not handle them. */
+ Hitomezashi_Cli_Exit_Code_Err_Handle_Args = 1,
+ /** Printing the help text failed. */
+ Hitomezashi_Cli_Exit_Code_Err_Print_Help = 2,
+ /** Initialising SDL failed. */
+ Hitomezashi_Cli_Exit_Code_Err_Sdl_Init = 3,
+ /** hitomezashi_state_init() from libhitomezashi failed. */
+ Hitomezashi_Cli_Exit_Code_Err_State_Init = 4,
+ /** Saving the SDL_Surface on which the pattern was drawn as an image failed.
+ */
+ Hitomezashi_Cli_Exit_Code_Err_Save_Image = 5,
+};
+
+/** Read and parse arguments, ensure they are valid, and give back the
+ * information in usable form to the caller. Also calls hitomezashi_cli_help()
+ * if -h is passed.
+ */
+void hitomezashi_cli_handle_args(char **out_file_path, int *x_pattern_len,
+ int *y_pattern_len, char **x_pattern,
+ char **y_pattern, int *gap, int *thickness,
+ int argc, char **argv);
+/** Print the help text and exit. */
+void hitomezashi_cli_help(void);
+/** Convert a string composed of ASCII 0 and 1 digits, eg\. "01010", to an array
+ * of numeric 0s and 1s stored as char. */
+char *hitomezashi_cli_ascii_binary_str_to_ints(char *ascii_str, size_t n);
+
+#endif // HITOMEZASHI_CLI_H