/******************************************************************* * Pilot Software * * Copyright(c) 1994, Palm Computing Inc., All Rights Reserved * *------------------------------------------------------------------- * FileName: * Graffiti.h * * Description: * Header for the Graffiti interface * * History: * 6/30 RM - Created by Ron Marianetti * *******************************************************************/ #ifndef __GRAFFITI_H__ #define __GRAFFITI_H__ #include #define grfNoShortCut 0xffff // Index which isn't a shortcut /*------------------------------------------------------------------------------ * Match info structure. Returned by GrfMatch and GrfMatchGlyph *-----------------------------------------------------------------------------*/ typedef struct { Byte glyphID; /* glyph ID of this match */ Byte unCertainty; /* unCertainty of this match (0 most certain) */ } GrfMatchType; #define grfMaxMatches 4 typedef struct { Word numMatches; /* number of matches returned in this structure */ GrfMatchType match[grfMaxMatches]; } GrfMatchInfoType; typedef GrfMatchInfoType* GrfMatchInfoPtr; #define grfNameLength 8 // eight letters possible (don't forget CR) //#define grfTextLength 56 // Use //---------------------------------------------------------------------------- // Escape codes preceding special sequences in the dictionary or macros //---------------------------------------------------------------------------- // In dictionary or macros preceding virtual key event sequences. These are always // 11 byte sequences that have ASCII encoded values for the ascii code, keyCode, // and modifiers: // grfVirtualSequence, ascii, keyCode, modifiers. // 1 byte 4 bytes 4 bytes 2 byte #define grfVirtualSequence 0x01 // In dictionary to tell us about temp shift state changes. #define grfShiftSequence 0x02 // In dictionary/macros to hide special features #define grfSpecialSequence 0x03 // Char indicating a seqeunce of characters to expand. #define grfExpansionSequence '@' // Chars indicating what to expand into #define expandDateChar 'D' #define expandTimeChar 'T' #define expandStampChar 'S' // This follows 'D' or 'T' for the sake // of the mnemonic name. #define shortcutBinaryDataFlag 0x01 // Determine if a string has a sequence #define HasVirtualSequence(s) (s[0] == grfVirtualSequence) #define HasSpecialSequence(s) (s[0] == grfSpecialSequence) #define HasExpansionSequence(s) (s[0] == grfExpansionSequence) /*------------------------------------------------------------------------------ * Temp shift states, returned by GrfGetState *-----------------------------------------------------------------------------*/ #define grfTempShiftPunctuation 1 #define grfTempShiftExtended 2 #define grfTempShiftUpper 3 #define grfTempShiftLower 4 /************************************************************ * Graffiti result codes *************************************************************/ #define grfErrBadParam (grfErrorClass | 1) #define grfErrPointBufferFull (grfErrorClass | 2) #define grfErrNoGlyphTable (grfErrorClass | 3) #define grfErrNoDictionary (grfErrorClass | 4) #define grfErrNoMapping (grfErrorClass | 5) #define grfErrMacroNotFound (grfErrorClass | 6) #define grfErrDepthTooDeep (grfErrorClass | 7) #define grfErrMacroPtrTooSmall (grfErrorClass | 8) #define grfErrNoMacros (grfErrorClass | 9) #define grfErrMacroIncomplete (grfErrorClass | 129) // (grfWarningOffset+1) #define grfErrBranchNotFound (grfErrorClass | 130) // (grfWarningOffset+2) /************************************************************ * Graffiti interface procedures *************************************************************/ #ifdef __cplusplus extern "C" { #endif //----------------------------------------------------------------- // High Level Calls //------------------------------------------------------------------ Err GrfInit (void) SYS_TRAP(sysTrapGrfInit); Err GrfFree (void) SYS_TRAP(sysTrapGrfFree); Err GrfProcessStroke(PointType* startPtP, PointType* endPtP, Boolean upShift) SYS_TRAP(sysTrapGrfProcessStroke); Err GrfFieldChange(Boolean resetState, UIntPtr characterToDelete) SYS_TRAP(sysTrapGrfFieldChange); Err GrfGetState(Boolean* capsLockP, Boolean* numLockP, WordPtr tempShiftP, Boolean* autoShiftedP) SYS_TRAP(sysTrapGrfGetState); Err GrfSetState(Boolean capsLock, Boolean numLock, Boolean upperShift) SYS_TRAP(sysTrapGrfSetState); //----------------------------------------------------------------- // Mid Level Calls //------------------------------------------------------------------ Err GrfFlushPoints (void) SYS_TRAP(sysTrapGrfFlushPoints); Err GrfAddPoint (PointType* pt) SYS_TRAP(sysTrapGrfAddPoint); Err GrfInitState(void) SYS_TRAP(sysTrapGrfInitState); Err GrfCleanState(void) SYS_TRAP(sysTrapGrfCleanState); Err GrfMatch (WordPtr flagsP, void* dataPtrP, WordPtr dataLenP, WordPtr uncertainLenP, GrfMatchInfoPtr matchInfoP) SYS_TRAP(sysTrapGrfMatch); Err GrfGetMacro(CharPtr nameP, BytePtr macroDataP, WordPtr dataLenP) SYS_TRAP(sysTrapGrfGetMacro); Err GrfGetAndExpandMacro(CharPtr nameP, BytePtr macroDataP, WordPtr dataLenP) SYS_TRAP(sysTrapGrfGetAndExpandMacro); //----------------------------------------------------------------- // Low Level Calls //------------------------------------------------------------------ Err GrfFilterPoints (void) SYS_TRAP(sysTrapGrfFilterPoints); Err GrfGetNumPoints(WordPtr numPtsP) SYS_TRAP(sysTrapGrfGetNumPoints); Err GrfGetPoint(Word index, PointType* pointP) SYS_TRAP(sysTrapGrfGetPoint); Err GrfFindBranch(Word flags) SYS_TRAP(sysTrapGrfFindBranch); Err GrfMatchGlyph (GrfMatchInfoPtr matchInfoP, Word maxUnCertainty, Word maxMatches) SYS_TRAP(sysTrapGrfMatchGlyph); Err GrfGetGlyphMapping (Word glyphID, WordPtr flagsP, void* dataPtrP, WordPtr dataLenP, WordPtr uncertainLenP) SYS_TRAP(sysTrapGrfGetGlyphMapping); Err GrfGetMacroName(Word index, CharPtr nameP) SYS_TRAP(sysTrapGrfGetMacroName); Err GrfDeleteMacro(Word index) SYS_TRAP(sysTrapGrfDeleteMacro); Err GrfAddMacro(CharPtr nameP, BytePtr macroDataP, Word dataLen) SYS_TRAP(sysTrapGrfAddMacro); #ifdef __cplusplus } #endif #endif //__SYSEVTMGR_H__