summaryrefslogtreecommitdiff
path: root/cli/hitomezashi_cli.h
blob: bce0128f052b3c5f4c55e5d5aad3f0e1ace9d107 (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
40
41
42
43
/** @file */
#ifndef HITOMEZASHI_CLI_H
#define HITOMEZASHI_CLI_H

#include "SDL2/SDL.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.
 * Note that *x_pattern and *y_pattern are dynamically allocated and should be
 * freed by the caller when no longer needed.
 */
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,
                                 Uint32 *fg_colour, Uint32 *bg_colour, int argc,
                                 char **argv);
/** Print the help text and exit.
 * Exits with Hitomezashi_Cli_Exit_Code_Success (0) on success, and
 * Hitomezashi_Cli_Exit_Code_Print_Help (2) on failure.
 */
void hitomezashi_cli_help(void);

#endif // HITOMEZASHI_CLI_H