March 02, 2021, 02:29:02 PM

Author Topic: [bb] Interface maker bluegrid (b+) by Nebula [ 1+ years ago ]  (Read 488 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Interface maker bluegrid (b+)
Author : Nebula
Posted : 1+ years ago

Description : Mouse to move ; release ;

Fog textured ; buttonized ; grid lined.


Code :
Code: BlitzBasic
  1. ;
  2. ;
  3. ;
  4. Global wwidth = 640
  5. Global wheight =  480
  6.  
  7. Global win = CreateWindow("Test Window - Basic (3)",200,100,wwidth,wheight,0,3^2)
  8. Global can = CreateCanvas(0,0,GadgetWidth(win),GadgetHeight(win),win)
  9. ;
  10. Global md,mu
  11. ; wait until the user closes one of the windows
  12. ;
  13. Dim coppermap(1,640)
  14. Dim genmap(100,100)
  15. subdivide 0,0,100,100
  16. Type editor
  17.         Field x,y,w,h
  18.         Field x1,y1,x2,y2,ix1,iy1,mc
  19.         Field gt
  20. End Type
  21. Global editor.editor = New editor
  22. editorgt=1
  23. Type shape
  24.         Field bmap
  25.         Field x,y,w,h,div#
  26.         Field tp       
  27. End Type
  28. ;
  29. Type bmap
  30.         Field gridmap,colormap,effectmap,tempmap
  31.                
  32. End Type
  33. Global bmap.bmap = New bmap
  34. bmapgridmap = CreateImage(GadgetWidth(can),GadgetHeight(can))
  35. bmapcolormap = CreateImage(GadgetWidth(can),GadgetHeight(can))
  36. bmapeffectmap = CreateImage(GadgetWidth(can),GadgetHeight(can))
  37. bmap    empmap = CreateImage(GadgetWidth(can),GadgetHeight(can))
  38. ;
  39. drawgrid
  40. ;
  41. makecoppermap
  42. ;
  43. t = CreateTimer(20)
  44. ;
  45. ms = MilliSecs()
  46. ;flashyblendoval 100,100,100,100,1.5
  47. ;flashyblendoval 200,200,64,64,3.5
  48. ms = MilliSecs()-ms
  49. ;
  50. Repeat
  51.         ;
  52.         vw$ = WaitEvent()
  53.         If vw = $803 Then Exit
  54.         ;
  55.         Select vw
  56.                 Case $205
  57.                         ActivateGadget can
  58.                        
  59.                 Case $102
  60.                         Select EventData()
  61.                                 Case 2:editorgt = 1
  62.                                 Case 3:editorgt = 2
  63.                         End Select
  64.                 Case $201 ; mouse down
  65.                                 If RectsOverlap(EventX(),EventY(),1,1,GadgetX(can),GadgetY(can),GadgetWidth(can),GadgetHeight(can)) = True Then
  66.                                 md = True : mu = False                 
  67.                                 ;this.shape = New shape
  68.                                 ;this   p = 1
  69.                                 ;thisx = EventX()
  70.                                 ;thisy = EventY()
  71.                                 ;thisw = 100
  72.                                 ;thish  = 100
  73.                                 ;thisdiv = 1.5
  74.                                 editorix1 = EventX()
  75.                                 editoriy1 = EventY()
  76.                                 editorx1 = EventX()
  77.                                 editory1 = EventY()
  78.                                 editorx2 = EventX()
  79.                                 editory2 = EventY()
  80.                                 End If
  81.                 Case $203
  82.                         If EventX() < GadgetWidth(can) And EventX() > 0
  83.                                 editorx2 = EventX()
  84.                         End If
  85.                         If EventY() < GadgetHeight(can)-32 And EventY()>0
  86.                                 editory2 = EventY()
  87.                         End If
  88.                        
  89.                        
  90.                        
  91.                 Case $202 ; mouse up
  92.                         md = False : mu=True
  93.                         this.shape = New shape
  94.                         thisx = editorx1
  95.                         thisy = editory1
  96.                         thisw = editorx2-editorx1
  97.                         thish = editory2 - editory1
  98.                         thisdiv=Rnd(1,5)
  99.                         this    p=editorgt
  100.                                   If editorx2 < editorix1 Then thisx = editorx2 : thisw = editorx1 - editorx2
  101.                                   If editory2 < editoriy1 Then thisy = editory2 : thish = editory1 - editory2
  102.  
  103.                         flashyblendoval(this.shape)
  104.                         FlushMouse()
  105.                 Case $4001
  106.                         SetBuffer CanvasBuffer(can)
  107.                         Cls
  108.                         DrawBlock bmapgridmap,0,0
  109.                         DrawImage bmapeffectmap,0,0
  110.                         Color 255,255,255
  111.                         Text 0,0,md
  112.                         Text 0,20,mu
  113.                         ;Rect 100,100,200,200
  114.                         ;drawrectangles()
  115.                         ;
  116.                         ax = Sin(n1) * 128
  117.                         n1=n1+16
  118.                         ;DebugLog ax
  119.                         ;
  120.                         If md = True Then ovalmouserect
  121.                         ;
  122.                         Text 320,0, ms
  123.                         Text 320,20,shapecount()
  124.                         ;flashyoval 128+ax,128+ax,64,64,128,128+ax,1
  125.                         ;blendcopypasteoval 128+ax,128+ax,64,64,1.5
  126.                         ;colmapdisplay
  127.                         ;
  128.                         ;blendcopypasteoval 320+ax,140-ax,32,32,1.5
  129.                         ;
  130.                         FlipCanvas can
  131.         End Select
  132.         ;
  133. Forever
  134.  
  135. End ; bye!
  136. Function drawrectangles()
  137.         ;
  138.         For this.shape = Each shape
  139.                 ;
  140.                 Select this     p
  141.                         Case 1
  142.                                 Color 200,0,0
  143.                                 Oval thisx,thisy,thisw,thish,True
  144.                 End Select
  145.                 ;
  146.         Next
  147.         ;
  148. End Function
  149. Function drawrectangle(x,y,w,h)
  150.         Color 200,0,0
  151.         Rect x,y,w,h,True
  152. End Function
  153.  
  154. Function drawgrid()
  155.         ;
  156.         SetBuffer ImageBuffer(bmapgridmap)
  157.                 n = 0
  158.                 Color n,n,255
  159.                 nn = GadgetHeight(can)/16
  160.                 sw = 1
  161.                 For y = 0 To ImageHeight(bmapgridmap) Step 32
  162.                 For x = 0 To ImageWidth(bmapgridmap) Step 32   
  163.                         oldn = n
  164.                         n2 = getcolormapcolor(x,y,2)
  165.                         Color n2,n2,n2
  166.                         Rect x,y,33,33,False
  167.                         sw = -sw                       
  168.                         n = oldn                       
  169.                 Next:
  170.                         Color n,n,255
  171.                         n = n + nn
  172.                         If n > 256 - 32 Then nn = -nn
  173.                         ;
  174.                         ;DebugLog n
  175.                         ;
  176.                 Next           
  177.                 ; color map plotted
  178.                 Color 255,100,100
  179.                 For y=0 To ImageHeight(bmapgridmap) Step 4
  180.                 For x=0 To ImageWidth(bmapgridmap) Step 4
  181.                         ;
  182.                         r = getcolormapcolor(x,y,3)
  183.                         Color r,r,r
  184.                        
  185.                         Plot x,y
  186.                         ;
  187.                 Next:Next
  188.                 ;
  189.                 ;
  190.                                 Color 255,100,100
  191.                        
  192.                         For i=0 To 460
  193.                                 x=Rand(GadgetWidth(can))
  194.                                 y=Rand(GadgetHeight(can))
  195.                                 r = getcolormapcolor(x,y,2)
  196.                                 ;
  197.                                 Color r,r,r
  198.                                 ;
  199.                                 ;
  200.                                 ;
  201.                                 Plot x-Rand(16),y-Rand(16)
  202.                                 ;
  203.                         Next
  204.                        
  205.         SetBuffer CanvasBuffer(can)
  206.         ;
  207. End Function
  208.  
  209. Function makecolormap()
  210. End Function
  211. ;
  212. Function getColormapcolor(x#,y#,m#)
  213. If x<0 Then Return
  214. If y>GadgetHeight(can) Then Return
  215. If x>GadgetWidth(can) Then Return
  216. If x<0 Then Return
  217.         a# = 100
  218.         Local mx# = ( 640  / a )
  219.         Local my# = ( 480  / a )
  220.         ;DebugLog x + ": " + x/mx
  221.         ;DebugLog y
  222.         ;DebugLog genmap(x / mx , y / my)
  223.         r = (genmap(x / mx,y / my) + 34) * m#
  224.         If r<0 Then r = 0
  225.         If r>255 Then r=255
  226.         Return r
  227. End Function
  228. ;
  229. Function colmapdisplay()
  230.         For x=0 To GadgetWidth(can) Step 32
  231.         For y=0 To GadgetHeight(can) Step 16
  232.                 n$ = getcolormapcolor(x,y,3)
  233.                 Color 255,255,n
  234.                 Text x,y,n$
  235.         Next:Next
  236. End Function
  237. ;
  238. Function SubDivide(x1,y1,x2,y2);
  239.  If (x2-x1<2) And (y2-y1<2) Then Return;
  240. ;  {If this is pointing at just on pixel, Exit because
  241. ;   it doesn't need doing}
  242.  
  243.   dist=(x2-x1+y2-y1); {Find distance between points.  Use when generating a random number}
  244.   hdist=dist / 2;
  245.  
  246.   midx=(x1+x2) / 2; {Find Middle Point}
  247.   midy=(y1+y2) / 2;
  248.  
  249.   c1=Genmap(x1,y1); {Get pixel colors of corners}
  250.   c2=Genmap(x2,y1);
  251.   c3=Genmap(x2,y2);
  252.   c4=Genmap(x1,y2);
  253.  
  254. ;  { If Not already defined, work out the midpoints of the corners of
  255. ;   the rectangle by means of an average plus a random number. }
  256.   If Genmap(midx,y1)=0 Then Genmap(midx,y1)=((c1+c2+Rand(dist)-hdist) / 2);
  257.   If Genmap(midx,y2)=0 Then Genmap(midx,y2)=((c4+c3+Rand(dist)-hdist) / 2);
  258.   If Genmap(x1,midy)=0 Then Genmap(x1,midy)=((c1+c4+Rand(dist)-hdist) / 2);
  259.   If Genmap(x2,midy)=0 Then Genmap(x2,midy)=((c2+c3+Rand(dist)-hdist) / 2);
  260.  
  261. ;  { Work out the middle point... }
  262.   genmap(midx,midy) = ((c1+c2+c3+c4+Rand(dist)-hdist) / 4)
  263.  ;  { Now divide this rectangle into 4, And call again For Each smaller
  264. ;   rectangle }
  265.   SubDivide(x1,y1,midx,midy);
  266.   SubDivide(midx,y1,x2,midy);
  267.   SubDivide(x1,midy,midx,y2);
  268.   SubDivide(midx,midy,x2,y2);
  269. End Function
  270.  
  271. Function flashyoval_old(this.shape,dx,dy,w,h,offx,offy,dark#=2)
  272.         If w=<0 Then Return
  273.         If h=<0 Then Return
  274.         Local brrb = CreateImage(w,h)
  275.                 SetBuffer ImageBuffer(brrb)
  276.                 Color 255,255,255
  277.                 Oval 0,0,w,h,True
  278.                 For y = 0 To h-1
  279.                 For x = 0 To w-1
  280.                 GetColor x,y
  281.                 If ColorRed()>0 Then
  282.                         k = getcolormapcolor(x+offx,y+offy,dark)
  283.                         kk = coppermap(0,y)
  284.                         SetBuffer ImageBuffer(bmapgridmap)
  285.                         GetColor x,y
  286.                         zr = ColorRed()/2
  287.                         zg = ColorGreen()/2
  288.                         zb = ColorBlue()/2
  289.                         SetBuffer ImageBuffer(brrb)
  290.                         ar = k/2
  291.                         ag = (k/2)+(kk/3)
  292.                         ab = k+kk/3
  293.                         ;Color k/2,k/2+(kk/3),k+(kk/3)
  294.                         qr = zr+ar
  295.                         qg = zg+ag
  296.                         qb = zb+ab
  297.                         If qr>255 Then qr=255
  298.                         If qg>255 Then qg=255
  299.                         If qb>255 Then qb=255
  300.                         If qr<0 Then qr = 0
  301.                         If qg<0 Then qg = 0
  302.                         If qb<0 Then qb = 0
  303.                         Color qr,qg,qb
  304.                         Plot x,y
  305.                 End If
  306.                 Next:Next
  307.                
  308.                 For i=0 To 5
  309.                         Color k/2+(i*5),k/2+(kk/3),k+(kk/3)
  310.  
  311.                         Oval i,i,w-i*2,h-i*2,False
  312.                         Oval i+1,i,w-i*2,h-i*2,False
  313.                 Next
  314.                         Color (k/2+(i*5))+20,(k/2+(kk/3))+20,(k+(kk/3))+20
  315.                         Oval 0,0,w,h,False
  316.  
  317.                 ;SetBuffer CanvasBuffer(can)
  318.                 ;SetBuffer ImageBuffer(bmap     empmap)
  319.                 ;DrawImage brrb,dx,dy
  320.                 thismap = CreateImage(thisw,thish)
  321.                 SetBuffer ImageBuffer(thismap)                        
  322.                 DrawImage brrb,0,0
  323.                 FreeImage brrb
  324. End Function
  325. ;
  326. Function flashyoval(this.shape,dx,dy,w,h,offx,offy,dark#=2)
  327.         ms = MilliSecs()
  328.         If w=<0 Then Return
  329.         If h=<0 Then Return
  330.         Local brrb = CreateImage(w,h)
  331.                 SetBuffer ImageBuffer(brrb)
  332.                 Color 255,255,255
  333.                 Oval 0,0,w,h,True
  334.                 For y = 0 To h-1
  335.                 For x = 0 To w-1
  336.                 ;GetColor x,y
  337.                 LockBuffer ImageBuffer(brrb)
  338.                  pff = ReadPixelFast(x,y)
  339.                 ;DebugLog getr(pff)
  340.                 UnlockBuffer ImageBuffer(brrb)
  341.                 ;If ColorRed()>0 Then
  342.                 ;DebugLog getr(pff)
  343.                 ;DebugLog getr(pff)
  344.                 If getr(pff) > 0 Then
  345.                 ;End
  346.                         ;DebugLog getr(pff)
  347.                         k = getcolormapcolor(x+offx,y+offy,dark)
  348.                         kk = coppermap(0,y)
  349.                         SetBuffer ImageBuffer(bmapgridmap)
  350.                         LockBuffer ImageBuffer(bmapgridmap)
  351.                         krr = ReadPixelFast(x,y)
  352.                         zr = getr(krr)/2
  353.                         zg = getg(krr)/2
  354.                         zb = getb(krr)/2
  355.                         UnlockBuffer ImageBuffer(bmapgridmap)
  356.                         ;GetColor x,y
  357.                         ;zr = ColorRed()/2
  358.                         ;zg = ColorGreen()/2
  359.                         ;zb = ColorBlue()/2
  360.                         SetBuffer ImageBuffer(brrb)
  361.                         ar = k/2
  362.                         ag = (k/2)+(kk/3)
  363.                         ab = k+kk/3
  364.                         ;Color k/2,k/2+(kk/3),k+(kk/3)
  365.                         qr = zr+ar
  366.                         qg = zg+ag
  367.                         qb = zb+ab
  368.                         If qr>255 Then qr=255
  369.                         If qg>255 Then qg=255
  370.                         If qb>255 Then qb=255
  371.                         If qr<0 Then qr = 0
  372.                         If qg<0 Then qg = 0
  373.                         If qb<0 Then qb = 0
  374.                         ;                      
  375.                         ;
  376.                         LockBuffer ImageBuffer(brrb)
  377.                         WritePixelFast x,y,getrgb(qr,qg,qb)
  378.                         UnlockBuffer ImageBuffer(brrb)
  379.                         ;
  380.                         ;Color qr,qg,qb
  381.                         ;Plot x,y
  382.                 End If
  383.                 Next:Next
  384.                
  385.                 For i=0 To 5
  386.                         Color k/2+(i*5),k/2+(kk/3),k+(kk/3)
  387.  
  388.                         Oval i,i,w-i*2,h-i*2,False
  389.                         Oval i+1,i,w-i*2,h-i*2,False
  390.                 Next
  391.                         Color (k/2+(i*5))+20,(k/2+(kk/3))+20,(k+(kk/3))+20
  392.                         Oval 0,0,w,h,False
  393.  
  394.                 ;SetBuffer CanvasBuffer(can)
  395.                 ;SetBuffer ImageBuffer(bmap     empmap)
  396.                 ;DrawImage brrb,dx,dy
  397.                 thismap = CreateImage(thisw,thish)
  398.                 SetBuffer ImageBuffer(thismap)                        
  399.                 DrawImage brrb,0,0
  400.                 FreeImage brrb
  401.                 DebugLog MilliSecs()-ms
  402. End Function
  403.  
  404. ;
  405. Function makecoppermap()
  406.         a# = 255
  407.         b# = 480
  408.         c# = a/b
  409.         For y=0 To 480-1
  410.                 r# = r# + c
  411.                 coppermap(0,y) = r
  412.                 ;DebugLog r
  413.         Next
  414. End Function
  415.  
  416. Function blendcopypasteoval(xb,yb,w,h,div#);paste 1 , paste many
  417. Local m = CreateImage(w,h)
  418. Local mm = CreateImage(w,h)
  419. Local aa#
  420. Local bb#
  421. Local cc#
  422. Local cr#,cg#,cb#
  423.  
  424. MaskImage m,0,0,0
  425. SetBuffer ImageBuffer(m)
  426. Color 255,255,255
  427. Oval 0,0,w,h,True
  428. LockBuffer ImageBuffer(m)
  429. For y=0 To h-1
  430. For x=0 To w-1
  431. pff = ReadPixelFast(x,y)
  432. ;GetColor x,y
  433. If getr(pff) > 0 Then
  434. ;If ColorRed() > 0 Then
  435. ;Color 0,0,0
  436. WritePixelFast x,y,getrgb(0,0,0)
  437. ;Plot x,y
  438. Else
  439. ;Color 255,255,255
  440. ;Plot x,y
  441. WritePixelFast x,y,getrgb(255,255,255)
  442. End If
  443. Next:Next
  444. UnlockBuffer ImageBuffer(m)
  445. MaskImage mm,255,255,255
  446. SetBuffer ImageBuffer(bmap      empmap)
  447. GrabImage mm,xb,yb
  448. SetBuffer ImageBuffer(mm)
  449. For y=0 To ImageHeight(mm);
  450. For x=0 To ImageWidth(mm)
  451. GetColor x,y
  452. cr# = ColorRed()
  453. cg# = ColorGreen()
  454. cb# = ColorBlue()
  455. cr#=cr#*div#
  456. cg#=cg#*div#
  457. cb#=cb#*div#
  458. If cr<0 Then cr=0
  459. If cg<0 Then cg=0
  460. If cb<0 Then cb=0
  461. If cr>255 Then cr=255
  462. If cg>255 Then cg=255
  463. If cb>255 Then cb=255
  464.  
  465. ;If aa<255
  466.         Color cr,cg,cb
  467.         Plot x,y
  468.        
  469. ;End If
  470.  
  471. Next:Next
  472. DrawImage m,0,0
  473. ;SetBuffer CanvasBuffer(can)
  474. SetBuffer ImageBuffer(bmap      empmap)
  475. DrawImage mm,xb,yb
  476. FreeImage m
  477. FreeImage mm
  478. End Function
  479.  
  480. Function flashyblendoval(this.shape)
  481.  
  482. ;       For this.shape = Each shape     `
  483.                 If this p = 1 Then
  484.                 x=thisx
  485.                 y=thisy
  486.                 w=thisw
  487.                 h=thish
  488.                 div = thisdiv
  489.                 flashyoval this,x,y,w,h,x,y,div
  490.                 End If
  491. ;       Next
  492.        
  493.         SetBuffer ImageBuffer(bmapeffectmap)
  494.         For that.shape = Each shape
  495.                 Select that     p
  496.                 Case 1
  497.                 DrawImage thatmap,thatx,thaty
  498.                 Case 2
  499.                 drawcircrect that.shape
  500.                 End Select
  501.         Next
  502.         ;bmapeffectmap = CopyImage(bmap empmap)
  503.  
  504. End Function
  505.  
  506.  
  507. Function ovalmouserect()
  508.         Color 255,255,0
  509.         mx = editorx1
  510.         my = editory1
  511.         mw = editorx2 - editorx1
  512.         mh = editory2 - editory1
  513.         ;
  514.         If editorx2 < editorix1 Then mx = editorx2 : mw = editorx1 - editorx2
  515.         If editory2 < editoriy1 Then my = editory2 : mh = editory1 - editory2
  516.         ;
  517.         Oval mx,my,mw,mh,False
  518.         Rect mx,my,mw,mh,False
  519.  
  520. End Function
  521. Function setmouse()
  522.         a = editorx1
  523.         b = editory1
  524.         c = editorx2
  525.         d = editory2
  526.         e = editorw
  527.         f = editorh
  528.         ;
  529.        
  530.         ;
  531. End Function
  532.  
  533. ;Standard functions for converting colour to RGB values, for WritePixelFast and ReadPixelFast
  534. Function GetRGB(r,g,b)
  535.         Return b Or (g Shl 8) Or (r Shl 16)
  536. End Function
  537.  
  538. Function GetR(rgb)
  539.     Return rgb Shr 16 And %11111111
  540. End Function
  541.  
  542. Function GetG(rgb)
  543.         Return rgb Shr 8 And %11111111
  544. End Function
  545.  
  546. Function GetB(rgb)
  547.         Return rgb And %11111111
  548. End Function
  549.  
  550. Function shapecount()
  551.         For this.shape = Each shape
  552.                 cnt=cnt+1
  553.         Next
  554.         Return cnt
  555. End Function
  556.  
  557. Function drawcircrect(this.shape)
  558.  
  559.         Color 255,255,0
  560.         mx = thisx
  561.         my = thisy
  562.         mw = thisw
  563.         mh = thish
  564.         ;If editorx2 < editorix1 Then mx = editorx2 : mw = editorx1 - editorx2
  565.         ;If editory2 < editoriy1 Then my = editory2 : mh = editory1 - editory2
  566.         ;
  567.         Oval mx,my,mw,mh,False
  568.         Rect mx,my,mw,mh,False
  569.  
  570. End Function


Comments :


Lane(Posted 1+ years ago)

 Function Create Window Not Found.Somebody PLEASE make the source code section sorted by compiler.


Jesse(Posted 1+ years ago)

 It is. just go to the top and click the "Code Archives" tab, select category then language tab.


Dabhand(Posted 1+ years ago)

 I dont know if you've noticed, but it has (b+) in the archive title, which obviously states its for BlitzPlus!


_PJ_(Posted 1+ years ago)

 Attempt to release Unknown object error because Graphics commands are called without initialising a graphics mode.Please can someone explain how they use B+GUI functions within a Graphics Windows???????


Floyd(Posted 1+ years ago)

 Works fine here; BlitzPlus 1.47, Windows 7 64-bit.Compatibility is set to XP Service Pack 3. Don't know if it matters. Windows probably made that choice since I don't remember doing anything.


_PJ_(Posted 1+ years ago)

 B+ 1.47Windows 10 (I tried in XP compatibility but no difference)Did you run in Debug Mode and attempt clicking on the window etc. Floyd?Clicking on the window (not title bar) gives "Image Does Not Exist error"Every time the program exits I receive the Attempt to Release Unknown Object error.


Floyd(Posted 1+ years ago)

 Works in both Debug and Release modes.When I hold the left mouse button down and drag there is a yellow rectangle with an oval inscribed. On release it becomes a filled blue oval with thick border.Here's what part of my screen looks like after two of these with a third in progress. This is clipped out of a 1920 x 1080 display.


Floyd(Posted 1+ years ago)

 If you get Image Does Not Exist then maybe there is something wrong with DirectX. I have version 11.I recall some other error reports with people claiming they had to install an earlier version ( DX 9 ) to get something working. I think it was Blitz3D/Windows 8 related.And back before Windows 10 was released there were reports of many games not working with the tech preview. The fix had something to do with updating DirectX.


_PJ_(Posted 1+ years ago)

 Thanks Floyd, that sounds about right, I'm having to use my brother in law's computer for the time being, and aside from standard 'critical' updates etc. I don't think there's been any changes to Windows or DirectX.Reassured to know that the code itself should be reliable then :)


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal