mirror of
https://github.com/byteworksinc/ORCA-C.git
synced 2024-12-28 16:30:59 +00:00
444 lines
14 KiB
C
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
|