History log of /haiku/src/apps/terminal/TerminalLine.h
Revision Date Author Comments
# 18d61222 21-Jul-2023 Jérôme Duval <jerome.duval@gmail.com>

Terminal: support for underline color and styles

the text is now printed above the underline.

Change-Id: I1a3a7713bf514830106532e1534793e0fe158bc2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6706
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# a43a4e9f 25-Apr-2022 Jessica Hamilton <jessica.l.hamilton@gmail.com>

Terminal: fix missing attribute state for the history buffer.

* This presented itself as 24-bit colour rendering as white on black
when scrolling through the history.


# c0b591c5 10-Apr-2022 Jessica Hamilton <jessica.l.hamilton@gmail.com>

Terminal: implement 24-bit colour.

* Changes `TERM` to `xterm`, as we're now a full colour capable terminal
* Removes now-obsolete GuessPaletteColor from an RGB triple
* Since it's using a struct instead of uint32 for attributes, add a bunch
of helpers for a cleaner implementation
* Pass the TerminalBuffer's palette to the foreground/background get
helpers, for when an indexed colour is returned

Change-Id: I33bd3bb1407b87a237a8bc355093fe549e05b43a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5195
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 5b41331f 09-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

CodeStyle fixes, some refactoring and cleanup

* Clear some codestyle issues catched by checker script;
* Rename RestartDebugCapture to more consistent StartStopDebugCapture;
* Updated Copyrights and authors lists, some occurences of the raw MIT
licence text replaced with "under the terms of MIT licence" reference;
* Fixes for x86_64 build.

This is cumulative cleanup commit for series of Terminal refactoring
changes I have introduced last time. No significant functional changes.


# b512213b 31-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Support Background Color Erase, switch to xterm-256color

