GUACAMOLE-278: Move terminal palette/color definitions into dedicated files.
This commit is contained in:
parent
48fc4afc5b
commit
eaa71f5717
@ -27,6 +27,7 @@ noinst_HEADERS = \
|
||||
terminal/char_mappings.h \
|
||||
terminal/common.h \
|
||||
terminal/display.h \
|
||||
terminal/palette.h \
|
||||
terminal/scrollbar.h \
|
||||
terminal/terminal.h \
|
||||
terminal/terminal_handlers.h \
|
||||
@ -38,6 +39,7 @@ libguac_terminal_la_SOURCES = \
|
||||
char_mappings.c \
|
||||
common.c \
|
||||
display.c \
|
||||
palette.c \
|
||||
scrollbar.c \
|
||||
terminal.c \
|
||||
terminal_handlers.c \
|
||||
|
@ -105,23 +105,3 @@ int guac_terminal_write_all(int fd, const char* buffer, int size) {
|
||||
|
||||
}
|
||||
|
||||
int guac_terminal_colorcmp(const guac_terminal_color* a,
|
||||
const guac_terminal_color* b) {
|
||||
|
||||
/* Consider red component highest order ... */
|
||||
if (a->red != b->red)
|
||||
return a->red - b->red;
|
||||
|
||||
/* ... followed by green ... */
|
||||
if (a->green != b->green)
|
||||
return a->green - b->green;
|
||||
|
||||
/* ... followed by blue */
|
||||
if (a->blue != b->blue)
|
||||
return a->blue - b->blue;
|
||||
|
||||
/* If all components match, colors are equal */
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "common/surface.h"
|
||||
#include "terminal/common.h"
|
||||
#include "terminal/display.h"
|
||||
#include "terminal/palette.h"
|
||||
#include "terminal/types.h"
|
||||
|
||||
#include <math.h>
|
||||
@ -36,30 +37,6 @@
|
||||
#include <guacamole/socket.h>
|
||||
#include <pango/pangocairo.h>
|
||||
|
||||
const guac_terminal_color guac_terminal_palette[16] = {
|
||||
|
||||
/* Normal colors */
|
||||
{0, 0x00, 0x00, 0x00}, /* Black */
|
||||
{1, 0x99, 0x3E, 0x3E}, /* Red */
|
||||
{2, 0x3E, 0x99, 0x3E}, /* Green */
|
||||
{3, 0x99, 0x99, 0x3E}, /* Brown */
|
||||
{4, 0x3E, 0x3E, 0x99}, /* Blue */
|
||||
{5, 0x99, 0x3E, 0x99}, /* Magenta */
|
||||
{6, 0x3E, 0x99, 0x99}, /* Cyan */
|
||||
{7, 0x99, 0x99, 0x99}, /* White */
|
||||
|
||||
/* Intense colors */
|
||||
{8, 0x3E, 0x3E, 0x3E}, /* Black */
|
||||
{9, 0xFF, 0x67, 0x67}, /* Red */
|
||||
{10, 0x67, 0xFF, 0x67}, /* Green */
|
||||
{11, 0xFF, 0xFF, 0x67}, /* Brown */
|
||||
{12, 0x67, 0x67, 0xFF}, /* Blue */
|
||||
{13, 0xFF, 0x67, 0xFF}, /* Magenta */
|
||||
{14, 0x67, 0xFF, 0xFF}, /* Cyan */
|
||||
{15, 0xFF, 0xFF, 0xFF}, /* White */
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Clears the currently-selected region, removing the highlight.
|
||||
*/
|
||||
|
66
src/terminal/palette.c
Normal file
66
src/terminal/palette.c
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "terminal/palette.h"
|
||||
|
||||
const guac_terminal_color guac_terminal_palette[16] = {
|
||||
|
||||
/* Normal colors */
|
||||
{0, 0x00, 0x00, 0x00}, /* Black */
|
||||
{1, 0x99, 0x3E, 0x3E}, /* Red */
|
||||
{2, 0x3E, 0x99, 0x3E}, /* Green */
|
||||
{3, 0x99, 0x99, 0x3E}, /* Brown */
|
||||
{4, 0x3E, 0x3E, 0x99}, /* Blue */
|
||||
{5, 0x99, 0x3E, 0x99}, /* Magenta */
|
||||
{6, 0x3E, 0x99, 0x99}, /* Cyan */
|
||||
{7, 0x99, 0x99, 0x99}, /* White */
|
||||
|
||||
/* Intense colors */
|
||||
{8, 0x3E, 0x3E, 0x3E}, /* Black */
|
||||
{9, 0xFF, 0x67, 0x67}, /* Red */
|
||||
{10, 0x67, 0xFF, 0x67}, /* Green */
|
||||
{11, 0xFF, 0xFF, 0x67}, /* Brown */
|
||||
{12, 0x67, 0x67, 0xFF}, /* Blue */
|
||||
{13, 0xFF, 0x67, 0xFF}, /* Magenta */
|
||||
{14, 0x67, 0xFF, 0xFF}, /* Cyan */
|
||||
{15, 0xFF, 0xFF, 0xFF}, /* White */
|
||||
|
||||
};
|
||||
|
||||
int guac_terminal_colorcmp(const guac_terminal_color* a,
|
||||
const guac_terminal_color* b) {
|
||||
|
||||
/* Consider red component highest order ... */
|
||||
if (a->red != b->red)
|
||||
return a->red - b->red;
|
||||
|
||||
/* ... followed by green ... */
|
||||
if (a->green != b->green)
|
||||
return a->green - b->green;
|
||||
|
||||
/* ... followed by blue */
|
||||
if (a->blue != b->blue)
|
||||
return a->blue - b->blue;
|
||||
|
||||
/* If all components match, colors are equal */
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "terminal/buffer.h"
|
||||
#include "terminal/common.h"
|
||||
#include "terminal/display.h"
|
||||
#include "terminal/palette.h"
|
||||
#include "terminal/terminal.h"
|
||||
#include "terminal/terminal_handlers.h"
|
||||
#include "terminal/types.h"
|
||||
|
@ -50,26 +50,5 @@ bool guac_terminal_has_glyph(int codepoint);
|
||||
*/
|
||||
int guac_terminal_write_all(int fd, const char* buffer, int size);
|
||||
|
||||
/**
|
||||
* Compares two colors, returning a negative value if the first color is less
|
||||
* than the second, a positive value if the first color is greater than the
|
||||
* second, and zero if the colors are identical. Only the color components are
|
||||
* compared (not the palette index). The red component is considered the
|
||||
* highest order component, followed by green, followed by blue.
|
||||
*
|
||||
* @param a
|
||||
* The first color to compare.
|
||||
*
|
||||
* @param b
|
||||
* The second color to compare.
|
||||
*
|
||||
* @return
|
||||
* A negative value if the first color is less than the second, a positive
|
||||
* value if the first color is greater than the second, and zero if the
|
||||
* colors are identical.
|
||||
*/
|
||||
int guac_terminal_colorcmp(const guac_terminal_color* a,
|
||||
const guac_terminal_color* b);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include "common/surface.h"
|
||||
#include "palette.h"
|
||||
#include "types.h"
|
||||
|
||||
#include <guacamole/client.h>
|
||||
@ -37,93 +38,6 @@
|
||||
*/
|
||||
#define GUAC_TERMINAL_MAX_CHAR_WIDTH 2
|
||||
|
||||
/**
|
||||
* The index of black within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_BLACK 0
|
||||
|
||||
/**
|
||||
* The index of low-intensity red within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_RED 1
|
||||
|
||||
/**
|
||||
* The index of low-intensity green within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_GREEN 2
|
||||
|
||||
/**
|
||||
* The index of brown within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_BROWN 3
|
||||
|
||||
/**
|
||||
* The index of low-intensity blue within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_BLUE 4
|
||||
|
||||
/**
|
||||
* The index of low-intensity magenta (purple) within the terminal color
|
||||
* palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_PURPLE 5
|
||||
|
||||
/**
|
||||
* The index of low-intensity cyan (teal) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_TEAL 6
|
||||
|
||||
/**
|
||||
* The index of low-intensity white (gray) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_GRAY 7
|
||||
|
||||
/**
|
||||
* The index of bright black (dark gray) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_GRAY 8
|
||||
|
||||
/**
|
||||
* The index of bright red within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_RED 9
|
||||
|
||||
/**
|
||||
* The index of bright green within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_GREEN 10
|
||||
|
||||
/**
|
||||
* The index of bright brown (yellow) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_YELLOW 11
|
||||
|
||||
/**
|
||||
* The index of bright blue within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_BLUE 12
|
||||
|
||||
/**
|
||||
* The index of bright magenta within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_MAGENTA 13
|
||||
|
||||
/**
|
||||
* The index of bright cyan within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_CYAN 14
|
||||
|
||||
/**
|
||||
* The index of bright white within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_WHITE 15
|
||||
|
||||
/**
|
||||
* The available color palette. All integer colors within structures
|
||||
* here are indices into this palette.
|
||||
*/
|
||||
extern const guac_terminal_color guac_terminal_palette[16];
|
||||
|
||||
/**
|
||||
* All available terminal operations which affect character cells.
|
||||
*/
|
||||
|
163
src/terminal/terminal/palette.h
Normal file
163
src/terminal/terminal/palette.h
Normal file
@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
#ifndef GUAC_TERMINAL_PALETTE_H
|
||||
#define GUAC_TERMINAL_PALETTE_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* The index of black within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_BLACK 0
|
||||
|
||||
/**
|
||||
* The index of low-intensity red within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_RED 1
|
||||
|
||||
/**
|
||||
* The index of low-intensity green within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_GREEN 2
|
||||
|
||||
/**
|
||||
* The index of brown within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_BROWN 3
|
||||
|
||||
/**
|
||||
* The index of low-intensity blue within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_BLUE 4
|
||||
|
||||
/**
|
||||
* The index of low-intensity magenta (purple) within the terminal color
|
||||
* palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_PURPLE 5
|
||||
|
||||
/**
|
||||
* The index of low-intensity cyan (teal) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_TEAL 6
|
||||
|
||||
/**
|
||||
* The index of low-intensity white (gray) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_GRAY 7
|
||||
|
||||
/**
|
||||
* The index of bright black (dark gray) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_DARK_GRAY 8
|
||||
|
||||
/**
|
||||
* The index of bright red within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_RED 9
|
||||
|
||||
/**
|
||||
* The index of bright green within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_GREEN 10
|
||||
|
||||
/**
|
||||
* The index of bright brown (yellow) within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_YELLOW 11
|
||||
|
||||
/**
|
||||
* The index of bright blue within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_BLUE 12
|
||||
|
||||
/**
|
||||
* The index of bright magenta within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_MAGENTA 13
|
||||
|
||||
/**
|
||||
* The index of bright cyan within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_CYAN 14
|
||||
|
||||
/**
|
||||
* The index of bright white within the terminal color palette.
|
||||
*/
|
||||
#define GUAC_TERMINAL_COLOR_WHITE 15
|
||||
|
||||
/**
|
||||
* An RGB color, where each component ranges from 0 to 255.
|
||||
*/
|
||||
typedef struct guac_terminal_color {
|
||||
|
||||
/**
|
||||
* The index of this color within the terminal palette, or -1 if the color
|
||||
* does not exist within the terminal palette.
|
||||
*/
|
||||
int palette_index;
|
||||
|
||||
/**
|
||||
* The red component of this color.
|
||||
*/
|
||||
uint8_t red;
|
||||
|
||||
/**
|
||||
* The green component of this color.
|
||||
*/
|
||||
uint8_t green;
|
||||
|
||||
/**
|
||||
* The blue component of this color.
|
||||
*/
|
||||
uint8_t blue;
|
||||
|
||||
} guac_terminal_color;
|
||||
|
||||
/**
|
||||
* Compares two colors, returning a negative value if the first color is less
|
||||
* than the second, a positive value if the first color is greater than the
|
||||
* second, and zero if the colors are identical. Only the color components are
|
||||
* compared (not the palette index). The red component is considered the
|
||||
* highest order component, followed by green, followed by blue.
|
||||
*
|
||||
* @param a
|
||||
* The first color to compare.
|
||||
*
|
||||
* @param b
|
||||
* The second color to compare.
|
||||
*
|
||||
* @return
|
||||
* A negative value if the first color is less than the second, a positive
|
||||
* value if the first color is greater than the second, and zero if the
|
||||
* colors are identical.
|
||||
*/
|
||||
int guac_terminal_colorcmp(const guac_terminal_color* a,
|
||||
const guac_terminal_color* b);
|
||||
|
||||
/**
|
||||
* The terminal color palette.
|
||||
*/
|
||||
extern const guac_terminal_color guac_terminal_palette[16];
|
||||
|
||||
#endif
|
||||
|
@ -22,6 +22,7 @@
|
||||
#define _GUAC_TERMINAL_TYPES_H
|
||||
|
||||
#include "config.h"
|
||||
#include "palette.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
@ -35,34 +36,6 @@
|
||||
*/
|
||||
#define GUAC_CHAR_CONTINUATION -1
|
||||
|
||||
/**
|
||||
* An RGB color, where each component ranges from 0 to 255.
|
||||
*/
|
||||
typedef struct guac_terminal_color {
|
||||
|
||||
/**
|
||||
* The index of this color within the terminal palette, or -1 if the color
|
||||
* does not exist within the terminal palette.
|
||||
*/
|
||||
int palette_index;
|
||||
|
||||
/**
|
||||
* The red component of this color.
|
||||
*/
|
||||
uint8_t red;
|
||||
|
||||
/**
|
||||
* The green component of this color.
|
||||
*/
|
||||
uint8_t green;
|
||||
|
||||
/**
|
||||
* The blue component of this color.
|
||||
*/
|
||||
uint8_t blue;
|
||||
|
||||
} guac_terminal_color;
|
||||
|
||||
/**
|
||||
* Terminal attributes, as can be applied to a single character.
|
||||
*/
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "config.h"
|
||||
|
||||
#include "terminal/char_mappings.h"
|
||||
#include "terminal/palette.h"
|
||||
#include "terminal/terminal.h"
|
||||
#include "terminal/terminal_handlers.h"
|
||||
#include "terminal/types.h"
|
||||
|
Loading…
Reference in New Issue
Block a user