diff --git a/include/tools.bm b/include/tools.bm index ba16767..cc937e3 100644 --- a/include/tools.bm +++ b/include/tools.bm @@ -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 diff --git a/pixler.bas b/pixler.bas index 34111e6..b33ada9 100644 --- a/pixler.bas +++ b/pixler.bas @@ -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 @@ -303,8 +303,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 +370,15 @@ sub canvas select case state.tool case 1 ' Pencil _dest layers(1).ihandle - thickline state.startX, state.startY, canX, canY, drawCol - addcommand "line ("+str$(state.startX)+","+ str$(state.startY)+","+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")" + 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 + 'thickline state.startX, state.startY, canX, canY, drawCol + 'addcommand "line ("+str$(state.startX)+","+ str$(state.startY)+","+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")" 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 - thickline state.startX, state.startY, canX, canY, drawCol - addcommand "line ("+str$(state.startX)+","+str$(state.startY)+","+str$(canX)+","+str$(canY)+","+hex$(drawCol)+")" + 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