123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721 |
- {$MACRO ON}
- (******************************************************************************
- *
- * Copyright (c) 1998-2000 Palm, Inc. or its subsidiaries.
- * All rights reserved.
- *
- * File: TextMgr.h
- *
- * Release: Palm OS SDK 4.0 (63220)
- *
- * Description:
- * Header file for Text Manager.
- *
- * History:
- * 03/05/98 kwk Created by Ken Krugler.
- * 02/02/99 kwk Added charEncodingPalmLatin & charEncodingPalmSJIS,
- * since we've extended the CP1252 & CP932 encodings.
- * Added TxtUpperStr, TxtLowerStr, TxtUpperChar, and
- * TxtLowerChar macros.
- * 03/11/99 kwk Changed TxtTruncate to TxtGetTruncationOffset.
- * 04/24/99 kwk Moved string & character upper/lower casing macros
- * to IntlGlue library.
- * 04/28/99 kwk Changed kMaxCharSize to maxCharBytes, as per Roger's request.
- * 05/15/99 kwk Changed TxtIsValidChar to TxtCharIsValid.
- * 05/29/99 kwk Removed include of CharAttr.h.
- * 07/13/99 kwk Moved TxtPrepFindString into TextPrv.h
- * 09/22/99 kwk Added TxtParamString (OS 3.5).
- * 10/28/99 kwk Added the TxtCharIsVirtual macro.
- * 03/01/00 kwk Added the TxtConvertEncoding routine (OS 4.0), and the
- * txtErrUnknownEncoding and txtErrConvertOverflow errors.
- * 05/12/00 kwk Deprecated the TxtCharWidth routine.
- * 05/26/00 kwk Added TxtGetWordWrapOffset (OS 4.0). Convert CharEncodingType
- * to #define format versus enums. Re-ordered into logical
- * groups, and fixed up names to match existing convention.
- * 05/30/00 kwk Added txtErrTranslitUnderflow.
- * 06/02/00 CS Moved character encoding constants to PalmLocale.h so that
- * Rez has access to them.
- * 07/13/00 kwk Added TxtNameToEncoding (OS 4.0).
- * 07/23/00 kwk Updated TxtConvertEncoding to match new API.
- * 10/05/00 kwk Added charAttr_<whatever> as substitutes for the old
- * character attribute flags in CharAttr.h (e.g. _XA, _LO).
- * kwk Moved sizeOf7BitChar here from CharAttr.h
- * 11/21/00 kwk Undeprecated TxtCharWidth, in anticipation of future,
- * proper deprecation.
- * 11/24/00 kwk Reverted maxCharBytes to 3 (was 4). You only need more than
- * three bytes for surrogate Unicode characters, which we don't
- * support, as this would require a 32 bit WChar variable to
- * hold the result (potentially 21 bits of data). Since we
- * never use more than 3 bytes, it's OK to shrink this back down.
- *
- *****************************************************************************)
- unit textmgr;
- interface
- uses palmos, coretraps, errorbase, intlmgr;
- (***********************************************************************
- * Public types & constants
- ***********************************************************************)
- // See PalmLocale.h for encoding constants of type CharEncodingType, and
- // character encoding names.
- type
- CharEncodingType = UInt8;
- // Transliteration operations for the TxtTransliterate call. We don't use
- // an enum, since each character encoding contains its own set of special
- // transliteration operations (which begin at translitOpCustomBase).
- type
- TranslitOpType = UInt16;
- // Standard transliteration operations.
- const
- translitOpStandardBase = 0; // Beginning of standard operations.
- translitOpUpperCase = 0;
- translitOpLowerCase = 1;
- translitOpReserved2 = 2;
- translitOpReserved3 = 3;
- // Custom transliteration operations (defined in CharXXXX.h encoding-specific
- // header files.
- translitOpCustomBase = 1000; // Beginning of char-encoding specific ops.
- translitOpPreprocess = $8000; // Mask for pre-process option, where
- // no transliteration actually is done.
- // Structure used to maintain state across calls to TxtConvertEncoding, for
- // proper handling of source or destination encodings with have modes.
- kTxtConvertStateSize = 32;
- type
- TxtConvertStateType = record
- ioSrcState: array [0..kTxtConvertStateSize - 1] of UInt8;
- ioDstState: array [0..kTxtConvertStateSize - 1] of UInt8;
- end;
- // Flags available in the sysFtrNumCharEncodingFlags feature attribute.
- const
- charEncodingOnlySingleByte = $00000001;
- charEncodingHasDoubleByte = $00000002;
- charEncodingHasLigatures = $00000004;
- charEncodingLeftToRight = $00000008;
- // Various byte attribute flags. Note that multiple flags can be
- // set, thus a byte could be both a single-byte character, or the first
- // byte of a multi-byte character.
- byteAttrFirst = $80; // First byte of multi-byte char.
- byteAttrLast = $40; // Last byte of multi-byte char.
- byteAttrMiddle = $20; // Middle byte of muli-byte char.
- byteAttrSingle = $01; // Single byte.
- // Character attribute flags. These replace the old flags defined in
- // CharAttr.h, but are bit-compatible.
- charAttr_XA = $0200; // extra alphabetic
- charAttr_XS = $0100; // extra space
- charAttr_BB = $0080; // BEL, BS, etc.
- charAttr_CN = $0040; // CR, FF, HT, NL, VT
- charAttr_DI = $0020; // '0'-'9'
- charAttr_LO = $0010; // 'a'-'z' and lowercase extended chars.
- charAttr_PU = $0008; // punctuation
- charAttr_SP = $0004; // space
- charAttr_UP = $0002; // 'A'-'Z' and uppercase extended chars.
- charAttr_XD = $0001; // '0'-'9', 'A'-'F', 'a'-'f'
- // Various sets of character attribute flags.
- charAttrPrint = charAttr_DI or charAttr_LO or charAttr_PU or charAttr_SP or charAttr_UP or charAttr_XA;
- charAttrSpace = charAttr_CN or charAttr_SP or charAttr_XS;
- charAttrAlNum = charAttr_DI or charAttr_LO or charAttr_UP or charAttr_XA;
- charAttrAlpha = charAttr_LO or charAttr_UP or charAttr_XA;
- charAttrCntrl = charAttr_BB or charAttr_CN;
- charAttrGraph = charAttr_DI or charAttr_LO or charAttr_PU or charAttr_UP or charAttr_XA;
- charAttrDelim = charAttr_SP or charAttr_PU;
- // Remember that sizeof(0x0D) == 2 because 0x0D is treated like an int. The
- // same is true of sizeof('a'), sizeof('\0'), and sizeof(chrNull). For this
- // reason it's safest to use the sizeOf7BitChar macro to document buffer size
- // and string length calcs. Note that this can only be used with low-ascii
- // characters, as anything else might be the high byte of a double-byte char.
- //!!! sizeOf7BitChar(c) = 1;
- // Maximum size a single WChar character will occupy in a text string.
- maxCharBytes = 3;
- // Text manager error codes.
- txtErrUknownTranslitOp = txtErrorClass or 1;
- txtErrTranslitOverrun = txtErrorClass or 2;
- txtErrTranslitOverflow = txtErrorClass or 3;
- txtErrConvertOverflow = txtErrorClass or 4;
- txtErrConvertUnderflow = txtErrorClass or 5;
- txtErrUnknownEncoding = txtErrorClass or 6;
- txtErrNoCharMapping = txtErrorClass or 7;
- txtErrTranslitUnderflow = txtErrorClass or 8;
- (***********************************************************************
- * Public macros
- ***********************************************************************)
- function TxtCharIsSpace(ch: WChar): Boolean;
- function TxtCharIsPrint(ch: WChar): Boolean;
- function TxtCharIsDigit(ch: WChar): Boolean;
- function TxtCharIsAlNum(ch: WChar): Boolean;
- function TxtCharIsAlpha(ch: WChar): Boolean;
- function TxtCharIsCntrl(ch: WChar): Boolean;
- function TxtCharIsGraph(ch: WChar): Boolean;
- function TxtCharIsLower(ch: WChar): Boolean;
- function TxtCharIsPunct(ch: WChar): Boolean;
- function TxtCharIsUpper(ch: WChar): Boolean;
- function TxtCharIsHex(ch: WChar): Boolean;
- function TxtCharIsDelim(ch: WChar): Boolean;
- // <c> is a hard key if the event modifier <m> has the command bit set
- // and <c> is either in the proper range or is the calculator character.
- function TxtCharIsHardKey(m, c: UInt16): Boolean;
- // <c> is a virtual character if the event modifier <m> has the command
- // bit set. WARNING!!! This macro is only safe to use on Palm OS 3.5 or
- // later. With earlier versions of the OS, use TxtGlueCharIsVirtual()
- // in PalmOSGlue.lib
- function TxtCharIsVirtual(m, c: UInt16): Boolean;
- function TxtPreviousCharSize(const inText: PChar; inOffset: UInt32): UInt16;
- function TxtNextCharSize(const inText: PChar; inOffset: UInt32): UInt16;
- (***********************************************************************
- * Public routines
- ***********************************************************************)
- // DOLATER kwk - fix up parameter names to use i, o versus in, out
- // Return back byte attribute (first, last, single, middle) for <inByte>.
- function TxtByteAttr(inByte: UInt8): UInt8;
- // Return back the standard attribute bits for <inChar>.
- function TxtCharAttr(inChar: WChar): UInt16;
- // Return back the extended attribute bits for <inChar>.
- function TxtCharXAttr(inChar: WChar): UInt16;
- // Return the size (in bytes) of the character <inChar>. This represents
- // how many bytes would be required to store the character in a string.
- function TxtCharSize(inChar: WChar): UInt16;
- // Return the width (in pixels) of the character <inChar>. You should
- // use FntWCharWidth or FntGlueWCharWidth instead of this routine.
- function TxtCharWidth(inChar: WChar): Int16;
- // Load the character before offset <inOffset> in the <inText> text. Return
- // back the size of the character.
- function TxtGetPreviousChar(const inText: PChar; inOffset: UInt32; outChar: WCharPtr): UInt16;
- // Load the character at offset <inOffset> in the <inText> text. Return
- // back the size of the character.
- function TxtGetNextChar(const inText: PChar; inOffset: UInt32; outChar: WCharPtr): UInt16;
- // Return the character at offset <inOffset> in the <inText> text.
- function TxtGetChar(const inText: PChar; inOffset: UInt32): WChar;
- // Set the character at offset <inOffset> in the <inText> text, and
- // return back the size of the character.
- function TxtSetNextChar(ioText: PChar; inOffset: UInt32; inChar: WChar): UInt16;
- // Replace the substring "^X" (where X is 0..9, as specified by <inParamNum>)
- // with the string <inParamStr>. If <inParamStr> is NULL then don't modify <ioStr>.
- // Make sure the resulting string doesn't contain more than <inMaxLen> bytes,
- // excluding the terminating null. Return back the number of occurances of
- // the substring found in <ioStr>.
- function TxtReplaceStr(ioStr: PChar; inMaxLen: UInt16; const inParamStr: PChar; inParamNum: UInt16): UInt16;
- // Allocate a handle containing the result of substituting param0...param3
- // for ^0...^3 in <inTemplate>, and return the locked result. If a parameter
- // is NULL, replace the corresponding substring in the template with "".
- function TxtParamString(const inTemplate, param0, param1, param2, param3: PChar): PChar;
- // Return the bounds of the character at <inOffset> in the <inText>
- // text, via the <outStart> & <outEnd> offsets, and also return the
- // actual value of character at or following <inOffset>.
- function TxtCharBounds(const inText: PChar; inOffset: UInt32; var outStart: UInt32; var outEnd: UInt32): WChar;
- // Return the appropriate byte position for truncating <inText> such that it is
- // at most <inOffset> bytes long.
- function TxtGetTruncationOffset(const inText: PChar; inOffset: UInt32): UInt32;
- // Search for <inTargetStr> in <inSourceStr>. If found return true and pass back
- // the found position (byte offset) in <outPos>, and the length of the matched
- // text in <outLength>.
- function TxtFindString(const inSourceStr, inTargetStr: PChar;
- var outPos: UInt32; var outLength: UInt16): Boolean;
- // Find the bounds of the word that contains the character at <inOffset>.
- // Return the offsets in <*outStart> and <*outEnd>. Return true if the
- // word we found was not empty & not a delimiter (attribute of first char
- // in word not equal to space or punct).
- function TxtWordBounds(const inText: PChar; inLength, inOffset: UInt32;
- var outStart, outEnd: UInt32): Boolean;
- // Return the offset of the first break position (for text wrapping) that
- // occurs at or before <iOffset> in <iTextP>. Note that this routine will
- // also add trailing spaces and a trailing linefeed to the break position,
- // thus the result could be greater than <iOffset>.
- function TxtGetWordWrapOffset(const iTextP: PChar; iOffset: UInt32): UInt32;
- // Return the minimum (lowest) encoding required for <inChar>. If we
- // don't know about the character, return encoding_Unknown.
- function TxtCharEncoding(inChar: WChar): CharEncodingType;
- // Return the minimum (lowest) encoding required to represent <inStr>.
- // This is the maximum encoding of any character in the string, where
- // highest is unknown, and lowest is ascii.
- function TxtStrEncoding(const inStr: PChar): CharEncodingType;
- // Return the higher (max) encoding of <a> and <b>.
- function TxtMaxEncoding(a, b: CharEncodingType): CharEncodingType;
- // Return a pointer to the 'standard' name for <inEncoding>. If the
- // encoding is unknown, return a pointer to an empty string.
- function TxtEncodingName(inEncoding: CharEncodingType): PChar;
- // Map from a character set name <iEncodingName> to a CharEncodingType.
- // If the character set name is unknown, return charEncodingUnknown.
- function TxtNameToEncoding(const iEncodingName: PChar): CharEncodingType;
- // Transliterate <inSrcLength> bytes of text found in <inSrcText>, based
- // on the requested <inOp> operation. Place the results in <outDstText>,
- // and set the resulting length in <ioDstLength>. On entry <ioDstLength>
- // must contain the maximum size of the <outDstText> buffer. If the
- // buffer isn't large enough, return an error (note that outDestText
- // might have been modified during the operation). Note that if <inOp>
- // has the preprocess bit set, then <outDstText> is not modified, and
- // <ioDstLength> will contain the total space required in the destination
- // buffer in order to perform the operation.
- function TxtTransliterate(const inSrcText: PChar; inSrcLength: UInt16; outDstText: PChar;
- var ioDstLength: UInt16; inOp: TranslitOpType): Err;
- // Convert <*ioSrcBytes> of text from <srcTextP> between the <srcEncoding>
- // and <dstEncoding> character encodings. If <dstTextP> is not NULL, write
- // the resulting bytes to the buffer, and always return the number of
- // resulting bytes in <*ioDstBytes>. Update <*srcBytes> with the number of
- // bytes from the beginning of <*srcTextP> that were successfully converted.
- // When the routine is called with <srcTextP> pointing to the beginning of
- // a string or text buffer, <newConversion> should be true; if the text is
- // processed in multiple chunks, either because errors occurred or due to
- // source/destination buffer size constraints, then subsequent calls to
- // this routine should pass false for <newConversion>. The TxtConvertStateType
- // record maintains state information so that if the source or destination
- // character encodings have state or modes (e.g. JIS), processing a single
- // sequence of text with multiple calls will work correctly.
- // When an error occurs due to an unconvertable character, the behavior of
- // the routine will depend on the <substitutionStr> parameter. If it is NULL,
- // then <*ioSrcBytes> will be set to the offset of the unconvertable character,
- // <ioDstBytes> will be set to the number of successfully converted resulting
- // bytes, and <dstTextP>, in not NULL, will contain conversion results up to
- // the point of the error. The routine will return an appropriate error code,
- // and it is up to the caller to either terminate conversion or skip over the
- // unconvertable character and continue the conversion process (passing false
- // for the <newConversion> parameter in subsequent calls to TxtConvertEncoding).
- // If <substitutionStr> is not NULL, then this string is written to the
- // destination buffer when an unconvertable character is encountered in the
- // source text, and the source character is skipped. Processing continues, though
- // the error code will still be returned when the routine terminates. Note that
- // if a more serious error occurs during processing (e.g. buffer overflow) then
- // that error will be returned even if there was an earlier unconvertable character.
- // Note that the substitution string must use the destination character encoding.
- function TxtConvertEncoding(newConversion: Boolean; var ioStateP: TxtConvertStateType;
- const srcTextP: PChar; var ioSrcBytes: UInt16; srcEncoding: CharEncodingType;
- dstTextP: PChar; var ioDstBytes: UInt16; dstEncoding: CharEncodingType;
- const substitutionStr: PChar; substitutionLen: UInt16): Err;
- // Return true if <inChar> is a valid (drawable) character. Note that we'll
- // return false if it is a virtual character code.
- function TxtCharIsValid(inChar: WChar): Boolean;
- // Compare the first <s1Len> bytes of <s1> with the first <s2Len> bytes
- // of <s2>. Return the results of the comparison: < 0 if <s1> sorts before
- // <s2>, > 0 if <s1> sorts after <s2>, and 0 if they are equal. Also return
- // the number of bytes that matched in <s1MatchLen> and <s2MatchLen>
- // (either one of which can be NULL if the match length is not needed).
- // This comparison is "caseless", in the same manner as a find operation,
- // thus case, character size, etc. don't matter.
- function TxtCaselessCompare(const s1: PChar; s1Len: UInt16; var s1MatchLen: UInt16;
- const s2: PChar; s2Len: UInt16; var s2MatchLen: UInt16): Int16;
- // Compare the first <s1Len> bytes of <s1> with the first <s2Len> bytes
- // of <s2>. Return the results of the comparison: < 0 if <s1> sorts before
- // <s2>, > 0 if <s1> sorts after <s2>, and 0 if they are equal. Also return
- // the number of bytes that matched in <s1MatchLen> and <s2MatchLen>
- // (either one of which can be NULL if the match length is not needed).
- function TxtCompare(const s1: PChar; s1Len: UInt16; var s1MatchLen: UInt16;
- const s2: PChar; s2Len: UInt16; var s2MatchLen: UInt16): Int16;
- implementation
- uses Chars, SysEvent;
- function __TxtByteAttr(inByte: UInt8): UInt8; syscall sysTrapIntlDispatch;
- function __TxtCharAttr(inChar: WChar): UInt16; syscall sysTrapIntlDispatch;
- function __TxtCharXAttr(inChar: WChar): UInt16; syscall sysTrapIntlDispatch;
- function __TxtCharSize(inChar: WChar): UInt16; syscall sysTrapIntlDispatch;
- function __TxtCharWidth(inChar: WChar): Int16; syscall sysTrapIntlDispatch;
- function __TxtGetPreviousChar(const inText: PChar; inOffset: UInt32; outChar: WCharPtr): UInt16; syscall sysTrapIntlDispatch;
- function __TxtGetNextChar(const inText: PChar; inOffset: UInt32; outChar: WCharPtr): UInt16; syscall sysTrapIntlDispatch;
- function __TxtGetChar(const inText: PChar; inOffset: UInt32): WChar; syscall sysTrapIntlDispatch;
- function __TxtSetNextChar(ioText: PChar; inOffset: UInt32; inChar: WChar): UInt16; syscall sysTrapIntlDispatch;
- function __TxtReplaceStr(ioStr: PChar; inMaxLen: UInt16; const inParamStr: PChar; inParamNum: UInt16): UInt16; syscall sysTrapIntlDispatch;
- function __TxtParamString(const inTemplate, param0, param1, param2, param3: PChar): PChar; syscall sysTrapIntlDispatch;
- function __TxtCharBounds(const inText: PChar; inOffset: UInt32; var outStart: UInt32; var outEnd: UInt32): WChar; syscall sysTrapIntlDispatch;
- function __TxtGetTruncationOffset(const inText: PChar; inOffset: UInt32): UInt32; syscall sysTrapIntlDispatch;
- function __TxtFindString(const inSourceStr, inTargetStr: PChar;
- var outPos: UInt32; var outLength: UInt16): Boolean; syscall sysTrapIntlDispatch;
- function __TxtWordBounds(const inText: PChar; inLength, inOffset: UInt32;
- var outStart, outEnd: UInt32): Boolean; syscall sysTrapIntlDispatch;
- function __TxtGetWordWrapOffset(const iTextP: PChar; iOffset: UInt32): UInt32; syscall sysTrapIntlDispatch;
- function __TxtCharEncoding(inChar: WChar): CharEncodingType; syscall sysTrapIntlDispatch;
- function __TxtStrEncoding(const inStr: PChar): CharEncodingType; syscall sysTrapIntlDispatch;
- function __TxtMaxEncoding(a, b: CharEncodingType): CharEncodingType; syscall sysTrapIntlDispatch;
- function __TxtEncodingName(inEncoding: CharEncodingType): PChar; syscall sysTrapIntlDispatch;
- function __TxtNameToEncoding(const iEncodingName: PChar): CharEncodingType; syscall sysTrapIntlDispatch;
- function __TxtTransliterate(const inSrcText: PChar; inSrcLength: UInt16; outDstText: PChar;
- var ioDstLength: UInt16; inOp: TranslitOpType): Err; syscall sysTrapIntlDispatch;
- function __TxtConvertEncoding(newConversion: Boolean; var ioStateP: TxtConvertStateType;
- const srcTextP: PChar; var ioSrcBytes: UInt16; srcEncoding: CharEncodingType;
- dstTextP: PChar; var ioDstBytes: UInt16; dstEncoding: CharEncodingType;
- const substitutionStr: PChar; substitutionLen: UInt16): Err; syscall sysTrapIntlDispatch;
- function __TxtCharIsValid(inChar: WChar): Boolean; syscall sysTrapIntlDispatch;
- function __TxtCaselessCompare(const s1: PChar; s1Len: UInt16; var s1MatchLen: UInt16;
- const s2: PChar; s2Len: UInt16; var s2MatchLen: UInt16): Int16; syscall sysTrapIntlDispatch;
- function __TxtCompare(const s1: PChar; s1Len: UInt16; var s1MatchLen: UInt16;
- const s2: PChar; s2Len: UInt16; var s2MatchLen: UInt16): Int16; syscall sysTrapIntlDispatch;
- function TxtByteAttr(inByte: UInt8): UInt8;
- begin
- asm
- move.l #$intlTxtByteAttr, D2;
- end;
- TxtByteAttr := TxtByteAttr(inByte);
- end;
- function TxtCharAttr(inChar: WChar): UInt16;
- begin
- asm
- move.l #$intlTxtCharAttr, D2;
- end;
- TxtCharAttr := __TxtCharAttr(inChar);
- end;
- function TxtCharXAttr(inChar: WChar): UInt16;
- begin
- asm
- move.l #$intlTxtCharXAttr, D2;
- end;
- TxtCharXAttr := __TxtCharXAttr(inChar);
- end;
- function TxtCharSize(inChar: WChar): UInt16;
- begin
- asm
- move.l #$intlTxtCharSize, D2;
- end;
- TxtCharSize := TxtCharSize(inChar);
- end;
- function TxtCharWidth(inChar: WChar): Int16;
- begin
- asm
- move.l #$intlTxtCharWidth, D2;
- end;
- TxtCharWidth := TxtCharWidth(inChar);
- end;
- function TxtGetPreviousChar(const inText: PChar; inOffset: UInt32; outChar: WCharPtr): UInt16;
- begin
- asm
- move.l #$intlTxtGetPreviousChar, D2;
- end;
- TxtGetPreviousChar := __TxtGetPreviousChar(inText, inOffset, outChar);
- end;
- function TxtGetNextChar(const inText: PChar; inOffset: UInt32; outChar: WCharPtr): UInt16;
- begin
- asm
- move.l #$intlTxtGetNextChar, D2;
- end;
- TxtGetNextChar := __TxtGetNextChar(inText, inOffset, outChar);
- end;
- function TxtGetChar(const inText: PChar; inOffset: UInt32): WChar;
- begin
- asm
- move.l #$intlTxtGetChar, D2;
- end;
- TxtGetChar := __TxtGetChar(inText, inOffset);
- end;
- function TxtSetNextChar(ioText: PChar; inOffset: UInt32; inChar: WChar): UInt16;
- begin
- asm
- move.l #$intlTxtSetNextChar, D2;
- end;
- TxtSetNextChar := __TxtSetNextChar(ioText, inOffset, inChar);
- end;
- function TxtReplaceStr(ioStr: PChar; inMaxLen: UInt16; const inParamStr: PChar; inParamNum: UInt16): UInt16;
- begin
- asm
- move.l #$intlTxtReplaceStr, D2;
- end;
- TxtReplaceStr := __TxtReplaceStr(ioStr, inMaxLen, inParamStr, inParamNum);
- end;
- function TxtParamString(const inTemplate, param0, param1, param2, param3: PChar): PChar;
- begin
- asm
- move.l #$intlTxtParamString, D2;
- end;
- TxtParamString := __TxtParamString(inTemplate, param0, param1, param2, param3);
- end;
- function TxtCharBounds(const inText: PChar; inOffset: UInt32; var outStart: UInt32; var outEnd: UInt32): WChar;
- begin
- asm
- move.l #$intlTxtCharBounds, D2;
- end;
- TxtCharBounds := TxtCharBounds(inText, inOffset, outStart, outEnd);
- end;
- function TxtGetTruncationOffset(const inText: PChar; inOffset: UInt32): UInt32;
- begin
- asm
- move.l #$intlTxtGetTruncationOffset, D2;
- end;
- TxtGetTruncationOffset := __TxtGetTruncationOffset(inText, inOffset);
- end;
- function TxtFindString(const inSourceStr, inTargetStr: PChar;
- var outPos: UInt32; var outLength: UInt16): Boolean;
- begin
- asm
- move.l #$intlTxtFindString, D2;
- end;
- TxtFindString := TxtFindString(inSourceStr, inTargetStr, outPos, outLength);
- end;
- function TxtWordBounds(const inText: PChar; inLength, inOffset: UInt32;
- var outStart, outEnd: UInt32): Boolean;
- begin
- asm
- move.l #$intlTxtWordBounds, D2;
- end;
- TxtWordBounds := __TxtWordBounds(inText, inLength, inOffset, outStart, outEnd);
- end;
- function TxtGetWordWrapOffset(const iTextP: PChar; iOffset: UInt32): UInt32;
- begin
- asm
- move.l #$intlTxtGetWordWrapOffset, D2;
- end;
- TxtGetWordWrapOffset := __TxtGetWordWrapOffset(iTextP, iOffset);
- end;
- function TxtCharEncoding(inChar: WChar): CharEncodingType;
- begin
- asm
- move.l #$intlTxtCharEncoding, D2;
- end;
- TxtCharEncoding := __TxtCharEncoding(inChar);
- end;
- function TxtStrEncoding(const inStr: PChar): CharEncodingType;
- begin
- asm
- move.l #$intlTxtStrEncoding, D2;
- end;
- TxtStrEncoding := __TxtStrEncoding(inStr);
- end;
- function TxtMaxEncoding(a, b: CharEncodingType): CharEncodingType;
- begin
- asm
- move.l #$intlTxtMaxEncoding, D2;
- end;
- TxtMaxEncoding := __TxtMaxEncoding(a, b);
- end;
- function TxtEncodingName(inEncoding: CharEncodingType): PChar;
- begin
- asm
- move.l #$intlTxtEncodingName, D2;
- end;
- TxtEncodingName := __TxtEncodingName(inEncoding);
- end;
- function TxtNameToEncoding(const iEncodingName: PChar): CharEncodingType;
- begin
- asm
- move.l #$intlTxtNameToEncoding, D2;
- end;
- TxtNameToEncoding := __TxtNameToEncoding(iEncodingName);
- end;
- function TxtTransliterate(const inSrcText: PChar; inSrcLength: UInt16; outDstText: PChar;
- var ioDstLength: UInt16; inOp: TranslitOpType): Err;
- begin
- asm
- move.l #$intlTxtTransliterate, D2;
- end;
- TxtTransliterate := __TxtTransliterate(inSrcText, inSrcLength, outDstText, ioDstLength, inOp);
- end;
- function TxtConvertEncoding(newConversion: Boolean; var ioStateP: TxtConvertStateType;
- const srcTextP: PChar; var ioSrcBytes: UInt16; srcEncoding: CharEncodingType;
- dstTextP: PChar; var ioDstBytes: UInt16; dstEncoding: CharEncodingType;
- const substitutionStr: PChar; substitutionLen: UInt16): Err;
- begin
- asm
- move.l #$intlTxtConvertEncoding, D2;
- end;
- TxtConvertEncoding := __TxtConvertEncoding(newConversion, ioStateP, srcTextP, ioSrcBytes,
- srcEncoding, dstTextP, ioDstBytes, dstEncoding,
- substitutionStr, substitutionLen);
- end;
- function TxtCharIsValid(inChar: WChar): Boolean;
- begin
- asm
- move.l #$intlTxtCharIsValid, D2;
- end;
- TxtCharIsValid := __TxtCharIsValid(inChar);
- end;
- function TxtCaselessCompare(const s1: PChar; s1Len: UInt16; var s1MatchLen: UInt16;
- const s2: PChar; s2Len: UInt16; var s2MatchLen: UInt16): Int16;
- begin
- asm
- move.l #$intlTxtCaselessCompare, D2;
- end;
- TxtCaselessCompare := __TxtCaselessCompare(s1, s1Len, s1MatchLen, s2, s2Len, s2MatchLen);
- end;
- function TxtCompare(const s1: PChar; s1Len: UInt16; var s1MatchLen: UInt16;
- const s2: PChar; s2Len: UInt16; var s2MatchLen: UInt16): Int16;
- begin
- asm
- move.l #$intlTxtCompare, D2;
- end;
- TxtCompare := __TxtCompare(s1, s1Len, s1MatchLen, s2, s2Len, s2MatchLen);
- end;
- function TxtCharIsSpace(ch: WChar): Boolean;
- begin
- TxtCharIsSpace := (TxtCharAttr(ch) and charAttrSpace) <> 0;
- end;
- function TxtCharIsPrint(ch: WChar): Boolean;
- begin
- txtCharIsPrint := (TxtCharAttr(ch) and charAttrPrint) <> 0;
- end;
- function TxtCharIsDigit(ch: WChar): Boolean;
- begin
- TxtCharIsDigit := (TxtCharAttr(ch) and charAttr_DI) <> 0;
- end;
- function TxtCharIsAlNum(ch: WChar): Boolean;
- begin
- TxtCharIsAlNum := (TxtCharAttr(ch) and charAttrAlNum) <> 0;
- end;
- function TxtCharIsAlpha(ch: WChar): Boolean;
- begin
- TxtCharIsAlpha := (TxtCharAttr(ch) and charAttrAlpha) <> 0;
- end;
- function TxtCharIsCntrl(ch: WChar): Boolean;
- begin
- txtCharIsCntrl := (TxtCharAttr(ch) and charAttrCntrl) <> 0;
- end;
- function TxtCharIsGraph(ch: WChar): Boolean;
- begin
- TxtCharIsGraph := (TxtCharAttr(ch) and charAttrGraph) <> 0;
- end;
- function TxtCharIsLower(ch: WChar): Boolean;
- begin
- TxtCharIsLower := (TxtCharAttr(ch) and charAttr_LO) <> 0;
- end;
- function TxtCharIsPunct(ch: WChar): Boolean;
- begin
- TxtCharIsPunct := (TxtCharAttr(ch) and charAttr_PU) <> 0;
- end;
- function TxtCharIsUpper(ch: WChar): Boolean;
- begin
- TxtCharIsUpper := (TxtCharAttr(ch) and charAttr_UP) <> 0;
- end;
- function TxtCharIsHex(ch: WChar): Boolean;
- begin
- TxtCharIsHex := (TxtCharAttr(ch) and charAttr_XD) <> 0;
- end;
- function TxtCharIsDelim(ch: WChar): Boolean;
- begin
- TxtCharIsDelim := (TxtCharAttr(ch) and charAttrDelim) <> 0;
- end;
- function TxtCharIsHardKey(m, c: UInt16): Boolean;
- begin
- TxtCharIsHardKey := ((m and commandKeyMask) <> 0) and ((c >= hardKeyMin) and ((c <= hardKeyMax) or (c = calcChr)));
- end;
- function TxtCharIsVirtual(m, c: UInt16): Boolean;
- begin
- TxtCharIsVirtual := (m and commandKeyMask) <> 0;
- end;
- function TxtPreviousCharSize(const inText: PChar; inOffset: UInt32): UInt16;
- begin
- TxtPreviousCharSize := TxtGetPreviousChar(inText, inOffset, nil);
- end;
- function TxtNextCharSize(const inText: PChar; inOffset: UInt32): UInt16;
- begin
- TxtNextCharSize := TxtGetNextChar(inText, inOffset, nil);
- end;
- end.
|