46 KiB
Documentation
CCExtractor Graphical User Interface
Code Structure:
src/GUI
├── activity.c -Activity window definitions
├── activity.h -Activity window declarations
├── ccextractorGUI.c -Contains main() and GUI code for 'Main' Tab + 'Menu'
├── ccextractorGUI.h -Function and structure declarations
├── ccx_cli_thread.c -All the functions (definitions) passed in threads
├── ccx_cli_thread.h -Function, variables & structs declaration used in thread
├── command_builder.c -Builds command to pass to CLI CCExtractor
├── command_builder.h -Function, variables & structs declaration used
├── file_browser.c -Function definition for File Browser
├── file_browser.h -Function, struct & variable declaration
├── nuklear_lib -Diretory contains Library Files
│ ├── nuklear_glfw_gl2.h -GLFW backend source header to interact with Nuklear
│ └── nuklear.h -Nuklear library source code
├── popups.c -Function definitions for all Popups used
├── popups.h -Function & network struct declaration for all Popups
├── preview.c -Preview window definitions
├── preview.h -Preview window definitions
├── save_load_data.c -Function definition to save last run state
├── save_load_data.h -Function declaration to save last run state
├── stb_image.h -Code to load images
├── tabs.c -Function definitions for all tabs except 'Main' tab
├── tabs.h -Function, variable and structure declarations
├── terminal.c -Code for terminal Window
└── win_dirent.h -Dirent API for Windows
File by File functions:
activity.c
nk_begin(ctx, "Activity", nk_rect(x, y, width, height), NK_WINDOW_TITLE|NK_WINDOW_BACKGROUND);
nk_end(ctx);
nk_layout_row_dynamic(ctx, 40, 1);
nk_label_wrap(ctx, main_settings->activity_string[i]);
nk_window_is_closed(ctx, "Activity");
activity.h
int activity(struct nk_context *ctx, int x, int y, int width, int height, struct main_tab *main_settings);
ccextractorGUI.c
nk_menubar_begin(ctx);
nk_layout_row_begin(ctx, NK_STATIC, 30, 3);
nk_layout_row_push(ctx, 80);
nk_menu_begin_label(ctx, "Preferences", NK_TEXT_LEFT, nk_vec2(120, 200));
nk_menu_end(ctx);
nk_menubar_end(ctx);
nk_layout_space_begin(ctx, NK_STATIC, 15, 1);
nk_layout_space_end(ctx);
nk_style_push_vec2(ctx, &ctx->style.window.spacing, nk_vec2(0, 0));
nk_style_push_float(ctx, &ctx->style.button.rounding, 0);
nk_button_label(ctx, names[i]);
nk_style_pop_float(ctx);
nk_group_begin(ctx, "Advanced Tabs", NK_WINDOW_NO_SCROLLBAR);
nk_group_end(ctx);
nk_layout_row(ctx, NK_DYNAMIC, 20, 3, ratio_adv_mode);
nk_spacing(ctx, 1);
nk_checkbox_label(ctx, "Advanced Mode", &advanced_mode_check);
nk_option_label(ctx, "Extract from files below:", main_settings.port_or_files == FILES));
nk_selectable_label(ctx, truncate_path_string(main_settings.filenames[i]), NK_TEXT_LEFT, &main_settings.is_file_selected[i]);
nk_combo(ctx, main_settings.port_type, 2, main_settings.port_select, 20, nk_vec2_(85,100));
nk_label(ctx, "Drag and Drop files for extraction.", NK_TEXT_CENTERED
nk_progress(ctx, &main_settings.progress_cursor, 101, nk_true);
ccextractorGUI.h
void setup_main_settings(struct main_tab *main_settings);
char* truncate_path_string(char *filePath);
void remove_path_entry(struct main_tab *main_settings, int indexToRemove);
ccx_cli_thread.c || ccx_cli_thread.h
void* read_activity_data(void *read_args);
void* read_data_from_thread(void* read_args);
void* extract_thread(void* extract_args);
void* feed_files_for_extraction(void* file_args);
void setup_and_create_thread(struct main_tab *main_settings, struct built_string *command);
void&asst; find_hd_homerun_devices(void *args);
void* setup_hd_homerun_device(void *args);
command_builder.c || command_builder.h
void command_builder(struct built_string *command,
struct main_tab *main_settings,
struct network_popup *network_settings,
struct input_tab *input,
struct advanced_input_tab *advanced_input,
struct output_tab *output,
struct decoders_tab *decoders,
struct credits_tab *credits,
struct debug_tab *debug,
struct burned_subs_tab *burned_subs);
file_browser.c || file_browser.h
void die(const char *fmt, ...);
char* file_load(const char* path, size_t* siz);
char* str_duplicate(const char *src);
void dir_free_list(char **list, size_t size);
char** dir_list(const char *dir, int return_subdirs, size_t *count);
struct file_group FILE_GROUP(enum file_groups group, const char *name, struct nk_image *icon);
struct file FILE_DEF(enum file_types type, const char *suffix, enum file_groups group);
struct nk_image* media_icon_for_file(struct media *media, const char *file);
void media_init(struct media *media);
void file_browser_reload_directory_content(struct file_browser *browser, const char *path);
void get_drives(struct file_browser *browser);
void file_browser_init(struct file_browser *browser, struct media *media);
void file_browser_free(struct file_browser *browser);
int file_browser_run(struct file_browser *browser, struct nk_context *ctx, struct main_tab *main_settings, struct output_tab *output, struct debug_tab *debug, struct hd_homerun_tab *hd_homerun);
popups.c || popups.h
void draw_network_popup(struct nk_context *ctx, int *show_preferences_network, struct network_popup *network_settings);
void draw_getting_started_popup(struct nk_context *ctx, int *show_getting_started);
void draw_about_ccx_popup(struct nk_context *ctx, int *show_about_ccx, struct nk_user_font *droid_big, struct nk_user_font *droid_head);
void draw_progress_details_popup(struct nk_context *ctx, int *show_progress_details, struct main_tab *main_settings);
void draw_color_popup(struct nk_context *ctx, struct output_tab *output);
void draw_thread_popup(struct nk_context *ctx, int *show_thread_popup);
void setup_network_settings(struct network_popup *network_settings);
preview.c || preview.h
int preview(struct nk_context *ctx, int x, int y, int width, int height, struct main_tab *main_settings);
save_load_data.c || save_load_data.h
void load_data(FILE *file,
struct main_tab *main_settings,
struct input_tab *input,
struct advanced_input_tab *advanced_input,
struct output_tab *output,
struct decoders_tab *decoders,
struct credits_tab *credits,
struct debug_tab *debug,
struct hd_homerun_tab *hd_homerun,
struct burned_subs_tab *burned_subs);
void save_data(FILE *file,
struct main_tab *main_settings,
struct input_tab *input,
struct advanced_input_tab *advanced_input,
struct output_tab *output,
struct decoders_tab *decoders,
struct credits_tab *credits,
struct debug_tab *debug,
struct hd_homerun_tab *hd_homerun,
struct burned_subs_tab *burned_subs);
void write_credits(FILE* file, struct credits_tab *credits);
void read_credits(FILE* file, struct credits_tab *credits);
terminal.c
int terminal(struct nk_context *ctx, int x, int y, int width, int height, char *command);
About CCExtractor specific functions
int activity(struct nk_context *ctx, int x, int y, int width, int height, struct main_tab *main_settings);
Info:
--Contains the procedure to be carried out when Activity Window is toggled.
Parameters:
- *ctx - pointer to
nk_contextstructure. - x - X co-ordinate to draw Activity Window
- y - Y co-ordinate to draw Activty Window.
- width - width of window to draw.
- height - height of window to draw.
- *main_settings - pointer to
main_tabstructure.
Return Type: int
- Returns non-zero value if window is not closed.
- Returns zero if window is closed.
void setup_main_settings(struct main_tab *main_settings);
Info:
Setups the required defaults of variables in main_tab structure.
Parameters:
- *main_settings - pointer to
main_tabstructure.
Return Type: void
char* truncate_path_string(char *filePath);
Info:
Truncated the Path String of file to visible area using ...
Parameters:
- *filePath - Pointer to string to be truncated.
Return Type: *char
- Returns pointer to truncated string.
void remove_path_entry(struct main_tab *main_settings, int indexToRemove);
Info:
Removes the selected path in the extraction queue (Selected entry's index is passed).
Parameters:
- *main_settings - pointer to
main_tabstructure. - indexToRemove - index of the string to be removed from dynamic array of many strings.
Return Type: void
void* read_activity_data(void *read_args);
Info:
Reads activity data related to CCExtractor on stdout. And outputs to activity window (Updates variables that code of activity window uses).
Parameters:
- *read_args - Pointer to void, because thread functions don't allow any datatype as argument or return type. Therefore they are passed as void then typecasted later in the function.
Return type: void*
void* <a id="func-read-data-from-thread>read_data_from_thread(void* read_args);
Info:
Reads data from--gui_mode_reports redirected from stderr to a file. Reads the subtitles extracted in realtime and updates the variables for the same, updates the state of progress bar. Also, lanches read_activity_data in a new thread.
Parameters:
- *read_args - Pointer to void, because thread functions don't allow any datatype as argument or return type. Therefore they are passed as void then typecasted later in the function.
Return type: void*
void* extract_thread(void* extract_args);
Info:
Passes command with all options from GUI to CLI CCExtractor.
Parameters:
- *extract_args - Pointer to void, because thread functions don't allow any datatype as argument or return type. Therefore they are passed as void then typecasted later in the function.
Return type: void*
void* feed_files_for_extraction(void* file_args);
Info:
Feeds file by file to a new thread and waits until its extraction is done. This is done until all the files in extraction queue are extracted.
Parameters:
- *file_args - Pointer to void, because thread functions don't allow any datatype as argument or return type. Therefore they are passed as void then typecasted later in the function.
Return type: void*
void setup_and_create_thread(struct main_tab *main_settings, struct built_string *command);
Info:
Initialises some values for the structure used in thread arguments and creates feed_files_for_extraction.
Parameters:
- *main_settings - Pointer to
main_tabstruct. - *command - Pointer to
built_stringstruct.
Return type: void*
void* find_hd_homerun_devices(void *args);
Finds devices connected to HD HomeRun Network.
Parameters:
- *args - Pointer to void, because thread functions don't allow any datatype as argument or return type. Therefore they are passed as void then typecasted later in the function.
Return type: void*
void* setup_hd_homerun_device(void *args);
Info:
Sets up various parameters required to extract subtitle from incoming stream from a HD HomeRun Device.
Parameters:
- *args - Pointer to void, because thread functions don't allow any datatype as argument or return type. Therefore they are passed as void then typecasted later in the function.
Return type: void*
void command_builder(struct built_string *command, struct main_tab *main_settings, struct network_popup *network_settings, struct input_tab *input, struct advanced_input_tab *advanced_input, struct output_tab *output, struct decoders_tab *decoders, struct credits_tab *credits, struct debug_tab *debug, struct burned_subs_tab *burned_subs);
Info:
Fetches the options from the whole GUI and adds the respective CLI commands to the term_string in built_string struct.
Parameters:
- *command - Pointer to
built_stringcommand. - *main_settings - Pointer to
main_tabstruct. - *network_settings - Pointer to
network_popupstruct. - *input - Pointer to
input_tabstruct. - *advance_input - Pointer to
advanced_inputstruct. - *output - Pointer to
output_tabstruct. - *decoders - Pointer to
decoders_tabstruct. - *credits - Pointer to
credits_tabstruct. - *debug - Pointer to
debug_tabstruct. - *burned_subs - Pointer to
burned_subs_tabstruct.
Return type: void
void die(const char *fmt, ...);
Info:
Custom function to generate error if something in File Browser goes wrong.
Parameters:
- *fmt - Format of char string along with place holder for variables.
- ... - Variables in order of their specified place holder.
Return type: void
char* file_load(const char* path, size_t* siz);
Info:
Custom function to load file and read data from loaded file.
Parameters:
- *path - Pointer to string literal (Path of the file).
- *siz - Size of string literal provided (To allocate memory accordingly).
Return type: void
char* str_duplicate(const char *src);
Info:
Dynamically copies specified string to memory.
Parameters:
- *src - The String to be copied.
Return type: char*
- Pointer to the string in the memory.
void dir_free_list(char **list, size_t size);
Info:
Frees the memory allocated to Files' and Directories' name and path.
Parameters:
- **char - Pointer to list (array of strings) to be freed
Return type: void
char** dir_list(const char *dir, int return_subdirs, size_t *count);
Info:
Opens the selected directory and adds its path to list and returns the same list. #####Parameters:
- *dir - Pointer to string (name of directory to be opened).
- return_subdirs -
nk_trueif subdirectories are to be returned then. - *count - Number of directories in opened directories.
Retrun type: char**
- Pointer to List (Array of strings, name of directories and files) is returned.
struct file_group FILE_GROUP(enum file_groups group, const char *name, struct nk_image *icon);
Info:
Initialises variables for file_group struct.
Parameters:
- group - specifies to which group does the file belong to. Selected from
file_groupsenum, likeFILE_GROUP_MUSIC. - *name - Pointer to a string literal (to set
namemember infile_group. - *icon - Pointer to
nk_imagestruct (Holds attributes for loaded image file) to set toiconmember offile_group.
Returnt type: struct file_group
- Returns a
file_groupinstance with set variables.
struct file FILE_DEF(enum file_types type, const char *suffix, enum file_groups group);
Info:
Initialises variables for file struct.
Parameters:
- type - specifies which type does the file belong to. Selected from
file_typesenum, likeFILE_TEXT. - *suffix - Pointer to string( to set
suffixmember infile). - group - specifies to which group does the file belong to. Selected from
file_groupsenum, likeFILE_GROUP_MUSIC.
Return type: struct file
- Returns a
fileinstance with set variables.
struct nk_image* media_icon_for_file(struct media *media, const char *file);
Info:
Analyses the files and checks to which file or file_group they belong and assign appropriate icon to the file and returns the same.
Parameters:
- *media - pointer to
mediastruct. - *file - pointer to string literal (name of file with extension)
Return type: struct nk_image*
- Returns appropriate
nk_imagecorresponding to the file.
void media_init(struct media *media);
Info:
Assigns icons to file and file_group members from.
Parameters:
- *media - pointer to
mediastruct.
Return type: void
void file_browser_reload_directory_content(struct file_browser *browser, const char *path);
Info:
Updates various variables related to Files/Directories path and names when screen of File Browser reloads. (Due to clicking on a directory or any other button leading to different directory).
Parameters:
- *browser - Pointer to
file_browserstruct. - *path - Path of the new directory whose contents are to be reloaded and showed on file browser.
Return type: void
void get_drives(struct file_browser *browser);
Info:
NOTE: Windows Specific Function. Detects the number of drives and their respective Drive Letters to show the same in File Browser. #####Parameters:
- *browser - pointer to
file_browserstruct.
Return type: void
void file_browser_init(struct file_browser *browser, struct media *media);
Info:
Initialised various variables/attributes required whenever the File Browser is run.
Parameters:
- *browser - Pointer to
file_browserstruct. - *media - pointer to
mediastruct.
Return type: void
void file_browser_free(struct file_browser *browser);
Info:
Frees the memory allocated to various variables in file_browser_init.
Parameters:
- *browser - pointer to
file_browserstruct.
Return type: void
int file_browser_run(struct file_browser *browser, struct nk_context *ctx, struct main_tab *main_settings, struct output_tab *output, struct debug_tab *debug, struct hd_homerun_tab *hd_homerun);
Info:
Provides runtime of File Browser on GUI.
Parameters:
- *browser - pointer to
file_browserstruct. - *ctx - pointer to
nk_contextstruct. - *main_settings - pointer to
main_tabstruct. - *output - poiter to
output_tabstruct. - *debug - pointer to
debug_tabstruct. - *hd_homerun - pointer to
hd_homerun_tabstruct.
Return type: int
- Returns
1if any File name/path is copied to current variable. - Returns
0otherwise.
void <a -d="func-draw-network-popup">draw_network_popup(struct nk_context *ctx, int *show_preferences_network, struct network_popup *network_settings);
Info:
Draws popup with Network Settings on GUI.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *show_preferences_network - pointer to variable status if which triggers the popup.
- *network_settings - pointer to
network_popupstruct.
Return type: void
void draw_getting_started_popup(struct nk_context *ctx, int *show_getting_started);
Info:
Draws popup on screen which shows Getting Started Info.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *show_getting_started - pointer to variable status if which triggers the popup.
Return type: void
void draw_about_ccx_popup(struct nk_context *ctx, int *show_about_ccx, struct nk_user_font *droid_big, struct nk_user_font *droid_head);
Info:
Draws popup on screen containing information about CCExtractor.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *show_about_ccx - pointer to variable status if which triggers the popup.
- *droid_big - pointer to
nk_user_fontstruct. - *droid_head - pointer to
nk_user_fontstruct.
Return type: void
void draw_progress_details_popup(struct nk_context *ctx, int *show_progress_details, struct main_tab *main_settings);
Info:
Draws popup on screen which shows progress details.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *show_pogress_details - pointer to variable status if which triggers the popup.
- *main_settings - pointer to
main_tabstruct.
Return type: void
void draw_color_popup(struct nk_context *ctx, struct output_tab *output);
Info:
Draws popup on screen which shows color-picker.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *output - pointer to
output_tabstruct.
Return type: void
void draw_thread_popup(struct nk_context *ctx, int *show_thread_popup);
Info:
This popup is shown if anyhow the GUI is unable to read file.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *show_thread_popup - pointer to variable status if which triggers the popup.
Return type: void
void setup_network_settings(struct network_popup *network_settings);
Info:
Sets up defaults for Network Settings.
Parameters:
- *network_settings - pointer to
network_popupstruct.
Return type: void
int preview(struct nk_context *ctx, int x, int y, int width, int height, struct main_tab *main_settings);
Info:
Draws Preview Nuklear window and shows preview strings (lines of subtitles extracted in realtime).
Parameters:
- *ctx - pointer to
nk_contextstruct. - x - X co-ordinate from where to draw window.
- y - Y co-ordinate from where to draw window.
- width - width of window.
- height - height of window.
- *main_settings - pointer to
main_tabstruct.
Return type:
- Returns non-zero value if window is not closed.
- Returns zero if window is closed.
void load_data(FILE *file, struct main_tab *main_settings, struct input_tab *input, struct advanced_input_tab *advanced_input, struct output_tab *output, struct decoders_tab *decoders, struct credits_tab *credits, struct debug_tab *debug, struct hd_homerun_tab *hd_homerun, struct burned_subs_tab *burned_subs);
Info:
Loads values of all the variables stored in a file at last exit of GUI.
Parameters:
- *file - pointer to
FILE. - *main_settings - pointer to
main_tabstruct. - *intput - pointer to
input_tabstruct. - *advanced_input - pointer to
advanced_input_tabstruct. - *output - pointer to
output_tabstruct. - *decoders - pointer to
decoders_tabstruct. - *credits - poitner to
credits_tabstruct. - *debug - pointer to
debug_tabstruct. - *hd_homerun - pointer to
hd_homerun_tabstruct. - *burned_subs - pointer to
burned_subs_tabstruct.
Return type: void
void save_data(FILE *file, struct main_tab *main_settings, struct input_tab *input, struct advanced_input_tab *advanced_input, struct output_tab *output, struct decoders_tab *decoders, struct credits_tab *credits, struct debug_tab *debug, struct hd_homerun_tab *hd_homerun, struct burned_subs_tab *burned_subs);
info:
Saves values of all the variables as a "Current State" in a file on exit.
Parameters:
- *file - pointer to
FILE. - *main_settings - pointer to
main_tabstruct. - *intput - pointer to
input_tabstruct. - *advanced_input - pointer to
advanced_input_tabstruct. - *output - pointer to
output_tabstruct. - *decoders - pointer to
decoders_tabstruct. - *credits - poitner to
credits_tabstruct. - *debug - pointer to
debug_tabstruct. - *hd_homerun - pointer to
hd_homerun_tabstruct. - *burned_subs - pointer to
burned_subs_tabstruct.
Return type: void
void write_credits(FILE *file, struct credits_tab *credits);
Info:
Writes Credits to files after some operations, since extra\n character gives problems while reading file.
Parameters:
- *file - pointer to
FILE. - *credits - pointer to
credits_tabstruct.
Return type: void
void read_credits(FILE* file, struct credits_tab *credits);
Info:
Reads credits from file in a specific format (as written by write_credits) from file.
Parameters:
- *file - pointer to
FILE. - *credits - pointer to
credits_tabstruct.
Return type: void
int terminal(struct nk_context *ctx, int x, int y, int width, int height, char *command);
Info:
Writes the command string (that would be passed to CLI CCExtractor) in "Terminal" Nuklear Window.
Parameters:
- *ctx - pointer to
nk_contextstruct. - x - X co-ordinate from where to draw the window.
- y - Y co-ordinate from where to draw the window.
- width - Width of the window.
- height - height of the window.
- *command - String to write on window (the command to be passed).
Return type: int
- Returns non-zero value if window is not closed.
- Returns zero if window is closed.
About CCExtractor specific Structures/Variables
main_tab
Info:
Contains all the variables for Main tab.
Variables worth noting:
int is_file_browser_activenk_trueif File Browser is triggered by any event.nk_falseotherwise.int scaleWindowForFileBrowser- Sets to
nk_trueifis_file_browser_activeisnk_trueto scale theglfwWindowto required size to accommodate File Browser. - Sets to
nk_falseotherwise.
input_tab
Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in Input tab.
advanced_input_tab
Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in Advanced Input tab.
output_tab
#####Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in Advanced Input tab.
decoders_tab
Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in Decoders tab.
credits_tab
Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in Credits tab.
debug_tab
Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in Debug tab.
hd_homerun_tab
Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in HDHomeRun tab.
burned_subs
Info:
Contains all variables to hold data of options selected/changed and view dynamically generated data to GUI in HDHomeRun tab.
networ_popup
Info:
Contains all the variables to store all the Network related options or showing them in GUI dynamically.
About Nuklear Specific functions
int nk_begin(struct nk_context*, const char *title, struct nk_rect bounds, nk_flags flags);
Info:
Draws a basic(and blank) window(Nuklear Window inside main GLFW window) to hold other Nuklear widgets.
Parameters:
- nk_context* - Pointer to
nk_contextstructure. - *title - Title for the so drawn Nuklear Window.
- bounds - instance of
nk_rectstructure to hold co-ordinates, width and height of the Nuklear Window. - flags - Which flags to pass( from those contained in
enum flags) to change behaviour of the Nuklear Window.
Return Type: int
- Returns true if window creation is successful.
- Returns false if window creation fails.
void nk_end(struct nk_context *ctx)
Info:
Marks the end of the Nuklear Window.
Parameter:
- *ctx - Pointer to
nk_contextstructure.
Return type: void
void nk_layout_row_dynamic(struct nk_context*, float height, int cols);
Info:
Used to define a dynamic row layout(to hold widgets), dynamic in the sense that the width is dynamically allocated to widgets.
Parameters:
- *nk_context - Pointer to
nk_contextstructure. - height - height to set for widgets of that row.
- cols - Columns to set for layout (generally the number of widgets to place).
Return Type: void
void nk_label_wrap(struct nk_context*, const char*);
Info:
Writes a label ( A plain String) and wraps it to the next line if the border of Nuklear Window, Group or Popup is reached. Note: If the text wraps to next line, height for a new line must be considered while defining a layout, else the wrapped text won't be visible (but it will be there).
Parameters:
- nk_context* - Pointer to
nk_contextstructure. - char* - Pointer to string literal (to view).
int nk_window_is_closed(struct nk_context *ctx, const char *name);
Info:
Checks if the active Nuklear Window is closed (by any trigger).
Parameters:
- *ctx - Pointer to
nk_contextstructure. - *name - Pointer to String literal(Name of window to check).
Return type: int
- Returns true if window is closed (by any trigger).
- Returns false of window is not closed.
void nk_menubar_begin(struct nk_context *ctx);
Info:
Marks the end of Menu Bar definition(Menubar code).
Parameters:
- *ctx - Pointer to
nk_contextstructure.
Return type: void
void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, float row_height, int cols);
Info:
Marks the beginning of custom layout. Which means, marking that layout has begun, now the widgets will be pushed row by row as per requirement using nk_layout_row_push.
Parameters:
- *ctx - Pointer to
nk_contextstructure. - fmt - Layout format from provided formats (
enum nk_layout_format), example -NK_STATIC,NK_DYNAMIC. - row_height - height of row pushed.
- cols - Number of columns pushed in row.
Return type: void
void nk_layout_row_push(struct nk_context*, float value);
Info:
Pushes a row to hold widgets after defining the beginning of custom layout by nk_layout_row_begin.
Parameters:
- nk_context* - Pointer to
nk_contextstructure. - value - ratio or width of the widget to be pushed next.
Return Type: void
int nk_menu_begin_label(struct nk_context *ctx, const char *text, nk_flags align, struct nk_vec2 size);
Info:
The label of the Menu Item to be pushed, for example - "Preferences" is marked by this function.
Parameters:
- *ctx - pointer to
nk_contextstructure. - *text - pointer to string literal (Title of the Menu, example - "Settings").
- align - alignment enumeration in
nk_flags, exampleNK_TEXT_LEFT. - size - Size of label (as
nk_vec2struct)
Return type: int
- Returns true if label creation successful.
- Returns false if label creation fails.
void nk_menubar_end(struct nk_context*);
Info:
Marks the end of the MenuBar definition.
Parameters:
- nk_context* - Pointer to
nk_contextstructure.
Return type: void
void nk_layout_space_begin(struct nk_context *ctx, enum nk_layout_format fmt, float height, int widget_count);
Info:
Marks the beginning of an empty space (Custom space for proper placement of widgets).
Parameters:
- *ctx - pointer to
nk_contextstructure. - fmt - Layout format as in
enu nk_layout_format, example -NK_STATIC,NK_DYNAMIC. - height = height of space to be added.
- widget_count - Number of spaces to add.
Return type: void
void nk_layout_space_end(struct nk_context *ctx);
Info:
Marks the end of custom space (empty) definition.
Parameters:
- *ctx - pointer to
nk_contextstructure.
Return type: void
int nk_style_push_vec2(struct nk_context* struct nk_vec2*, struct nk_vec2);
Info:
Comes under Style Stack. Used to temporarily modify length, width, spacing related attributes of Styles of Nuklear Context.
Parameters:
- nk_context* - Pointer to
nk_contextstructure. - nk_vec2* - Pointer to attribute to be modified.
- nk_vec2* - New value in the form
nk_vec2(x, y)as an instance of nk_vec2 structure.
Return type: int
- Returns true if successful.
- Returns false if unsuccessful.
int nk_style_push_float(struct nk_context*, float*, float);
Info:
Comes under Style Stack. Used to temporarily modify attributes requiring precision with floating point such as rounding value for buttons.
Parameters:
- nk_context* - Pointer to
nk_contextstructure. - float* - Pointer to variable whose value is to be changed.
- float - new value to set.
int nk_button_label(struct nk_context*, const char *title);
Info:
Draws a Button with provided label.
Parameters:
- nk_context* - Pointer to
nk_contextstruct. - *title - Pointer to string literal (Label to put on button).
Return type: int
- Returns true of Button is clicked.
- Returns false of Button is in 'unclicked' state.
int nk_style_pop_float(struct nk_context*);
Info:
Pops the float values modified off the Style Stack. Which means, returns them to original state as they were before being modified by nk_style_push_float.
Paramaters:
- nk_context* - Pointer to
nk_contextstruct.
Return type: int
- Returns true if successful.
- Returns false if unsuccessful.
int nk_group_begin(struct nk_context *ctx, const char *title, nk_flags flags);
Info:
Makes a group with given flags. Looks just like a window created by nk_begin but can be created inside a window.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *title - string literal (Title of the group).
- flags - All the required flags among available flags in
nk_flags.
Return Type: int
- Returns false if creation unsuccessful.
- Returns true if creation successful.
void nk_group_end(struct nk_context *ctx);
Info:
Marks the end of the group created by nk_group_begin.
Parameters:
- *ctx - pointer to
nk_contextstruct.
Return type: void
void nk_layout_row(struct nk_context*, enum nk_layout_format, float height, int cols, const float *ratio);
Info:
Used to create custom row layout in which widget placement (including spacing) is done using ratios in floating point. Maximum ratio allowed is one. So, if there are two widgets (say buttons) need to placed in 50% available area each. Then ratio will be {0.5f, 0.5f}.
Parameters:
- nk_context* - pointer to
nk_contextstruct. - nk_layout_format - format from available formats in
enum nk_layout_formatlikeNK_STATIC,NK_DYNAMIC. - height - height of the layout.
- cols - Number of widgets(including spaces) to be used.
- *ratio - Ratio for widget placement.
Return type: void
void nk_spacing(struct nk_context*, int cols);
Info:
Used to create spacing (blank) of specified columns.
Parameters:
- nk_context* - pointer to
nk_contextstruct. - cols - Number of columns for which spacing has to be true.
Return type: void
int nk_checkbox_label(struct nk_context *ctx, const char *label, int *active);
Info:
Creates a checkbox with specified label.
Parameters:
- *ctx - Pointer to
nk_contextstruct. - * - Pointer to string literal(Label of checkbox).
- * - Pointer to variable to store the active value.
nk_falseif unchecked,nk_trueif checked.
Return type: int
- Returns false if unable to draw widget or old value of
*active= new value of*active. - Returns true of old value of
*active!= new value of*active.
int nk_option_label(struct nk_context *ctx, const char *label, int active);
Info:
Draws radio button (among radio group) with specified label.
Parameters:
- *ctx - pointer to
nk_contextstruct. - *label - Pointer to string literal (label of radio button).
- active - Any check to specify if the radio button is active.
Return type: int
- Returns true if radio button is active.
- Returns false if radio button is inactive.
int nk_selectable_label(struct nk_context*, const char*, nk_flags align, int *value);
Info:
Draws a selectable label. (Just like a regular nk_label but with a difference that it can be selected)
Parameters:
- nk_context* - pointer to
nk_contextstruct. - char* - Pointer to string literal (Label to display on GUI).
- align - required alignment flags from
nk_flagslikeNK_TEXT_LEFT. - *value - Pointer to integer variable to store the value if the label is triggered or not.
- Sets to
nk_trueif label selected. - Sets to
nk_falseif label is in unselected state.
- Sets to
Return type: int
- Returns false if unable to draw widget or old value of
*value= new value of*value. - Returns true of old value of
*value!= new value of*value.
int nk_combo(struct nk_context*, const char **items, int count, int selected, int item_height, struct nk_vec2 size);
Info:
Draws combobox with given items as array of strings.
Parameters:
- nk_context* - Pointer to
nk_contextstructure. - **items - Array of strings of items to populate the list of combobox.
- count - Number of items in the combobox.
- selected - variable to store the index of selected item.
- item_height - Height to allocate to each item in combobox.
- size - size of combobox after expansion(when dropdown arrow is clicked). Given as nk_vec2(x, y).
Return type: int
- Returns the index of selected item.
void nk_label(struct nk_context *ctx, const char *str, nk_flags alignment);
Info:
Draws a plain text on Nuklear Window, Popup or group.
Parameters:
- *ctx - pointer to
nk_contextstructure. - *str - Pointer to string literal (Text to draw).
- alignment - required flags for text alignment from
nk_flags, likeNK_TEXT_LEFT.
Return type: void
int nk_progress(struct nk_context *ctx, nk_size *cur, nk_size max, int is_modifyable);
Info:
Draws a progress bar.
Parameters:
- *ctx - Poitner to
nk_contextstruct. - *cur - Realtime value to update in progress bar.
- max - Maximum value
*curcan achieve (usually 100, for 100% progress). - is_modifyable -
nk_trueif progress bar can be modified with other events like mouse click and drag.nk_falseif progress bar needs to be modified only by value of*cur
Return type: int
- Returns false if unable to draw widget or old value of
*cur= new value of*cur. - Returns true of old value of
*cur!= new value of*cur.
About Nuklear Specific Structures/Variables
nk_context
Info:
Contains various Variables/attributes related to current Window.
nk_vec2
Info:
A simple structure containing 2 variables x and y. Used for various purposes where 2 variables are required for example.. using offset for position or size of any widget/window.