mirror of
https://github.com/antoinevignau/source.git
synced 2024-08-11 15:28:58 +00:00
1 line
22 KiB
Plaintext
1 line
22 KiB
Plaintext
|
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
|