aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/output.h
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2015-07-24 00:50:58 -0700
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2015-07-24 00:59:27 -0700
commitb4f53143b0e05fd3061cdf2e65e17a6a2904090b (patch)
tree4785bf31f7b89fc2420aa740d9a6967dc6c6f9b1 /src/output.h
parent9c2fdc6da57032c4448b59de5872086eea626b74 (diff)
Migrate source files into src/ directory
This change moves source files into a src/ directory, and puts object files into an obj/ directory. The Makefile and xcode project are updated accordingly. Fixes #1866
Diffstat (limited to 'src/output.h')
-rw-r--r--src/output.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/output.h b/src/output.h
new file mode 100644
index 00000000..6c7e4f32
--- /dev/null
+++ b/src/output.h
@@ -0,0 +1,143 @@
+/** \file output.h
+ Generic output functions
+*/
+/**
+ Constants for various character classifications. Each character of a command string can be classified as one of the following types.
+*/
+
+#ifndef FISH_OUTPUT_H
+#define FISH_OUTPUT_H
+
+#include <wchar.h>
+#include "fallback.h"
+#include "screen.h"
+#include "color.h"
+
+/**
+ Constants for various colors as used by the set_color function.
+*/
+enum
+{
+ FISH_COLOR_BLACK,
+ FISH_COLOR_RED,
+ FISH_COLOR_GREEN,
+ FISH_COLOR_YELLOW,
+ FISH_COLOR_BLUE,
+ FISH_COLOR_MAGENTA,
+ FISH_COLOR_CYAN,
+ FISH_COLOR_WHITE,
+ /** The default fg color of the terminal */
+ FISH_COLOR_NORMAL,
+ FISH_COLOR_IGNORE,
+ FISH_COLOR_RESET
+}
+;
+
+/**
+ The value to send to set_color to tell it to use a bold font
+*/
+#define FISH_COLOR_BOLD 0x80
+/**
+ The value to send to set_color to tell it to underline the text
+*/
+#define FISH_COLOR_UNDERLINE 0x100
+
+/**
+ Sets the fg and bg color. May be called as often as you like, since
+ if the new color is the same as the previous, nothing will be
+ written. Negative values for set_color will also be ignored. Since
+ the terminfo string this function emits can potentially cause the
+ screen to flicker, the function takes care to write as little as
+ possible.
+
+ Possible values for color are any form the FISH_COLOR_* enum,
+ FISH_COLOR_IGNORE and FISH_COLOR_RESET. FISH_COLOR_IGNORE will
+ leave the color unchanged, and FISH_COLOR_RESET will perform an
+ exit_attribute_mode, even if set_color thinks it is already in
+ FISH_COLOR_NORMAL mode.
+
+ In order to set the color to normal, three terminfo strings may
+ have to be written.
+
+ - First a string to set the color, such as set_a_foreground. This
+ is needed because otherwise the previous strings colors might be
+ removed as well.
+
+ - After that we write the exit_attribute_mode string to reset all
+ color attributes.
+
+ - Lastly we may need to write set_a_background or set_a_foreground
+ to set the other half of the color pair to what it should be.
+
+ \param c Foreground color.
+ \param c2 Background color.
+*/
+
+
+void set_color(rgb_color_t c, rgb_color_t c2);
+
+/**
+ Write specified multibyte string
+ */
+void writembs_check(char *mbs, const char *mbs_name, const char *file, long line);
+#define writembs(mbs) writembs_check((mbs), #mbs, __FILE__, __LINE__)
+
+/**
+ Write a wide character using the output method specified using output_set_writer().
+*/
+int writech(wint_t ch);
+
+/**
+ Write a wide character string to FD 1.
+*/
+void writestr(const wchar_t *str);
+
+/**
+ Return the internal color code representing the specified color
+*/
+rgb_color_t parse_color(const wcstring &val, bool is_background);
+
+/**
+ This is for writing process notification messages. Has to write to
+ stdout, so clr_eol and such functions will work correctly. Not an
+ issue since this function is only used in interactive mode anyway.
+*/
+int writeb(tputs_arg_t b);
+
+/**
+ Set the function used for writing in move_cursor, writespace and
+ set_color and all other output functions in this library. By
+ default, the write call is used to give completely unbuffered
+ output to stdout.
+*/
+void output_set_writer(int (*writer)(char));
+
+/**
+ Return the current output writer
+ */
+int (*output_get_writer())(char) ;
+
+/** Set the terminal name */
+void output_set_term(const wcstring &term);
+
+/** Return the terminal name */
+const wchar_t *output_get_term();
+
+/** Sets what colors are supported */
+enum
+{
+ color_support_term256 = 1 << 0,
+ color_support_term24bit = 1 << 1
+};
+typedef unsigned int color_support_t;
+color_support_t output_get_color_support();
+void output_set_color_support(color_support_t support);
+
+/** Given a list of rgb_color_t, pick the "best" one, as determined by the color support. Returns rgb_color_t::none() if empty */
+rgb_color_t best_color(const std::vector<rgb_color_t> &colors, color_support_t support);
+
+/* Exported for builtin_set_color's usage only */
+void write_color(rgb_color_t color, bool is_fg);
+unsigned char index_for_color(rgb_color_t c);
+
+#endif