aboutsummarylogtreecommitdiffstats
path: root/curses_win.h
diff options
context:
space:
mode:
authorAntony Kellermann2018-07-20 20:23:03 -0400
committerAntony Kellermann2018-07-20 20:23:03 -0400
commite98c2b16de384caf7d78a54f351cc93217c045d1 (patch)
tree0d22ec9a6e0ad3599d79f414d5e7489a70d6ac4c /curses_win.h
parentbf4ab01665779ab0c2f581125a0d0a5a21539b0e (diff)
downloadaur-e98c2b16de384caf7d78a54f351cc93217c045d1.tar.gz
Renamed files
Diffstat (limited to 'curses_win.h')
-rw-r--r--curses_win.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/curses_win.h b/curses_win.h
new file mode 100644
index 000000000000..6e00d6abe5fd
--- /dev/null
+++ b/curses_win.h
@@ -0,0 +1,145 @@
+#ifndef GRAPH_H
+#define GRAPH_H
+
+#define GRAPH_COLS_MIN 24
+#define GRAPH_ROWS_MIN 10
+
+#define ZOOM_5y 0
+#define ZOOM_4y 1
+#define ZOOM_3y 2
+#define ZOOM_2y 3
+#define ZOOM_1y 4
+#define ZOOM_9m 5
+#define ZOOM_6m 6
+#define ZOOM_3m 7
+#define ZOOM_1m 8
+
+#define ROWS_SPACING 5
+#define COLS_SPACING 12
+#define DAYS_TO_BUSINESS_DAYS_RATIO (29.0/20.0)
+
+#define RED COLOR_PAIR(1)
+#define BLACK COLOR_PAIR(2)
+
+#define PADDING 1
+
+#define GRAPH_Y PADDING * 2
+#define GRAPH_X PADDING
+#define GRAPH_HEIGHT (rows / 2 - GRAPH_Y) - PADDING
+#define GRAPH_WIDTH (cols / 2 - GRAPH_X) - PADDING
+
+#define COMPANY_Y GRAPH_Y
+#define COMPANY_X GRAPH_WIDTH + GRAPH_X + PADDING
+#define COMPANY_HEIGHT GRAPH_HEIGHT + PADDING
+#define COMPANY_WIDTH GRAPH_WIDTH
+
+#define NEWS_Y GRAPH_Y + GRAPH_HEIGHT + PADDING
+#define NEWS_X PADDING
+#define NEWS_HEIGHT GRAPH_HEIGHT + PADDING * 3
+#define NEWS_WIDTH GRAPH_WIDTH
+
+#define PEERS_Y NEWS_Y
+#define PEERS_X NEWS_X + NEWS_WIDTH + PADDING * 2
+#define PEERS_HEIGHT GRAPH_HEIGHT
+#define PEERS_WIDTH GRAPH_WIDTH
+
+#include <stdlib.h>
+#include <ncurses.h>
+#include "api.h"
+
+extern int zoom_months[9], zoom_change_x_months[9];
+
+/**
+ * Main function to print information about a security. Stocks/etfs/mutf/otc securities will print in an ncurses window,
+ * while cryptos will print to stdout due to lack of information.
+ * @param symbol any security
+ */
+void interface_print(const char* symbol);
+
+/**
+ * Prints basic price information header to an Ncurses window.
+ * @param window
+ * @param symbol_info Info*
+ */
+void header_printw(WINDOW* window, Info* symbol_info);
+
+/**
+ * Prints basic information about a security to stdout.
+ * @param symbol_info Info*
+ */
+void info_print(Info* symbol_info);
+
+/**
+ * Prints basic information about a security to an Ncurses window.
+ * @param symbol_info Info*
+ */
+void info_printw(WINDOW* window, Info* symbol_info);
+
+/**
+ * Prints num_articles articles relating to the given symbol to stdout. Currently only works for stocks/etfs
+ * @param symbol stock/etf symbol
+ * @param num_articles number of articles to print (max 50)
+ */
+void news_print(const char* symbol, int num_articles);
+
+/**
+ * Prints articles relating to the given symbol to an Ncurses window. Currently only works for stocks/etfs
+ * @param window
+ * @param symbol_info Info*
+ */
+void news_printw(WINDOW* window, Info* symbol_info);
+
+/**
+ * Prints peers relating to the given symbol to an Ncurses window. Currently only works for stocks/etfs
+ * @param window
+ * @param symbol_info Info*
+ */
+void peers_printw(WINDOW* window, Info* symbol_info);
+
+/**
+ * Graphs a security in stdscr. If symbol2 is not NULL, also graphs that security.
+ * @param symbol security to graph
+ * @param symbol2 optional second security
+ */
+void graph_print(const char* symbol, const char* symbol2);
+
+/**
+ * -- Main input loop for graphing --
+ * Graphs a secuturity or securities in the given window.
+ * The user may input keystrokes to manipulate the graph(s).
+ * Valid keystrokes:
+ * q: Quits program
+ * UP: increase zoom level by one and moves start date forward by one year, three months, or two months.
+ * DOWN: decreases zoom level by one and moves start date backward by one year, three months, or two months.
+ * LEFT: moves start date backward by one year, three months, or one month.
+ * RIGHT: moves start date forward by one year, three months, or one month.
+ * @param window the window to print to
+ * @param symbol_info Info* containing points
+ * @param symbol_info2 optional Info* containing points
+ */
+void graph_printw(WINDOW* window, Info* symbol_info, Info* symbol_info2);
+
+/**
+ * Prints out a NCurses based graph given an Info*.
+ * If symbol_info2 if not NULL, also prints a graph of its data in a different color.
+ * x-axis -- date
+ * y-axis -- close price
+ * @param window the window to print to
+ * @param symbol_info Info* containing points
+ * @param symbol_info2 optional Info* containing points
+ * @param start_time the starting date of prices to print
+ * @param zoom the zoom level
+ */
+void graph_draw(WINDOW* window, Info* symbol_info, Info* symbol_info2, struct tm* start_time, int zoom);
+
+/**
+ * Reallocates the given array with size trading days. Moves all values to end of the array and sets
+ * values not initialized as EMPTY.
+ * @param points the array to realloc
+ * @param size the size of points
+ * @param trading_days the size to realloc
+ * @return the reallocated array
+ */
+double* graph_fill_empty(double* points, int size, int trading_days);
+
+#endif \ No newline at end of file