mirror of
https://github.com/antoinevignau/source.git
synced 2024-08-11 15:28:58 +00:00
1 line
16 KiB
Plaintext
1 line
16 KiB
Plaintext
|
LOAD 'Macros.dump'
INCLUDE 'SS.equ'
INCLUDE 'Driver.equ'
INCLUDE 'Heap.aii.i'
;------------------------------------------
;
; Equates from procedure S_BarData
;
;------------------------------------------
S_CHARTMAXH equ 16
S_BarHeight equ 150
S_BarHZero equ 80
S_BarVZero equ 160
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_ClosePicture
IMPORT D_AlertBox
IMPORT D_CheckPurge
IMPORT D_DrawString
IMPORT D_FastMult
IMPORT D_KillFont
IMPORT D_SelectFont
IMPORT D_Set4Pat
IMPORT X_FormatValue
IMPORT S_ChartTitleLoc
IMPORT S_LinearMax
IMPORT S_LinearMaxVal
IMPORT S_BigBar
IMPORT S_ChartColors
IMPORT S_Cur2Heap
IMPORT S_GetCellPtr
IMPORT S_GetMinMax
IMPORT S_ItzaBar
IMPORT S_NoData
IMPORT S_NormalizeRange
IMPORT S_NoINF
IMPORT S_OneDatum
IMPORT S_PictRect
IMPORT S_PieOffset
IMPORT S_PieSum
IMPORT S_TraverseRange
IMPORT S_decform2
IMPORT S_drec2
;-----------------------------------------------
;
; Forward addresses and entries
;
;-----------------------------------------------
ENTRY S_DoPtPlot
ENTRY S_BarCount
ENTRY S_BarMax
ENTRY S_BarMin
ENTRY S_BarPoly
ENTRY S_BarRect
ENTRY S_BarSpace
ENTRY S_BarWidth
ENTRY S_ChartAxes
ENTRY S_DoPlot
ENTRY S_DoScaling
ENTRY S_OldPt
ENTRY S_Plot3DBar
ENTRY S_PlotAxes
ENTRY S_PlotLine
;---------------------------------------------------------------------------
;
; S_MakeBar
;
;
S_MakeBar PROC EXPORT
;Using S_CurrentData2
;Using S_ChartData
;Using S_BarData
;Using S_PieData
;Using SANEEQUS
input charthdl:l
output pict:l
local color:w,OldClip:l,chart:l
local cellptr:l,col:w,tmp:l
local topl:l,botr:l,type:l
error err
begin
stz err
H_GetBlockPtr charthdl,chart
call S_NormalizeRange,in=([chart]:#S_CRange:l,[chart]:#S_CRange+4:l)
pulllong botr
pulllong topl
cmpw topl+2,botr+2
beq ItsVert
subword botr,topl,a
bra CkMax
ItsVert subword botr,topl,a
CkMax cmp #257
blt OKSize
call D_AlertBox,in=(#OKCancelBox:w,#S_BigBar:l),out=(a:w)
cmp #Cancel
jeq abort
cmpw topl+2,botr+2
beq ItsVert2
addword topl+2,#255,botr+2
bra OKSize
ItsVert2 addword topl,#255,botr
OKSize moveword #1,S_ItzaBar
stz S_PieOffset
call S_TraverseRange,in=(topl:l,botr:l,#S_PieSum:l),err=(err)
jcs quit
lda S_PieOffset
beq NoData
cmp #1
bne OpenIt
stz type+2
moveaddr S_DoPtPlot+1,type ; hack to find out what kind
cmpl type,#S_PlotLine ; of chart is being generated.
bne OpenIt
call D_AlertBox,in=(#1:w,#S_OneDatum:l),out=(a:w)
brl abort
NoData call D_AlertBox,in=(#1:w,#S_NoData:l),out=(a:w)
brl abort
OpenIt call S_GetMinMax,in=(topl:l,botr:l,#1:w),out=(:l)
tool FCLASSX,in=(:l)
txa
asl a
cmp #2*FCINF
beq @INF
call S_GetMinMax,in=(topl:l,botr:l,#0:w),out=(:l)
tool FCLASSX,in=(:l)
txa
asl a
cmp #2*FCINF
bne @dopict
@INF call D_AlertBox,in=(#1:w,#S_NoINF:l),out=(a:w)
brl abort
@dopict
movelong topl,[chart]:#S_CRange
movelong botr,[chart]:#S_CRange+4
tool _NewRgn,out=(OldClip:l),err=(err)
jcs quit
tool _GetClip,in=(OldClip:l)
tool _ClipRect,in=(#S_PictRect:l)
tool _OpenPicture,in=(#S_Pictrect:l),out=(pict:l)
_PenNormal
tool _SetPenSize,in=(#2:w,#1:w)
pushlong topl
pushlong botr
H_GetBlockPtr charthdl,chart
addlong #S_CMin,chart,s
addlong #S_CMax,chart,s
call S_DoScaling,in=(:l,:l,:l,:l,[chart]:#S_CIsMax:w)
H_GetBlockPtr charthdl,chart
call S_ChartAxes,in=(topl:l,botr:l,[chart]:#S_SpaceBar:w)
addword S_BarSpace,#S_BarHZero,S_BarRect+2
stz S_BarCount
moveword #S_BarVZero,S_OldPt
moveword #S_BarHZero,S_OldPt+2
moveword #S_BarVZero,S_LinearMax
call S_TraverseRange,in=(topl:l,botr:l,#S_DoPlot:l)
H_GetBlockPtr charthdl,chart
call S_PlotAxes,in=(topl:l,botr:l,[chart]:#S_SpaceBar:w)
DoTitle tool _MoveTo,in=(S_ChartTitleLoc:l)
_PenNormal ; necess. for #'s in case of 0's
|