Skip to content

Commit dca85a7

Browse files
committed
Enc: update farcolor.html
1 parent b7d5b63 commit dca85a7

1 file changed

Lines changed: 209 additions & 26 deletions

File tree

enc/enc_rus/meta/structures/farcolor.html

Lines changed: 209 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,50 @@ <h1>FarColor</h1>
2020
</div>
2121

2222
<pre class=syntax>
23+
struct rgba
24+
{
25+
unsigned char
26+
r,
27+
g,
28+
b,
29+
a;
30+
};
31+
32+
struct color_index
33+
{
34+
unsigned char
35+
i,
36+
reserved0,
37+
reserved1,
38+
a;
39+
};
40+
2341
struct FarColor
2442
{
25-
FARCOLORFLAGS Flags;
26-
COLORREF ForegroundColor;
27-
COLORREF BackgroundColor;
28-
void *Reserved;
43+
FARCOLORFLAGS Flags;
44+
union
45+
{
46+
COLORREF ForegroundColor;
47+
struct color_index ForegroundIndex;
48+
struct rgba ForegroundRGBA;
49+
};
50+
union
51+
{
52+
COLORREF BackgroundColor;
53+
struct color_index BackgroundIndex;
54+
struct rgba BackgroundRGBA;
55+
};
56+
union
57+
{
58+
COLORREF UnderlineColor;
59+
struct color_index UnderlineIndex;
60+
struct rgba UnderlineRGBA;
61+
};
62+
DWORD Reserved;
63+
// ...
64+
UNDERLINE_STYLE GetUnderline() const {/* ... */}
65+
FarColor& SetUnderline(UNDERLINE_STYLE UnderlineStyle) {/* ... */}
66+
// ... кроме того определён ряд других хелперов, полное определение см. в plugin.hpp
2967
};
3068
</pre>
3169

