antoine-source/appleworksgs/SS/Src/Format.aii

1 line
22 KiB
Plaintext
Raw Normal View History

2023-03-04 02:45:20 +00:00
LOAD 'Macros.dump' INCLUDE 'SS.equ' INCLUDE 'Driver.equ' INCLUDE 'Heap.aii.i' ;----------------------------------------------- ; ; Imported addresses ; ;----------------------------------------------- IMPORT D_AlertBox IMPORT D_CloseDialog IMPORT D_DigitsOnly IMPORT D_DisableMItems IMPORT D_EnableMItems IMPORT D_GetNewModalDialog IMPORT D_MemoryError IMPORT X_DialogFromScrap IMPORT X_DialogToScrap IMPORT X_GetScrap IMPORT X_SSScTypes IMPORT S_ActiveWindow IMPORT S_BuildSimpleUndo IMPORT S_CurBRSelect IMPORT S_CurChartCount IMPORT S_CurDefFormat IMPORT S_CurEditFlag IMPORT S_CurFormat IMPORT S_CurTLSelect IMPORT S_CurWindow IMPORT S_GetCellPtr IMPORT S_InsertLeftPadCells IMPORT S_InsertRightPadCells IMPORT S_PasteFormatMsg IMPORT S_QTraverse IMPORT S_RedrawCellRange IMPORT S_RemovePadCells IMPORT S_SetFixDlog IMPORT S_SetUndoOff IMPORT S_SetUndoOn IMPORT S_SfCountNum IMPORT S_SfCountTxt IMPORT S_SwapIn ;----------------------------------------------- ; ; Forward addresses and entries ; ;----------------------------------------------- ENTRY S_CheckCount ENTRY S_CheckTraverse ENTRY S_DoChecks ENTRY S_DoFormat ENTRY S_DoFormatChange ENTRY S_FixAlign ENTRY S_FormatAndMask1 ENTRY S_FormatAndMask2 ENTRY S_FormatBRCell ENTRY S_FormatOrMask1 ENTRY S_FormatOrMask2 ENTRY S_FormatPadFlag ENTRY S_FormatTLCell ENTRY S_JustifyType ENTRY S_ToggleFormat ;-------------------------------------------------------------------------; ; S_PasteFormat () ; S_PasteFormat PROC EXPORT ;Using X_ClipData ;Using S_AttrData ;Using S_CurrentData ;Using S_FormatData ;Using S_ErrorData local ScrapHandle:l,ScrapPtr:l,Format:l,SFlag:w error ErrFlag BEGIN +b stz ErrFlag Call X_GetScrap,in=(#X_SSScTypes:l),out=(SFlag:w,ScrapHandle:l) bcc chkScrap cantStart Call D_MemoryError brl Quit chkScrap beq needScrap ; Got a Scrap ; MoveLong [ScrapHandle],ScrapPtr MoveWord [ScrapPtr]:#S_ScrapParseCode,a bne needScrap lda #1 CmpWord a,[ScrapPtr]:#S_ScrapRows bne needScrap CmpWord a,[ScrapPtr]:#S_ScrapCols beq goodScrap needScrap Call D_AlertBox,in=(#OkBox:w,#S_PasteFormatMsg:l),out=(a:w) lda SFlag jeq Quit brl Exit goodScrap Call S_SwapIn,in=(S_ActiveWindow:l) CmpLong [ScrapPtr]:#S_ScrapSize,#S_ScrapCells beq useDefault MoveLong [ScrapPtr]:#S_ScrapCells+S_ScrapFormat,Format bra doPaste useDefault MoveLong S_CurDefFormat,Format ; Determine where to paste format ; doPaste lda S_CurEditFlag and #S_EditingBit beq notEditing MoveLong Format,S_CurFormat brl doChecks notEditing AndMask1 equ S_CellType+S_CellInvalid+S_CellError+S_CellJustify AndMask2 equ S_CellProtect+S_CellCircular MoveLong S_CurTLSelect,S_FormatTLCell MoveLong S_CurBRSelect,S_FormatBRCell in S_CurTLSelect:l,S_CurBRSelect:l XCall S_BuildSimpleUndo,err=ErrFlag bcs memError ; Fix alignment ; lda Format and #S_CellJustify sta S_JustifyType in S_CurTLSelect:l,S_CurBRSelect:l,#S_FixAlign:l XCall S_QTraverse bcs memError ; Change all but alignment formatting ; lda Format and #$FFFF-AndMask1 sta S_FormatOrMask1 iny iny lda Format+2 and #$FFFF-AndMask2 sta S_FormatOrMask2 MoveWord #AndMask1,S_FormatAndMask1 MoveWord #AndMask2,S_FormatAndMask2 MoveWord #S_BoldItem,S_FormatPadFlag in S_CurTLSelect:l,S_CurBRSelect:l,#S_DoFormat:l XCall S_QTraverse bcc redraw memError Call D_MemoryError redraw Call S_RedrawCellRange,in=(S_FormatTLCell:l,S_FormatBRCell:l) Call S_SetUndoOn,in=(#S_UndoPasteFormatType:w) doChecks Call S_DoChecks Exit Tool _DisposeHandle,in=(ScrapHandle:l) Quit RETURN ENDP ; ******************* Alignments ****************** ;-------------------------------------------------------------------------; ; S_AlignLeft ; S_AlignLeft PROC EXPORT ;Using S_CurrentData ;Using S_FormatData BEGIN +b Cal