blob: a6b2d5ae7d86db3fe3d7b63ebdaed6d3ea8c47f6 [file] [log] [blame]
/*
* 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_INITIAL_PALETTE[256] = {
/* 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 */
/* Remainder of xterm's 256-color palette */
{16, 0x00, 0x00, 0x00},
{17, 0x00, 0x00, 0x5F},
{18, 0x00, 0x00, 0x87},
{19, 0x00, 0x00, 0xAF},
{20, 0x00, 0x00, 0xD7},
{21, 0x00, 0x00, 0xFF},
{22, 0x00, 0x5F, 0x00},
{23, 0x00, 0x5F, 0x5F},
{24, 0x00, 0x5F, 0x87},
{25, 0x00, 0x5F, 0xAF},
{26, 0x00, 0x5F, 0xD7},
{27, 0x00, 0x5F, 0xFF},
{28, 0x00, 0x87, 0x00},
{29, 0x00, 0x87, 0x5F},
{30, 0x00, 0x87, 0x87},
{31, 0x00, 0x87, 0xAF},
{32, 0x00, 0x87, 0xD7},
{33, 0x00, 0x87, 0xFF},
{34, 0x00, 0xAF, 0x00},
{35, 0x00, 0xAF, 0x5F},
{36, 0x00, 0xAF, 0x87},
{37, 0x00, 0xAF, 0xAF},
{38, 0x00, 0xAF, 0xD7},
{39, 0x00, 0xAF, 0xFF},
{40, 0x00, 0xD7, 0x00},
{41, 0x00, 0xD7, 0x5F},
{42, 0x00, 0xD7, 0x87},
{43, 0x00, 0xD7, 0xAF},
{44, 0x00, 0xD7, 0xD7},
{45, 0x00, 0xD7, 0xFF},
{46, 0x00, 0xFF, 0x00},
{47, 0x00, 0xFF, 0x5F},
{48, 0x00, 0xFF, 0x87},
{49, 0x00, 0xFF, 0xAF},
{50, 0x00, 0xFF, 0xD7},
{51, 0x00, 0xFF, 0xFF},
{52, 0x5F, 0x00, 0x00},
{53, 0x5F, 0x00, 0x5F},
{54, 0x5F, 0x00, 0x87},
{55, 0x5F, 0x00, 0xAF},
{56, 0x5F, 0x00, 0xD7},
{57, 0x5F, 0x00, 0xFF},
{58, 0x5F, 0x5F, 0x00},
{59, 0x5F, 0x5F, 0x5F},
{60, 0x5F, 0x5F, 0x87},
{61, 0x5F, 0x5F, 0xAF},
{62, 0x5F, 0x5F, 0xD7},
{63, 0x5F, 0x5F, 0xFF},
{64, 0x5F, 0x87, 0x00},
{65, 0x5F, 0x87, 0x5F},
{66, 0x5F, 0x87, 0x87},
{67, 0x5F, 0x87, 0xAF},
{68, 0x5F, 0x87, 0xD7},
{69, 0x5F, 0x87, 0xFF},
{70, 0x5F, 0xAF, 0x00},
{71, 0x5F, 0xAF, 0x5F},
{72, 0x5F, 0xAF, 0x87},
{73, 0x5F, 0xAF, 0xAF},
{74, 0x5F, 0xAF, 0xD7},
{75, 0x5F, 0xAF, 0xFF},
{76, 0x5F, 0xD7, 0x00},
{77, 0x5F, 0xD7, 0x5F},
{78, 0x5F, 0xD7, 0x87},
{79, 0x5F, 0xD7, 0xAF},
{80, 0x5F, 0xD7, 0xD7},
{81, 0x5F, 0xD7, 0xFF},
{82, 0x5F, 0xFF, 0x00},
{83, 0x5F, 0xFF, 0x5F},
{84, 0x5F, 0xFF, 0x87},
{85, 0x5F, 0xFF, 0xAF},
{86, 0x5F, 0xFF, 0xD7},
{87, 0x5F, 0xFF, 0xFF},
{88, 0x87, 0x00, 0x00},
{89, 0x87, 0x00, 0x5F},
{90, 0x87, 0x00, 0x87},
{91, 0x87, 0x00, 0xAF},
{92, 0x87, 0x00, 0xD7},
{93, 0x87, 0x00, 0xFF},
{94, 0x87, 0x5F, 0x00},
{95, 0x87, 0x5F, 0x5F},
{96, 0x87, 0x5F, 0x87},
{97, 0x87, 0x5F, 0xAF},
{98, 0x87, 0x5F, 0xD7},
{99, 0x87, 0x5F, 0xFF},
{100, 0x87, 0x87, 0x00},
{101, 0x87, 0x87, 0x5F},
{102, 0x87, 0x87, 0x87},
{103, 0x87, 0x87, 0xAF},
{104, 0x87, 0x87, 0xD7},
{105, 0x87, 0x87, 0xFF},
{106, 0x87, 0xAF, 0x00},
{107, 0x87, 0xAF, 0x5F},
{108, 0x87, 0xAF, 0x87},
{109, 0x87, 0xAF, 0xAF},
{110, 0x87, 0xAF, 0xD7},
{111, 0x87, 0xAF, 0xFF},
{112, 0x87, 0xD7, 0x00},
{113, 0x87, 0xD7, 0x5F},
{114, 0x87, 0xD7, 0x87},
{115, 0x87, 0xD7, 0xAF},
{116, 0x87, 0xD7, 0xD7},
{117, 0x87, 0xD7, 0xFF},
{118, 0x87, 0xFF, 0x00},
{119, 0x87, 0xFF, 0x5F},
{120, 0x87, 0xFF, 0x87},
{121, 0x87, 0xFF, 0xAF},
{122, 0x87, 0xFF, 0xD7},
{123, 0x87, 0xFF, 0xFF},
{124, 0xAF, 0x00, 0x00},
{125, 0xAF, 0x00, 0x5F},
{126, 0xAF, 0x00, 0x87},
{127, 0xAF, 0x00, 0xAF},
{128, 0xAF, 0x00, 0xD7},
{129, 0xAF, 0x00, 0xFF},
{130, 0xAF, 0x5F, 0x00},
{131, 0xAF, 0x5F, 0x5F},
{132, 0xAF, 0x5F, 0x87},
{133, 0xAF, 0x5F, 0xAF},
{134, 0xAF, 0x5F, 0xD7},
{135, 0xAF, 0x5F, 0xFF},
{136, 0xAF, 0x87, 0x00},
{137, 0xAF, 0x87, 0x5F},
{138, 0xAF, 0x87, 0x87},
{139, 0xAF, 0x87, 0xAF},
{140, 0xAF, 0x87, 0xD7},
{141, 0xAF, 0x87, 0xFF},
{142, 0xAF, 0xAF, 0x00},
{143, 0xAF, 0xAF, 0x5F},
{144, 0xAF, 0xAF, 0x87},
{145, 0xAF, 0xAF, 0xAF},
{146, 0xAF, 0xAF, 0xD7},
{147, 0xAF, 0xAF, 0xFF},
{148, 0xAF, 0xD7, 0x00},
{149, 0xAF, 0xD7, 0x5F},
{150, 0xAF, 0xD7, 0x87},
{151, 0xAF, 0xD7, 0xAF},
{152, 0xAF, 0xD7, 0xD7},
{153, 0xAF, 0xD7, 0xFF},
{154, 0xAF, 0xFF, 0x00},
{155, 0xAF, 0xFF, 0x5F},
{156, 0xAF, 0xFF, 0x87},
{157, 0xAF, 0xFF, 0xAF},
{158, 0xAF, 0xFF, 0xD7},
{159, 0xAF, 0xFF, 0xFF},
{160, 0xD7, 0x00, 0x00},
{161, 0xD7, 0x00, 0x5F},
{162, 0xD7, 0x00, 0x87},
{163, 0xD7, 0x00, 0xAF},
{164, 0xD7, 0x00, 0xD7},
{165, 0xD7, 0x00, 0xFF},
{166, 0xD7, 0x5F, 0x00},
{167, 0xD7, 0x5F, 0x5F},
{168, 0xD7, 0x5F, 0x87},
{169, 0xD7, 0x5F, 0xAF},
{170, 0xD7, 0x5F, 0xD7},
{171, 0xD7, 0x5F, 0xFF},
{172, 0xD7, 0x87, 0x00},
{173, 0xD7, 0x87, 0x5F},
{174, 0xD7, 0x87, 0x87},
{175, 0xD7, 0x87, 0xAF},
{176, 0xD7, 0x87, 0xD7},
{177, 0xD7, 0x87, 0xFF},
{178, 0xD7, 0xAF, 0x00},
{179, 0xD7, 0xAF, 0x5F},
{180, 0xD7, 0xAF, 0x87},
{181, 0xD7, 0xAF, 0xAF},
{182, 0xD7, 0xAF, 0xD7},
{183, 0xD7, 0xAF, 0xFF},
{184, 0xD7, 0xD7, 0x00},
{185, 0xD7, 0xD7, 0x5F},
{186, 0xD7, 0xD7, 0x87},
{187, 0xD7, 0xD7, 0xAF},
{188, 0xD7, 0xD7, 0xD7},
{189, 0xD7, 0xD7, 0xFF},
{190, 0xD7, 0xFF, 0x00},
{191, 0xD7, 0xFF, 0x5F},
{192, 0xD7, 0xFF, 0x87},
{193, 0xD7, 0xFF, 0xAF},
{194, 0xD7, 0xFF, 0xD7},
{195, 0xD7, 0xFF, 0xFF},
{196, 0xFF, 0x00, 0x00},
{197, 0xFF, 0x00, 0x5F},
{198, 0xFF, 0x00, 0x87},
{199, 0xFF, 0x00, 0xAF},
{200, 0xFF, 0x00, 0xD7},
{201, 0xFF, 0x00, 0xFF},
{202, 0xFF, 0x5F, 0x00},
{203, 0xFF, 0x5F, 0x5F},
{204, 0xFF, 0x5F, 0x87},
{205, 0xFF, 0x5F, 0xAF},
{206, 0xFF, 0x5F, 0xD7},
{207, 0xFF, 0x5F, 0xFF},
{208, 0xFF, 0x87, 0x00},
{209, 0xFF, 0x87, 0x5F},
{210, 0xFF, 0x87, 0x87},
{211, 0xFF, 0x87, 0xAF},
{212, 0xFF, 0x87, 0xD7},
{213, 0xFF, 0x87, 0xFF},
{214, 0xFF, 0xAF, 0x00},
{215, 0xFF, 0xAF, 0x5F},
{216, 0xFF, 0xAF, 0x87},
{217, 0xFF, 0xAF, 0xAF},
{218, 0xFF, 0xAF, 0xD7},
{219, 0xFF, 0xAF, 0xFF},
{220, 0xFF, 0xD7, 0x00},
{221, 0xFF, 0xD7, 0x5F},
{222, 0xFF, 0xD7, 0x87},
{223, 0xFF, 0xD7, 0xAF},
{224, 0xFF, 0xD7, 0xD7},
{225, 0xFF, 0xD7, 0xFF},
{226, 0xFF, 0xFF, 0x00},
{227, 0xFF, 0xFF, 0x5F},
{228, 0xFF, 0xFF, 0x87},
{229, 0xFF, 0xFF, 0xAF},
{230, 0xFF, 0xFF, 0xD7},
{231, 0xFF, 0xFF, 0xFF},
{232, 0x08, 0x08, 0x08},
{233, 0x12, 0x12, 0x12},
{234, 0x1C, 0x1C, 0x1C},
{235, 0x26, 0x26, 0x26},
{236, 0x30, 0x30, 0x30},
{237, 0x3A, 0x3A, 0x3A},
{238, 0x44, 0x44, 0x44},
{239, 0x4E, 0x4E, 0x4E},
{240, 0x58, 0x58, 0x58},
{241, 0x62, 0x62, 0x62},
{242, 0x6C, 0x6C, 0x6C},
{243, 0x76, 0x76, 0x76},
{244, 0x80, 0x80, 0x80},
{245, 0x8A, 0x8A, 0x8A},
{246, 0x94, 0x94, 0x94},
{247, 0x9E, 0x9E, 0x9E},
{248, 0xA8, 0xA8, 0xA8},
{249, 0xB2, 0xB2, 0xB2},
{250, 0xBC, 0xBC, 0xBC},
{251, 0xC6, 0xC6, 0xC6},
{252, 0xD0, 0xD0, 0xD0},
{253, 0xDA, 0xDA, 0xDA},
{254, 0xE4, 0xE4, 0xE4},
{255, 0xEE, 0xEE, 0xEE}
};
int guac_terminal_colorcmp(const guac_terminal_color* a,
const guac_terminal_color* b) {
/* Compare palette index alone if not unknown */
if (a->palette_index != -1 && b->palette_index != -1)
return a->palette_index - b->palette_index;
/* 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;
}