sources/coloredline.cpp

Wed, 20 Jul 2016 12:55:39 +0300

author
Teemu Piippo <teemu@compsta2.com>
date
Wed, 20 Jul 2016 12:55:39 +0300
branch
protocol5
changeset 131
4996c8684b93
parent 106
7b156b764d11
parent 113
b3a33bc2e482
child 133
4d8fa5394d67
permissions
-rw-r--r--

Merged with default

46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1 /*
109
e4966d7e615d Happy new year 2016
Teemu Piippo <crimsondusk64@gmail.com>
parents: 100
diff changeset
2 Copyright 2014 - 2016 Teemu Piippo
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
3 All rights reserved.
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
4
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
5 Redistribution and use in source and binary forms, with or without
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
6 modification, are permitted provided that the following conditions
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
7 are met:
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
8
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
9 1. Redistributions of source code must retain the above copyright
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
10 notice, this list of conditions and the following disclaimer.
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
11 2. Redistributions in binary form must reproduce the above copyright
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
12 notice, this list of conditions and the following disclaimer in the
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
13 documentation and/or other materials provided with the distribution.
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
14 3. Neither the name of the copyright holder nor the names of its
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
15 contributors may be used to endorse or promote products derived from
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
16 this software without specific prior written permission.
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
17
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
19 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
20 TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
21 PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
22 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
23 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
24 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
25 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
26 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
27 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
29 */
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
30
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
31 #include "coloredline.h"
88
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
32 BEGIN_ZFC_NAMESPACE
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
33
87
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
34 struct ColorCodeInfo
63
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
35 {
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
36 const char* name;
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
37 Color color;
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
38 bool bold;
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
39 };
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
40
88
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
41 ColoredLine::ColoredLine() :
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
42 m_length (0),
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
43 m_final (false),
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
44 m_activeColor (DEFAULT),
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
45 m_boldActive (false),
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
46 m_colorCodeStage (0) {}
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
47
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
48 // -------------------------------------------------------------------------------------------------
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
49 //
69
eb4c25284a19 Removed a lot of boilerplate code
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
50 void ColoredLine::finalize()
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
51 {
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
52 if (m_activeColor != DEFAULT)
63
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
53 set_color (m_activeColor, false);
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
54
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
55 if (m_boldActive)
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
56 m_data << RLINE_OFF_BOLD;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
57
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
58 m_final = true;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
59 }
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
60
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
61 // -------------------------------------------------------------------------------------------------
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
62 //
69
eb4c25284a19 Removed a lot of boilerplate code
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
63 void ColoredLine::add_char (char ch)
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
64 {
87
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
65 static const ColorCodeInfo colorCodes[] =
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
66 {
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
67 { "Brick", RED, true }, // a
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
68 { "Tan", YELLOW, true }, // b
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
69 { "Gray", WHITE, false }, // c
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
70 { "Green", GREEN, true }, // d
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
71 { "Brown", YELLOW, false }, // e
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
72 { "Gold", YELLOW, true }, // f
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
73 { "Red", RED, true }, // g
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
74 { "Blue", BLUE, false }, // h
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
75 { "Orange", YELLOW, false }, // i
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
76 { "White", WHITE, true }, // j
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
77 { "Yellow", YELLOW, true }, // k
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
78 { "Untranslated", DEFAULT, false }, // l
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
79 { "Black", BLACK, false }, // m
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
80 { "Blue", BLUE, true }, // n
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
81 { "Cream", YELLOW, true }, // o
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
82 { "Olive", GREEN, true }, // p
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
83 { "Dark Green", GREEN, false }, // q
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
84 { "Dark Red", RED, false }, // r
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
85 { "Dark Brown", YELLOW, false }, // s
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
86 { "Purple", MAGENTA, false }, // t
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
87 { "Dark Gray", BLACK, true }, // u
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
88 { "Cyan", CYAN, true }, // v
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
89 };
53c2aecb9704 some work on MSVC support (still doesn't work yet...)
Teemu Piippo <tsapii@utu.fi>
parents: 73
diff changeset
90
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
91 if (m_final)
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
92 return; // Don't touch finalized lines.
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
93
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
94 if (ch == '\x1C' and m_colorCodeStage == 0)
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
95 {
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
96 m_colorCodeStage = 1;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
97 return;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
98 }
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
99
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
100 if (m_colorCodeStage == 1)
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
101 {
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
102 if (m_activeColor != DEFAULT)
63
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
103 set_color (m_activeColor, false);
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
104
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
105 if (m_boldActive)
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
106 m_data << RLINE_OFF_BOLD;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
107
113
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
108 m_boldActive = false;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
109
63
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
110 // Chars may be in uppercase
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
111 if (ch >= 'A' and ch <= 'V')
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
112 ch += 'a' - 'A';
0da5f358f298 - now supports upper-case color codes too
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
113
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
114 if (ch >= 'a' and ch <= 'v' and ch != 'l')
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
115 {
113
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
116 const ColorCodeInfo& colorInfo = colorCodes[ch - 'a'];
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
117 activate_color(colorInfo.color, colorInfo.bold);
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
118 }
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
119
113
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
120 if (ch == '[')
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
121 m_colorCodeStage = 2;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
122 else
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
123 m_colorCodeStage = 0;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
124 return;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
125 }
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
126 else if (m_colorCodeStage == 2)
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
127 {
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
128 if (ch == ']')
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
129 {
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
130 String color = m_incomingColorName.to_lowercase();
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
131
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
132 for (size_t i = 0; i < countof(colorCodes); ++i)
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
133 {
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
134 const ColorCodeInfo& colorInfo = colorCodes[i];
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
135
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
136 if (String(colorInfo.name).to_lowercase() == color)
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
137 {
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
138 activate_color(colorInfo.color, colorInfo.bold);
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
139 m_colorCodeStage = 0;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
140 break;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
141 }
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
142 }
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
143
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
144 m_incomingColorName = "";
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
145 m_colorCodeStage = 0;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
146 }
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
147 else if (isprint(ch))
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
148 m_incomingColorName += ch;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
149
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
150 return;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
151 }
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
152
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
153 if (isprint (ch))
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
154 {
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
155 m_string += ch;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
156 m_data << int (ch);
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
157 ++m_length;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
158 }
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
159 }
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
160
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
161 // -------------------------------------------------------------------------------------------------
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
162 //
78
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
163 void ColoredLine::add_string (const String& text)
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
164 {
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
165 for (char a : text)
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
166 add_char (a);
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
167 }
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
168
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
169 // -------------------------------------------------------------------------------------------------
c1d43ade656e Added support for colored nicknames
Teemu Piippo <crimsondusk64@gmail.com>
parents: 73
diff changeset
170 //
113
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
171 void ColoredLine::activate_color (Color color, bool bold)
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
172 {
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
173 if (m_boldActive)
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
174 m_data << RLINE_OFF_BOLD;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
175
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
176 m_activeColor = color;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
177 m_boldActive = bold;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
178 assert (m_activeColor < 8);
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
179 set_color (m_activeColor, true);
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
180
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
181 if (m_boldActive)
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
182 m_data << RLINE_ON_BOLD;
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
183 }
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
184
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
185 // -------------------------------------------------------------------------------------------------
b3a33bc2e482 Added support for long-form color codes, such as \c[Green]
Teemu Piippo <crimsondusk64@gmail.com>
parents: 109
diff changeset
186 //
69
eb4c25284a19 Removed a lot of boilerplate code
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
187 void ColoredLine::set_color (Color a, bool on)
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
188 {
100
d301ead29d7c Apply Leonard's patch for fixing the colors:
Teemu Piippo <tsapii@utu.fi>
parents: 88
diff changeset
189 assert (a < 8);
d301ead29d7c Apply Leonard's patch for fixing the colors:
Teemu Piippo <tsapii@utu.fi>
parents: 88
diff changeset
190 m_data << (a + (on ? RLINE_ON_COLOR : RLINE_OFF_COLOR));
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
191 }
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
192
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
193 // -------------------------------------------------------------------------------------------------
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
194 // How many rows does this line take up?
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
195 //
69
eb4c25284a19 Removed a lot of boilerplate code
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
196 int ColoredLine::rows (int cols) const
46
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
197 {
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
198 int rows = length() / cols;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
199
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
200 if (length() % cols != 0)
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
201 rows++;
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
202
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
203 return max (rows, 1);
19be47c9bab7 - renamed RendererLine to ColoredLine and split it into its own files
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
204 }
88
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
205
08ccaf26cffd Now works with MSVC 2010/pdcurses-win32a
Teemu Piippo <tsapii@utu.fi>
parents: 87
diff changeset
206 END_ZFC_NAMESPACE

mercurial