git-remote-mediawiki: import "File:" attachments
[gitweb.git] / graph.h
diff --git a/graph.h b/graph.h
index eab4e3daba9812293d4e005c3ebe28f9a97744ce..aff960c7e8f63f49e3ec16afb0b891cf257ce999 100644 (file)
--- 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.
  *