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

1 line
16 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' ;------------------------------------------ ; ; 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