Commit | Line | Data |
---|---|---|
624ce48e KL |
1 | /** |
2 | * Jexer - Java Text User Interface | |
3 | * | |
4 | * Version: $Id$ | |
5 | * | |
6 | * Author: Kevin Lamonte, <a href="mailto:kevin.lamonte@gmail.com">kevin.lamonte@gmail.com</a> | |
7 | * | |
8 | * License: LGPLv3 or later | |
9 | * | |
10 | * Copyright: This module is licensed under the GNU Lesser General | |
11 | * Public License Version 3. Please see the file "COPYING" in this | |
12 | * directory for more information about the GNU Lesser General Public | |
13 | * License Version 3. | |
14 | * | |
15 | * Copyright (C) 2015 Kevin Lamonte | |
16 | * | |
17 | * This program is free software; you can redistribute it and/or | |
18 | * modify it under the terms of the GNU Lesser General Public License | |
19 | * as published by the Free Software Foundation; either version 3 of | |
20 | * the License, or (at your option) any later version. | |
21 | * | |
22 | * This program is distributed in the hope that it will be useful, but | |
23 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
25 | * General Public License for more details. | |
26 | * | |
27 | * You should have received a copy of the GNU Lesser General Public | |
28 | * License along with this program; if not, see | |
29 | * http://www.gnu.org/licenses/, or write to the Free Software | |
30 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |
31 | * 02110-1301 USA | |
32 | */ | |
33 | package jexer.bits; | |
34 | ||
35 | /** | |
36 | * A text cell color. | |
37 | */ | |
38 | public class Color { | |
39 | ||
40 | /** | |
41 | * The color value. Default is WHITE. | |
42 | */ | |
43 | public int value = 7; | |
44 | ||
45 | /** | |
46 | * Public constructor | |
47 | */ | |
48 | public Color(int value) { | |
49 | this.value = value; | |
50 | } | |
51 | ||
52 | // The color integer values. NOT EXPOSED. | |
53 | static private final int black = 0; | |
54 | static private final int red = 1; | |
55 | static private final int green = 2; | |
56 | static private final int yellow = 3; | |
57 | static private final int blue = 4; | |
58 | static private final int magenta = 5; | |
59 | static private final int cyan = 6; | |
60 | static private final int white = 7; | |
61 | ||
62 | /** | |
63 | * Black. Bold + black = dark grey | |
64 | */ | |
65 | static public final Color BLACK = new Color(black); | |
66 | ||
67 | /** | |
68 | * Red | |
69 | */ | |
70 | static public final Color RED = new Color(red); | |
71 | ||
72 | /** | |
73 | * Green | |
74 | */ | |
75 | static public final Color GREEN = new Color(green); | |
76 | ||
77 | /** | |
78 | * Yellow. Sometimes not-bold yellow is brown. | |
79 | */ | |
80 | static public final Color YELLOW = new Color(yellow); | |
81 | ||
82 | /** | |
83 | * Blue | |
84 | */ | |
85 | static public final Color BLUE = new Color(blue); | |
86 | ||
87 | /** | |
88 | * Magenta (purple) | |
89 | */ | |
90 | static public final Color MAGENTA = new Color(magenta); | |
91 | ||
92 | /** | |
93 | * Cyan (blue-green) | |
94 | */ | |
95 | static public final Color CYAN = new Color(cyan); | |
96 | ||
97 | /** | |
98 | * White | |
99 | */ | |
100 | static public final Color WHITE = new Color(white); | |
101 | ||
102 | /** | |
103 | * Invert a color in the same way as (CGA/VGA color XOR 0x7). | |
104 | * | |
105 | * @param color color to change | |
106 | * @return the inverted color | |
107 | */ | |
108 | static public Color invert(Color color) { | |
109 | switch (color.value) { | |
110 | case black: | |
111 | return Color.WHITE; | |
112 | case white: | |
113 | return Color.BLACK; | |
114 | case red: | |
115 | return Color.CYAN; | |
116 | case cyan: | |
117 | return Color.RED; | |
118 | case green: | |
119 | return Color.MAGENTA; | |
120 | case magenta: | |
121 | return Color.GREEN; | |
122 | case blue: | |
123 | return Color.YELLOW; | |
124 | case yellow: | |
125 | return Color.BLUE; | |
126 | } | |
127 | throw new IllegalArgumentException("Invalid Color value: " + | |
128 | color.value); | |
129 | } | |
130 | } |