# WimpWorks Information File
# WimpWorks  Jaffa Software 1996-8. All rights reserved.

DEF TASKdetails
	Name		DisSquare
	Purpose		To draw lots of squares
	Author		Victor Markwart
	Licence		Freeware
	Version		0.03 18 Jan 1999
	Compress	True
	Memory		64K
	IconbarSide	Right
	IconbarPriority	&00000000
	IconbarSprite	!dissquare
	IconbarText	
ENDTASK

DEF WEMinclude
	DrawWEM
	Starter Pack
ENDWEM

DEF MENUiconMenu%
	DisSquare
	Info
		S(infoWindow%)
		
	Quit
		
		CLOSEDOWN
ENDMENU

DEF SUBR_PROCiconclick
	Event	3
	Every	-1
DEF PROCiconclick(button%)
  IF button%<>2 THEN
    PROCmouse(mx%, my%, mb%, window, icon)
    MOVEWINDOW(choices, mx%-300, my%+150)
    OPENWINDOW(choices)
  ENDIF
ENDPROC
ENDSUBR

DEF SUBR_PROCwindow_klik
	Event	12
	Every	-1
DEF PROCwindow_klik(window%, icon%, button%)
 LOCAL a$
 CASE window% OF
    WHEN choices
    a$=READICON(window%, icn_no)
    IF a$="" THEN
      a$="5"
    ENDIF
    no%=VAL(a$)
    CASE icon% OF
      WHEN icn_up:
        no%+=1
        IF no%>99 THEN no%=99
        SETICON(window%, icn_no, STR$(no%))
      WHEN icn_down:
        no%-=1
        IF no%<1 THEN no%=1
        SETICON(window%, icn_no, STR$(no%))
      WHEN icn_cancel:
        CLOSEWINDOW(choices)
      WHEN icn_create:
        minx%=0
        miny%=0
        maxx%=1024*256
        maxy%=1024*256
        OPENWINDOW(dis_square)
        PROCDisSquare
        IF button%=4 THEN 
          CLOSEWINDOW(choices)
        ENDIF
      OTHERWISE:
        sel%=GROUPSTATE(choices,1)
        IF sel%=-1 THEN sel%=19 : SETSTATE(choices, sel%, TRUE)
        col%=colour%(sel% - 7) 
    ENDCASE

  WHEN dis_square
    CASE button% OF
      WHEN 2:
        a$=STR$(no%)
        IF LEN(a$)<2 THEN a$="0"+a$
        SETSAVE("DisSquar"+a$, "file_aff")
        OPENSAVE
      WHEN 4: CLOSEWINDOW(dis_square)
    ENDCASE
  ENDCASE    
ENDPROC
ENDSUBR

DEF SUBR_PROCmouse
	Event	-1
	Every	-1
DEF PROCmouse(RETURN mx%, RETURN my%, RETURN mb%, RETURN window, RETURN icon)
  SYS "Wimp_GetPointerInfo",,workspace%
  mx%= workspace%!0
  my%= workspace%!4
  mb%= workspace%!8
  window= workspace%!12
  icon= workspace%!16  
ENDPROC
ENDSUBR

DEF SUBR_PROCstart_up
	Event	0
	Every	-1
DEF PROCstart_up
  DIM workspace% 20
  DIM colour%(17)
  icn_no=1
  icn_down=2
  icn_up=3
  icn_cancel=5
  icn_create=4
  no%=5
  sel%=19
  colour%(1)=&ffffff00
  colour%(2)=&d0d0d000
  colour%(3)=&b0b0b000
  colour%(4)=&90909000
  colour%(5)=&70707000
  colour%(6)=&50505000
  colour%(7)=&30303000
  colour%(8)=&00000000
  colour%(9)=&90400000
  colour%(10)=&00e0e000
  colour%(11)=&00c00000
  colour%(12)=&0000d000
  colour%(13)=&b0e0e000
  colour%(14)=&00805000
  colour%(15)=&00b0ff00
  colour%(16)=&ffb00000 
  SETSTATE(choices,sel%,TRUE)
  col%=colour%(sel% - 7)
  
  SETICON(choices, icn_no, STR$(no%))
ENDPROC
ENDSUBR

DEF SUBR_PROCDisSquare
	Event	-1
	Every	-1
DEF PROCDisSquare
  CLWIN(dis_square)
  font_handle%=0
  HOURON
  DRAW_INIT(1)
  DRAW_FONT("Homerton.Medium", font_handle%)
  DRAW_STARTPATH(-1, col%, 0)
  DRAW_MOVE(minx%, miny%)
  FOR j=1 TO 2*no%     
    HOURPERCENT(j, 2*no%)
 
    PROCsquare(minx%, miny%, maxx%, maxy%)
    difx=(maxx%-minx%)/no%
    dify=(maxy%-miny%)/no%
    FOR i=1 TO no%-1
      x_ray=minx%+difx
      y_ray=miny%+difx
      next_y=miny%+dify*i
      next_x=minx%+difx*i
      DRAW_MOVE(minx%, next_y)
      DRAW_LINE(minx%+difx, next_y)
      DRAW_MOVE(maxx%-difx, next_y)
      DRAW_LINE(maxx%, next_y)
      DRAW_MOVE(next_x, miny%)
      DRAW_LINE(next_x, miny%+dify)
      DRAW_MOVE(next_x, maxx%-dify)
      DRAW_LINE(next_x, maxy%)
    NEXT
    minx%=minx%+difx
    maxx%=maxx%-difx
    miny%=miny%+dify
    maxy%=maxy%-dify
  NEXT
  PROCsquare(minx%, miny%, maxx%, maxy%)
  HOUROFF
  DRAW_ENDPATH
  drawfile%=DRAW_FILE
  drawsize%=DRAW_SIZE
  file$=FNscrap_dir+".DisSquare"
  DRAW_SAVE(file$)
  DRAW_EXIT
  RELEASE(drawfile%)
  drawfile%=LOADFILE(file$)
  IF drawfile%=-1 THEN WARNING(TOKEN("NoMem"), "DisSquare")
  SYS "OS_File",17,file$ TO ,,,,drawsize%
  DRAW(dis_square,0,0,100,100,drawfile%, drawsize%) 
ENDPROC
ENDSUBR

DEF SUBR_PROCsquare
	Event	-1
	Every	-1
DEF PROCsquare(minx%, miny%, maxx%, maxy%)
  DRAW_MOVE(minx%, miny%)
  DRAW_LINE(minx%, maxy%)
  DRAW_LINE(maxx%, maxy%)
  DRAW_LINE(maxx%, miny%)
  DRAW_LINE(minx%, miny%) 
ENDPROC
ENDSUBR

DEF SUBR_FNscrap_dir
	Event	-1
	Every	-1
DEF FNscrap_dir
  LOCAL a$
  a$=OSVAR("Wimp$ScrapDir")
  IF a$="" THEN
    MESSAGE("Unable to find 'Wimp$ScrapDir'. Please show the system the !Scrap application", "DisSquare Error","warning","OK","","","")
  ENDIF  
=a$
ENDSUBR

DEF SUBR_FNsave_file
	Event	8
	Every	-1
DEF FNsave_file(file$)
  LOCAL a$, b$
  b$=FNscrap_dir
  IF b$<>"" THEN
    a$= "copy " + b$ +".DisSquare " + file$ + " A~CDFL~V"
    SYS "XOS_CLI", a$ 
  ENDIF
=0
ENDSUBR

