X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=graph.h;h=aff960c7e8f63f49e3ec16afb0b891cf257ce999;hb=f629c233e6dd72924ed2672db142708b71dc663e;hp=eab4e3daba9812293d4e005c3ebe28f9a97744ce;hpb=4d9e42f8f11c57b32b976a943c8ddaf6214e64b8;p=git.git diff --git a/graph.h b/graph.h index eab4e3dab..aff960c7e 100644 --- a/graph.h +++ b/graph.h @@ -5,15 +5,26 @@ struct git_graph; /* - * Create a new struct git_graph. - * The graph should be freed with graph_release() when no longer needed. + * Set up a custom scheme for column colors. + * + * The default column color scheme inserts ANSI color escapes to colorize + * the graph. The various color escapes are stored in an array of strings + * where each entry corresponds to a color, except for the last entry, + * which denotes the escape for resetting the color back to the default. + * When generating the graph, strings from this array are inserted before + * and after the various column characters. + * + * This function allows you to enable a custom array of color escapes. + * The 'colors_max' argument is the index of the last "reset" entry. + * + * This functions must be called BEFORE graph_init() is called. */ -struct git_graph *graph_init(struct rev_info *opt); +void graph_set_column_colors(const char **colors, unsigned short colors_max); /* - * Destroy a struct git_graph and free associated memory. + * Create a new struct git_graph. */ -void graph_release(struct git_graph *graph); +struct git_graph *graph_init(struct rev_info *opt); /* * Update a git_graph with a new commit. @@ -26,26 +37,6 @@ void graph_release(struct git_graph *graph); */ void graph_update(struct git_graph *graph, struct commit *commit); -/* - * Output the next line for a graph. - * This formats the next graph line into the specified strbuf. It is not - * terminated with a newline. - * - * Returns 1 if the line includes the current commit, and 0 otherwise. - * graph_next_line() will return 1 exactly once for each time - * graph_update() is called. - */ -int graph_next_line(struct git_graph *graph, struct strbuf *sb); - -/* - * Output a padding line in the graph. - * This is similar to graph_next_line(). However, it is guaranteed to - * never print the current commit line. Instead, if the commit line is - * next, it will simply output a line of vertical padding, extending the - * branch lines downwards, but leaving them otherwise unchanged. - */ -void graph_padding_line(struct git_graph *graph, struct strbuf *sb); - /* * Determine if a graph has finished outputting lines for the current * commit. @@ -58,6 +49,17 @@ void graph_padding_line(struct git_graph *graph, struct strbuf *sb); */ int graph_is_commit_finished(struct git_graph const *graph); +/* + * Output the next line for a graph. + * This formats the next graph line into the specified strbuf. It is not + * terminated with a newline. + * + * Returns 1 if the line includes the current commit, and 0 otherwise. + * graph_next_line() will return 1 exactly once for each time + * graph_update() is called. + */ +int graph_next_line(struct git_graph *graph, struct strbuf *sb); + /* * graph_show_*: helper functions for printing to stdout @@ -89,21 +91,6 @@ void graph_show_padding(struct git_graph *graph); */ int graph_show_remainder(struct git_graph *graph); -/* - * Print a strbuf to stdout. If the graph is non-NULL, all lines but the - * first will be prefixed with the graph output. - * - * If the strbuf ends with a newline, the output will end after this - * newline. A new graph line will not be printed after the final newline. - * If the strbuf is empty, no output will be printed. - * - * Since the first line will not include the graph ouput, the caller is - * responsible for printing this line's graph (perhaps via - * graph_show_commit() or graph_show_oneline()) before calling - * graph_show_strbuf(). - */ -void graph_show_strbuf(struct git_graph *graph, struct strbuf const *sb); - /* * Print a commit message strbuf and the remainder of the graph to stdout. *