summaryrefslogtreecommitdiff
path: root/cli/hitomezashi_cli.h
blob: d83de7b5288e3a484dd0b9851666d87001560dc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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