diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b33695df..0b40cda4 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 980de51a..8540b0c9 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 1c97ee56..eb0c1471 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -70,10 +70,11 @@ S.CB .EQ 20 CUR.T.ARROW .EQ 0 CUR.T.RESIZEX .EQ 2 CUR.T.RESIZEY .EQ 4 -CUR.T.RESIZEXY .EQ 6 -CUR.T.CROSS .EQ 8 -CUT.T.TEXT .EQ 10 -CUR.T.WAIT .EQ 12 +CUR.T.RESIZEXY1 .EQ 6 +CUR.T.RESIZEXY2 .EQ 8 +CUR.T.CROSS .EQ 10 +CUT.T.TEXT .EQ 12 +CUR.T.WAIT .EQ 14 *-------------------------------------- S.BM.F .EQ 0 S.BM.F.BBP1 .EQ %00000001 diff --git a/LIB/LIBGUI.G.CUR.txt b/LIB/LIBGUI.G.CUR.txt index 7e7b16f7..8b370dd0 100644 --- a/LIB/LIBGUI.G.CUR.txt +++ b/LIB/LIBGUI.G.CUR.txt @@ -10,9 +10,10 @@ CUR.bVisible .BS 1 CUR.Pos .BS S.POINT *-------------------------------------- CUR.HotPoints .DA #0,#0 CUR.T.ARROW - .DA #0,#0 CUR.ResizeX - .DA #0,#0 CUR.ResizeY - .DA #0,#0 CUR.ResizeXY + .DA #7,#4 CUR.ResizeX + .DA #6,#5 CUR.ResizeY + .DA #5,#5 CUR.ResizeXY1 + .DA #5,#5 CUR.ResizeXY2 .DA #0,#0 CUR.Cross .DA #0,#0 CUR.Text .DA #5,#6 CUR.Wait1 @@ -64,11 +65,89 @@ CUR.Arrow.MASK .DA %111.11111100 .DA %110.00000000 .DA %110.00001111 *-------------------------------------- -CUR.ResizeX +CUR.ResizeX .DA #S.BM.F.BBP1 + .DA #2 RowBytes + .DA 14 W + .DA 7 H + .DA CUR.ResizeX.MASK-CUR.ResizeX + + .DA %000000.00000000 + .DA %000100.00001000 + .DA %001100.00001100 + .DA %011111.11111110 + .DA %001100.00001100 + .DA %000100.00001000 + .DA %000000.00000000 +CUR.ResizeX.MASK + .DA %111001.11100111 + .DA %110001.11100011 + .DA %100000.00000001 + .DA %000000.00000000 + .DA %100000.00000001 + .DA %110001.11100011 + .DA %111001.11100111 *-------------------------------------- -CUR.ResizeY +CUR.ResizeY .DA #S.BM.F.BBP1 + .DA #2 RowBytes + .DA 9 W + .DA 11 H + .DA CUR.ResizeY.MASK-CUR.ResizeY + + .DA %0.00000000 + .DA %0.00010000 + .DA %0.01111100 + .DA %0.11111110 + .DA %0.00010000 + .DA %0.00010000 + .DA %0.00010000 + .DA %0.11111110 + .DA %0.01111100 + .DA %0.00010000 + .DA %0.00000000 +CUR.ResizeY.MASK + .DA %1.11101111 + .DA %1.11000111 + .DA %1.00000001 + .DA %0.00000000 + .DA %0.00000000 + .DA %1.11000111 + .DA %1.11000111 + .DA %0.00000000 + .DA %1.00000001 + .DA %1.11000111 + .DA %1.11101111 *-------------------------------------- -CUR.ResizeXY +CUR.ResizeXY1 .DA #S.BM.F.BBP1 + .DA #2 RowBytes + .DA 11 W + .DA 10 H + .DA CUR.ResizeXY1.MASK-CUR.ResizeXY1 + + .DA %000.00000000 + .DA %011.11000000 + .DA %011.10000000 + .DA %011.10000000 + .DA %010.01100000 + + .DA %000.00110010 + .DA %000.00011110 + .DA %000.00001110 + .DA %000.00011110 + .DA %000.00000000 +CUR.ResizeXY1.MASK + .DA %000.00000111 + .DA %000.00001111 + .DA %000.00011111 + .DA %000.00111110 + .DA %000.00011100 + + .DA %001.11000000 + .DA %011.11100000 + .DA %111.11000000 + .DA %111.10000000 + .DA %111.00000000 +*-------------------------------------- +CUR.ResizeXY2 *-------------------------------------- CUR.Cross *-------------------------------------- diff --git a/LIB/LIBGUI.S.CLIP.txt b/LIB/LIBGUI.S.CLIP.txt index 660846a6..b8b6349d 100644 --- a/LIB/LIBGUI.S.CLIP.txt +++ b/LIB/LIBGUI.S.CLIP.txt @@ -30,10 +30,7 @@ CLIP.BitBlt.9 pla CLIP.BitBlt.99 sec rts -CLIP.BitBlt clc - rts - - lda CB.Cache+S.CB.DestX +CLIP.BitBlt lda CB.Cache+S.CB.DestX ldx CB.Cache+S.CB.DestX+1 pha @@ -102,18 +99,68 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DestY pha >SCMPAX GC.Cache+S.GC.Y2 DestY after Y2....exit - bpl .9 + bmi .10 + sec + rts - pla +.10 pla >SCMPAX GC.Cache+S.GC.Y1 bpl .1 DestY Inside Y1-Y2, go check if Y1+H fit in * S.CB.DestY above S.GC.Y1: D=S.GC.Y1-S.CB.DestY, S.CB.SrcH-=D, S.CB.DestY=0, S.CB.Y1+=D + lda GC.Cache+S.GC.Y1 Compute D.... + sec + sbc CB.Cache+S.CB.DestY + sta D + lda GC.Cache+S.GC.Y1+1 + sbc CB.Cache+S.CB.DestY+1 + sta D+1 ....always positive + + lda CB.Cache+S.CB.SrcH S.CB.SrcH-=D + sec + sbc D + sta CB.Cache+S.CB.SrcH + iny + lda CB.Cache+S.CB.SrcH+1 + sbc D + sta CB.Cache+S.CB.SrcH+1 + bcc .99 Negative!!!! nothing to do,exit... + + stz CB.Cache+S.CB.DestY Dext.X=0 + stz CB.Cache+S.CB.DestY+1 + + lda CB.Cache+S.CB.Y1 S.CB.Y1+=D + clc + adc D + sta CB.Cache+S.CB.Y1 + lda CB.Cache+S.CB.Y1+1 + adc D+1 + sta CB.Cache+S.CB.Y1+1 S.CB.DestY=0, new between S.GC.Y1 & S.GC.Y2.... + * S.CB.DestY between S.GC.Y1 & S.GC.Y2: D=S.GC.Y2-S.CB.DestY -.1 - clc +.1 lda GC.Cache+S.GC.Y2 + sec + sbc CB.Cache+S.CB.DestY + sta D + lda GC.Cache+S.GC.Y2+1 + sbc CB.Cache+S.CB.DestY+1 + sta D+1 Always positive... + + lda D + + cmp CB.Cache+S.CB.SrcH + lda D+1 + sbc CB.Cache+S.CB.SrcH+1 + bcs .8 D >= SrcH....nothing to clip + + lda D SrcH < D, make SrcH=D + sta CB.Cache+S.CB.SrcH + lda D+1 + sta CB.Cache+S.CB.SrcH+1 + +.8 clc rts .9 pla diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 536af4af..7d1bde5d 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -83,7 +83,8 @@ L.CUR.SaveBuf .DA CUR.SaveBuf L.Cursors .DA CUR.Arrow .DA CUR.ResizeX .DA CUR.ResizeY - .DA CUR.ResizeXY + .DA CUR.ResizeXY1 + .DA CUR.ResizeXY2 .DA CUR.Cross .DA CUR.Text .DA CUR.Wait1 diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index e57a6ddc..e6be1960 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -66,22 +66,19 @@ CS.INIT >LDYA L.MSG.INIT >STYA CB.BitBlt+S.CB.SrcPtr >STYA ZPPtr1 - ldy #S.BM.W - lda (ZPPtr1),y - sta CB.BitBlt+S.CB.SrcW - iny - lda (ZPPtr1),y - sta CB.BitBlt+S.CB.SrcW+1 - iny - lda (ZPPtr1),y - sta CB.BitBlt+S.CB.SrcH - iny - lda (ZPPtr1),y - sta CB.BitBlt+S.CB.SrcH+1 - + ldy #S.BM.W+3 + ldx #3 + +.1 lda (ZPPtr1),y + sta CB.BitBlt+S.CB.SrcW,x + dey + dex + bpl .1 + jsr Destop.Paint - lda #CUR.T.WAIT + lda #CUR.T.ARROW + >STA.G CUR.T >LIBCALL hLIBGUI,LIBGUI.SetCursor.A >LIBCALL hLIBGUI,LIBGUI.ShowCursor @@ -113,6 +110,17 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ? .1 bit #S.MOUSE.S.CLK beq .4 + >LDA.G CUR.T + inc + inc + cmp #CUR.T.WAIT+2 + bne .2 + + lda #CUR.T.ARROW + +.2 >STA.G CUR.T + >LIBCALL hLIBGUI,LIBGUI.SetCursor.A + lda MouseData+S.MOUSE.X1 sta CB.BitBlt+S.CB.DestX lda MouseData+S.MOUSE.X1+1 @@ -204,6 +212,7 @@ CB.DrawLine .DA #0 .DUMMY .OR 0 DS.START +CUR.T .BS 1 DS.END .ED MAN