@@ -34,37 +72,182 @@ <h3>Элементы</h3>
3472
<div class=dfn>Flags</div>
3573
<div class=dfndescr>Может быть комбинацией следующих значений (тип <a name="FARCOLORFLAGS">FARCOLORFLAGS</a>):
3674
<table class="cont">
37-
<tr class="cont"><th class="cont" width="40%">Флаг</th><th class="cont" width="60%">Описание</th></tr>
38-
<tr class="cont"><td class="cont" width="40%"><a name="FCF_FG_INDEX">FCF_FG_INDEX</a></td>
39-
<td class="cont" width="60%">цвет символа задан индексом в стандартной палитре NT (0 - 15) или VT100 (16 - 255)</td></tr>
40-
<tr class="cont"><td class="cont" width="40%"><a name="FCF_BG_INDEX">FCF_BG_INDEX</a></td>
41-
<td class="cont" width="60%">цвет фона символа задан индексом в стандартной палитре NT (0 - 15) или VT100 (16 - 255)</td></tr>
42-
<tr class="cont"><td class="cont" width="40%"><a name="FCF_FG_BOLD">FCF_FG_BOLD</a></td>
43-
<td class="cont" width="60%">расширенные атрибуты, задан стиль: "жирный" символ</td></tr>
44-
<tr class="cont"><td class="cont" width="40%"><a name="FCF_FG_ITALIC">FCF_FG_ITALIC</a></td>
45-
<td class="cont" width="60%">расширенные атрибуты, задан стиль: "наклонный" символ</td></tr>
46-
<tr class="cont"><td class="cont" width="40%"><a name="FCF_FG_UNDERLINE">FCF_FG_UNDERLINE</a></td>
47-
<td class="cont" width="60%">расширенные атрибуты, задан стиль: "подчеркнутый" символ</td></tr>
48-
<tr class="cont"><td class="cont" width="40%"><a name="FCF_NONE">FCF_NONE</a></td>
49-
<td class="cont" width="60%">нулевой флаг</td></tr>
75+
<tr>
76+
<th>Флаг</th>
77+
<th>Описание</th>
78+
</tr>
79+
<tr>
80+
<td><a name="FCF_FG_INDEX">FCF_FG_INDEX</a></td>
81+
<td>цвет символа задан индексом</td>
82+
</tr>
83+
<tr>
84+
<td><a name="FCF_BG_INDEX">FCF_BG_INDEX</a></td>
85+
<td>цвет фона символа задан индексом</td>
86+
</tr>
87+
<tr>
88+
<td><a name="FCF_FG_UNDERLINE_INDEX">FCF_FG_UNDERLINE_INDEX</a></td>
89+
<td>цвет подчёркивания задан индексом</td>
90+
</tr>
91+
<tr>
92+
<td><a name="FCF_INHERIT_STYLE">FCF_INHERIT_STYLE</a></td>
93+
<td>
94+
"Наследовать" расширенные атрибуты; используется в группах раскраски файлов, в цвете выделения, курсора,
95+
и в раскраске редактора, потенциально - и в других местах
96+
</td>
97+
</tr>
98+
<tr>
99+
<td><a name="FCF_NONE">FCF_NONE</a></td>
100+
<td>нулевой флаг</td>
101+
</tr>
102+
</table>
103+
</div>
104+
<div class=dfndescr>Расширенные атрибуты, задающие стиль (см. также <em>Замечания</em>):
105+
<table class="cont">
106+
<tr>
107+
<th scope="col">Флаг</th>
108+
<th scope="col">Описание</th>
109+
</tr>
110+
<tr>
111+
<td><a name="FCF_FG_BLINK">FCF_FG_BLINK</a></td>
112+
<td>"мигающий"</td>
113+
</tr>
114+
<tr>
115+
<td><a name="FCF_FG_BOLD">FCF_FG_BOLD</a></td>
116+
<td>"жирный" (или "яркий")</td>
117+
</tr>
118+
<tr>
119+
<td><a name="FCF_FG_FAINT">FCF_FG_FAINT</a></td>
120+
<td> "блёклый"</td>
121+
</tr>
122+
<tr>
123+
<td><a name="FCF_INVERSE">FCF_INVERSE</a></td>
124+
<td>"инверсный" ("негатив")</td>
125+
</tr>
126+
<tr>
127+
<td><a name="FCF_FG_INVISIBLE">FCF_FG_INVISIBLE</a></td>
128+
<td>"невидимый" ("скрытый")</td>
129+
</tr>
130+
<tr>
131+
<td><a name="FCF_FG_ITALIC">FCF_FG_ITALIC</a></td>
132+
<td>"наклонный" ("курсив")</td>
133+
</tr>
134+
<tr>
135+
<td><a name="FCF_FG_OVERLINE">FCF_FG_OVERLINE</a></td>
136+
<td>"надчёркнутый"</td>
137+
</tr>
138+
<tr>
139+
<td><a name="FCF_FG_STRIKEOUT">FCF_FG_INVISIBLE</a></td>
140+
<td>"зачёркнутый"</td>
141+
</tr>
142+
<tr>
143+
<td><a name="FCF_FG_U_DATA0">FCF_FG_U_DATA0</a>, <a name="FCF_FG_U_DATA1">FCF_FG_U_DATA1</a>,
144+
<a name="FCF_FG_U_DATA2">FCF_FG_U_DATA2</a></td>
145+
<td>
146+
<p>"подчёркнутый"; стиль подчёркивания определяется комбинацией значений этих трёх битов.
147+
<p>Для работы со стилями подчёркивания предусмотрены хелперы <a name="GetUnderline">GetUnderline()</a> и
148+
<a name="SetUnderline">SetUnderline()</a>.
149+
<p>Возможные стили подчёркивания (перечисление <a name="UNDERLINE_STYLE">UNDERLINE_STYLE</a>):
150+
<a name="UNDERLINE_NONE">UNDERLINE_NONE</a>, <a name="UNDERLINE_SINGLE">UNDERLINE_SINGLE</a>,
151+
<a name="UNDERLINE_DOUBLE">UNDERLINE_DOUBLE</a>, <a name="UNDERLINE_CURLY">UNDERLINE_CURLY</a>,
152+
<a name="UNDERLINE_DOT">UNDERLINE_DOT</a>, <a name="UNDERLINE_DASH">UNDERLINE_DASH</a>.
153+
</td>
154+
</tr>
50155
</table>
51156
</div>
52-
<div class=dfn>ForegroundColor</div>
53-
<div class=dfndescr>Цвет символа в формате <code>0xAABBGGRR</code> или индекс <code>0xAA000000</code> - <code>0xAA0000FF</code>, если установлен флаг FCF_FG_INDEX.</div>
54-
<div class=dfn>BackgroundColor</div>
55-
<div class=dfndescr>Цвет символа в формате <code>0xAABBGGRR</code> или индекс <code>0xAA000000</code> - <code>0xAA0000FF</code>, если установлен флаг FCF_BG_INDEX.</div>
157+
<div class=dfndescr>Маски:
158+
<table class="cont">
159+
<tr>
160+
<th scope="col">Флаг</th>
161+
<th scope="col">Описание</th>
162+
</tr>
163+
<tr>
164+
<td><a name="FCF_INDEXMASK">FCF_INDEXMASK</a></td>
165+
<td>FCF_FG_INDEX | FCF_BG_INDEX | FCF_FG_UNDERLINE_INDEX</td>
166+
</tr>
167+
<tr>
168+
<td><a name="FCF_FG_UNDERLINE_MASK">FCF_FG_UNDERLINE_MASK</a></td>
169+
<td>FCF_FG_U_DATA0 | FCF_FG_U_DATA1 | FCF_FG_U_DATA2</td>
170+
</tr>
171+
<tr>
172+
<td><a name="FCF_RAWATTR_MASK">FCF_RAWATTR_MASK</a></td>
173+
<td><a href="https://learn.microsoft.com/windows/console/char-info-str">LVB</a> console attributes</td>
174+
</tr>
175+
<tr>
176+
<td><a name="FCF_STYLE_MASK">FCF_STYLE_MASK</a></td>
177+
<td>объединение всех расширенных атрибутов</td>
178+
</tr>
179+
</table>
180+
</div>
181+
<div class=dfn>ForegroundIndex | ForegroundRGBA | ForegroundColor</div>
182+
<div class=dfndescr>
183+
Цвет символа может быть представлен в виде структур <code>color_index</code>, <code>rgba</code>
184+
или типа <code>COLORREF</code>, в зависимости от флага FCF_FG_INDEX:
185+
<ul>
186+
<li>Если флаг установлен, то значение соответствует типу <code>color_index</code>,
187+
где <code>i</code> это индекс в палитре (см. <em>Замечания</em>),
188+
<code>a</code> - Alpha-канал, определяющий степень прозрачности,
189+
от полностью прозрачного <code>00</code> до совсем непрозрачного <code>FF</code>.
190+
</li>
191+
<li>Если флаг снят, то значение соответствует типу <code>rgba</code>, где <code>a</code> - Alpha-канал,
192+
а <code>r</code>, <code>g</code>, <code>b</code> - красный, зелёный, и синий каналы в цветовом пространстве RGB,
193+
со значениями от <code>00</code> до <code>FF</code>.
194+
</li>
195+
<li>Значение типа <code>COLORREF</code> можно использовать в обоих случаях:
196+
<ul>
197+
<li>при установленном флаге: значение в формате <code>0xAA000000</code> - <code>0xAA0000FF</code>,
198+
где младший байт представляет собой индекс в палитре, а старший (<code>AA</code>) - Alpha-канал.
199+
</li>
200+
<li>при снятом флаге: значение в формате <code>0xAABBGGRR</code>, где <code>AA</code> - Alpha-канал,
201+
а <code>RR</code>, <code>GG</code>, <code>BB</code> - красный, зелёный, и синий каналы.
202+
</li>
203+
</ul>
204+
</li>
205+
</ul>
206+
<p class=note><img src="../../images/note.gif" alt="Внимание!" width="10" height="10"> Внимание!</p>
207+
<ul class=note>
208+
<li>В данный момент прозрачность поддерживается не везде.
209+
Чтобы в будущем избежать неприятных сюрпризов, всегда устанавливайте Alpha-канал
210+
(старший байт значения <code>COLORREF</code>) в <code>0xFF</code>.
211+
</li>
212+
</ul>
213+
<p class=note><img src="../../images/note.gif" alt="Примечание" width="10" height="10"> Примечание</p>
214+
<ul class=note>
215+
<li>Для комфортной работы со структурами также предусмотрен ряд хелперов, см.
216+
<a href="https://github.com/FarGroup/FarManager/blob/master/plugins/common/unicode/plugin.hpp">plugin.hpp</a>.
217+
</li>
218+
</ul>
219+
</div>
220+
<div class=dfn>BackgroundIndex | BackgroundRGBA | BackgroundColor</div>
221+
<div class=dfndescr>Цвет фона символа, в зависимости от флага FCF_BG_INDEX, формат тот же что у Foreground*.</div>
222+
<div class=dfn>UnderlineIndex | UnderlineRGBA | UnderlineColor</div>
223+
<div class=dfndescr>Цвет подчёркивания, в зависимости от флага FCF_FG_UNDERLINE_INDEX, формат тот же что у Foreground*.</div>
56224
<div class=dfn>Reserved</div>
57225
<div class=dfndescr>Не используется и должен быть установлен в 0.</div>
58226
</div>
59227

