November 28, 2020, 11:16:38 AM

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

#### 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 effectimage(image,m2#=1)

additional : GetG GetV GetR GetRGB

Code :
Code: BlitzBasic
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.
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.
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.
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
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
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