Compare commits

...

2 commits

Author SHA1 Message Date
visionmercer
b978f2e8cf Brush size and canvas 2026-05-11 10:40:49 +02:00
visionmercer
c7c145f0b1 pencil tool (thickpixel) 2026-05-11 10:29:29 +02:00
2 changed files with 30 additions and 10 deletions

View file

@ -42,13 +42,21 @@ sub filledPolygon (Points() as long, col as long)
next y
end sub
sub thickpixel(x,y,col as long)
if state.brushsize=1 then
pset(x,y),col
else
line(x-0.5 * state.brushsize,y-0.5 * state.brushsize)-(x+0.5 * state.brushsize,y+0.5 * state.brushsize),col,bf
end if
end sub
sub thickline(x1,y1,x2,y2, col as long)
if state.brushsize=1 then
line(x1,y1)-(x2,y2),col
else
dim tempimg as long
dim od as long
tempimg=_newimage(10,10,32)
tempimg=_newimage(1,1,32)
od =_dest
_dest tempimg
pset(0,0),col

View file

@ -6,8 +6,8 @@ type statetype
offsetY as long
zoom as single
brushsize as integer
startX as integer
startY as integer
startX as long
startY as long
isDrawing as integer
end type
@ -43,9 +43,9 @@ layers(2).ihandle=_newimage(320,320,32)
layers(3).ihandle=_newimage(320,320,32)
_dest layers(0).ihandle
addcommand "canvas ("+str$(_width)+","+str$(_height)+")"
line (0,0)-(_width-1,_height-1),_rgb32(255),bf
_dest 0
state.tool = 1
state.zoom = 1.0
state.offsetX = 70 + 20
@ -129,8 +129,10 @@ canvas
select case keyin
case "+"
state.brushsize=state.brushsize+1
addcommand "brushsize ("+str$(state.brushsize)+")"
case "-"
if state.brushsize>1 then state.brushsize=state.brushsize-1
addcommand "brushsize ("+str$(state.brushsize)+")"
case chr$(19) ' ctrl+s
'TODO: save logic
case chr$(27)' esc
@ -303,8 +305,8 @@ sub canvas
dim r as integer
' 3. Calculate Canvas Coordinates
dim canX as integer
dim canY as integer
dim canX as long
dim canY as long
canX = int((_mousex - state.offsetX) / state.zoom)
canY = int((_mousey - state.offsetY) / state.zoom)
@ -370,8 +372,13 @@ sub canvas
select case state.tool
case 1 ' Pencil
_dest layers(1).ihandle
if canX=state.startX and canY=state.startY then
thickpixel canX,canY,drawCol
addcommand "pixel ("+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")"
else
thickline state.startX, state.startY, canX, canY, drawCol
addcommand "line ("+str$(state.startX)+","+ str$(state.startY)+","+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")"
addcommand "line ("+str$(state.startX)+","+str$(state.startY)+","+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")"
end if
state.startX = canX: state.startY = canY
case 2 ' Straight Line
thickline state.startX, state.startY, canX, canY, drawCol
@ -433,8 +440,13 @@ sub canvas
'_putimage , layers(2).ihandle, layers(1).ihandle
select case state.tool
case 2 ' Line
if canX=state.startX and canY=state.startY then
thickpixel canX,canY,drawCol
addcommand "pixel ("+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")"
else
thickline state.startX, state.startY, canX, canY, drawCol
addcommand "line ("+str$(state.startX)+","+str$(state.startY)+","+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")"
end if
case 3 ' Circle
r = int(sqr((canX - state.startX)^2 + (canY - state.startY)^2))
thickcircle state.startX, state.startY, r + 1, drawCol