60228
<h3>Замечания</h3>
61229
<div class=descr>
62-
При формировании цвета для стандартной консоли Windows обязательно указывайте флаги <code>FCF_FG_INDEX</code> и <code>FCF_BG_INDEX</code>.
63-
</div>
230+
<p>При использовании цветов из палитры обязательно указывайте флаги <code>FCF_FG_INDEX</code>, <code>FCF_BG_INDEX</code>
231+
<code>FCF_FG_UNDERLINE_INDEX</code>, если используется подчёркивание).
64232

65-
<div class=descr>
66-
Старший байт в ForegroundColor и BackgroundColor определяет степень прозрачности цвета, от полностью прозрачного (00) до полностью непрозрачного (FF).
67-
В данный момент прозрачность поддерживается не везде. Во избежание неприятных сюрпризов в будущем всегда устанавливайте старший байт в <code>0xFF</code>.
233+
<p>Стандартные цвета консоли Windows представляют собой палитру из 16 цветов, с индексами 0 - 15.
234+
235+
<p>Также можно использовать цвета из палитры VT100 (16 - 255).
236+
В этом случае значения (16 - 231) кодируются как 36R+6G+B, где уровень каждого из основных цветов 0-5,
237+
а последние 24 значения (232 - 255) используются для оттенков серого.
238+
239+
<p class=note><img src="../../images/note.gif" alt="Внимание!" width="10" height="10"> Внимание!</p>
240+
<ul class=note>
241+
<li>Гарантированно везде работает только стандартная 16-цветная палитра.
242+
Поддержка всего остального условна и определяется вашим терминалом.
243+
</li>
244+
<li>Расширенные (RGB) цвета и стили требуют рендеринга на основе
245+
<a href="https://learn.microsoft.com/windows/console/classic-vs-vt">Virtual Terminal</a>,
246+
который можно включить в настройках интерфейса. Если он не включен или если ваш
247+
терминал не поддерживает цвета RGB, то цвета будут аппроксимированы до ближайших
248+
индексов консольной палитры.
249+
</li>
250+
</ul>
68251
</div>
69252

70253
<div class=see>Смотрите также:</div>

0 commit comments

Comments
 (0)