; ; File: TextEditPriv.a ; ; Contains: Private TextEdit equates. ; ; Written by: Sue Bartalo ; ; Copyright: © 1990-1992 by Apple Computer, Inc., all rights reserved. ; ; Change History (most recent first): ; ; 10/6/92 PN # 1040150 Get rid of Sysvers conditionals and bring the code to ; the current state (7.1) ; <16> 7/15/92 SMB ## : Move DoText selectors from here to ToolEqu.a (and ; Pascal/C equates) so the whole darn world can use them instead ; of hard-coded constants! ; <15> 9/15/91 YS Defined an offset to a byte in TEDispatchRec (lastscript), to be ; used by the split/single caret stuff. <15-YDS-8/27/91> ; <14> 8/26/91 JSM Cleanup header. ; <13> 2/14/91 SMB pke,#70628 - removing ForwardDeleteChar for now. ; <12> 2/1/91 SMB pke,#82169: Removing MetricsFrame. Renamed leftSide to ; leadingEdge in P2CFrame record. Added WidthRemaining to ; P2CFrame. ; <11> 1/14/91 SMB (jdt) Added forwardDeleteChar. Added MetricsFrame for ; _OutlineMetrics call in TextEdit. ; <10> 10/30/90 SMB Adding hasTextWidthHook conditional for the code changes ; supporting the new TextWidthhook. Also added hasBufferingFix for ; the code changes supporting the bug fixes for the text buffering ; feature. Increased size of TEDispatchRec, intDispSize, and moved ; frame for TextBox into here. ; <9> 9/11/90 SMB Added an equate, defBufSize, that was hiding deep in the bowels ; of InsertRecal! Also moved HiliteFrame here. ; <8> 6/11/90 SMB NEEDED for ROM builds: SysVers not defined for ROM so ; hasInlineInput flag must be set explicitly. Oops! ; <7> 6/11/90 SMB NEEDED FOR SIXPACK AND 7.0: added hasInlineInput conditional for ; Inline Input support. ; <5> 3/21/90 SMB NEEDED FOR SS-6.0.5: Fixing FmtOrderFrame to include LRTextFlag ; field for compatibility with the ROM. ; <4> 2/13/90 SMB NEEDED FOR 6.0.5 - removed teLFlush, teRFlush, and teCenter. ; Increased size of DispatchRec to allow for nWidthHook. ; <3> 1/30/90 SMB Needed For 6.0.5 - -Moved names of FindWord callers into ; ToolEqu.a. -Adding private equates and frames here and removing ; them from TextEdit.a. ; <2> 1/16/90 SMB Fixed comment in header. ; <1> 1/9/90 SB first checked in. Moved private definitions at end of ; TEDispatchRec here. Increased size of TEDispatchRec. ; NEEDED FOR 6.0.5: Moved newTEFlags and intDispSize here ; from ToolEqu.a. Also added TwoByteCharBuffer at end of ; TEDispatchRec since need it local for each TE record. ;___________________________________________________________________________________________________ IF &TYPE('__IncludingTextEditPriv__') = 'UNDEFINED' THEN __IncludingTextEditPriv__ SET 1 IF forRom THEN ; <8> hasInlineInput equ 1 ; <8> hasTextWidthHook equ 1 ; <10> hasBufferingFix equ 1 ; <10> ELSE ; <8> hasInlineInput equ SysVers >= $606 ; <7> hasTextWidthHook equ SysVers >= $606 ; <10> hasBufferingFix equ SysVers >= $606 ; <10> ENDIF ; <8> ; -- private offsets into TEDispatchRec newTEFlags EQU 16 ; teFAutoScr, tefTextBuffering, teFOutlineHilite <1> TwoByteCharBuffer EQU 20 ; storage for buffered double-byte character <1> lastScript EQU 22 ; keep last script for a proper split/single caret display <15-YDS-8/27/91> measOverFlow EQU 0 ; text measure overflow (00000001b) ; -- size of TEDispatchRec intDispSize EQU 32 ; <4><10> teStylSize Equ 28 ; initial size of teStylesRec with 2 entries stBaseSize Equ 20 ; added to fix MakeRoom bug ; TESetStyle/TEContinuousStyle modes doAll2 EQU $1F ; all of the above + add size doAll3 EQU $3F ; all of the above + toggle faces BufferSize equ 50 ; <1Feb89smb> max num of bytes for text buffer ; defined key characters <7Aug89smb> downArrowChar equ $1F upArrowChar equ $1E rightArrowChar equ $1D leftArrowChar equ $1C backspaceChar equ $08 returnChar equ $0D tabChar equ $09 IF 0 THEN ; <13> forwardDeleteChar equ $7F ; on extended keyboard <11> ENDIF ; <13> ;----------------------- inHandle Equ 8 ; TE handle offset saveHandle Equ -2 ; incoming handle flags savePort Equ saveHandle-4 ; incoming graf port saveClip Equ savePort-4 ; incoming clip in TE port saveTH Equ saveClip-2 ; saved text handle flags saveFont Equ saveTH-2 ; Grafport's font saveFace Equ saveFont-2 ; Grafport's face saveSize Equ saveFace-2 ; Grafport's size saveColor Equ saveSize-6 ; Grafport's color stdLink Equ saveColor lnStStartSize equ 2 ; stStartSize = 4; bit shift left of 2! <26June89smb> UnboundLeft equ $8002 ; unbound left edge for rectangle (hilite, erase, etc) <12July89smb> UnboundRight equ $7FFE ; unbound right edge for rectangle (hilite, erase, etc) <12July89smb> numStyleRuns equ 10 ; <28Sept88smb> max # for local frame; if more, allocate handle FmtOrderFrame record 0 ; <13Mar89smb> broke these fields out into another record ; The record is in incremental order but the frames including it are in decremental order so it ; would change the offsets of the other elements in the record if they were added at the "bottom" firstStyleRun ds.l 1 ; <18Nov89smb> moved here for TextFrame secondStyleRun ds.l 1 ; <18Nov89smb> moved here for TextFrame directionParam equ * ; beginning of dirParams for dirProc startStyleRun ds.l 1 ; directionParam: address of styleRun array at d3 teRecPtr ds.l 1 ; directionParam: ptr to teRecord LRTextFlag ds.w 1 ; set but not tested (place holder for ROM frame). numberOfRuns ds.w 1 ; num of style runs on current (a2) line styleRunIndex ds.w 1 ; dummy entry (for GetNextDisplayStyle) fmtOrdering ds.w numStyleRuns fmtOrderingPtr ds.l 1 a2StyleRun ds.l 1 ; is an offset for a styled teRec, otherwise a ptr <5Aug89smb> fmtOrderingIndex ds.w 1 endR ; standard frame for doText ; <4Oct88smb> TextFrame record {a6Link},decr a6Link ds.l 1 saveLeft ds.w 1 ; true left saveJust ds.w 1 ; left setting after justification useOldMethod ds.w 1 TEFormatOrder ds FmtOrderFrame ; <13Mar89smb> TextFrameSz equ * endR ;saveLeft Equ -2 ; true left ;saveJust Equ saveLeft-2 ; left setting after justification ;txtLink Equ saveJust ; <28Sept88smb> - replaced with above record SharedFrame record {a6Link},decr a6Link ds.l 1 ; shared storage: maintain ordering here! dummy ds.l 1 ; space filler for template ordering. dummyByte ds.b 1 ; as named <6Mar89smb> doneFlag ds.b 1 TEFormatOrder ds FmtOrderFrame ; <13Mar89smb> ; *** storage shared between CaretDisplay and OnSameLine *** ;;<8Nov89smb> moved to FmtOrderFrame secondStyleRun ds.l 1 ;;<8Nov89smb> moved to FmtOrderFrame firstStyleRun ds.l 1 selRectR ds.w 1 selRectB ds.w 1 selRectL ds.w 1 selRectT ds.w 1 ; *** CaretDisplay unique storage <4Jan89smb> *** cursorScriptDir ds.b 1 previousScriptDir ds.b 1 scriptDirection ds.b 1 prevStyleFlag ds.b 1 onBoundaryFlag ds.b 1 gotOneRun ds.b 1 lineEndFlag ds.b 1 ; changed to byte <6Mar89smb> highCaret ds.b 1 ; changed to byte <6Mar89smb> ; *** OnSameLine unique storage <4Jan89smb> *** d3StyleRun ds.l 1 ; preserve address of styleRun array at d3 (1st char posn) d4StyleRun ds.l 1 ; preserve address of styleRun array at d4 (2nd char posn) totalWidth ds.w 1 foundD3 ds.b 1 ; flag T if found d3 format index foundD4 ds.b 1 ; flag T if found d4 format index d3FmtIndex ds.w 1 ; d3 format ordering d4FmtIndex ds.w 1 ; d4 format ordering sameStyle ds.b 1 ; flag T if [d3,d4] in same style run hiliteInbetween ds.b 1 saveD3 ds.w 1 saveD4 ds.w 1 anchorL ds.w 1 ; for hiliting the middle rectangle anchorR ds.w 1 ; for hiliting the middle rectangle offPairs ds.l 3 ; storage for offset pairs returned from HiliteText hiliteLEndFlag ds.b 1 hiliteREndFlag ds.b 1 SharedFrameSz equ * endR ; frame for recallines savedD4 Equ -2 savedD2 Equ savedD4-2 startHndl Equ savedD2-4 savePtr Equ startHndl-4 oldNLines Equ savePtr-2 RecalLink Equ oldNLines defBufSize Equ 256 ; initial size of temp line start buffer in InsertRecal <9> ; frame for new GetCurScript // gcsTemp equ -4 gcsIndex equ gcsTemp-2 gcsLink equ gcsIndex ; replaced Dave's equates with a frame <23May89smb> FindWordFrame record {a6Link},decr a6Link ds.l 1 fwOffTab ds.l 3 fwSelWrap ds.l 1 fwSRTxtPtr ds.l 1 fwSavedD2 ds.l 1 fwLeadingEdge ds.w 1 fwSROffset ds.w 1 fwSRLength ds.w 1 fwSRFont ds.w 1 fwSRIndx ds.w 1 fwSRStrtCh ds.w 1 fwLink equ * endR ; frame for Outline Hilighting in TEActivate and TEDeactivate <21Sept89smb> OutlineFrame record {a6Link},decr a6Link ds.l 1 oldPenState ds.b 18 ; 18 bytes for pnLoc, pnSize, pnMode, pnPat oldHighHook ds.l 1 oldCaretHook ds.l 1 paintFlag ds.b 1 ; <16Oct89smb> dummy ds.b 1 ; <16Oct89smb> OutlineFrameSz equ * endR CursorFrame record {a6Link},decr a6Link ds.l 1 dummies ds.w 3 ; space fillers due to necc positioning in template TEFormatOrder ds FmtOrderFrame ; <13Mar89smb> FormatEndFlag ds.b 1 RunDirection ds.w 1 ; <17Jan89smb> CursorFrameSz equ * endR LineBreakFrame record {oldA6},decrement oldA6 ds.l 1 length ds.l 1 ; StyledLineBreak param width ds.l 1 ; StyledLineBreak param offset ds.l 1 ; StyledLineBreak param start ds.l 1 ; StyledLineBreak param end ds.l 1 ; StyledLineBreak param currStyle ds.l 1 nextStyle ds.l 1 textPtr ds.l 1 initlTextPtr ds.l 1 textPtrOffset ds.w 1 lineStart ds.w 1 EOLCharPosn ds.w 1 ; current EOL (char posn) accumulated by style runs styleIndex ds.w 1 localFrame equ * endR P2CFrame record {a6Link},decr return ds.l 1 a6Link ds.l 1 leadingEdge ds.w 1 ; was named leftSide <12> textLen ds.w 1 textPtr ds.l 1 pixelWidth ds.w 1 slop ds.w 1 txtWidth ds.w 1 widthRemaining ds.l 1 ; fixed for NPixel2Char <12> locals equ * endR HiliteFrame record {a6Link},decr ; <9> a6Link ds.l 1 savD4 ds.w 1 d3Line ds.l 1 ; ptr to lineStart for d3 d4Line ds.l 1 ; ptr to lineStart for d4 HiLiteSz equ * endR ; frame for TextBox <10> TBJust Equ 8 TBBox Equ 10 TBLength Equ 14 TBText Equ 18 ENDIF ; ...already included