* Lot of fixes to add support of BCE (background color erase). Shell
is switched to emulate xterm-256colors terminal, that is modern and
declare the colors capabilities of our Terminal more precisely;
* Move current character attributes fAttr from TermView to
BasicTerminalBuffer. This reduces count of function parameters on call
various InsertXXX routines;
* In alternative screen buffer mode the whole cells "matrix" of the
screen buffers is taken into account during drawing background of the
cells in the view. In normal mode the "attributes" field of the
TerminalLine is used to detect color of the area after the last
character - there should be no changes with previous behaviour;
* Fix attributes on kSpaceChar-padding short lines. Current _line_
attributes should be used instead of current _global_ attributes;
* Fixed pads and gaps attributes, more accurate handling of ESC[K and K°;
* _Invalidate strings just erased. Fix EraseChars DCH processing;
* Fixes for ESC[J erase lines control sequences;
* Added handling SGR 90-97, 100-107 codes;
* Clean the newly allocated TerminalLine lines;
* More precise cursor background [off-]color estimation at ends of
lines. The current line attributes should be used instead of
hard-coding it to fTextBackground;
* Fixed background color erase in normal screen buffer modes. Wrong
line indexes calculation messed the drawing results or just returned
0 [default] line attributes;
* Some more BCE support: TerminalLine::Clear() now honors current
character attributes;
* Fixes #6143, #6510 and #6424.


# 627ced12 28-Nov-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use a better way to store the attributes for end of line. This should also fix some other bugs, as there were occasionalaccess to out-of-range chars.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39669 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b234b3fc 18-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

The color attributes were lost in scrollback buffer since the 256-color change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38222 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6100b6aa 13-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Enlarge attributes to 32 bit instead of 16. This prepares 256-color support for terminal.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38089 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 17b889de 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Changed TerminalLine::length from int16 to uint16.
* BasicTerminalBuffer::Init() no longer uses _ClearLines() to clear
the screen lines, since that expects the lines to be somewhat valid
at least and also needlessly updates the dirty region.
* _ClearLines() always clears lines, even if they were empty. This way
the "softBreak" flag is cleared too.
* Be a bit more careful when multiplying a potentially negative signed
number by an unsigned one. Shouldn't have caused a problem in this
case, though.

Either of the first three items should fix #2379.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25958 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4c9d4b02 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Change the line history to a more compact format. We reserve
lines * (width + 8) bytes which is only a little more than a sixth of
what it was before. The effect on performance is relatively small. In
my tests I measured about 2% slowdown.
* Fixed artifacts after soft-wrapped lines.
* Re-enabled cursor blinking. I changed it so that the cursor is 1s
shown and 0.5s hidden (instead of 1s each). Tell me what you think.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25957 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5b41331f1100c78541d87b7ad5a15d5652acb079 09-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

CodeStyle fixes, some refactoring and cleanup

* Clear some codestyle issues catched by checker script;
* Rename RestartDebugCapture to more consistent StartStopDebugCapture;
* Updated Copyrights and authors lists, some occurences of the raw MIT
licence text replaced with "under the terms of MIT licence" reference;
* Fixes for x86_64 build.

This is cumulative cleanup commit for series of Terminal refactoring
changes I have introduced last time. No significant functional changes.


# b512213be6f7cf9660c07e24a81b7597c8776116 31-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Support Background Color Erase, switch to xterm-256color

* Lot of fixes to add support of BCE (background color erase). Shell
is switched to emulate xterm-256colors terminal, that is modern and
declare the colors capabilities of our Terminal more precisely;
* Move current character attributes fAttr from TermView to
BasicTerminalBuffer. This reduces count of function parameters on call
various InsertXXX routines;
* In alternative screen buffer mode the whole cells "matrix" of the
screen buffers is taken into account during drawing background of the
cells in the view. In normal mode the "attributes" field of the
TerminalLine is used to detect color of the area after the last
character - there should be no changes with previous behaviour;
* Fix attributes on kSpaceChar-padding short lines. Current _line_
attributes should be used instead of current _global_ attributes;
* Fixed pads and gaps attributes, more accurate handling of ESC[K and K°;
* _Invalidate strings just erased. Fix EraseChars DCH processing;
* Fixes for ESC[J erase lines control sequences;
* Added handling SGR 90-97, 100-107 codes;
* Clean the newly allocated TerminalLine lines;
* More precise cursor background [off-]color estimation at ends of
lines. The current line attributes should be used instead of
hard-coding it to fTextBackground;
* Fixed background color erase in normal screen buffer modes. Wrong
line indexes calculation messed the drawing results or just returned
0 [default] line attributes;
* Some more BCE support: TerminalLine::Clear() now honors current
character attributes;
* Fixes #6143, #6510 and #6424.


# 627ced128beeae81540c683861547413a7664d67 28-Nov-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use a better way to store the attributes for end of line. This should also fix some other bugs, as there were occasionalaccess to out-of-range chars.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39669 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b234b3fc4e590480b284ec0751a5c7ecc836928e 18-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

The color attributes were lost in scrollback buffer since the 256-color change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38222 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6100b6aa33a6eaad0d5324a7da8718a8d5f5d1f7 13-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Enlarge attributes to 32 bit instead of 16. This prepares 256-color support for terminal.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38089 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 17b889de67dceb1f0327f5e936b0182a9655094b 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Changed TerminalLine::length from int16 to uint16.
* BasicTerminalBuffer::Init() no longer uses _ClearLines() to clear
the screen lines, since that expects the lines to be somewhat valid
at least and also needlessly updates the dirty region.
* _ClearLines() always clears lines, even if they were empty. This way
the "softBreak" flag is cleared too.
* Be a bit more careful when multiplying a potentially negative signed
number by an unsigned one. Shouldn't have caused a problem in this
case, though.

Either of the first three items should fix #2379.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25958 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4c9d4b02efb56c9444a83fb99e362681aa14c7c1 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Change the line history to a more compact format. We reserve
lines * (width + 8) bytes which is only a little more than a sixth of
what it was before. The effect on performance is relatively small. In
my tests I measured about 2% slowdown.
* Fixed artifacts after soft-wrapped lines.
* Re-enabled cursor blinking. I changed it so that the cursor is 1s
shown and 0.5s hidden (instead of 1s each). Tell me what you think.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25957 a95241bf-73f2-0310-859d-f6bbb57e9c96