A2osX/LIB/LIBGUI.S.CLIP.txt

155 lines
2.7 KiB
Plaintext
Raw Normal View History

PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
ClipLine.LEFT .EQ 1
ClipLine.RIGHT .EQ 2
ClipLine.BOTTOM .EQ 4
ClipLine.TOP .EQ 8
*--------------------------------------
* In:
* Control Block in CB.Cache
* Graphic Context in GC.Cache
*--------------------------------------
ClipLine jsr ClipLine.EncodeP1
jsr ClipLine.EncodeP2
.1 lda ClipLine.P1
ora ClipLine.P2
beq .88
lda ClipLine.P1
and ClipLine.P2
bne .99
lda ClipLine.P1
beq .5
bit #ClipLine.TOP
beq .2
* Y1 is above S.CB.Y1....
* DY=Y2-Y1;
jsr ClipLine.EncodeP1
bra .1
.2 bit #ClipLine.BOTTOM
beq .3
* Y1 is below S.CB.Y2....
jsr ClipLine.EncodeP1
bra .1
.3 bit #ClipLine.RIGHT
beq .4
* X1 is after S.CB.X2....
jsr ClipLine.EncodeP1
bra .1
* X1 is before S.CB.X1....
.4
jsr ClipLine.EncodeP1
bra .1
* P2
.5 lda ClipLine.P2
bit #ClipLine.TOP
beq .6
* Y2 is above S.CB.Y1....
jsr ClipLine.EncodeP2
bra .1
.6 bit #ClipLine.BOTTOM
beq .7
* Y2 is below S.CB.Y2....
jsr ClipLine.EncodeP2
bra .1
.7 bit #ClipLine.RIGHT
beq .8
* X2 is after S.CB.X2....
jsr ClipLine.EncodeP2
bra .1
* X2 is before S.CB.X1....
.8
jsr ClipLine.EncodeP2
bra .1
.88 clc
rts
.99 sec
rts
*--------------------------------------
ClipLine.EncodeP1
ldy #0
lda CB.Cache+S.CB.X1
ldx CB.Cache+S.CB.X1+1
jsr ClipLine.EncodeX.AX
tay
lda CB.Cache+S.CB.Y1
ldx CB.Cache+S.CB.Y1+1
jsr ClipLine.EncodeY.AX
sta ClipLine.P1
rts
*--------------------------------------
ClipLine.EncodeP2
ldy #0
lda CB.Cache+S.CB.X2
ldx CB.Cache+S.CB.X2+1
jsr ClipLine.EncodeX.AX
tay
lda CB.Cache+S.CB.Y2
ldx CB.Cache+S.CB.Y2+1
jsr ClipLine.EncodeY.AX
sta ClipLine.P2
rts
*--------------------------------------
ClipLine.EncodeX.AX
pha
>SCMPAX GC.Cache+S.GC.X1
bmi .1
tya
ora #ClipLine.LEFT
plx
rts
.1 pla
>SCMPAX GC.Cache+S.GC.X1
bpl .8
tya
ora #ClipLine.RIGHT
.8 rts
*--------------------------------------
ClipLine.EncodeY.AX
pha
>SCMPAX GC.Cache+S.GC.Y1
bmi .1
tya
ora #ClipLine.TOP
plx
rts
.1 pla
>SCMPAX GC.Cache+S.GC.Y1
bpl .8
tya
ora #ClipLine.BOTTOM
.8 rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.S.CLIP
LOAD /A2OSX.SRC/LIB/LIBGUI.S
ASM