mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-02-14 04:00:29 +01:00
util: move the ansi color escape sequences into a separate header
Make the default set an enum with an array to access the codes. Additionally provide a true RBG escape sequence, all modern terminals support that anyway. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
91c4bc2a93
commit
b00fe9ed99
3 changed files with 76 additions and 15 deletions
|
|
@ -24,6 +24,7 @@ lib_util = static_library('util',
|
|||
'src/util-logger.h',
|
||||
'src/util-logger.c',
|
||||
'src/util-macros.h',
|
||||
'src/util-color.h',
|
||||
'src/util-object.h',
|
||||
'src/util-sources.h',
|
||||
'src/util-sources.c',
|
||||
|
|
|
|||
75
src/util-color.h
Normal file
75
src/util-color.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* Copyright © 2020 Red Hat, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* ANSI color codes for terminal colors */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#define COLOR_SET \
|
||||
X(RESET, "\x1B[0m") \
|
||||
X(BLACK, "\x1B[0;30m") \
|
||||
X(RED, "\x1B[0;31m") \
|
||||
X(GREEN, "\x1B[0;32m") \
|
||||
X(YELLOW, "\x1B[0;33m") \
|
||||
X(BLUE, "\x1B[0;34m") \
|
||||
X(MAGENTA, "\x1B[0;35m") \
|
||||
X(CYAN, "\x1B[0;36m") \
|
||||
X(WHITE, "\x1B[0;37m") \
|
||||
X(BRIGHT_RED, "\x1B[0;31;1m") \
|
||||
X(BRIGHT_GREEN, "\x1B[0;32;1m") \
|
||||
X(BRIGHT_YELLOW, "\x1B[0;33;1m") \
|
||||
X(BRIGHT_BLUE, "\x1B[0;34;1m") \
|
||||
X(BRIGHT_MAGENTA, "\x1B[0;35;1m") \
|
||||
X(BRIGHT_CYAN, "\x1B[0;36;1m") \
|
||||
X(BRIGHT_WHITE, "\x1B[0;37;1m") \
|
||||
X(HIGHLIGHT, "\x1B[0;1;39m") \
|
||||
|
||||
/**
|
||||
* Expands into
|
||||
* enum Color {
|
||||
* RESET,
|
||||
* RED,
|
||||
* ...
|
||||
* }
|
||||
*/
|
||||
enum AnsiColor {
|
||||
#define X(name, code) name,
|
||||
COLOR_SET
|
||||
#undef X
|
||||
};
|
||||
|
||||
/**
|
||||
* Expands into an array usable via: colorcode[RED], etc.
|
||||
*/
|
||||
static const char * const ansi_colorcode[]
|
||||
__attribute__((unused)) = {
|
||||
#define X(name, code) code,
|
||||
COLOR_SET
|
||||
#undef X
|
||||
};
|
||||
|
||||
/* ANSI escape sequence for true RBB colors */
|
||||
#define ANSI_FG_RGB(r, g, b) "\x1B[38;2;" #r ";" #g ";" #b "m"
|
||||
#define ANSI_BG_RGB(r, g, b) "\x1B[48;2;" #r ";" #g ";" #b "m"
|
||||
|
|
@ -36,21 +36,6 @@
|
|||
#define min(a, b) (((a) < (b)) ? (a) : (b))
|
||||
#define max(a, b) (((a) > (b)) ? (a) : (b))
|
||||
|
||||
#define ANSI_HIGHLIGHT "\x1B[0;1;39m"
|
||||
#define ANSI_RED "\x1B[0;31m"
|
||||
#define ANSI_GREEN "\x1B[0;32m"
|
||||
#define ANSI_YELLOW "\x1B[0;33m"
|
||||
#define ANSI_BLUE "\x1B[0;34m"
|
||||
#define ANSI_MAGENTA "\x1B[0;35m"
|
||||
#define ANSI_CYAN "\x1B[0;36m"
|
||||
#define ANSI_BRIGHT_RED "\x1B[0;31;1m"
|
||||
#define ANSI_BRIGHT_GREEN "\x1B[0;32;1m"
|
||||
#define ANSI_BRIGHT_YELLOW "\x1B[0;33;1m"
|
||||
#define ANSI_BRIGHT_BLUE "\x1B[0;34;1m"
|
||||
#define ANSI_BRIGHT_MAGENTA "\x1B[0;35;1m"
|
||||
#define ANSI_BRIGHT_CYAN "\x1B[0;36;1m"
|
||||
#define ANSI_NORMAL "\x1B[0m"
|
||||
|
||||
#define ANSI_UP "\x1B[%dA"
|
||||
#define ANSI_DOWN "\x1B[%dB"
|
||||
#define ANSI_RIGHT "\x1B[%dC"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue