Ooops
November 28, 2020, 11:16:38 AM

Author Topic: [bb] 3 image effect functions by Nebula [ 1+ years ago ]  (Read 707 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] 3 image effect functions by Nebula [ 1+ years ago ]
« on: June 29, 2017, 12:28:43 AM »
Title : 3 image effect functions
Author : Nebula
Posted : 1+ years ago

Description : Function fadeimage(image,mm# = 1)
Function fadebarrect(image,sw=4,sh=4)
Function effectimage(image,m2#=1)

additional : GetG GetV GetR GetRGB


Code :
Code: BlitzBasic
  1. Function fadeimage(image,mm# = 1)
  2. If image = 0 Then Return
  3. Local im = CreateImage(ImageWidth(image),ImageHeight(image))
  4. im = CopyImage(image)
  5.  
  6. SetBuffer ImageBuffer(im)
  7. LockBuffer ImageBuffer(im)
  8. jm# = ImageWidth(im)-1
  9. pf# = Abs(100 / jm)
  10. pc# = 0
  11. For x=0 To ImageWidth(im)-1
  12.         ax# = x
  13.         mt# = (ax*pf);*mm
  14.         For y=0 To ImageHeight(im)-1
  15.                
  16.                 rc = ReadPixelFast(x,y)
  17.                 ar# = (getr(rc)  / 100) * mt
  18.                 ag# = (getg(rc) / 100) * mt
  19.                 ab# = (getb(rc) / 100) * mt
  20.                 If ar < 0 Then ar = 0
  21.                 If ag < 0 Then ag = 0
  22.                 If ab < 0 Then ab = 0
  23.                 If ar>255 Then ar = 255
  24.                 If ag > 255 Then ag = 255
  25.                 If ab > 255 Then ab = 255
  26.                 WritePixelFast x,y,getrgb(ar,ag,ab)
  27.         Next:Next
  28. UnlockBuffer ImageBuffer(im)
  29.  
  30. SetBuffer BackBuffer()
  31. Return im
  32. End Function
  33. ;
  34.  
  35. Function fadebarrect(image,sw=4,sh=4)
  36. If image = 0 Then Return
  37.  
  38. Local im = CreateImage(ImageWidth(image),ImageHeight(image))
  39. im = CopyImage(image)
  40. ;
  41. Local gw#= ImageWidth(im) - 1
  42. Local gh# = ImageHeight(im) - 1
  43. ;
  44. ;If gh > 320 Then gh = 320
  45. ;
  46. Local div#,rc#
  47. Local r#,g#,b#
  48.  
  49. div = .5
  50.  
  51. SetBuffer ImageBuffer(im)
  52. LockBuffer ImageBuffer(im)
  53. For x=0 To gw
  54. For y=0 To gh
  55. If RectsOverlap(x,y,1,1,sw,sh,gw-(sw*2),gh-(sh*2)) = False Then
  56.  
  57. ax# = x
  58. ay# = y
  59. ;If x*y > ((gw*2)+(gh*2)) Then div = -7 + ((ax/20) + (ay/100))  Else div = (5-(ax/20)) - (ay/100)
  60. If x*y > ((gw*2)+(gh*2)) Then div = -7 + ((ax/(gw/4.8)) + (ay/(gh/3.23)))  Else div = (5-(ax/(gw/4.8))) - (ay/(gh/3.23))
  61.  
  62. rc = ReadPixelFast(x,y)
  63.  
  64. r = getr(rc)*div
  65. g = getg(rc)*div
  66. b = getb(rc)*div
  67.  
  68. If r > 255 Then r = 255
  69. If g > 255 Then g = 255
  70. If b > 255 Then b = 255
  71. If r < 0 Then r = 0
  72. If g < 0 Then g = 0
  73. If b < 0 Then b = 0
  74.  
  75. WritePixelFast x,y,getrgb(r,g,b)
  76.  
  77. End If
  78. Next
  79. Next
  80. UnlockBuffer ImageBuffer(im)
  81. SetBuffer BackBuffer()
  82. Return im
  83. End Function
  84.  
  85.  
  86. Function effectimage(image,m2#=1)
  87. ar#=0
  88. ag#=0
  89. ab#=0
  90. pc#=0
  91. div#=0
  92. If image = 0 Then Return
  93. Local im = CreateImage(ImageWidth(image),ImageHeight(image))
  94.  
  95. im = CopyImage(image)
  96. SetBuffer ImageBuffer(im)
  97. LockBuffer ImageBuffer(im)
  98.  
  99. sw = 0
  100. For y=1 To ImageHeight(im)-2
  101.         Select sw
  102.         Case 0
  103.                 sw = 1 : div = (1.3*m2)
  104.         Case 1
  105.                 sw = 2 : div = (1.1*m2)
  106.         Case 2
  107.                 sw = 3 : div = 0
  108.         Case 3
  109.                 sw = 4 : div = (.7*m2)
  110.         Case 4
  111.                 sw = 5 : div = (.9*m2)
  112.         Case 5
  113.                 sw = 0 : div = 0
  114.         End Select
  115.        
  116.         If div <> 0
  117.         qqy# = y/4 : qqy = qqy#/40000
  118.         ;DebugLog qqy
  119.         For x=0 To ImageWidth(im)-1
  120.                 div = (div + 0.001) - qqy
  121.                 pc = ReadPixelFast(x,y)
  122.                 ar = getr(pc)*div
  123.                 ag = getg(pc)*div
  124.                 ab = getb(pc)*div
  125.                 sop = 0
  126.                 If ar > 255 Then ar = 255
  127.                 If ag > 255 Then ag = 255
  128.                 If ab > 255 Then ab = 255
  129.                 If ar < 0 Then ar = 0
  130.                 If ag < 0 Then ag = 0
  131.                 If ab < 0 Then ab = 0
  132.                 WritePixelFast x,y,getrgb(ar,ag,ab)
  133.         Next
  134.         End If
  135. Next
  136.  
  137. ar#=0
  138. ag#=0
  139. ab#=0
  140. pc#=0
  141. div#=0
  142. sw = 0
  143. For x=1 To ImageWidth(im)-2 Step 48
  144.         Select sw
  145.         Case 0
  146.                 sw = 1 : div = .97
  147.         Case 1
  148.                 sw = 2 : div = .95
  149.         Case 2
  150.                 sw = 3 : div = .91
  151.         Case 3
  152.                 sw = 4 : div = 0
  153.         Case 4
  154.                 sw = 5 : div = .94
  155.         Case 5
  156.                 sw = 0 : div = .97
  157.         End Select
  158.        
  159.         If div <> 0
  160.         ;qqy# = x/3 : qqy = qqy#/40000
  161.         ;DebugLog qqy
  162.         For y=0 To ImageHeight(im)-1
  163.                 ;div = (div + 0.001); - qqy
  164.                 pc = ReadPixelFast(x,y)
  165.                 ar = getr(pc)*div
  166.                 ag = getg(pc)*div
  167.                 ab = getb(pc)*div
  168.                 sop = 0
  169.                 If ar > 255 Then ar = 255
  170.                 If ag > 255 Then ag = 255
  171.                 If ab > 255 Then ab = 255
  172.                 If ar < 0 Then ar = 0
  173.                 If ag < 0 Then ag = 0
  174.                 If ab < 0 Then ab = 0
  175.                 WritePixelFast x,y,getrgb(ar,ag,ab)
  176.         Next
  177.         End If
  178. Next
  179.  
  180.  
  181. UnlockBuffer ImageBuffer(im)
  182. SetBuffer BackBuffer()
  183. Return im
  184. End Function
  185.  
  186.  
  187.  
  188.  
  189. ;Standard functions for converting colour to RGB values, for WritePixelFast and ReadPixelFast
  190. Function GetRGB(r,g,b)
  191.         Return b Or (g Shl 8) Or (r Shl 16)
  192. End Function
  193.  
  194. Function GetR(RGB)
  195.     Return RGB Shr 16 And %11111111
  196. End Function
  197.  
  198. Function GetG(RGB)
  199.         Return RGB Shr 8 And %11111111
  200. End Function
  201.  
  202. Function GetB(RGB)
  203.         Return RGB And %11111111
  204. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal