From b4f53143b0e05fd3061cdf2e65e17a6a2904090b Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Fri, 24 Jul 2015 00:50:58 -0700 Subject: 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 --- src/output.h | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/output.h (limited to 'src/output.h') 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 +#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 &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 -- cgit v1.2.3