GrafX2 2.9.3227
The ultimate 256-color painting program
main.c File Reference

Program entry point, global variables and global functions. More...

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <endian.h>
#include "gfx2log.h"
#include "gfx2mem.h"
#include "const.h"
#include "struct.h"
#include "global.h"
#include "graph.h"
#include "misc.h"
#include "init.h"
#include "buttons.h"
#include "engine.h"
#include "pages.h"
#include "loadsave.h"
#include "loadsavefuncs.h"
#include "screen.h"
#include "errors.h"
#include "readini.h"
#include "saveini.h"
#include "io.h"
#include "text.h"
#include "setup.h"
#include "windows.h"
#include "brush.h"
#include "palette.h"
#include "realpath.h"
#include "unicode.h"
#include "input.h"
#include "help.h"
#include "filesel.h"
#include "factory.h"
+ Include dependency graph for main.c:

Macros

#define GLOBAL_VARIABLES
 declare global variables in main.c More...
 
#define ARRAY_SIZE(x)   (int)(sizeof(x) / sizeof(x[0]))
 
#define CT_ASSERT(e)   extern char (*ct_assert(void)) [sizeof(char[1 - 2*!(e)])]
 
#define FREE_POINTER(p)   free(p); p = NULL
 Free the memory and make sure the pointer is set to NULL. More...
 

Enumerations

enum  CMD_PARAMS {
  CMDPARAM_HELP , CMDPARAM_MODE , CMDPARAM_PIXELRATIO_TALL , CMDPARAM_PIXELRATIO_WIDE ,
  CMDPARAM_PIXELRATIO_DOUBLE , CMDPARAM_PIXELRATIO_TRIPLE , CMDPARAM_PIXELRATIO_QUAD , CMDPARAM_PIXELRATIO_TALL2 ,
  CMDPARAM_PIXELRATIO_TALL3 , CMDPARAM_PIXELRATIO_WIDE2 , CMDPARAM_RGB , CMDPARAM_GAMMA ,
  CMDPARAM_SKIN , CMDPARAM_SIZE , CMDPARAM_VERBOSE
}
 

Functions

void Display_syntax (void)
 Show the command line syntax and available video modes. More...
 
void Error_function (int error_code, const char *filename, int line_number, const char *function_name)
 Helper function used by the macro Error. More...
 
int Analyze_command_line (int argc, char *argv[], char *filenames[], char *directories[], const char **videomode_arg, int *pixel_ratio)
 Parse the command line. More...
 
 CT_ASSERT (sizeof(T_Components)==3)
 
 CT_ASSERT (sizeof(T_Palette)==768)
 
int Init_program (int argc, char *argv[])
 Initialize the program. More...
 
void Program_shutdown (void)
 Program Shutdown. More...
 
int main (int argc, char *argv[])
 Program entry point. More...
 

Variables

char Program_version []
 
static int setsize_width
 
static int setsize_height
 
struct {
   const char *   param
 
