@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@c 01.0.00 Introduction:   - - - - - - - - - - - - - - - - - - - - - - - - - - -
@c         What is the AnsiCmd library?  - - - - - - - - - - - - - - - - - - - -
@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@node Introduction
@unnumbered Introduction
@cindex 01.0.00 Introduction

@Subheading{What is the AnsiCmd link library?,---------------------------------}

The @t{AnsiCmd} class builds to a small, special purpose link library which may 
be used to configure color attributes for the terminal window foreground and 
background; text attributes such as bold, italic, and underlined; as well 
as cursor positioning and text erasure using @ref{ANSI} escape sequences 
and @ref{ASCII} control codes.

In addition, the @t{AnsiCmd} library can configure the input stream, @t{"stdin"} 
for operations such as input echo options, non-blocking read and capture 
of system signals such as @t{"break"} (@b{CTRL+C}), @t{"suspend"} (@b{CTRL+Z}), 
and @t{"quit"} (@b{CTRL+4}).@*
@xref{Terminal Configuration}.

@t{AnsiCmd} captures all @i{(or nearly all)} keycodes which are passed from 
the system as escape sequences, and converts these sequences to ordinary 
Unicode codepoints.
@ifnothtml
@*
@end ifnothtml
@xref{Soft Echo Options} for examples of this conversion.


@Subheading{The EarthPoints Test Program,----------------------------}

The @t{AnsiCmd} class library is bundled with a test application, 
@b{@t{@emph{EarthPoints}}}, (@t{epts}), which exercises the full 
functionality of the library. @t{EarthPoints} was born as an experiment 
in how global-positioning systems calcuate distances between points on 
the planet. It began as a pure command-line application to test the math 
behind the distance calculations; however, your author is a simple creature, 
and he was easily distracted by the possibility of using ANSI escape 
sequences to add color to the output. (Geeks-R-Us :-)

This distraction quickly became a project in itself, and the full list 
of @t{ECMA-48, ANSI X3.64} escape sequences is now supported by the 
@t{AnsiCmd} library. 

@Subheading{Other Test Programs,-------------------}

Also included are additional test programs in various states of completion.@*
These applications demonstrate specific approaches to design of applications 
based on the @t{AnsiCmd} library.@*
@xref{CsvView Demo App}, and @ref{AcEdit Demo App} for more information.

@cindex gString
@Subheading{The gString Class,-----------------}

The @t{AnsiCmd} library and the associated test programs make extensive use 
of the author's @t{gString} class. The @t{gString} class encapsulated most 
of the smelly (but efficient) C-language string manipulation functions such 
as @t{sprintf, scanf} and so on.@*
Please @pxref{gString Text Tool} for more information.

@cindex WaylandCB
@anchor{WaylandCB Class}
@Subheading{The WaylandCB Class,-------------------}

Access to the system clipboard is enabled through the @t{WaylandCB} class. 
This class in under a conditional-compile directive.@*
Please @pxref{Build Options} for additional information on integration of 
clipboard access into the @t{AnsiCmd} library.@*
For a discussion of how system clipboard access is implemented in the library, 
please @pxref{AnsiCmd Clipboard Access}.

@cindex TFMan
@Subheading{The TFMan Class,---------------}

Management of temporary files for the @t{AnsiCmd} library and the demo 
applications included with the package are handled through the @t{TFMan} 
(@b{T}emporary @b{F}ile @b{Man}agement) class.@*
Please @pxref{TFMan Class} and the @ref{TFMTest Demo App} for an introduction 
to the use of temporary files in a Linux application.
@sp 1
@hr40d{}
@anchor{ANSI}
@b{@t{ANSI }} - American National Standards Institute@*
(ECMA-48, ISO/IEC-6429, FIPS 86, ANSI X3.64, JIS X 0211)@*
@url{https://en.wikipedia.org/wiki/American_National_Standards_Institute}
@url{https://www.ecma-international.org/publications-and-standards/standards/ecma-48/}

@anchor{ASCII}
@b{@t{ASCII }} - American Standard Code for Information Exchange.@*
(ISO-IR-006, ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, 
IBM367, cp367)@*
@url{https://en.wikipedia.org/wiki/ASCII}
@sp 3

