// THIS FILE IS GENERATED AUTOMATICALLY, DO NOT EDIT IT!
// it's un_exported.func.h converted by the GenerateInterface tool.


{
    This file is part of Chentrah,
    Copyright (C) 2004-2012 Anton Rzheshevski (chebmaster@mail.ru).

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see http://www.gnu.org/licenses/

 **********************************************************************

    This file contains the definitions and initialization code
    for the functions exported from the mothe rmodule to the game module

 **********************************************************************}
{
 en_US:
    Generally, one should use interfaces
      in stead of such perversion.
      Alas, at the time I built this,
      FreePascal didn't yet support the interfaces well.

    Besides, I don't see the point of reworking this mechanism.
      It works, it works well, it is in a way more flexible
      than the interface mechanism, it is safe enough.
      In short, moving from it to interfaces would be just a waste of time.
      
    After reaching a stable version, this list will stop changing,
      except adding new functions maybe.

 ru_RU:
    Знаю, что изврат, но меня ТАК ДОСТАЛО поддерживать
     (а самое страшное - модифицировать) четыре разных
     списка одних и тех же функций в четырёх разных местах.
     Да ещё вручную следить, чтобы все изменения в них
     совпадали до точки...

    Всё худо-бедно держалось пока мне не пришлось массированно править
     списки параметров (переезд с String на PChar).
     Вот тут-то ад и разверсзя... =:(

 **********************************************************************}
{
    This header is used by both the mother executable and the module dlls.
     The mother definition style:
       function A (): integer;
       , so macros are:  = "function",  = "", :p:=@ = "".
     The module definition style:
       var A: function (): integer;
       , so macros are:  = "",  = ":function", :p:=@ = "".
     The core exporting proc definition style:
       3: p:=@A;
       , so macros are:  = "", e_fun2 = "", :p:=@ = ":p:=@"
     The module importing proc definition style:
       RegisterProc(3, @A);
       , so macros are:  = "RegisterProc(", e_fun2 = ")", :p:=@ = ",@"

 **********************************************************************}

// ---------------------- INTERFACING BETWEEN THE MODULE AND THE ENGINE -------

 {$ifndef header} 0003 :p:=@ {$endif}_ValidateVersion {$ifdef header}(m, n, b: integer); cdecl{$endif};
 {$ifndef header} 0001 :p:=@ {$endif}_ValidateTypesets {$ifdef header}(i, n: integer); cdecl{$endif};
 {$ifndef header} 0004 :p:=@ {$endif}_ValidateTypesetsEq {$ifdef header}(n: PAnsiChar; v1, v2: integer); cdecl{$endif};
 {$ifndef header} 0002 :p:=@ {$endif}_ValidateTypesetsLe {$ifdef header}(n: PAnsiChar; v1, v2: integer); cdecl{$endif};
 {$ifndef header} 0005 :p:=@ {$endif}_RequestExit {$ifdef header}(); cdecl{$endif};
 {$ifndef header} 0006 :p:=@ {$endif}GoingDownHard  {$ifdef header}(): boolean; cdecl{$endif};

 {$ifndef header} 0007 :p:=@ {$endif}_cgeSetBackground {$ifdef header}(FileName: PAnsiChar); cdecl{$endif};
 {$ifndef header} 0107 :p:=@ {$endif}_cgeSetBackgroundPtr {$ifdef header}(p: pointer; size: integer); cdecl{$endif};
 {$ifndef header} 0108 :p:=@ {$endif}_cgeDrawBackground {$ifdef header}(); cdecl{$endif};
 {$ifndef header} 0008 :p:=@ {$endif}_cgeHeartBeat {$ifdef header}(); cdecl{$endif};

 {$ifndef header} 0015 :p:=@ {$endif}GetWindowExists  {$ifdef header}(): boolean; cdecl{$endif};

 {$ifndef header} 0017 :p:=@ {$endif}_SetConfigInt  {$ifdef header} (section, id: PAnsiChar; Value: integer); cdecl{$endif};
 {$ifndef header} 0018 :p:=@ {$endif}_GetConfigInt  {$ifdef header} (section, id: PAnsiChar): integer; cdecl{$endif};
 {$ifndef header} 0019 :p:=@ {$endif}_GetConfigIntCh  {$ifdef header} (section, id: PAnsiChar; min, max: integer): integer; cdecl{$endif};
 {$ifndef header} 0101 :p:=@ {$endif}_SetConfigStr  {$ifdef header} (section, id, Value: PAnsiChar); cdecl{$endif};
 {$ifndef header} 0102 :p:=@ {$endif}_GetConfigStr  {$ifdef header} (section, id: PAnsiChar): PAnsiChar; cdecl{$endif};

 {$ifndef header} 0020 :p:=@ {$endif}_GetCGM  {$ifdef header}(): integer; cdecl{$endif}; //reads the message queue;

 {$ifndef header} 0021 :p:=@ {$endif}_MakeSurePathExists  {$ifdef header} (path: PAnsiChar); cdecl{$endif};


// ------------------------------ LOG AND EXCEPTION HANDLING ------------------

 {$ifndef header} 1002 :p:=@ {$endif} {$ifdef cgekernel}_exp_StopDying{$else}StopDying{$endif}  {$ifdef header}(): PWideChar; cdecl{$endif};

 {$ifndef header} 1003 :p:=@ {$endif}DbgSayA  {$ifdef header}(Yell: PAnsiChar); cdecl{$endif};
// {$ifndef header} 0044 :p:=@ {$endif}HostDieW  {$ifdef header}(txt: PWideChar); cdecl{$endif};
 {$ifndef header} 1004 :p:=@ {$endif}SetDying  {$ifdef header}(d: boolean); cdecl{$endif};

 {$ifndef header} 1005 :p:=@ {$endif}_HostDyellW  {$ifdef header}(txt: PWideChar); cdecl{$endif};
// {$ifndef header} 0117 :p:=@ {$endif}HostRaiseException  {$ifdef header}(); cdecl{$endif};


 {$ifndef header} 1006 :p:=@ {$endif}_HostLogW  {$ifdef header}(txt: PWideChar); cdecl{$endif};
 {$ifndef header} 1007 :p:=@ {$endif}_HostMsg   {$ifdef header}(M: TMessageId): PWideChar; cdecl{$endif};
 {$ifndef header} 1008 :p:=@ {$endif}AddLogOK   {$ifdef header}(); cdecl{$endif};
(*{$ifdef windows}
//DONT NEED IT ANYMORE
 {$ifndef header} 1009 :p:=@ {$endif}CgeTryWrap  {$ifdef header}(backwrapperproc, calledproc: pointer); cdecl{$endif};
{$endif}*)

// --------------------------------- OPENGL HELPERS AND WRAPPERS --------------

 {$ifndef header} 2001 :p:=@ {$endif}_CgeSwapBuffers {$ifdef header}(); cdecl{$endif};

 //does NOT support NPOT!
 {$ifndef header} 2002 :p:=@ {$endif}_CgeBuildAlphaMipmaps  {$ifdef header}(Width, Height: integer; Data: pointer); cdecl{$endif};

 {$ifndef header} 2004 :p:=@ {$endif}{$ifdef cgekernel}exGetGlProcAddress{$else}GetGLProcAddress{$endif}  {$ifdef header}(ProcName, Suffix: PAnsiChar): Pointer; cdecl{$endif};
 {$ifndef header} 2005 :p:=@ {$endif}{$ifdef cgekernel}exGetGlProcAddress2{$else}GetGLProcAddress2{$endif}  {$ifdef header}(ProcName, Suffix1, Suffix2: PAnsiChar): Pointer; cdecl{$endif};

 {$ifndef header} 2006 :p:=@ {$endif}GetHigherPowerOf2  {$ifdef header}(i: integer): integer; cdecl{$endif};
 {$ifndef header} 2007 :p:=@ {$endif}GetLowerPowerOf2  {$ifdef header}(i: integer): integer; cdecl{$endif};


// --------------------------------- SOUND ------------------------------------
 {$ifndef header} 2101 :p:=@ {$endif}{$ifdef cgekernel}exGetALProcAddress{$else}GetALProcAddress{$endif}  {$ifdef header}(ProcName: PAnsiChar): Pointer; cdecl{$endif};
//the data format is always 16 bits stereo.
 {$ifndef header} 2102 :p:=@ {$endif}CgeNewSoundData {$ifdef header}(begins: TDateTime; samples, rate: integer; data: pointer); cdecl{$endif};
 {$ifndef header} 2103 :p:=@ {$endif}CgeSetSoundVolume {$ifdef header}(volume: float); cdecl{$endif};

 {$ifndef header} 2104 :p:=@ {$endif}_PlaySound {$ifdef header}(Wavfilename: PAnsiChar); cdecl{$endif};



//  -------------------------------- CGE-FILE MANAGEMENT ----------------------
// Rest in peace, paradigm.

// {$ifndef header} 0049 :p:=@ {$endif}OpenCGEFileForWrite  {$ifdef header}(TargetName: PAnsiChar; version: AnsiChar); cdecl{$endif};
// {$ifndef header} 0050 :p:=@ {$endif}OpenCGEFileForRead  {$ifdef header}(SourceName: PAnsiChar; var version: AnsiChar); cdecl{$endif};
// {$ifndef header} 0051 :p:=@ {$endif}ReadFromCGEFile  {$ifdef header}(var BufferLen: integer): pointer; cdecl{$endif};
// {$ifndef header} 0055 :p:=@ {$endif}AllocCGefileWriteBuffer  {$ifdef header}(var BufferLen: integer): pointer; cdecl{$endif};
// {$ifndef header} 0052 :p:=@ {$endif}WriteToCGEFile  {$ifdef header} (BufferLen: integer); cdecl{$endif};
// {$ifndef header} 0053 :p:=@ {$endif}CloseCGEFile  {$ifdef header} (FlushToFile: boolean; FileName: PAnsiChar); cdecl{$endif};
// {$ifndef header} 0115 :p:=@ {$endif}EmergencyCloseCGEFile  {$ifdef header} (); cdecl{$endif};
// {$ifndef header} 0069 :p:=@ {$endif}GetCGEFileSessionId  {$ifdef header}(): int64; cdecl{$endif};


// {$ifndef header} 0071 :p:=@ {$endif}CgeFileExists  {$ifdef header}(name: PAnsiChar): boolean; cdecl{$endif};
// {$ifndef header} 0072 :p:=@ {$endif}CgeFileRename  {$ifdef header} (fFrom, fTo: PAnsiChar); cdecl{$endif};
 {$ifndef header} 3001 :p:=@ {$endif}_UnmangleFileName {$ifdef header}(m: PAnsiChar): pAnsiChar; cdecl{$endif};
 {$ifndef header} 3002 :p:=@ {$endif}_GetFileHash {$ifdef header}(name: PAnsiChar; phash: pResourceHash); cdecl{$endif};
 {$ifndef header} 3003 :p:=@ {$endif}_GetFileDateTime {$ifdef header}(name: PAnsiChar): TDateTime; cdecl{$endif};
 {$ifndef header} 3004 :p:=@ {$endif}_GetIsHashvalid {$ifdef header}(phash: pMd5Digest): boolean; cdecl{$endif};


(*
 {$ifndef header} 3005 :p:=@ {$endif}_CreateContainer {$ifdef header}(Name: PAnsiChar; Size: integer): pointer; cdecl{$endif};
 {$ifndef header} 3006 :p:=@ {$endif}_GetContainer {$ifdef header}(Name: PAnsiChar): pointer; cdecl{$endif};
 {$ifndef header} 3007 :p:=@ {$endif}_GetContainerSize {$ifdef header}(Name: PAnsiChar): integer; cdecl{$endif};
 {$ifndef header} 3008 :p:=@ {$endif}_DeleteContainer {$ifdef header}(Name: PAnsiChar); cdecl{$endif};
 {$ifndef header} 3009 :p:=@ {$endif}_StoreContainerToFile  {$ifdef header} (Name, FileName: PAnsiChar); cdecl{$endif};
 {$ifndef header} 3010 :p:=@ {$endif}_CreateContainerFromFile  {$ifdef header}(Name, FileName: PAnsiChar; var Size: integer): pointer; cdecl{$endif};
*)
//--------------------------------- RESOURCE MANAGEMENT -----------------------

// {$ifndef header} 0057 :p:=@ {$endif}GetCurrentSessionID  {$ifdef header}(): int64; cdecl{$endif};
// {$ifndef header} 0058 :p:=@ {$endif}NewSessionID  {$ifdef header} (); cdecl{$endif};

(*
 {$ifndef header} 0111 :p:=@ {$endif}_CgeNewResource  {$ifdef header} (ResType: integer; pname: pinteger; ptoken: pResourceToken); cdecl{$endif};
 {$ifndef header} 0067 :p:=@ {$endif}_CgeDeleteResource  {$ifdef header} (ResType, name: integer; ptoken: PResourceToken); cdecl{$endif};
 {$ifndef header} 0062 :p:=@ {$endif}_UpdateResourceToken  {$ifdef header} (ResType, name: integer; ptoken: PResourceToken); cdecl{$endif};
 {$ifndef header} 0063 :p:=@ {$endif}_UnclaimResource  {$ifdef header} (ResType, name: integer; ptoken: PResourceToken); cdecl{$endif};
 {$ifndef header} 0064 :p:=@ {$endif}_ClaimResource  {$ifdef header} (ResType: integer; pname: pinteger; ptoken: pResourceToken): longbool; cdecl{$endif};
 {$ifndef header} 0065 :p:=@ {$endif}_ClearUnclaimedResourcesList  {$ifdef header} (); cdecl{$endif};
 {$ifndef header} 0066 :p:=@ {$endif}_DeleteUnclaimedResources  {$ifdef header} (); cdecl{$endif};
*)

 {$ifndef header} 4000 :p:=@ {$endif}GenHash  {$ifdef header} (phash: PResourceHash); cdecl{$endif};
 {$ifndef header} 4001 :p:=@ {$endif}StoreResource  {$ifdef header} (phandle: pDWORD; phash: PResourceHash); cdecl{$endif};
 {$ifndef header} 4002 :p:=@ {$endif}ClaimResource  {$ifdef header} (phash: PResourceHash): PRes; cdecl{$endif};
 {$ifndef header} 4003 :p:=@ {$endif}GetFirstResource  {$ifdef header} (): PRes; cdecl{$endif};
 {$ifndef header} 4004 :p:=@ {$endif}GetNextResource  {$ifdef header} (): PRes; cdecl{$endif};
 {$ifndef header} 4005 :p:=@ {$endif}ClearResourceList  {$ifdef header} (); cdecl{$endif};
 {$ifndef header} 4006 :p:=@ {$endif}HashesMatch  {$ifdef header} (a, b: PResourceHash): boolean; cdecl{$endif};

//These are used for storing the classes information:
 {$ifndef header} 3011 :p:=@ {$endif}CgeCreateMemoryStream  {$ifdef header}(): pointer; cdecl{$endif};
 {$ifndef header} 3012 :p:=@ {$endif}CgeDeleteMemoryStream  {$ifdef header}(s: pointer); cdecl{$endif};
 {$ifndef header} 3013 :p:=@ {$endif}CgeSeekMemoryStream  {$ifdef header}(s: pointer; pos: integer); cdecl{$endif};
 {$ifndef header} 3014 :p:=@ {$endif}CgeWriteToMemoryStream  {$ifdef header}(s: pointer; buf: pointer; len: integer); cdecl{$endif};
 {$ifndef header} 3015 :p:=@ {$endif}CgeReadFromMemoryStream  {$ifdef header}(s: pointer; buf: pointer; len: integer): integer; cdecl{$endif};
 {$ifndef header} 3016 :p:=@ {$endif}CgeWriteIntToMemoryStream  {$ifdef header}(s: pointer; i: integer); cdecl{$endif};
 {$ifndef header} 3017 :p:=@ {$endif}CgeReadIntFromMemoryStream  {$ifdef header}(s: pointer): integer; cdecl{$endif};
 {$ifndef header} 3018 :p:=@ {$endif}CgeGetMemoryStreamMem  {$ifdef header}(s: pointer): pointer; cdecl{$endif};
 {$ifndef header} 3019 :p:=@ {$endif}CgeGetMemoryStreamSize  {$ifdef header}(s: pointer): integer; cdecl{$endif};
 {$ifndef header} 3020 :p:=@ {$endif}CgeMemoryStreamLoadFromFile  {$ifdef header}(s: pointer; name: PAnsiChar); cdecl{$endif};
 {$ifndef header} 3021 :p:=@ {$endif}CgeMemoryStreamSaveToFile  {$ifdef header}(s: pointer; name: PAnsiChar); cdecl{$endif};

//This is a per-module setting!
 {$ifndef header} 3022 :p:=@ {$endif}CgeGetCiMemoryStream  {$ifdef header}(): pointer; cdecl{$endif};
 {$ifndef header} 3023 :p:=@ {$endif}CgeSetCiMemoryStream  {$ifdef header}(s: pointer); cdecl{$endif};

 {$ifndef header} 3024 :p:=@ {$endif}CgeGetHostMem  {$ifdef header}(size: integer): pointer; cdecl{$endif};
 {$ifndef header} 3025 :p:=@ {$endif}CgeFreeHostMem  {$ifdef header}(p: pointer); cdecl{$endif};
 {$ifndef header} 3026 :p:=@ {$endif}CgeReallocHostMem  {$ifdef header}(p: pointer; newsize: integer): pointer; cdecl{$endif};


// -------------------------------- MOUSE POINTER -----------------------------

 {$ifndef header} 3201 :p:=@ {$endif}CgeLoadCursorFromFile  {$ifdef header}(FileName: PAnsiChar; xhotspot, yhotspot: integer); cdecl{$endif};
 {$ifndef header} 3202 :p:=@ {$endif}CgeLoadCursorFromMemory  {$ifdef header}(pfile: pointer; size, xhotspot, yhotspot: integer); cdecl{$endif};
//Remember, kids! 32x32 only!
 {$ifndef header} 3203 :p:=@ {$endif}CgeLoadCursorFromRawPixmap  {$ifdef header}(pixels: pointer; xhotspot, yhotspot: integer); cdecl{$endif};
 {$ifndef header} 3204 :p:=@ {$endif}CgeEmptyCursor  {$ifdef header}(); cdecl{$endif};
 {$ifndef header} 3205 :p:=@ {$endif}CgeStandardCursor  {$ifdef header}(); cdecl{$endif};
 {$ifndef header} 3206 :p:=@ {$endif}CgeHourglassCursor  {$ifdef header}(); cdecl{$endif};

// -------------------------------------- TIMER -------------------------------

// {$ifndef header} 5001 :p:=@ {$endif}_CTimer  {$ifdef header} (): float; cdecl{$endif};
// {$ifndef header} 5002 :p:=@ {$endif}{$ifdef cgekernel}_exp_Tick{$else}Tick{$endif} {$ifdef header}(): longint; cdecl{$endif};
 {$ifndef header} 5003 :p:=@ {$endif}Second {$ifdef header}(): double; cdecl{$endif};
 {$ifndef header} 5004 :p:=@ {$endif}UsecByTsc {$ifdef header}(ptsc: pqword): double; cdecl{$endif};


//----------------------------------- VAMPYRE IMAGING -------------------------

// {$ifndef header} 1014 :p:=@ {$endif}CgeNewPic  {$ifdef header} (): pointer; cdecl{$endif};
 {$ifndef header} 6000 :p:=@ {$endif}DeletePic  {$ifdef header} (name: pointer); cdecl{$endif};

// {$ifndef header} 1001 :p:=@ {$endif}LoadNewPic  {$ifdef header} (FileName: PAnsiChar; phash: pResourceHash): pointer; cdecl{$endif};
 {$ifndef header} 6001 :p:=@ {$endif}LoadPic  {$ifdef header} (FileName: PAnsiChar): pointer; cdecl{$endif};
 {$ifndef header} 6002 :p:=@ {$endif}LoadPicAs  {$ifdef header} (FileName: PAnsiChar; format: GLenum): pointer; cdecl{$endif};
 {$ifndef header} 6003 :p:=@ {$endif}LoadPicFromMem  {$ifdef header} (p: pointer; size: integer): pointer; cdecl{$endif};
 {$ifndef header} 6004 :p:=@ {$endif}LoadPicFromMemAs  {$ifdef header} (p: pointer; size: integer; format: GLenum): pointer; cdecl{$endif};


 {$ifndef header} 6005 :p:=@ {$endif}CreatePic {$ifdef header}(width, height: integer; format: GLuint): pointer; cdecl{$endif};

 {$ifndef header} 6006 :p:=@ {$endif}SavePic {$ifdef header}(FileName: PAnsiChar; name: pointer); cdecl{$endif};

 {$ifndef header} 6007 :p:=@ {$endif}ResizePic {$ifdef header}(name: pointer; newwidth, newheight: integer); cdecl{$endif};
 {$ifndef header} 6008 :p:=@ {$endif}ResamplePic {$ifdef header}(name: pointer; newwidth, newheight: integer; wrap: boolean); cdecl{$endif};
 {$ifndef header} 6009 :p:=@ {$endif}ClonePic {$ifdef header}(name1: pointer): pointer; cdecl{$endif};
 {$ifndef header} 6010 :p:=@ {$endif}CloneResamplePic {$ifdef header}(name1: pointer; newwidth, newheight: integer; wrap: boolean): pointer; cdecl{$endif};

 {$ifndef header} 6011 :p:=@ {$endif}GetPicFmt  {$ifdef header} (name: pointer): GLuint; cdecl{$endif};
 {$ifndef header} 6012 :p:=@ {$endif}GetPicPixels  {$ifdef header} (name: pointer): pointer; cdecl{$endif};
 {$ifndef header} 6013 :p:=@ {$endif}GetPicWidth  {$ifdef header} (name: pointer): integer; cdecl{$endif};
 {$ifndef header} 6014 :p:=@ {$endif}GetPicHeight  {$ifdef header} (name: pointer): integer; cdecl{$endif};
 {$ifndef header} 6015 :p:=@ {$endif}GetPicBytes  {$ifdef header} (name: pointer): integer; cdecl{$endif};

// -------------------------------- FONT MANAGEMENT ---------------------------

 {$ifndef header} 7001 :p:=@ {$endif}cgeffSizeToFace {$ifdef header}(size: integer; face: Pinteger; zoom: PGLfloat); cdecl{$endif};
 {$ifndef header} 7002 :p:=@ {$endif}cgeffFitStringIntoRectangle {$ifdef header}(Size, numChars, numLines, Width, Height: integer; fit: PStringFitRec);  cdecl{$endif};
 {$ifndef header} 7003 :p:=@ {$endif}cgeffGetStringWidth  {$ifdef header} (Size, numChars: integer): GLfloat; cdecl{$endif};
 {$ifndef header} 7004 :p:=@ {$endif}cgeffGetStringHeight  {$ifdef header} (Size, numLines: integer): GLfloat; cdecl{$endif};

//the caller is responsible for switching to FFP and setting the ortho projection!
 {$ifndef header} 7005 :p:=@ {$endif}cgeffSetRenderState {$ifdef header}(noshadow: boolean); cdecl{$endif};
 {$ifndef header} 7006 :p:=@ {$endif}cgeffRenderString {$ifdef header}(fit: PStringFitRec; Left, Top: glFloat; w: PWideChar); cdecl{$endif};


(*
 {$ifndef header} 7007 :p:=@ {$endif}cgeGetProportionalFontName  {$ifdef header} (index: integer): PAnsiChar; cdecl{$endif};
 {$ifndef header} 7008 :p:=@ {$endif}cgeCalcWordMetrics  {$ifdef header} (
  chars: PWideChar; len, font_index, size, diminish: integer; width, width_condensed: PInteger; UV, UV_condensed: PGLfloat); cdecl{$endif};

*)
(*


//the fonts CGE loads by itself: 0=ChebStyle, 1=Nimbus Sans L.
 {$ifndef header} 2007 :p:=@ {$endif}_foGetSysFont  {$ifdef header} (index: integer): integer; cdecl{$endif};

//all objects should be created prior, via CgeNewResource(CGE_RESOURCE_FONT, ...)
 {$ifndef header} 2001 :p:=@ {$endif}_foLoadFont  {$ifdef header} (FileName: PAnsiChar; name: integer): boolean; cdecl{$endif};
 {$ifndef header} 2008 :p:=@ {$endif}_foGetFontname  {$ifdef header} (index: integer): PAnsiChar; cdecl{$endif};

//This one performs the actual width high and low calculations
//Returns the *actual* character size (culled to min..max supported by the font)
//The array receiving the data must be pre-allocated.
//The string must *not* contain spaces.
 {$ifndef header} 2006 :p:=@ {$endif}_foCalcWord  {$ifdef header}
  (chars: PWideChar; len, font, size: integer; bold, italic, condensed: boolean; word: PiCharArray;
   texture, shadow: pGLuint): integer; cdecl{$endif};
*)