   int   id
 
cmdparams []
 

Detailed Description

Program entry point, global variables and global functions.

Macro Definition Documentation

◆ GLOBAL_VARIABLES

#define GLOBAL_VARIABLES

declare global variables in main.c

◆ ARRAY_SIZE

#define ARRAY_SIZE (   x)    (int)(sizeof(x) / sizeof(x[0]))

◆ CT_ASSERT

#define CT_ASSERT (   e)    extern char (*ct_assert(void)) [sizeof(char[1 - 2*!(e)])]

◆ FREE_POINTER

#define FREE_POINTER (   p)    free(p); p = NULL

Free the memory and make sure the pointer is set to NULL.

Enumeration Type Documentation

◆ CMD_PARAMS

enum CMD_PARAMS
Enumerator
CMDPARAM_HELP 
CMDPARAM_MODE 
CMDPARAM_PIXELRATIO_TALL 
CMDPARAM_PIXELRATIO_WIDE 
CMDPARAM_PIXELRATIO_DOUBLE 
CMDPARAM_PIXELRATIO_TRIPLE 
CMDPARAM_PIXELRATIO_QUAD 
CMDPARAM_PIXELRATIO_TALL2 
CMDPARAM_PIXELRATIO_TALL3 
CMDPARAM_PIXELRATIO_WIDE2 
CMDPARAM_RGB 
CMDPARAM_GAMMA 
CMDPARAM_SKIN 
CMDPARAM_SIZE 
CMDPARAM_VERBOSE 

Function Documentation

◆ Display_syntax()

void Display_syntax ( void  )

Show the command line syntax and available video modes.

Output to standard outout (stdout) and show a message box under MS Windows, where standard output is not available

References GFX2_MB_INFO, GFX2_MessageBox(), Mode_label(), and Nb_video_modes.

Referenced by Analyze_command_line(), and Error_function().

◆ Error_function()

void Error_function ( int  error_code,
const char *  filename,
int  line_number,
const char *  function_name 
)

Helper function used by the macro Error.

◆ Analyze_command_line()

int Analyze_command_line ( int  argc,
char *  argv[],
char *  filenames[],
char *  directories[],
const char **  videomode_arg,
int *  pixel_ratio 
)

◆ CT_ASSERT() [1/2]

CT_ASSERT ( sizeof(T_Components = =3)

◆ CT_ASSERT() [2/2]

CT_ASSERT ( sizeof(T_Palette = =768)

◆ Init_program()

int Init_program ( int  argc,
char *  argv[] 
)

Initialize the program.

Parameters
argccommand line argument count
argvcommand line argument values
Returns
0 on fail
1 on success

References Airbrush_delay, Airbrush_mode, Airbrush_mono_flow, Airbrush_multi_flow, Airbrush_size, Allow_drag_and_drop(), T_Config::Allow_multi_shortcuts, Analyze_command_line(), Back_color, T_Page::Background_transparent, T_Document::backups, Best_color_range(), Brush, Brush_colormap, Brush_file_directory, Brush_fileformat, Brush_filename, Brush_filename_unicode, Brush_height, Brush_original_pixels, Brush_selector, Brush_width, BUTTON_DRAW, Button_Message_initial(), Button_Page(), BUTTON_PAGE, BUTTON_PAL_LEFT, BUTTON_PAL_RIGHT, BUTTON_RELEASED, Capture_brush(), Check_menu_mode(), Check_recovery(), Colorize_current_mode, Colorize_mode, Colorize_opacity, Compute_colorize_table(), Compute_limits(), Compute_magnifier_data(), Compute_menu_offsets(), Compute_optimal_menu_colors(), Compute_paintbrush_coordinates(), Config, Config_directory, CONTEXT_PALETTE, Convert_videomode_arg(), Copy_preset_sieve(), Current_gradient, Current_help_section, T_Document::current_layer, Current_resolution, Cursor_hidden, Cursor_shape, CURSOR_SHAPE_TARGET, Cycling_mode, Data_directory, DEFAULT_FILEFORMAT, DEFAULT_FONT_FILENAME, T_Config::Default_mode_layers, T_Gui_skin::Default_palette, DEFAULT_SKIN_FILENAME, DEFAULT_ZOOM_FACTOR, DEFAULTPAL_FILENAME, Define_icon(), Destroy_context(), T_Selector_settings::Directory, T_Selector_settings::Directory_unicode, Display_all_screen(), Display_cursor(), T_Config::Display_image_limits, Display_image_limits(), Display_menu(), Display_paintbrush_in_menu(), Display_pixel(), Display_sprite_in_menu(), Draw_menu_button(), Effect_function, End_of_modification(), Error, ERROR_CFG_CORRUPTED, ERROR_CFG_MISSING, ERROR_CFG_OLD, ERROR_COMMAND_LINE, ERROR_FORBIDDEN_MODE, ERROR_GUI_MISSING, ERROR_MEMORY, T_Config::Fav_menu_colors, File_error, T_IO_Context::File_name_unicode, T_Document::fileformat, First_color_in_palette, T_Config::Font_file, Fore_color, T_IO_Context::Format, FORMAT_ALL_IMAGES, FORMAT_ALL_PALETTES, T_Selector_settings::Format_filter, FORMAT_PAL, Get_config_directory(), Get_current_directory(), Get_data_directory(), Get_program_directory(), Get_Unicode_Filename(), getMacosUserFolder(), Gfx, GFX2_DEBUG, GFX2_ERROR, GFX2_Get_Window_Handle(), GFX2_Log(), GFX2_malloc, GFX2_verbosity_level, GFX2_WARNING, Gradient_basic(), Gradient_bounds_range, Gradient_function, Gradient_lower_bound, Gradient_pixel, Gradient_random_factor, Gradient_upper_bound, T_Page::Gradients, Gui_loading_error_message, Help_position, Hide_cursor, Horizontal_line_buffer, T_Document::image_height, T_Document::image_is_modified, T_Page::Image_mode, IMAGE_MODE_ANIMATION, IMAGE_MODE_LAYERED, T_Document::image_width, Init_all_backup_lists(), Init_brush_container(), Init_buttons(), Init_context_layered_image(), Init_list_of_pages(), Init_mode_video(), Init_operations(), Init_paintbrushes(), Init_sighandler(), Init_text(), Initial_directory, INITIAL_SEPARATOR_PROPORTION, Keyboard_click_allowed, T_Document::layers_visible, T_Document::layers_visible_backup, LEFT_SIDE, Load_CFG(), Load_font(), Load_graphics(), Load_image(), Load_INI(), Load_Unicode_fonts(), T_Document::magnifier_factor, T_Document::magnifier_height, T_Document::magnifier_mode, T_Document::magnifier_offset_X, T_Document::magnifier_offset_Y, T_Document::magnifier_width, Main, Main_screen, Mask_mode, MAX_PAINTBRUSH_SIZE, MC_Black, MC_Dark, MC_Light, MC_White, Menu_font, Menu_is_visible, MENU_SPRITE_VERTICAL_PALETTE_SCROLL, Mouse_X, Mouse_Y, No_effect(), NULL, T_Selector_settings::Offset, T_Document::offset_X, T_Document::offset_Y, Open_file_read(), T_Config::Opening_message, OPERATION_3_POINTS_CURVE, OPERATION_CONTINUOUS_DRAW, OPERATION_LINE, Operation_stack_size, T_List_of_pages::Pages, PAINTBRUSH_HEIGHT, Paintbrush_height, Paintbrush_hidden, Paintbrush_offset_X, Paintbrush_offset_Y, Paintbrush_shape, PAINTBRUSH_SHAPE_ROUND, Paintbrush_sprite, PAINTBRUSH_WIDTH, Paintbrush_width, Paintbrush_X, Paintbrush_Y, T_Document::palette, T_Config::Palette_cells_X, T_Config::Palette_cells_Y, Palette_selector, T_Config::Palette_vertical, Pixel_height, PIXEL_MAX, Pixel_ratio, PIXEL_SIMPLE, Pixel_width, T_Selector_settings::Position, Program_version, Quick_shade_mode, Quit_is_required, Quitting, T_Gradient_array::Range, Redraw_layered_image(), Remove_duplicate_shortcuts(), render_scale_x, render_scale_y, Resolution_in_command_line, T_Document::safety_backup_prefix, SAFETYBACKUP_PREFIX_A, SAFETYBACKUP_PREFIX_B, Screen_height, Screen_width, Select_button(), Selected_curve_mode, Selected_freehand_mode, Selected_line_mode, T_Document::selector, T_Document::separator_position, T_Document::separator_proportion, Set_all_video_modes(), Set_config_defaults(), Set_current_skin(), setsize_height, setsize_width, Shade_mode, Sieve_mode, T_Config::Skin_file, Smear_brush, Smear_brush_height, Smear_brush_width, Smear_mode, Smooth_mode, Snap_height, Snap_mode, Snap_offset_X, Snap_offset_Y, Snap_width, Spare, Tiling_mode, T_Document::time_of_safety_backup, T_Page::Transparent_color, T_IO_Context::Type, Unicode_strdup(), Verbose_message(), Video_mode, T_Config::Window_pos_x, T_Config::Window_pos_y, Windows_open, and T_Document::X_zoom.

Referenced by main().

◆ Program_shutdown()

◆ main()

int main ( int  argc,
char *  argv[] 
)

Variable Documentation

◆ Program_version

char Program_version[]
extern

Referenced by Init_program().

◆ setsize_width

int setsize_width
static

◆ setsize_height

int setsize_height
static

◆ param

const char* param

Referenced by Analyze_command_line().

◆ id

int id

Referenced by GS_Generate().

◆ 

struct { ... } cmdparams[]
Initial value:
= {
{"?", CMDPARAM_HELP},
{"h", CMDPARAM_HELP},
{"H", CMDPARAM_HELP},
{"help", CMDPARAM_HELP},
{"mode", CMDPARAM_MODE},
{"quadruple", CMDPARAM_PIXELRATIO_QUAD},
{"rgb", CMDPARAM_RGB},
{"gamma", CMDPARAM_GAMMA},
{"skin", CMDPARAM_SKIN},
{"size", CMDPARAM_SIZE},
{"verbose", CMDPARAM_VERBOSE},
}
@ CMDPARAM_HELP
Definition: main.c:293
@ CMDPARAM_GAMMA
Definition: main.c:304
@ CMDPARAM_SIZE
Definition: main.c:306
@ CMDPARAM_VERBOSE
Definition: main.c:307
@ CMDPARAM_PIXELRATIO_WIDE2
Definition: main.c:302
@ CMDPARAM_PIXELRATIO_TALL3
Definition: main.c:301
@ CMDPARAM_MODE
Definition: main.c:294
@ CMDPARAM_PIXELRATIO_TALL
Definition: main.c:295
@ CMDPARAM_PIXELRATIO_TALL2
Definition: main.c:300
@ CMDPARAM_SKIN
Definition: main.c:305
@ CMDPARAM_PIXELRATIO_QUAD
Definition: main.c:299
@ CMDPARAM_RGB
Definition: main.c:303
@ CMDPARAM_PIXELRATIO_TRIPLE
Definition: main.c:298
@ CMDPARAM_PIXELRATIO_DOUBLE
Definition: main.c:297
@ CMDPARAM_PIXELRATIO_WIDE
Definition: main.c:296

Referenced by Analyze_command_line().