ORCA-C/ORCACDefs/textedit.h
2017-10-21 20:21:37 -05:00

444 lines
14 KiB
C

/********************************************
*
* TextEdit Tool Set
*
* Copyright Apple Computer, Inc.1986-90
* All Rights Reserved
*
* Copyright 1992, Byte Works, Inc.
*
********************************************/
#ifndef __TYPES__
#include <TYPES.h>
#endif
#ifndef __TEXTEDIT__
#define __TEXTEDIT__
/* Error Codes */
#define teAlreadyStarted 0x2201
#define teNotStarted 0x2202
#define teInvalidHandle 0x2203
#define teInvalidVerb 0x2204
#define teInvalidFlag 0x2205
#define teInvalidPCount 0x2206
#define teInvalidRect 0x2207
#define teBufferOverflow 0x2208
#define teInvalidLine 0x2209
#define teInvalidCall 0x220A
/* TE Verbs */
#define NullVerb 0x0000
#define PStringVerb 0x0001
#define CStringVerb 0x0002
#define C1InputVerb 0x0003
#define C1OutputVerb 0x0004
#define HandleVerb 0x0005
#define PointerVerb 0x0006
#define NewPStringVerb 0x0007
#define fEqualLineSpacing 0x8000
#define fShowInvisibles 0x4000
#define teInvalidDescriptor 0x2204
#define teInvalidParameter 0x220B
#define teInvalidTextBox2 0x220C
#define teNeedsTools 0x220D /* 8717 */
#define teEqualLineSpacing 0x8000
#define teShowInvisibles 0x4000
/* Justification Values */
#define leftJust 0x0000
#define rightJust 0xFFFF
#define centerJust 0x0001
#define fullJust 0x0002
/* TERuler.tabType Codes */
#define noTabs 0x0000
#define stdTabs 0x0001 /* Tabs every tabTerminator pixels */
#define absTabs 0x0002 /* Tabs at absolute location specified by theTabs array */
/* TEParamBlock.flags Codes */
#define fCtlInvis 0x0080
#define fRecordDirty 0x0040
/* TE Tab Codes */
#define teLeftTab 0x0000
#define teCenterTab 0x0001
#define teRightTab 0x0002
#define teDecimalTab 0x0003
/* TEParamBlock.textFlags Codes */
#define fNotControl 0x80000000L /* TextEdit record is not a control */
#define fSingleFormat 0x40000000L /* Only one ruler is allowed for record */
#define fSingleStyle 0x20000000L /* Only one style is allowed for record */
#define fNoWordWrap 0x10000000L /* No word wrap is performed */
#define fNoScroll 0x08000000L /* The text cannot scroll */
#define fReadOnly 0x04000000L /* The text cannot be edited */
#define fSmartCutPaste 0x02000000L /* Record supports intelligent cut and paste */
#define fTabSwitch 0x01000000L /* Tab key switches user to next TextEdit record on the screen */
#define fDrawBounds 0x00800000L /* TextEdit draw a box around text */
#define fColorHilight 0x00400000L /* Use color table for highlighting */
#define fGrowRuler 0x00200000L /* Adjust right margin whenever window size changes */
#define fDisableSelection 0x00100000L /* User cannot select or edit text */
#define fDrawInactiveSelection 0x00080000L /* TextEdit displays a box around an inactive selection */
/* Descriptor Codes */
#define teCtlColorIsPtr 0x0000
#define teCtlColorIsHandle 0x0004
#define teCtlColorIsResource 0x0008
#define teCtlStyleIsPtr 0x0000
#define teCtlStyleIsHandle 0x0001
#define teCtlStyleIsResource 0x0002
#define teRefIsPtr 0x0000
#define teRefIsHandle 0x0001
#define teRefIsResource 0x0002
#define teRefIsNewHandle 0x0003
#define teDataIsPString 0x0000
#define teDataIsCString 0x0001
#define teDataIsC1Input 0x0002
#define teDataIsC1Output 0x0003
#define teDataIsTextBox2 0x0004
#define teDataIsTextBlock 0x0005
#define teTextIsPtr 0x0000
#define teTextIsHandle 0x0008
#define teTextIsResource 0x0010
#define teTextIsNewHandle 0x0018
/* TEGetLastError clearFlag Codes */
#define fLeaveError 0x0000 /* Leave the last error code intact */
#define fClearError 0xFFFF /* Clear the last error code */
/* Other Constants */
#define teInvis 0x4000
#define tePartialLines 0x8000L
#define teDontDraw 0x4000
#define teUseFont 0x0020
#define teUseSize 0x0010
#define teUseForeColor 0x0008
#define teUseBackColor 0x0004
#define teUseUserData 0x0002
#define teUseAttributes 0x0001
#define teReplaceFont 0x0040
#define teReplaceSize 0x0020
#define teReplaceForeColor 0x0010
#define teReplaceBackColor 0x0008
#define teReplaceUserField 0x0004
#define teReplaceAttributes 0x0002
#define teSwitchAttributes 0x0001
/* Filter Procedure Commands */
#define doEraseRect 0x0001
#define doEraseBuffer 0x0002
#define doRectChanged 0x0003
#define doKeyStroke 0x0004
/* TEScroll descriptors */
#define teScrollAbsTop 0x0000 /* 0 */
#define teScrollAbsCenter 0x0001 /* 1 */
#define teScrollLineTop 0x0002 /* 2 */
#define teScrollLineCenter 0x0003 /* 3 */
#define teScrollAbsUnit 0x0004 /* 4 */
#define teScrollRelUnit 0x0005 /* 5 */
struct TETextBlock {
struct TETextBlock **nextHandle; /* Handle to next TextBlock in list */
struct TETextBlock **prevHandle; /* Handle to previous TextBlock in list */
LongWord textLength; /* Number of bytes of theText */
Word flags;
Word reserved; /* Reserved */
Byte theText[1]; /* textLength bytes of text */
};
typedef struct TETextBlock TETextBlock, *TETextBlockPtr, **TETextBlockHndl;
struct TETextList {
TETextBlockHndl cachedHandle; /* Handle to current TextBlock */
LongWord cachedOffset; /* Text offset of the start of the current TextBlock */
};
typedef struct TETextList TETextList, *TETextListPtr, **TETextListHndl;
struct TEColorTable {
Word contentColor;
Word outlineColor;
Word hiliteForeColor;
Word hiliteBackColor;
Word vertColorDescriptor;
LongWord vertColorRef;
Word horzColorDescriptor;
LongWord horzColorRef;
Word growColorDescriptor;
LongWord growColorRef;
};
typedef struct TEColorTable TEColorTable, *TEColorTablePtr, **TEColorTableHndl;
struct TEBlockEntry {
Handle text;
Handle length;
Word flags;
};
typedef struct TEBlockEntry TEBlockEntry;
struct TEBlocksRecord {
LongWord start;
Word index;
TEBlockEntry blocks[1];
};
typedef struct TEBlocksRecord TEBlocksRecord, *TEBlocksPtr, **TEBlocksHndl;
struct TabItem {
Word tabKind;
Word tabData;
};
typedef struct TabItem TabItem;
struct TESuperItem {
LongWord itemLength;
LongWord itemData;
};
typedef struct TESuperItem TESuperItem, *TESuperItemPtr, **TESuperItemHndl;
struct TESuperBlock {
struct TESuperBlock **nextHandle;
struct TESuperBlock **prevHandle;
LongWord textLength;
LongWord reserved;
TESuperItem theItems[1];
};
typedef struct TESuperBlock TESuperBlock, *TESuperBlockPtr, **TESuperBlockHndl;
struct TESuperHandle {
TESuperBlockHndl cachedHandle;
LongWord cachedOffset;
Word cachedIndex;
Word itemsPerBlock;
};
typedef struct TESuperHandle TESuperHandle, *TESuperHandlePtr, **TESuperHandleHndl;
struct TERuler {
Word leftMargin;
Word leftIndent;
Word rightMargin;
Word just;
Word extraLS;
Word flags;
LongWord userData;
Word tabType;
TabItem theTabs[1];
Word tabTerminator;
};
typedef struct TERuler TERuler, *TERulerPtr, **TERulerHndl;
struct TEStyle {
FontID styleFontID;
Word foreColor;
Word backColor;
LongWord userData;
};
typedef struct TEStyle TEStyle, *TEStylePtr, **TEStyleHndl;
struct TEStyleGroup {
Word count;
TEStyle styles[1];
};
typedef struct TEStyleGroup TEStyleGroup, *TEStyleGroupPtr, **TEStyleGroupHndl;
struct StyleItem {
LongWord dataLength; /* Number of text characters using the style */
LongWord dataOffset; /* Byte offset into theStyleList entry */
};
typedef struct StyleItem StyleItem, *StyleItemPtr, **StyleItemHndl;
typedef long TERulerRef;
/*
The following data structure (TEFormat) is for reference only!
It contains embedded variable length fields.
*/
struct TEFormat {
Word version;
LongWord rulerListLength;
TERuler theRulerList[1];
LongWord styleListLength;
TEStyle theStyleList[1];
LongWord numberOfStyles;
StyleItem theStyles[1];
};
typedef struct TEFormat TEFormat, *TEFormatPtr, **TEFormatHndl;
typedef struct TETextRef {
Ptr TETextDesc;
} TETextRef,*TETextRefPtr, **TETextRefHndl;
typedef struct TEStyleRef {
Ptr TEStyleDesc;
} TEStyleRef,*TEStyleRefPtr,**TEStyleRefHndl;
typedef long TEColorRef;
struct TEParamBlock {
Word pCount;
LongWord controlID;
Rect boundsRect;
LongWord procRef;
Word flags;
Word moreflags;
LongWord refCon;
LongWord textFlags;
Rect indentRect;
CtlRecHndl vertBar;
Word vertAmount;
CtlRecHndl horzBar;
Word horzAmount;
TEStyleRef styleRef;
Word textDescriptor;
TETextRef textRef;
LongWord textLength;
LongWord maxChars;
LongWord maxLines;
Word maxCharsPerLine;
Word maxHeight;
TEColorRef colorRef;
Word drawMode;
ProcPtr filterProcPtr;
};
typedef struct TEParamBlock TEParamBlock, *TEParamBlockPtr, **TEParamBlockHndl;
struct TEInfoRec {
LongWord charCount;
LongWord lineCount;
LongWord formatMemory;
LongWord totalMemory;
LongWord styleCount;
LongWord rulerCount;
};
typedef struct TEInfoRec TEInfoRec;
struct TEHooks {
ProcPtr charFilter;
ProcPtr wordWrap;
ProcPtr wordBreak;
ProcPtr drawText;
ProcPtr eraseText;
};
typedef struct TEHooks TEHooks;
struct TEKeyRecord {
Word theChar;
Word theModifiers;
Handle theInputHandle;
LongWord cursorOffset;
Word theOpCode;
};
typedef struct TEKeyRecord TEKeyRecord, *TEKeyRecordPtr, **TEKeyRecordHndl;
struct TERecord {
CtlRecHndl ctrlNext;
WindowPtr inPort;
Rect boundsRect;
Byte ctrlFlag;
Byte ctrlHilite;
Word lastErrorCode;
ProcPtr ctrlProc;
ProcPtr ctrlAction;
ProcPtr filterProc;
LongWord ctrlRefCon;
TEColorTablePtr colorRef;
LongWord textFlags;
LongWord textLength;
TETextList blockList;
LongWord ctrlID;
Word ctrlMoreFlags;
Word ctrlVersion;
Rect viewRect;
LongWord totalHeight;
TESuperHandle lineSuper;
TESuperHandle styleSuper;
Handle styleList;
Handle rulerList;
Boolean lineAtEndFlag;
LongWord selectionStart;
LongWord selectionEnd;
Word selectionActive;
Word selectionState;
LongWord caretTime;
Boolean nullStyleActive;
TEStyle nullStyle;
LongWord topTextOffset;
Word topTextVPos;
CtlRecHndl vertScrollBar;
LongWord vertScrollPos;
LongWord vertScrollMax;
Word vertScrollAmount;
CtlRecHndl horzScrollBar;
LongWord horzScrollPos;
LongWord horzScrollMax;
Word horzScrollAmount;
CtlRecHndl growBoxHandle;
LongWord maximumChars;
LongWord maximumLines;
Word maxCharsPerLine;
Word maximumHeight;
Word textDrawMode;
ProcPtr wordBreakHook;
ProcPtr wordWrapHook;
ProcPtr keyFilter;
Rect theFilterRect;
Word theBufferVPos;
Word theBufferHPos;
TEKeyRecord theKeyRecord;
LongWord cachedSelcOffset;
Word cachedSelcVPos;
Word cachedSelcHPos;
Rect mouseRect;
LongWord mouseTime;
Word mouseKind;
Point lastClick;
Word savedHPos;
LongWord anchorPoint;
};
typedef struct TERecord TERecord, *TERecordPtr, **TERecordHndl;
extern pascal void TEBootInit(void) inline(0x0122,dispatcher);
extern pascal void TEStartUp(Word, Word) inline(0x0222,dispatcher);
extern pascal void TEShutDown(void) inline(0x0322,dispatcher);
extern pascal Word TEVersion(void) inline(0x0422,dispatcher);
extern pascal void TEReset(void) inline(0x0522,dispatcher);
extern pascal Word TEStatus(void) inline(0x0622,dispatcher);
extern pascal void TEActivate(Handle) inline(0x0F22,dispatcher);
extern pascal void TEClear(Handle) inline(0x1922,dispatcher);
extern pascal void TEClick(EventRecordPtr, Handle) inline(0x1122,dispatcher);
extern pascal void TECompactRecord(Handle) inline(0x2822,dispatcher);
extern pascal void TECopy(Handle) inline(0x1722,dispatcher);
extern pascal void TECut(Handle) inline(0x1622,dispatcher);
extern pascal void TEDeactivate(Handle) inline(0x1022,dispatcher);
extern pascal ProcPtr TEGetDefProc(void) inline(0x2222,dispatcher);
extern pascal ProcPtr TEGetInternalProc(void) inline(0x2622,dispatcher);
extern pascal Word TEGetLastError(Word, Handle) inline(0x2722,dispatcher);
extern pascal void TEGetRuler(Word, Ref, Handle) inline(0x2322,dispatcher);
extern pascal void TEGetSelection(Pointer, Pointer, Handle) inline(0x1C22,dispatcher);
extern pascal Word TEGetSelectionStyle(TEStylePtr, Handle, Handle) inline(0x1E22,dispatcher);
extern pascal LongWord TEGetText(Word, Ref, Long, Word, Ref, Handle) inline(0x0C22,dispatcher);
extern pascal void TEGetTextInfo(Pointer, Word, Handle) inline(0x0D22,dispatcher);
extern pascal void TEIdle(Handle) inline(0x0E22,dispatcher);
extern pascal void TEInsert(Word, Ref, Long, Word, Ref, Handle) inline(0x1A22,dispatcher);
extern pascal void TEKey(EventRecordPtr, Handle) inline(0x1422,dispatcher);
extern pascal void TEKill(Handle) inline(0x0A22,dispatcher);
extern pascal TERecordHndl TENew(TEParamBlockPtr) inline(0x0922,dispatcher);
extern pascal void TEOffsetToPoint(Long, Long *, Long *, Handle) inline(0x2022,dispatcher);
extern pascal LongWord TEPaintText(GrafPortPtr, Long, Rect *, Word, Handle) inline(0x1322,dispatcher);
extern pascal void TEPaste(Handle) inline(0x1822,dispatcher);
extern pascal LongWord TEPointToOffset(Long, Long, Handle) inline(0x2122,dispatcher);
extern pascal void TEReplace(Word, Ref, Long, Word, Ref, Handle) inline(0x1B22,dispatcher);
extern pascal void TEScroll(Word, Long, Long, Handle) inline(0x2522,dispatcher);
extern pascal void TESetRuler(Word, Ref, Handle) inline(0x2422,dispatcher);
extern pascal void TESetSelection(Pointer, Pointer, Handle) inline(0x1D22,dispatcher);
extern pascal void TESetText(Word, Ref, Long, Word, Ref, Handle) inline(0x0B22,dispatcher);
extern pascal void TEStyleChange(Word, TEStylePtr, Handle) inline(0x1F22,dispatcher);
extern pascal void TEUpdate(Handle) inline(0x1222,dispatcher);
/* This call appeared in Apple's interfaces, but is not documented.
extern pascal void TEInsertPageBreak() inline(0x1522,dispatcher);
*/
#endif