graphicsutilitiesjmrstampedit

This shows you the differences between two versions of the page.

— |
graphicsutilitiesjmrstampedit [2016/01/01 22:37] (current) |
||
---|---|---|---|

Line 1: | Line 1: | ||

+ | ===Jim's Stamp Editor=== | ||

+ | |||

+ | Drawing tool to create a list of x and y values to define a stamp. | ||

+ | |||

+ | <code> | ||

+ | # stampdraw.kbs - j.m.reneau - 2012-12-31 | ||

+ | |||

+ | fastgraphics | ||

+ | npoints = 4 | ||

+ | xfactor = 10 | ||

+ | axis = int(graphwidth / 2 / xfactor)*xfactor | ||

+ | pointselected = -1 | ||

+ | pointradius = 3 | ||

+ | dim points(npoints*2) | ||

+ | global points, npoints, xfactor, axis, pointselected, pointradius | ||

+ | points = {-5,-5,-5,5,5,5,5,-5} | ||

+ | |||

+ | print "stampdraw.kbs" | ||

+ | print "j.m.reneau 2012-12-31" | ||

+ | print "S - Show point array" | ||

+ | print "I,X - insert point / delete point" | ||

+ | print "U,D,L,R - move stamp" | ||

+ | print "esc - exit" | ||

+ | |||

+ | call draw() | ||

+ | |||

+ | while true | ||

+ | if mouseb = 0 then call getselection() | ||

+ | if mouseb = 1 and pointselected <> -1 then call moveselection() | ||

+ | k = key | ||

+ | if k = 27 then | ||

+ | end | ||

+ | end if | ||

+ | if k = asc("S") then | ||

+ | for t = 0 to npoints-1 | ||

+ | print points[t*2] +","+points[t*2+1]+", "; | ||

+ | next t | ||

+ | |||

+ | end if | ||

+ | if k = asc("I") and pointselected <> -1 then | ||

+ | npoints = npoints + 1 | ||

+ | redim points(npoints*2) | ||

+ | for t = npoints-2 to pointselected step -1 | ||

+ | points[(t+1)*2] = points[t*2] | ||

+ | points[(t+1)*2+1] = points[t*2+1] | ||

+ | next t | ||

+ | print "shape has " + npoints + " points" | ||

+ | end if | ||

+ | if k = asc("X") and pointselected <> -1 then | ||

+ | if pointselected < npoints-1 then | ||

+ | for t = pointselected+1 to npoints-1 | ||

+ | points[(t-1)*2] = points[t*2] | ||

+ | points[(t-1)*2+1] = points[t*2+1] | ||

+ | next t | ||

+ | end if | ||

+ | npoints = npoints - 1 | ||

+ | redim points(npoints*2) | ||

+ | print "shape has " + npoints + " points" | ||

+ | end if | ||

+ | if k = asc ("L") then | ||

+ | for t = 0 to npoints-1 | ||

+ | points[t*2]-=1 | ||

+ | next t | ||

+ | end if | ||

+ | if k = asc ("R") then | ||

+ | for t = 0 to npoints-1 | ||

+ | points[t*2]+=1 | ||

+ | next t | ||

+ | end if | ||

+ | if k = asc ("U") then | ||

+ | for t = 0 to npoints-1 | ||

+ | points[t*2+1]-=1 | ||

+ | next t | ||

+ | end if | ||

+ | if k = asc ("D") then | ||

+ | for t = 0 to npoints-1 | ||

+ | points[t*2+1]+=1 | ||

+ | next t | ||

+ | end if | ||

+ | call draw() | ||

+ | pause .01 | ||

+ | end while | ||

+ | end | ||

+ | |||

+ | function cvtmouse(m) | ||

+ | m = (m-axis) / xfactor | ||

+ | if m >= 0 then | ||

+ | m += .5 | ||

+ | else | ||

+ | m -= .5 | ||

+ | end if | ||

+ | return int(m) | ||

+ | end function | ||

+ | |||

+ | subroutine moveselection() | ||

+ | x = cvtmouse(mousex) | ||

+ | y = cvtmouse(mousey) | ||

+ | if x <> points[pointselected*2] or y <> points[pointselected*2+1] then | ||

+ | points[pointselected*2] = x | ||

+ | points[pointselected*2+1] = y | ||

+ | call draw() | ||

+ | end if | ||

+ | end subroutine | ||

+ | |||

+ | subroutine getselection() | ||

+ | pointselected = -1 | ||

+ | x = cvtmouse(mousex) | ||

+ | y = cvtmouse(mousey) | ||

+ | for t = 0 to npoints-1 | ||

+ | if x = points[t*2] and y = points[t*2+1] then | ||

+ | pointselected = t | ||

+ | end if | ||

+ | next t | ||

+ | end subroutine | ||

+ | |||

+ | subroutine draw() | ||

+ | clg | ||

+ | color white | ||

+ | rect 0,0,graphwidth,graphheight | ||

+ | for t = 0 to 300 step xfactor | ||

+ | if t = axis then | ||

+ | color blue | ||

+ | else | ||

+ | color grey | ||

+ | end if | ||

+ | line 0,t,300,t | ||

+ | line t,0,t,300 | ||

+ | next t | ||

+ | color black | ||

+ | stamp axis,axis,xfactor,0,points | ||

+ | for t = 0 to npoints-1 | ||

+ | if pointselected=t then | ||

+ | color red | ||

+ | else | ||

+ | color green | ||

+ | end if | ||

+ | circle points[t*2]*xfactor+axis, points[t*2+1]*xfactor+axis, pointradius | ||

+ | next t | ||

+ | refresh | ||

+ | end subroutine | ||

+ | </code> | ||

graphicsutilitiesjmrstampedit.txt ยท Last modified: 2016/01/01 22:37 (external edit)