Next: C reference, Previous: Programming, Up: Top
The following text shows the interface of the Pascal unit
akfavatar.pas:
unit akfavatar;
interface
{ length of an output line }
{ input is one less }
const LineLength = 80;
{ Default encoding of the system }
{$IfDef LATIN1}
const DefaultEncoding = 'ISO-8859-1';
{$Else}
const DefaultEncoding = 'UTF-8';
{$EndIf}
{ defaults for SetTextDelay and SetFlipPageDelay }
const
DefaultTextDelay = 75;
DefaultFlipPageDelay = 2700;
{ Colors for TextColor/TextBackground }
{ compatible to the CRT unit }
const
Black = 0;
Blue = 1;
Green = 2;
Cyan = 3;
Red = 4;
Magenta = 5;
Brown = 6;
LightGray = 7;
DarkGray = 8;
LightBlue = 9;
LightGreen = 10;
LightCyan = 11;
LightRed = 12;
LightMagenta = 13;
Yellow = 14;
White = 15;
Blink = 128; { ignored }
{$IfDef FPC}
type LineString = AnsiString;
{$Else}
{ In UTF-8 encoding one char may take up to 4 Bytes }
type LineString = string (4 * LineLength);
type ShortString = string (255);
{$EndIf}
type TextDirection = (LeftToRight, RightToLeft);
type TScreenSize = record x, y: integer end;
{
Text Attributes
mostly compatible to the CRT unit
the "blink-bit" means a bright background color
}
var TextAttr : byte;
{ methods to stop the program }
var
CheckBreak: boolean; { compatible to CRT }
CheckEsc: boolean;
{ compatible to the CRT unit }
var
CheckEof: boolean;
CheckSnow: boolean;
DirectVideo: boolean;
{ for CRT compatiblity, use ScreenSize for new programs }
{ Just for reading! }
{ These variables are only set after the avatar is visible }
var WindMin, WindMax: word;
{ load the Avatar image from a file }
{ must be used before any output took place }
procedure AvatarImageFile(FileName: string);
{ load the Avatar image from memory }
{ must be used before any output took place }
procedure AvatarImageData(data: pointer; size: LongInt);
{ set a different background color (default is grey) }
{ should be used before any output took place }
procedure setBackgroundColor(red, green, blue: byte);
{ change pace of text and page flipping }
procedure setTextDelay(delay: integer);
procedure setFlipPageDelay(delay: integer);
{ change the encoding }
procedure setEncoding(const newEncoding: string);
{ change text direction (for hebrew/yiddish texts) }
{ you should start a new line before or after this command }
procedure setTextDirection(direction: TextDirection);
{ The "Screen" is the textarea }
{ The name is chosen for compatiblity with the CRT unit }
{ This causes the library to be initialized }
{ The avatar-image and the background color must be set before this }
function ScreenSize: TScreenSize;
{ assign text-variable to the avatar }
procedure AssignAvatar(var f: text);
{ the same for CRT compatiblity }
procedure AssignCrt(var f: text);
{ Restore Input/Output system }
{ use this to output help or version information }
procedure RestoreInOut;
{$IfDef FPC}
{ the page command is defined in the Pascal standard,
but missing in FreePascal }
{ action: wait a while and then clear the textfield }
procedure page(var f: text);
procedure page;
{$EndIf}
{ switch cursor on or off }
{ extensions compatible to Free Pascal }
procedure CursorOn;
procedure CursorOff;
{ keyboard handling }
{ partly CRT compatible - only Latin1 chars so far }
function KeyPressed: boolean;
function ReadKey: char;
{ clear the keyboard buffer }
procedure ClearKeys;
{ wait for a key }
procedure WaitKey;
{ wait some time }
{ compatible to CRT unit }
procedure delay(milliseconds: integer);
{ example use: delay (seconds (2.5)); }
function seconds(s: Real): integer;
{ clears the window (not the screen!) }
{ the name was chosen for compatiblity to the CRT unit }
procedure ClrScr;
{ clears rest of the line }
{ compatible to CRT unit }
procedure ClrEol;
{ deletes current line, the rest is scrolled up }
procedure DelLine;
{ inserts a line before the current line, the rest is scrolled down }
procedure InsLine;
{ set the text color }
{ compatible to CRT unit }
procedure TextColor (Color: Byte);
{ set the text background color }
{ compatible to CRT unit, but light colors can be used }
procedure TextBackground (Color: Byte);
{ set black on white text colors, switch bold and underlined off }
{ name compatible to CRT unit, but the colors differ }
procedure NormVideo;
{ switch bold mode on or off }
{ this is different from the CRT unit }
{ be careful, when you combine this with TextColor }
procedure HighVideo;
procedure LowVideo;
{ switch underline mode on or off }
procedure Underlined (onoff: boolean);
{ shows the avatar without the balloon }
procedure ShowAvatar;
{ moves the avatar in or out }
procedure MoveAvatarIn;
procedure MoveAvatarOut;
{ loads image
after that call delay or waitkey
the supported image formats depend on your libraries
uncompressed BMP is always supported
}
function ShowImageFile(FileName: string): boolean;
procedure ShowImageData(data: pointer; size: LongInt);
{ play a short sound as with chr(7) }
procedure Beep;
{ a short visual flash on the screen }
procedure Flash;
{ loads Audio File
currently only WAV files supported
encodings: PCM, MS-ADPCM, IMA-ADPCM }
function LoadSoundFile(const FileName: string): pointer;
function LoadSoundData(data: pointer; size: LongInt): pointer;
procedure FreeSound(snd: pointer);
procedure PlaySound(snd: pointer; loop: boolean);
{ wait until the end of the audio output }
procedure WaitSoundEnd;
{ dummy function, full support planned }
procedure Sound(frequency: integer);
{ stop sound output }
procedure NoSound;
{ handle coordinates (inside the balloon) }
{ compatible to CRT unit }
function WhereX: integer;
function WhereY: integer;
procedure GotoXY(x, y: integer);
procedure Window(x1, y1, x2, y2: Byte);
{ set/get scroll mode }
{ 0 = off (page-flipping), 1 = normal }
procedure SetScrollMode(mode: integer);
function GetScrollMode: integer;
{ get last error message }
function AvatarGetError: ShortString;
{ ignore TextColor TextBackground and so on }
{ compatible with GNU-Pascal's CRT unit }
procedure SetMonochrome(monochrome: boolean);