mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
913 lines
37 KiB
913 lines
37 KiB
/*
|
|
File: Script.h
|
|
|
|
Contains: Script Manager interfaces
|
|
|
|
Version: Technology: System 7.5
|
|
Package: Universal Interfaces 2.1 in ÒMPW LatestÓ on ETO #18
|
|
|
|
Copyright: © 1984-1995 by Apple Computer, Inc.
|
|
All rights reserved.
|
|
|
|
Bugs?: If you find a problem with this file, use the Apple Bug Reporter
|
|
stack. Include the file and version information (from above)
|
|
in the problem description and send to:
|
|
Internet: [email protected]
|
|
AppleLink: APPLE.BUGS
|
|
|
|
*/
|
|
|
|
#ifndef __SCRIPT__
|
|
#define __SCRIPT__
|
|
|
|
|
|
#ifndef __TYPES__
|
|
#include <Types.h>
|
|
#endif
|
|
/* #include <ConditionalMacros.h> */
|
|
|
|
#ifndef __QUICKDRAW__
|
|
#include <Quickdraw.h>
|
|
#endif
|
|
/* #include <MixedMode.h> */
|
|
/* #include <QuickdrawText.h> */
|
|
|
|
#ifndef __INTLRESOURCES__
|
|
#include <IntlResources.h>
|
|
#endif
|
|
|
|
#ifndef __EVENTS__
|
|
#include <Events.h>
|
|
#endif
|
|
/* #include <OSUtils.h> */
|
|
/* #include <Memory.h> */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
#pragma options align=mac68k
|
|
#endif
|
|
|
|
#if PRAGMA_IMPORT_SUPPORTED
|
|
#pragma import on
|
|
#endif
|
|
|
|
|
|
enum {
|
|
/* Script System constants */
|
|
smSystemScript = -1, /*designates system script.*/
|
|
smCurrentScript = -2, /*designates current font script.*/
|
|
smAllScripts = -3, /*designates any script */
|
|
smRoman = 0, /*Roman*/
|
|
smJapanese = 1, /*Japanese*/
|
|
smTradChinese = 2, /*Traditional Chinese*/
|
|
smKorean = 3, /*Korean*/
|
|
smArabic = 4, /*Arabic*/
|
|
smHebrew = 5, /*Hebrew*/
|
|
smGreek = 6, /*Greek*/
|
|
smCyrillic = 7, /*Cyrillic*/
|
|
smRSymbol = 8, /*Right-left symbol*/
|
|
smDevanagari = 9, /*Devanagari*/
|
|
smGurmukhi = 10, /*Gurmukhi*/
|
|
smGujarati = 11, /*Gujarati*/
|
|
smOriya = 12, /*Oriya*/
|
|
smBengali = 13, /*Bengali*/
|
|
smTamil = 14, /*Tamil*/
|
|
smTelugu = 15, /*Telugu*/
|
|
smKannada = 16, /*Kannada/Kanarese*/
|
|
smMalayalam = 17 /*Malayalam*/
|
|
};
|
|
|
|
enum {
|
|
smSinhalese = 18, /*Sinhalese*/
|
|
smBurmese = 19, /*Burmese*/
|
|
smKhmer = 20, /*Khmer/Cambodian*/
|
|
smThai = 21, /*Thai*/
|
|
smLaotian = 22, /*Laotian*/
|
|
smGeorgian = 23, /*Georgian*/
|
|
smArmenian = 24, /*Armenian*/
|
|
smSimpChinese = 25, /*Simplified Chinese*/
|
|
smTibetan = 26, /*Tibetan*/
|
|
smMongolian = 27, /*Mongolian*/
|
|
smGeez = 28, /*Geez/Ethiopic*/
|
|
smEthiopic = 28, /*Synonym for smGeez*/
|
|
smEastEurRoman = 29, /*Synonym for smSlavic*/
|
|
smCentralEuroRoman = smEastEurRoman, /* another synonym */
|
|
smVietnamese = 30, /*Vietnamese*/
|
|
smExtArabic = 31, /*extended Arabic*/
|
|
smUninterp = 32, /*uninterpreted symbols, e.g. palette symbols*/
|
|
smKlingon = 32, /*Klingon*/
|
|
/*Obsolete names for script systems (kept for backward compatibility)*/
|
|
smChinese = 2, /*(use smTradChinese or smSimpChinese)*/
|
|
smRussian = 7, /*(old name for smCyrillic)*/
|
|
/* smMaldivian = 25; (no more smMaldivian!)*/
|
|
smAmharic = 28, /*(old name for smGeez)*/
|
|
smSlavic = 29 /*(old name for smEastEurRoman)*/
|
|
};
|
|
|
|
enum {
|
|
smSindhi = 31, /*(old name for smExtArabic)*/
|
|
/* Language Codes */
|
|
langEnglish = 0, /* smRoman script */
|
|
langFrench = 1, /* smRoman script */
|
|
langGerman = 2, /* smRoman script */
|
|
langItalian = 3, /* smRoman script */
|
|
langDutch = 4, /* smRoman script */
|
|
langSwedish = 5, /* smRoman script */
|
|
langSpanish = 6, /* smRoman script */
|
|
langDanish = 7, /* smRoman script */
|
|
langPortuguese = 8, /* smRoman script */
|
|
langNorwegian = 9, /* smRoman script */
|
|
langHebrew = 10, /* smHebrew script */
|
|
langJapanese = 11, /* smJapanese script */
|
|
langArabic = 12, /* smArabic script */
|
|
langFinnish = 13, /* smRoman script */
|
|
langGreek = 14, /* smGreek script */
|
|
langIcelandic = 15, /* extended Roman script */
|
|
langMaltese = 16, /* extended Roman script */
|
|
langTurkish = 17, /* extended Roman script */
|
|
langCroatian = 18, /* Serbo-Croatian in extended Roman script */
|
|
langTradChinese = 19 /* Chinese in traditional characters */
|
|
};
|
|
|
|
enum {
|
|
langUrdu = 20, /* smArabic script */
|
|
langHindi = 21, /* smDevanagari script */
|
|
langThai = 22, /* smThai script */
|
|
langKorean = 23, /* smKorean script */
|
|
langLithuanian = 24, /* smEastEurRoman script */
|
|
langPolish = 25, /* smEastEurRoman script */
|
|
langHungarian = 26, /* smEastEurRoman script */
|
|
langEstonian = 27, /* smEastEurRoman script */
|
|
langLettish = 28, /* smEastEurRoman script */
|
|
langLatvian = 28, /* Synonym for langLettish */
|
|
langSaamisk = 29, /* ext. Roman script, lang. of the Sami/Lapp people of Scand. */
|
|
langLappish = 29, /* Synonym for langSaamisk */
|
|
langFaeroese = 30, /* smRoman script */
|
|
langFarsi = 31, /* smArabic script */
|
|
langPersian = 31, /* Synonym for langFarsi */
|
|
langRussian = 32, /* smCyrillic script */
|
|
langSimpChinese = 33, /* Chinese in simplified characters */
|
|
langFlemish = 34, /* smRoman script */
|
|
langIrish = 35, /* smRoman script */
|
|
langAlbanian = 36 /* smRoman script */
|
|
};
|
|
|
|
enum {
|
|
langRomanian = 37, /* smEastEurRoman script */
|
|
langCzech = 38, /* smEastEurRoman script */
|
|
langSlovak = 39, /* smEastEurRoman script */
|
|
langSlovenian = 40, /* smEastEurRoman script */
|
|
langYiddish = 41, /* smHebrew script */
|
|
langSerbian = 42, /* Serbo-Croatian in smCyrillic script */
|
|
langMacedonian = 43, /* smCyrillic script */
|
|
langBulgarian = 44, /* smCyrillic script */
|
|
langUkrainian = 45, /* smCyrillic script */
|
|
langByelorussian = 46, /* smCyrillic script */
|
|
langUzbek = 47, /* smCyrillic script */
|
|
langKazakh = 48, /* smCyrillic script */
|
|
langAzerbaijani = 49, /* Azerbaijani in smCyrillic script (USSR) */
|
|
langAzerbaijanAr = 50, /* Azerbaijani in smArabic script (Iran) */
|
|
langArmenian = 51, /* smArmenian script */
|
|
langGeorgian = 52, /* smGeorgian script */
|
|
langMoldavian = 53, /* smCyrillic script */
|
|
langKirghiz = 54, /* smCyrillic script */
|
|
langTajiki = 55, /* smCyrillic script */
|
|
langTurkmen = 56 /* smCyrillic script */
|
|
};
|
|
|
|
enum {
|
|
langMongolian = 57, /* Mongolian in smMongolian script */
|
|
langMongolianCyr = 58, /* Mongolian in smCyrillic script */
|
|
langPashto = 59, /* smArabic script */
|
|
langKurdish = 60, /* smArabic script */
|
|
langKashmiri = 61, /* smArabic script */
|
|
langSindhi = 62, /* smExtArabic script */
|
|
langTibetan = 63, /* smTibetan script */
|
|
langNepali = 64, /* smDevanagari script */
|
|
langSanskrit = 65, /* smDevanagari script */
|
|
langMarathi = 66, /* smDevanagari script */
|
|
langBengali = 67, /* smBengali script */
|
|
langAssamese = 68, /* smBengali script */
|
|
langGujarati = 69, /* smGujarati script */
|
|
langPunjabi = 70, /* smGurmukhi script */
|
|
langOriya = 71, /* smOriya script */
|
|
langMalayalam = 72, /* smMalayalam script */
|
|
langKannada = 73, /* smKannada script */
|
|
langTamil = 74, /* smTamil script */
|
|
langTelugu = 75, /* smTelugu script */
|
|
langSinhalese = 76 /* smSinhalese script */
|
|
};
|
|
|
|
enum {
|
|
langBurmese = 77, /* smBurmese script */
|
|
langKhmer = 78, /* smKhmer script */
|
|
langLao = 79, /* smLaotian script */
|
|
langVietnamese = 80, /* smVietnamese script */
|
|
langIndonesian = 81, /* smRoman script */
|
|
langTagalog = 82, /* smRoman script */
|
|
langMalayRoman = 83, /* Malay in smRoman script */
|
|
langMalayArabic = 84, /* Malay in smArabic script */
|
|
langAmharic = 85, /* smEthiopic script */
|
|
langTigrinya = 86, /* smEthiopic script */
|
|
langGalla = 87, /* smEthiopic script */
|
|
langOromo = 87, /* Synonym for langGalla */
|
|
langSomali = 88, /* smRoman script */
|
|
langSwahili = 89, /* smRoman script */
|
|
langRuanda = 90, /* smRoman script */
|
|
langRundi = 91, /* smRoman script */
|
|
langChewa = 92, /* smRoman script */
|
|
langMalagasy = 93, /* smRoman script */
|
|
langEsperanto = 94, /* extended Roman script */
|
|
langWelsh = 128 /* smRoman script */
|
|
};
|
|
|
|
enum {
|
|
langBasque = 129, /* smRoman script */
|
|
langCatalan = 130, /* smRoman script */
|
|
langLatin = 131, /* smRoman script */
|
|
langQuechua = 132, /* smRoman script */
|
|
langGuarani = 133, /* smRoman script */
|
|
langAymara = 134, /* smRoman script */
|
|
langTatar = 135, /* smCyrillic script */
|
|
langUighur = 136, /* smArabic script */
|
|
langDzongkha = 137, /* (lang of Bhutan) smTibetan script */
|
|
langJavaneseRom = 138, /* Javanese in smRoman script */
|
|
langSundaneseRom = 139, /* Sundanese in smRoman script */
|
|
/* Obsolete names, kept for backward compatibility */
|
|
langPortugese = 8, /* old misspelled version, kept for compatibility */
|
|
langMalta = 16, /* old misspelled version, kept for compatibility */
|
|
langYugoslavian = 18, /* (use langCroatian, langSerbian, etc.) */
|
|
langChinese = 19, /* (use langTradChinese or langSimpChinese) */
|
|
langLapponian = 29 /* Synonym for langSaamisk, not correct name */
|
|
};
|
|
|
|
enum {
|
|
/* Regional version codes */
|
|
verUS = 0,
|
|
verFrance = 1,
|
|
verBritain = 2,
|
|
verGermany = 3,
|
|
verItaly = 4,
|
|
verNetherlands = 5,
|
|
verFrBelgiumLux = 6, /* French for Belgium & Luxembourg */
|
|
verSweden = 7,
|
|
verSpain = 8,
|
|
verDenmark = 9,
|
|
verPortugal = 10,
|
|
verFrCanada = 11,
|
|
verNorway = 12
|
|
};
|
|
|
|
enum {
|
|
verIsrael = 13,
|
|
verJapan = 14,
|
|
verAustralia = 15,
|
|
verArabic = 16, /* synonym for verArabia */
|
|
verFinland = 17,
|
|
verFrSwiss = 18, /* French Swiss */
|
|
verGrSwiss = 19, /* German Swiss */
|
|
verGreece = 20,
|
|
verIceland = 21,
|
|
verMalta = 22,
|
|
verCyprus = 23,
|
|
verTurkey = 24,
|
|
verYugoCroatian = 25, /* Croatian system for Yugoslavia */
|
|
verNetherlandsComma = 26,
|
|
verBelgiumLuxPoint = 27,
|
|
verCanadaComma = 28,
|
|
verCanadaPoint = 29,
|
|
vervariantPortugal = 30,
|
|
vervariantNorway = 31,
|
|
vervariantDenmark = 32,
|
|
verIndiaHindi = 33, /* Hindi system for India */
|
|
verPakistan = 34,
|
|
verTurkishModified = 35,
|
|
verRomania = 39,
|
|
verGreekAncient = 40,
|
|
verLithuania = 41,
|
|
verPoland = 42,
|
|
verHungary = 43,
|
|
verEstonia = 44,
|
|
verLatvia = 45
|
|
};
|
|
|
|
enum {
|
|
verLapland = 46,
|
|
verFaeroeIsl = 47,
|
|
verIran = 48,
|
|
verRussia = 49,
|
|
verIreland = 50, /* English-language version for Ireland */
|
|
verKorea = 51,
|
|
verChina = 52,
|
|
verTaiwan = 53,
|
|
verThailand = 54,
|
|
verCzech = 56,
|
|
verSlovak = 57,
|
|
verGenericFE = 58,
|
|
verMagyar = 59,
|
|
verBengali = 60,
|
|
verByeloRussian = 61,
|
|
verUkrania = 62,
|
|
verItalianSwiss = 63,
|
|
verAlternateGr = 64,
|
|
verCroatia = 68
|
|
};
|
|
|
|
enum {
|
|
minCountry = verUS,
|
|
maxCountry = verCroatia /* changed from verAlternateGr when additional enums added */
|
|
};
|
|
|
|
/* Obsolete region code names, kept for backward compatibility */
|
|
enum {
|
|
verBelgiumLux = 6, /* (use verFrBelgiumLux instead, less ambiguous) */
|
|
verArabia = 16,
|
|
verYugoslavia = 25, /* (use verYugoCroatian instead, less ambiguous) */
|
|
verIndia = 33, /* (use verIndiaHindi instead, less ambiguous) */
|
|
/* Calendar Codes */
|
|
calGregorian = 0,
|
|
calArabicCivil = 1,
|
|
calArabicLunar = 2,
|
|
calJapanese = 3,
|
|
calJewish = 4,
|
|
calCoptic = 5,
|
|
calPersian = 6,
|
|
/* Integer Format Codes */
|
|
intWestern = 0,
|
|
intArabic = 1,
|
|
intRoman = 2,
|
|
intJapanese = 3,
|
|
intEuropean = 4,
|
|
intOutputMask = 0x8000,
|
|
/* CharByte byte types */
|
|
smSingleByte = 0,
|
|
smFirstByte = -1,
|
|
smLastByte = 1,
|
|
smMiddleByte = 2,
|
|
/* CharType field masks */
|
|
smcTypeMask = 0x000F,
|
|
smcReserved = 0x00F0
|
|
};
|
|
|
|
enum {
|
|
smcClassMask = 0x0F00,
|
|
smcOrientationMask = 0x1000, /*two-byte script glyph orientation*/
|
|
smcRightMask = 0x2000,
|
|
smcUpperMask = 0x4000,
|
|
smcDoubleMask = 0x8000,
|
|
/* Basic CharType character types */
|
|
smCharPunct = 0x0000,
|
|
smCharAscii = 0x0001,
|
|
smCharEuro = 0x0007,
|
|
smCharExtAscii = 0x0007, /* More correct synonym for smCharEuro */
|
|
/* Additional CharType character types for script systems */
|
|
smCharKatakana = 0x0002, /*Japanese Katakana*/
|
|
smCharHiragana = 0x0003, /*Japanese Hiragana*/
|
|
smCharIdeographic = 0x0004, /*Hanzi, Kanji, Hanja*/
|
|
smCharTwoByteGreek = 0x0005, /*2-byte Greek in Far East systems*/
|
|
smCharTwoByteRussian = 0x0006, /*2-byte Cyrillic in Far East systems*/
|
|
smCharBidirect = 0x0008, /*Arabic/Hebrew*/
|
|
smCharContextualLR = 0x0009, /*Contextual left-right: Thai, Indic scripts*/
|
|
smCharNonContextualLR = 0x000A, /*Non-contextual left-right: Cyrillic, Greek*/
|
|
smCharHangul = 0x000C, /*Korean Hangul*/
|
|
smCharJamo = 0x000D, /*Korean Jamo*/
|
|
smCharBopomofo = 0x000E, /*Chinese Bopomofo*/
|
|
/* old names for some of above, for backward compatibility */
|
|
smCharFISKana = 0x0002, /*Katakana*/
|
|
smCharFISGana = 0x0003, /*Hiragana*/
|
|
smCharFISIdeo = 0x0004 /*Hanzi, Kanji, Hanja*/
|
|
};
|
|
|
|
enum {
|
|
smCharFISGreek = 0x0005, /*2-byte Greek in Far East systems*/
|
|
smCharFISRussian = 0x0006, /*2-byte Cyrillic in Far East systems*/
|
|
/* CharType classes for punctuation (smCharPunct) */
|
|
smPunctNormal = 0x0000,
|
|
smPunctNumber = 0x0100,
|
|
smPunctSymbol = 0x0200,
|
|
smPunctBlank = 0x0300,
|
|
/* Additional CharType classes for punctuation in two-byte systems */
|
|
smPunctRepeat = 0x0400, /* repeat marker */
|
|
smPunctGraphic = 0x0500, /* line graphics */
|
|
/* CharType Katakana and Hiragana classes for two-byte systems */
|
|
smKanaSmall = 0x0100, /*small kana character*/
|
|
smKanaHardOK = 0x0200, /*can have dakuten*/
|
|
smKanaSoftOK = 0x0300, /*can have dakuten or han-dakuten*/
|
|
/* CharType Ideographic classes for two-byte systems */
|
|
smIdeographicLevel1 = 0x0000, /*level 1 char*/
|
|
smIdeographicLevel2 = 0x0100, /*level 2 char*/
|
|
smIdeographicUser = 0x0200, /*user char*/
|
|
/* old names for above, for backward compatibility */
|
|
smFISClassLvl1 = 0x0000, /*level 1 char*/
|
|
smFISClassLvl2 = 0x0100, /*level 2 char*/
|
|
smFISClassUser = 0x0200, /*user char*/
|
|
/* CharType Jamo classes for Korean systems */
|
|
smJamoJaeum = 0x0000, /*simple consonant char*/
|
|
smJamoBogJaeum = 0x0100, /*complex consonant char*/
|
|
smJamoMoeum = 0x0200 /*simple vowel char*/
|
|
};
|
|
|
|
enum {
|
|
smJamoBogMoeum = 0x0300, /*complex vowel char*/
|
|
/* CharType glyph orientation for two-byte systems */
|
|
smCharHorizontal = 0x0000, /* horizontal character form, or for both */
|
|
smCharVertical = 0x1000, /* vertical character form */
|
|
/* CharType directions */
|
|
smCharLeft = 0x0000,
|
|
smCharRight = 0x2000,
|
|
/* CharType case modifers */
|
|
smCharLower = 0x0000,
|
|
smCharUpper = 0x4000,
|
|
/* CharType character size modifiers (1 or multiple bytes). */
|
|
smChar1byte = 0x0000,
|
|
smChar2byte = 0x8000,
|
|
/* TransliterateText target types for Roman */
|
|
smTransAscii = 0, /*convert to ASCII*/
|
|
smTransNative = 1, /*convert to font script*/
|
|
smTransCase = 0xFE, /*convert case for all text*/
|
|
smTransSystem = 0xFF, /*convert to system script*/
|
|
/* TransliterateText target types for two-byte scripts */
|
|
smTransAscii1 = 2, /*1-byte Roman*/
|
|
smTransAscii2 = 3, /*2-byte Roman*/
|
|
smTransKana1 = 4, /*1-byte Japanese Katakana*/
|
|
smTransKana2 = 5 /*2-byte Japanese Katakana*/
|
|
};
|
|
|
|
enum {
|
|
smTransGana2 = 7, /*2-byte Japanese Hiragana (no 1-byte Hiragana)*/
|
|
smTransHangul2 = 8, /*2-byte Korean Hangul*/
|
|
smTransJamo2 = 9, /*2-byte Korean Jamo*/
|
|
smTransBopomofo2 = 10, /*2-byte Chinese Bopomofo*/
|
|
/* TransliterateText target modifiers */
|
|
smTransLower = 0x4000, /*target becomes lowercase*/
|
|
smTransUpper = 0x8000, /*target becomes uppercase*/
|
|
/* TransliterateText resource format numbers */
|
|
smTransRuleBaseFormat = 1, /*Rule based trsl resource format */
|
|
smTransHangulFormat = 2, /*Table based Hangul trsl resource format*/
|
|
/* TransliterateText property flags */
|
|
smTransPreDoubleByting = 1, /*Convert all text to double byte before transliteration*/
|
|
smTransPreLowerCasing = 2, /*Convert all text to lower case before transliteration*/
|
|
/* TransliterateText source mask - general */
|
|
smMaskAll = 0xFFFFFFFFL, /*Convert all text*/
|
|
/* TransliterateText source masks */
|
|
smMaskAscii = 0x00000001, /*2^smTransAscii*/
|
|
smMaskNative = 0x00000002, /*2^smTransNative*/
|
|
/* TransliterateText source masks for two-byte scripts */
|
|
smMaskAscii1 = 0x00000004, /*2^smTransAscii1*/
|
|
smMaskAscii2 = 0x00000008, /*2^smTransAscii2*/
|
|
smMaskKana1 = 0x00000010, /*2^smTransKana1*/
|
|
smMaskKana2 = 0x00000020, /*2^smTransKana2*/
|
|
smMaskGana2 = 0x00000080, /*2^smTransGana2*/
|
|
smMaskHangul2 = 0x00000100, /*2^smTransHangul2*/
|
|
smMaskJamo2 = 0x00000200, /*2^smTransJamo2*/
|
|
smMaskBopomofo2 = 0x00000400 /*2^smTransBopomofo2*/
|
|
};
|
|
|
|
enum {
|
|
/* Result values from GetScriptManagerVariable and SetScriptManagerVariable calls. */
|
|
smNotInstalled = 0, /*routine not available in script*/
|
|
smBadVerb = -1, /*Bad verb passed to a routine*/
|
|
smBadScript = -2 /*Bad script code passed to a routine*/
|
|
};
|
|
|
|
enum {
|
|
/* Values for script redraw flag. */
|
|
smRedrawChar = 0, /*Redraw character only*/
|
|
smRedrawWord = 1, /*Redraw entire word (2-byte systems)*/
|
|
smRedrawLine = -1, /*Redraw entire line (bidirectional systems)*/
|
|
/* GetScriptManagerVariable and SetScriptManagerVariable verbs */
|
|
smVersion = 0, /*Script Manager version number*/
|
|
smMunged = 2, /*Globals change count*/
|
|
smEnabled = 4, /*Count of enabled scripts, incl Roman*/
|
|
smBidirect = 6, /*At least one bidirectional script*/
|
|
smFontForce = 8, /*Force font flag*/
|
|
smIntlForce = 10, /*Force intl flag*/
|
|
smForced = 12, /*Script was forced to system script*/
|
|
smDefault = 14, /*Script was defaulted to Roman script*/
|
|
smPrint = 16, /*Printer action routine*/
|
|
smSysScript = 18, /*System script*/
|
|
smLastScript = 20, /*Last keyboard script*/
|
|
smKeyScript = 22, /*Keyboard script*/
|
|
smSysRef = 24, /*System folder refNum*/
|
|
smKeyCache = 26, /*obsolete*/
|
|
smKeySwap = 28, /*Swapping table handle*/
|
|
smGenFlags = 30, /*General flags long*/
|
|
smOverride = 32 /*Script override flags*/
|
|
};
|
|
|
|
enum {
|
|
smCharPortion = 34, /*Ch vs SpExtra proportion*/
|
|
/* New for System 7.0: */
|
|
smDoubleByte = 36, /*Flag for double-byte script installed*/
|
|
smKCHRCache = 38, /*Returns pointer to KCHR cache*/
|
|
smRegionCode = 40, /*Returns current region code (verXxx)*/
|
|
smKeyDisableState = 42, /*Returns current keyboard disable state*/
|
|
/* GetScriptVariable and SetScriptVariable verbs.
|
|
Note: Verbs private to script systems are negative, while
|
|
those general across script systems are non-negative. */
|
|
smScriptVersion = 0, /*Script software version*/
|
|
smScriptMunged = 2, /*Script entry changed count*/
|
|
smScriptEnabled = 4, /*Script enabled flag*/
|
|
smScriptRight = 6, /*Right to left flag*/
|
|
smScriptJust = 8, /*Justification flag*/
|
|
smScriptRedraw = 10, /*Word redraw flag*/
|
|
smScriptSysFond = 12, /*Preferred system font*/
|
|
smScriptAppFond = 14, /*Preferred Application font*/
|
|
smScriptBundle = 16, /*Beginning of itlb verbs*/
|
|
smScriptNumber = 16, /*Script itl0 id*/
|
|
smScriptDate = 18, /*Script itl1 id*/
|
|
smScriptSort = 20, /*Script itl2 id*/
|
|
smScriptFlags = 22, /*flags word*/
|
|
smScriptToken = 24, /*Script itl4 id*/
|
|
smScriptEncoding = 26, /*id of optional itl5, if present*/
|
|
smScriptLang = 28 /*Current language for script*/
|
|
};
|
|
|
|
enum {
|
|
smScriptNumDate = 30, /*Script Number/Date formats.*/
|
|
smScriptKeys = 32, /*Script KCHR id*/
|
|
smScriptIcon = 34, /*ID # of SICN or kcs#/kcs4/kcs8 suite*/
|
|
smScriptPrint = 36, /*Script printer action routine*/
|
|
smScriptTrap = 38, /*Trap entry pointer*/
|
|
smScriptCreator = 40, /*Script file creator*/
|
|
smScriptFile = 42, /*Script file name*/
|
|
smScriptName = 44, /*Script name*/
|
|
/* There is a hole here for old Kanji private verbs 46-76
|
|
|
|
New for System 7.0: */
|
|
smScriptMonoFondSize = 78, /*default monospace FOND (hi) & size (lo)*/
|
|
smScriptPrefFondSize = 80, /*preferred FOND (hi) & size (lo)*/
|
|
smScriptSmallFondSize = 82, /*default small FOND (hi) & size (lo)*/
|
|
smScriptSysFondSize = 84, /*default system FOND (hi) & size (lo)*/
|
|
smScriptAppFondSize = 86, /*default app FOND (hi) & size (lo)*/
|
|
smScriptHelpFondSize = 88, /*default Help Mgr FOND (hi) & size (lo)*/
|
|
smScriptValidStyles = 90, /*mask of valid styles for script*/
|
|
smScriptAliasStyle = 92, /*style (set) to use for aliases*/
|
|
/* Special script code values for International Utilities */
|
|
iuSystemScript = -1, /* <obsolete> system script */
|
|
iuCurrentScript = -2, /* <obsolete> current script (for font of grafPort) */
|
|
/* Negative verbs for KeyScript */
|
|
smKeyNextScript = -1, /* Switch to next available script */
|
|
smKeySysScript = -2, /* Switch to the system script */
|
|
smKeySwapScript = -3, /* Switch to previously-used script */
|
|
/* New for System 7.0: */
|
|
smKeyNextKybd = -4 /* Switch to next keyboard in current keyscript */
|
|
};
|
|
|
|
enum {
|
|
smKeySwapKybd = -5, /* Switch to previously-used keyboard in current keyscript */
|
|
smKeyDisableKybds = -6, /* Disable keyboards not in system or Roman script */
|
|
smKeyEnableKybds = -7, /* Re-enable keyboards for all enabled scripts */
|
|
smKeyToggleInline = -8, /* Toggle inline input for current keyscript */
|
|
smKeyToggleDirection = -9, /* Toggle default line direction (TESysJust) */
|
|
smKeyNextInputMethod = -10, /* Switch to next input method in current keyscript */
|
|
smKeySwapInputMethod = -11, /* Switch to last-used input method in current keyscript */
|
|
smKeyDisableKybdSwitch = -12, /* Disable switching from the current keyboard */
|
|
smKeySetDirLeftRight = -15, /* Set default line dir to left-right, align left */
|
|
smKeySetDirRightLeft = -16, /* Set default line dir to right-left, align right */
|
|
smKeyRoman = -17, /* Set keyscript to Roman. Does nothing if Roman-only
|
|
system, unlike KeyScript(smRoman) which forces
|
|
an update to current default Roman keyboard */
|
|
/* Bits in the smScriptFlags word
|
|
(bits above 8 are non-static) */
|
|
smsfIntellCP = 0, /*Script has intelligent cut & paste*/
|
|
smsfSingByte = 1, /*Script has only single bytes*/
|
|
smsfNatCase = 2, /*Native chars have upper & lower case*/
|
|
smsfContext = 3, /*Script is contextual*/
|
|
smsfNoForceFont = 4, /*Script will not force characters*/
|
|
smsfB0Digits = 5, /*Script has alternate digits at B0-B9*/
|
|
smsfAutoInit = 6, /*Auto initialize the script*/
|
|
smsfUnivExt = 7, /*Script is handled by universal extension*/
|
|
smsfSynchUnstyledTE = 8, /*Script synchronizes for unstyled TE*/
|
|
smsfForms = 13, /*Uses contextual forms for letters*/
|
|
smsfLigatures = 14, /*Uses contextual ligatures*/
|
|
smsfReverse = 15, /*Reverses native text, right-left*/
|
|
/* Bits in the smGenFlags long.
|
|
First (high-order) byte is set from itlc flags byte. */
|
|
smfShowIcon = 31, /*Show icon even if only one script*/
|
|
smfDualCaret = 30, /*Use dual caret for mixed direction text*/
|
|
smfNameTagEnab = 29, /*Reserved for internal use*/
|
|
smfUseAssocFontInfo = 28 /*Use the associated font info for FontMetrics calls <48>*/
|
|
};
|
|
|
|
enum {
|
|
/* Roman script constants
|
|
The following are here for backward compatibility, but should not be used.
|
|
This information should be obtained using GetScript. */
|
|
romanSysFond = 0x3FFF, /*system font id number*/
|
|
romanAppFond = 3, /*application font id number*/
|
|
romanFlags = 0x0007, /*roman settings*/
|
|
/* Script Manager font equates. */
|
|
smFondStart = 0x4000, /*start from 16K*/
|
|
smFondEnd = 0xC000, /*past end of range at 48K*/
|
|
/* Miscellaneous font equates. */
|
|
smUprHalfCharSet = 0x80, /*first char code in top half of std char set*/
|
|
/* Character Set Extensions */
|
|
diaeresisUprY = 0xD9,
|
|
fraction = 0xDA,
|
|
intlCurrency = 0xDB,
|
|
leftSingGuillemet = 0xDC,
|
|
rightSingGuillemet = 0xDD,
|
|
fiLigature = 0xDE,
|
|
flLigature = 0xDF,
|
|
dblDagger = 0xE0,
|
|
centeredDot = 0xE1,
|
|
baseSingQuote = 0xE2,
|
|
baseDblQuote = 0xE3,
|
|
perThousand = 0xE4,
|
|
circumflexUprA = 0xE5
|
|
};
|
|
|
|
enum {
|
|
circumflexUprE = 0xE6,
|
|
acuteUprA = 0xE7,
|
|
diaeresisUprE = 0xE8,
|
|
graveUprE = 0xE9,
|
|
acuteUprI = 0xEA,
|
|
circumflexUprI = 0xEB,
|
|
diaeresisUprI = 0xEC,
|
|
graveUprI = 0xED,
|
|
acuteUprO = 0xEE,
|
|
circumflexUprO = 0xEF,
|
|
appleLogo = 0xF0,
|
|
graveUprO = 0xF1,
|
|
acuteUprU = 0xF2,
|
|
circumflexUprU = 0xF3,
|
|
graveUprU = 0xF4,
|
|
dotlessLwrI = 0xF5,
|
|
circumflex = 0xF6,
|
|
tilde = 0xF7,
|
|
macron = 0xF8,
|
|
breveMark = 0xF9
|
|
};
|
|
|
|
enum {
|
|
overDot = 0xFA,
|
|
ringMark = 0xFB,
|
|
cedilla = 0xFC,
|
|
doubleAcute = 0xFD,
|
|
ogonek = 0xFE,
|
|
hachek = 0xFF,
|
|
/* TokenType values */
|
|
tokenIntl = 4, /*the itl resource number of the tokenizer*/
|
|
tokenEmpty = -1 /*used internally as an empty flag*/
|
|
};
|
|
|
|
enum {
|
|
tokenUnknown = 0, /*chars that do not match a defined token type*/
|
|
tokenWhite = 1, /*white space*/
|
|
tokenLeftLit = 2, /*literal begin*/
|
|
tokenRightLit = 3, /*literal end*/
|
|
tokenAlpha = 4, /*alphabetic*/
|
|
tokenNumeric = 5, /*numeric*/
|
|
tokenNewLine = 6, /*new line*/
|
|
tokenLeftComment = 7, /*open comment*/
|
|
tokenRightComment = 8, /*close comment*/
|
|
tokenLiteral = 9, /*literal*/
|
|
tokenEscape = 10, /*character escape (e.g. '\' in "\n", "\t")*/
|
|
tokenAltNum = 11, /*alternate number (e.g. $B0-B9 in Arabic,Hebrew)*/
|
|
tokenRealNum = 12, /*real number*/
|
|
tokenAltReal = 13, /*alternate real number*/
|
|
tokenReserve1 = 14, /*reserved*/
|
|
tokenReserve2 = 15, /*reserved*/
|
|
tokenLeftParen = 16, /*open parenthesis*/
|
|
tokenRightParen = 17, /*close parenthesis*/
|
|
tokenLeftBracket = 18, /*open square bracket*/
|
|
tokenRightBracket = 19 /*close square bracket*/
|
|
};
|
|
|
|
enum {
|
|
tokenLeftCurly = 20, /*open curly bracket*/
|
|
tokenRightCurly = 21, /*close curly bracket*/
|
|
tokenLeftEnclose = 22, /*open guillemet*/
|
|
tokenRightEnclose = 23, /*close guillemet*/
|
|
tokenPlus = 24,
|
|
tokenMinus = 25,
|
|
tokenAsterisk = 26, /*times/multiply*/
|
|
tokenDivide = 27,
|
|
tokenPlusMinus = 28, /*plus or minus symbol*/
|
|
tokenSlash = 29,
|
|
tokenBackSlash = 30,
|
|
tokenLess = 31, /*less than symbol*/
|
|
tokenGreat = 32, /*greater than symbol*/
|
|
tokenEqual = 33,
|
|
tokenLessEqual2 = 34, /*less than or equal, 2 characters (e.g. <=)*/
|
|
tokenLessEqual1 = 35, /*less than or equal, 1 character*/
|
|
tokenGreatEqual2 = 36, /*greater than or equal, 2 characters (e.g. >=)*/
|
|
tokenGreatEqual1 = 37, /*greater than or equal, 1 character*/
|
|
token2Equal = 38, /*double equal (e.g. ==)*/
|
|
tokenColonEqual = 39 /*colon equal*/
|
|
};
|
|
|
|
enum {
|
|
tokenNotEqual = 40, /*not equal, 1 character*/
|
|
tokenLessGreat = 41, /*less/greater, Pascal not equal (e.g. <>)*/
|
|
tokenExclamEqual = 42, /*exclamation equal, C not equal (e.g. !=)*/
|
|
tokenExclam = 43, /*exclamation point*/
|
|
tokenTilde = 44, /*centered tilde*/
|
|
tokenComma = 45,
|
|
tokenPeriod = 46,
|
|
tokenLeft2Quote = 47, /*open double quote*/
|
|
tokenRight2Quote = 48, /*close double quote*/
|
|
tokenLeft1Quote = 49, /*open single quote*/
|
|
tokenRight1Quote = 50, /*close single quote*/
|
|
token2Quote = 51, /*double quote*/
|
|
token1Quote = 52, /*single quote*/
|
|
tokenSemicolon = 53,
|
|
tokenPercent = 54,
|
|
tokenCaret = 55,
|
|
tokenUnderline = 56,
|
|
tokenAmpersand = 57,
|
|
tokenAtSign = 58,
|
|
tokenBar = 59 /*vertical bar*/
|
|
};
|
|
|
|
enum {
|
|
tokenQuestion = 60,
|
|
tokenPi = 61, /*lower-case pi*/
|
|
tokenRoot = 62, /*square root symbol*/
|
|
tokenSigma = 63, /*capital sigma*/
|
|
tokenIntegral = 64, /*integral sign*/
|
|
tokenMicro = 65,
|
|
tokenCapPi = 66, /*capital pi*/
|
|
tokenInfinity = 67,
|
|
tokenColon = 68,
|
|
tokenHash = 69, /*e.g. #*/
|
|
tokenDollar = 70,
|
|
tokenNoBreakSpace = 71, /*non-breaking space*/
|
|
tokenFraction = 72,
|
|
tokenIntlCurrency = 73,
|
|
tokenLeftSingGuillemet = 74,
|
|
tokenRightSingGuillemet = 75,
|
|
tokenPerThousand = 76,
|
|
tokenEllipsis = 77,
|
|
tokenCenterDot = 78,
|
|
tokenNil = 127
|
|
};
|
|
|
|
enum {
|
|
delimPad = -2,
|
|
/* obsolete, misspelled token names kept for backward compatibility */
|
|
tokenTilda = 44,
|
|
tokenCarat = 55
|
|
};
|
|
|
|
enum {
|
|
/* Table selectors for GetItlTable */
|
|
smWordSelectTable = 0, /* get word select break table from 'itl2' */
|
|
smWordWrapTable = 1, /* get word wrap break table from 'itl2' */
|
|
smNumberPartsTable = 2, /* get default number parts table from 'itl4' */
|
|
smUnTokenTable = 3, /* get unToken table from 'itl4' */
|
|
smWhiteSpaceList = 4, /* get white space list from 'itl4' */
|
|
iuWordSelectTable = 0, /* <obsolete> get word select break table from 'itl2' */
|
|
iuWordWrapTable = 1, /* <obsolete> get word wrap break table from 'itl2' */
|
|
iuNumberPartsTable = 2, /* <obsolete> get default number parts table from 'itl4' */
|
|
iuUnTokenTable = 3, /* <obsolete> get unToken table from 'itl4' */
|
|
iuWhiteSpaceList = 4 /* <obsolete> get white space list from 'itl4' */
|
|
};
|
|
|
|
/* end of stuff moved from Packages.h */
|
|
enum {
|
|
tokenOK, /* TokenResults */
|
|
tokenOverflow, /* TokenResults */
|
|
stringOverflow, /* TokenResults */
|
|
badDelim, /* TokenResults */
|
|
badEnding, /* TokenResults */
|
|
crash /* TokenResults */
|
|
};
|
|
|
|
typedef SInt8 TokenResults;
|
|
|
|
typedef char CharByteTable[256];
|
|
|
|
typedef short TokenType;
|
|
|
|
typedef TokenType DelimType[2];
|
|
|
|
typedef TokenType CommentType[4];
|
|
|
|
struct TokenRec {
|
|
TokenType theToken;
|
|
Ptr position; /*pointer into original source*/
|
|
long length; /*length of text in original source*/
|
|
StringPtr stringPosition; /*Pascal/C string copy of identifier*/
|
|
};
|
|
typedef struct TokenRec TokenRec;
|
|
|
|
typedef TokenRec *TokenRecPtr;
|
|
|
|
struct TokenBlock {
|
|
Ptr source; /*pointer to stream of characters*/
|
|
long sourceLength; /*length of source stream*/
|
|
Ptr tokenList; /*pointer to array of tokens*/
|
|
long tokenLength; /*maximum length of TokenList*/
|
|
long tokenCount; /*number tokens generated by tokenizer*/
|
|
Ptr stringList; /*pointer to stream of identifiers*/
|
|
long stringLength; /*length of string list*/
|
|
long stringCount; /*number of bytes currently used*/
|
|
Boolean doString; /*make strings & put into StringList*/
|
|
Boolean doAppend; /*append to TokenList rather than replace*/
|
|
Boolean doAlphanumeric; /*identifiers may include numeric*/
|
|
Boolean doNest; /*do comments nest?*/
|
|
TokenType leftDelims[2];
|
|
TokenType rightDelims[2];
|
|
TokenType leftComment[4];
|
|
TokenType rightComment[4];
|
|
TokenType escapeCode; /*escape symbol code*/
|
|
TokenType decimalCode;
|
|
Handle itlResource; /*handle to itl4 resource of current script*/
|
|
long reserved[8]; /*must be zero!*/
|
|
};
|
|
typedef struct TokenBlock TokenBlock;
|
|
|
|
typedef TokenBlock *TokenBlockPtr;
|
|
|
|
extern pascal short GetSysDirection( void )
|
|
TWOWORDINLINE( 0x3EB8, 0x0BAC ); /* MOVE.w $0BAC,(SP) */
|
|
extern pascal void SetSysDirection( short value )
|
|
TWOWORDINLINE( 0x31DF, 0x0BAC ); /* MOVE.w (SP)+,$0BAC */
|
|
extern pascal short FontScript(void)
|
|
FOURWORDINLINE(0x2F3C, 0x8200, 0x0000, 0xA8B5);
|
|
extern pascal short IntlScript(void)
|
|
FOURWORDINLINE(0x2F3C, 0x8200, 0x0002, 0xA8B5);
|
|
extern pascal void KeyScript(short code)
|
|
FOURWORDINLINE(0x2F3C, 0x8002, 0x0004, 0xA8B5);
|
|
extern pascal short CharByte(Ptr textBuf, short textOffset)
|
|
FOURWORDINLINE(0x2F3C, 0x8206, 0x0010, 0xA8B5);
|
|
extern pascal short CharType(Ptr textBuf, short textOffset)
|
|
FOURWORDINLINE(0x2F3C, 0x8206, 0x0012, 0xA8B5);
|
|
extern pascal Boolean IsCmdChar(const EventRecord *event, short test)
|
|
FOURWORDINLINE(0x2F3C, 0x8206, 0xFFD0, 0xA8B5);
|
|
extern pascal OSErr Transliterate(Handle srcHandle, Handle dstHandle, short target, long srcMask)
|
|
FOURWORDINLINE(0x2F3C, 0x820E, 0x0018, 0xA8B5);
|
|
extern pascal Boolean ParseTable(CharByteTable table)
|
|
FOURWORDINLINE(0x2F3C, 0x8204, 0x0022, 0xA8B5);
|
|
extern pascal TokenResults IntlTokenize(TokenBlockPtr tokenParam)
|
|
FOURWORDINLINE(0x2F3C, 0x8204, 0xFFFA, 0xA8B5);
|
|
extern pascal short FontToScript(short fontNumber)
|
|
FOURWORDINLINE(0x2F3C, 0x8202, 0x0006, 0xA8B5);
|
|
extern pascal long GetScriptManagerVariable(short selector)
|
|
FOURWORDINLINE(0x2F3C, 0x8402, 0x0008, 0xA8B5);
|
|
extern pascal OSErr SetScriptManagerVariable(short selector, long param)
|
|
FOURWORDINLINE(0x2F3C, 0x8206, 0x000A, 0xA8B5);
|
|
extern pascal long GetScriptVariable(short script, short selector)
|
|
FOURWORDINLINE(0x2F3C, 0x8404, 0x000C, 0xA8B5);
|
|
extern pascal OSErr SetScriptVariable(short script, short selector, long param)
|
|
FOURWORDINLINE(0x2F3C, 0x8208, 0x000E, 0xA8B5);
|
|
/* New for 7.1 */
|
|
extern pascal UniversalProcPtr GetScriptUtilityAddress(short selector, Boolean Before, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC404, 0x0038, 0xA8B5);
|
|
extern pascal void SetScriptUtilityAddress(short selector, Boolean Before, UniversalProcPtr routineAddr, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC008, 0x003A, 0xA8B5);
|
|
extern pascal UniversalProcPtr GetScriptQDPatchAddress(short trapNum, Boolean Before, Boolean forPrinting, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC406, 0x003C, 0xA8B5);
|
|
extern pascal void SetScriptQDPatchAddress(short trapNum, Boolean Before, Boolean forPrinting, UniversalProcPtr routineAddr, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC00A, 0x003E, 0xA8B5);
|
|
extern pascal short CharacterByteType(Ptr textBuf, short textOffset, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC206, 0x0010, 0xA8B5);
|
|
extern pascal short CharacterType(Ptr textBuf, short textOffset, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC206, 0x0012, 0xA8B5);
|
|
extern pascal OSErr TransliterateText(Handle srcHandle, Handle dstHandle, short target, long srcMask, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC20E, 0x0018, 0xA8B5);
|
|
extern pascal Boolean FillParseTable(CharByteTable table, ScriptCode script)
|
|
FOURWORDINLINE(0x2F3C, 0xC204, 0x0022, 0xA8B5);
|
|
/* Moved from Packages.h */
|
|
extern pascal Handle GetIntlResource(short theID)
|
|
THREEWORDINLINE(0x3F3C, 0x0006, 0xA9ED);
|
|
extern pascal void SetIntlResource(short refNum, short theID, Handle intlHandle)
|
|
THREEWORDINLINE(0x3F3C, 0x0008, 0xA9ED);
|
|
extern pascal void ClearIntlResourceCache(void)
|
|
THREEWORDINLINE(0x3F3C, 0x0018, 0xA9ED);
|
|
extern pascal void GetIntlResourceTable(ScriptCode script, short tableCode, Handle *itlHandle, long *offset, long *length)
|
|
THREEWORDINLINE(0x3F3C, 0x0024, 0xA9ED);
|
|
#if OLDROUTINENAMES
|
|
#define SetSysJust(newJust) SetSysDirection(newJust)
|
|
#define GetSysJust() GetSysDirection()
|
|
#define Font2Script(fontNumber) FontToScript(fontNumber)
|
|
#define GetEnvirons(verb) GetScriptManagerVariable(verb)
|
|
#define SetEnvirons(verb, param) SetScriptManagerVariable(verb, param)
|
|
#define GetScript(script, verb) GetScriptVariable(script, verb)
|
|
#define SetScript(script, verb, param) SetScriptVariable(script, verb, param)
|
|
#define IUGetIntl(theID) GetIntlResource(theID)
|
|
#define IUSetIntl(refNum, theID, intlHandle) SetIntlResource(refNum, theID, intlHandle)
|
|
#define IUClearCache() ClearIntlResourceCache()
|
|
#define IUGetItlTable(script, tableCode, itlHandle, offset, length) \
|
|
GetIntlResourceTable(script, tableCode, itlHandle, offset, length)
|
|
#endif
|
|
|
|
#if PRAGMA_IMPORT_SUPPORTED
|
|
#pragma import off
|
|
#endif
|
|
|
|
#if PRAGMA_ALIGN_SUPPORTED
|
|
#pragma options align=reset
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __SCRIPT__ */
|