Просмотр исходного кода

* Moved the technical discussion on S-Lang's palette optimisation from

NOTES to tools/optipal.c.
tags/v0.99.beta14
Sam Hocevar sam 18 лет назад
Родитель
Сommit
e589722123
2 измененных файлов: 72 добавлений и 76 удалений
  1. +0
    -75
      NOTES
  2. +72
    -1
      tools/optipal.c

+ 0
- 75
NOTES Просмотреть файл

@@ -115,81 +115,6 @@ $Id$
works on gnome-terminal, xterm, pterm, aterm/wterm/rxvt, console
doesn't work on konsole

o S-Lang:

256 character pairs are definable, but only 128 can be used. This is
because slsmg.c's This_Color variable uses its 8th bit to indicate an
alternate character set. Replacing a few 0x7F with 0xFF in sldisply.c
works around the problem but gets rid of the alternate charset.

We can work around this problem. See this usage grid:

bg 1 1 1 1 1 1
fg 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

0 (black) C C C C C C F B c c c c c c F
1 (blue) A h D h D i f C C h E h E k g
2 (green) A h D h i D f C h C E h k E g
3 (cyan) A D D i h h f C E E C k h h g
4 (red) A h h i D D f C h h k C E E g
5 (magenta) A D i h D h f C E k h E C h g
6 (brown) A i D h D h f C k E h E h C g
7 (light gray) A F a a a a a B C C C C C C B

8 (dark gray) A C C C C C C B d d d d d d F
9 (light blue) A C h E h E j C e h D h D l C
10 (light green) A h C E h j E C e h D h l D C
11 (light cyan) A E E C j h h C e D D l h h C
12 (light red) A h h j C E E C e h h l D D C
13 (light magenta) A E j h E C h C e D l h D h C
14 (yellow) A j E h E h C C e l D h D h C
15 (white) A F b b b b b B F C C C C C C

' ': useless colour pairs that can be emulated by printing a space in
any other colour pair that has the same background
'A': black background colour pairs that are needed for the old renderer
'B': gray combinations used for grayscale dithering
'C': white/light, light/dark, lightgray/light, darkgray/dark, dark/black
combinations often used for saturation/value dithering (the two
other possible combinations, lightgray/dark and darkgray/light, are
not considered here)
'D': next colour combinations for hue dithering (magenta/blue, blue/green
and so on)
'E': next colour combinations for hue/value dithering (blue/lightgreen,
green/lightblue and so on)
'F': black on light gray, black on white, white on dark gray, dark gray
on white, white on blue, light gray on blue (chosen arbitrarily)

'A': 15 colour pairs
'A'+'B': 20 colour pairs
'A'+'B'+'C': 74 colour pairs
'A'+'B'+'C'+'D': 98 colour pairs
'A'+'B'+'C'+'D'+'E': 122 colour pairs
'A'+'B'+'C'+'D'+'E'+'F': 128 colour pairs

The remaining slightly important colour pairs are:

'a': light gray on dark colour: emulate with light colour on dark colour
'b': white on dark colour: emulate with light gray on light colour
'c': black on light colour: emulate with dark gray on dark colour
'd': dark gray on light colour: emulate with dark colour on light colour
'e': light colour on dark gray: emulate with dark colour on dark gray
'f': dark colour on light gray: emulate with light colour on light gray
'g': dark colour on white: emulate with light colour on white

And now the seldom used pairs:

'h': 120 degree hue pairs can be emulated as well; for instance blue on
red can be emulated using magenta on red, and blue on green using
cyan on green

And the almost never used pairs:

'i': dark opposite on dark: emulate with dark opposite on black
'j': light opposite on dark: emulate with light opposite on black
'k': dark opposite on light: emulate with black on dark
'l': light opposite on light: emulate with white on light

o MS-DOS: all bright colours, bright backgrounds, and bright combinations
work using <conio.h>. No need to kludge anything.



+ 72
- 1
tools/optipal.c Просмотреть файл

@@ -88,7 +88,78 @@ int main(void)
}

/*
* XXX: See the NOTES file for what follows
* 256 character pairs are definable, but only 128 can be used. This is
* because slsmg.c's This_Color variable uses its 8th bit to indicate an
* alternate character set. Replacing a few 0x7F with 0xFF in sldisply.c
* works around the problem but gets rid of the alternate charset.
*
* We can work around this problem. See this usage grid:
*
* bg 1 1 1 1 1 1
* fg 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
*
* 0 (black) C C C C C C F B c c c c c c F
* 1 (blue) A h D h D i f C C h E h E k g
* 2 (green) A h D h i D f C h C E h k E g
* 3 (cyan) A D D i h h f C E E C k h h g
* 4 (red) A h h i D D f C h h k C E E g
* 5 (magenta) A D i h D h f C E k h E C h g
* 6 (brown) A i D h D h f C k E h E h C g
* 7 (light gray) A F a a a a a B C C C C C C B
*
* 8 (dark gray) A C C C C C C B d d d d d d F
* 9 (light blue) A C h E h E j C e h D h D l C
* 10 (light green) A h C E h j E C e h D h l D C
* 11 (light cyan) A E E C j h h C e D D l h h C
* 12 (light red) A h h j C E E C e h h l D D C
* 13 (light magenta) A E j h E C h C e D l h D h C
* 14 (yellow) A j E h E h C C e l D h D h C
* 15 (white) A F b b b b b B F C C C C C C
*
* ' ': useless colour pairs that can be emulated by printing a space in
* any other colour pair that has the same background
* 'A': black background colour pairs that are needed for the old renderer
* 'B': gray combinations used for grayscale dithering
* 'C': white/light, light/dark, lightgray/light, darkgray/dark, dark/black
* combinations often used for saturation/value dithering (the two
* other possible combinations, lightgray/dark and darkgray/light, are
* not considered here)
* 'D': next colour combinations for hue dithering (magenta/blue, blue/green
* and so on)
* 'E': next colour combinations for hue/value dithering (blue/lightgreen,
* green/lightblue and so on)
* 'F': black on light gray, black on white, white on dark gray, dark gray
* on white, white on blue, light gray on blue (chosen arbitrarily)
*
* 'A': 15 colour pairs
* 'A'+'B': 20 colour pairs
* 'A'+'B'+'C': 74 colour pairs
* 'A'+'B'+'C'+'D': 98 colour pairs
* 'A'+'B'+'C'+'D'+'E': 122 colour pairs
* 'A'+'B'+'C'+'D'+'E'+'F': 128 colour pairs
*
* The remaining slightly important colour pairs are:
*
* 'a': light gray on dark colour: emulate with light colour on dark colour
* 'b': white on dark colour: emulate with light gray on light colour
* 'c': black on light colour: emulate with dark gray on dark colour
* 'd': dark gray on light colour: emulate with dark colour on light colour
* 'e': light colour on dark gray: emulate with dark colour on dark gray
* 'f': dark colour on light gray: emulate with light colour on light gray
* 'g': dark colour on white: emulate with light colour on white
*
* And now the seldom used pairs:
*
* 'h': 120 degree hue pairs can be emulated as well; for instance blue on
* red can be emulated using magenta on red, and blue on green using
* cyan on green
*
* And the almost never used pairs:
*
* 'i': dark opposite on dark: emulate with dark opposite on black
* 'j': light opposite on dark: emulate with light opposite on black
* 'k': dark opposite on light: emulate with black on dark
* 'l': light opposite on light: emulate with white on light
*/

static void base_colors(void)


Загрузка…
Отмена
Сохранить