User Tools

Site Tools


graphicsutilitiesjmrstampedit

Differences

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

Link to this comparison view

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
 +      print
 +   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)