Advertisement
Guest User

Untitled

a guest
Jul 8th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.56 KB | None | 0 0
  1.  
  2. alias prev.win { return window -pBk0w0o +b @ImagePreview $$1 $$2 $$3 $$4 }
  3.  
  4. on ^*:hotlink:*:*:{
  5. if ($regex($1,/^(http:\x2F\x2F)?(?(1)(?:www\.)?|www\.).+?\x2F(?:.+\x2F)?.+\.(?:jp(?:e)?g|gif|png|bmp)$/i) && %imgready == $true) {
  6. set %img.x $mouse.mx
  7. set %img.y $mouse.my
  8. if ((%imgclick == $true && $mouse.key & 1) || %imgclick == $false) {
  9. if (%imgpre && $exists(imgcache\ $+ $gettok($regsubex($1,/^(?:.+?\w)\x2F/,),-1,47))) {
  10. if ($window(@ImagePreview)) window -c @ImagePreview
  11. var %imgfile = imgcache\ $+ $gettok($regsubex($1,/^(?:.+?\w)\x2F/,),-1,47)
  12. var %w = $pic(%imgfile).width, %h = $pic(%imgfile).height
  13. if (%imgaspect && !%imgprct) {
  14. if (%w > %h) var %w = $round($calc(%w * (%imgsize / %h)),0), %h = %imgsize
  15. else var %h = $round($calc(%h * (%imgsize / %w)),0), %w = %imgsize
  16. }
  17. elseif (%imgaspect && %imgprct) {
  18. var %w = $round($calc(%w * %imgprct),0)
  19. var %h = $round($calc(%h * %imgprct),0)
  20. }
  21. $prev.win(%img.x,%img.y,$iif(%imgaspect,%w $+ $chr(44) $+ %h,%imgsize $+ $chr(44) $+ %imgsize))
  22. if (%imgfade) .timertrans -m 64 1 setlayer $!calc(255 - $!timer(trans).reps * 4) @ImagePreview
  23. .drawpic -s @ImagePreview 0 0 $iif(%imgaspect,%w %h,%imgsize %imgsize) %imgfile
  24. .timerclosepreview 1 %imgfadeout fimgClose
  25. }
  26. else {
  27. set %imgloc $1
  28. set %imgready $false
  29. fetchimg $remove($regsubex(%imgloc,/(\w\x2F).++/,\1),http:,/)
  30. }
  31. }
  32. return
  33. }
  34. halt
  35. }
  36. alias -l fetchimg {
  37. if (!$sock(fimg)) {
  38. .sockopen fimg $1 80
  39. if ($window(@ImagePreview)) window -c @ImagePreview
  40. if (!$isid) {
  41. $prev.win(%img.x,%img.y,%imgsize,%imgsize)
  42. var %t = Downloading...
  43. drawtext -or @ImagePreview 0 Tahoma 9 $calc(%imgsize / 2 - $width(%t,Tahoma,9,1) / 2) $calc(%imgsize / 2 - $height(%t,Tahoma,9)) %t
  44. if (%imgfade) .timertrans -m 64 1 setlayer $!calc(255 - $!timer(trans).reps * 4) @ImagePreview
  45. }
  46. }
  47. }
  48. on *:sockopen:fimg:{
  49. if (!$sockerr) {
  50. var %x = $regsubex(%imgloc,/^(?:.+?\w)\x2F/,), %a sockwrite -n $sockname
  51. set %img.file $gettok(%x,-1,47)
  52. write -c %img.file
  53. if (!%img.chunk) %a GET / $+ %x HTTP/1.1
  54. else %a GET / $+ %x HTTP/1.0
  55. %a Host: $remove($regsubex(%imgloc,/(\w\x2F).++/,\1),http:,/)
  56. %a Accept: */*
  57. %a Connection: Close-connection
  58. %a
  59. }
  60. else {
  61. echo $color(info) -ae ImagePreview: Error while fetching image.
  62. unset %img.* %imgloc
  63. %imgready = $true
  64. window -c @ImagePreview
  65. .timertrans off
  66. }
  67. }
  68. on *:sockread:fimg:{
  69. if (!%img.header) {
  70. var %length
  71. sockread %length
  72. while ($sockbr) {
  73. if (*404*Not Found iswm %length || error isin %length) {
  74. window -c @ImagePreview
  75. sockclose $sockname
  76. .remove %img.file
  77. .timertrans off
  78. echo $color(info) -ae ImagePreview: Could not find image %imgloc (server returned 404).
  79. .unset %img.*
  80. .unset %imgloc
  81. drawpic -c
  82. set %imgready $true
  83. break
  84. }
  85. elseif (*Transfer-Encoding: chunked* iswm %length && !%img.chunk) {
  86. sockclose $sockname
  87. .remove %img.file
  88. .timertrans off
  89. drawpic -c
  90. set %img.chunk $true
  91. fetchimg $remove($regsubex(%imgloc,/(\w\x2F).++/,\1),http:,/)
  92. break
  93. }
  94. elseif (!%length) {
  95. set %img.header $true
  96. break
  97. }
  98. sockread %length
  99. }
  100. }
  101. else {
  102. sockread 8192 &image
  103. while ($sockbr) {
  104. bwrite %img.file -1 -1 &image
  105. if (!%img.pre) {
  106. if ($istok(.gif .png .jpg jpeg .bmp,$right(%img.file,4),32) == $true && $pic(%img.file).size != 0) .drawpic -s @ImagePreview 0 0 %imgsize %imgsize %img.file
  107. else {
  108. inc %img.dots
  109. clear @ImagePreview
  110. var %t = $+(Downloading,$str(.,$calc(%img.dots % 3 + 1)))
  111. drawtext -or @ImagePreview 0 Tahoma 9 $calc(%imgsize / 2 - $width(%t,Tahoma,9,1) / 2) $calc(%imgsize / 2 - $height(%t,Tahoma,9)) %t
  112. }
  113. }
  114. sockread 8192 &image
  115. }
  116. }
  117. }
  118. on *:sockclose:fimg:{
  119. if ($exists(%img.file)) {
  120. if ($pic(%img.file).width && $pic(%img.file).height && %imgaspect && !%img.pre) {
  121. var %w = $pic(%img.file).width, %h = $pic(%img.file).height
  122. if (!%imgprct) {
  123. if (%w > %h) fimgResize %img.file $round($calc(%w * (%imgsize / %h)),0) %imgsize
  124. else fimgResize %img.file %imgsize $round($calc(%h * (%imgsize / %w)),0)
  125. }
  126. else fimgResize %img.file $round($calc(%w * %imgprct),0) $round($calc(%h * %imgprct),0)
  127. }
  128. elseif (!%img.pre && $window(@ImagePreview)) { .drawpic -s @ImagePreview 0 0 %imgsize %imgsize %img.file }
  129. if (%imgpre) .copy -o %img.file imgcache\ $+ %img.file
  130. .remove %img.file
  131. .unset %img.*
  132. .timertrans off
  133. }
  134. else echo $color(info) -ae ImagePreview: Error while fetching image.
  135. .timerclosepreview 1 %imgfadeout fimgClose
  136. drawpic -c
  137. set %imgready $true
  138. }
  139. alias -l fimgResize {
  140. if ($timer(trans)) { .timerreResize -m 1 100 fimgResize $1 $2 $3 }
  141. else {
  142. var %i = 1, %j = 1
  143. if ($timer(closepreview)) .timerclosepreview off
  144. if (%imgprct) {
  145. while ($window(@ImagePreview).h != $3 || $window(@ImagePreview).w != $2) {
  146. $prev.win(%img.x,%img.y,$calc(%imgsize + %i),$calc(%imgsize + %j))
  147. .drawpic -s @ImagePreview 0 0 $calc(%imgsize + %i) $calc(%imgsize + %j) $1
  148. if ($window(@ImagePreview).h < $3) inc %j
  149. elseif ($window(@imagePreview).h > $3) dec %j
  150. if ($window(@ImagePreview).w < $2) inc %i
  151. elseif ($window(@ImagePreview).w > $2) dec %i
  152. }
  153. }
  154. else {
  155. if ($2 == %imgsize) {
  156. while ($window(@ImagePreview).h <= $3) {
  157. $prev.win(%img.x,%img.y,%imgsize,$calc(%imgsize + %i))
  158. .drawpic -s @ImagePreview 0 0 %imgsize $calc(%imgsize + %i) $1
  159. inc %i
  160. }
  161. }
  162. else {
  163. while ($window(@ImagePreview).w <= $2) {
  164. $prev.win(%img.x,%img.y,$calc(%imgsize + %i),%imgsize)
  165. .drawpic -s @ImagePreview 0 0 $calc(%imgsize + %i) %imgsize $1
  166. inc %i
  167. }
  168. }
  169. }
  170. .timerclosepreview 1 %imgfadeout fimgClose
  171. }
  172. }
  173.  
  174. alias -l fimgClose {
  175. if (%imgfade) .timertransclose -m 64 1 setlayer $!calc($timer(transclose).reps * 4) @ImagePreview $(|) $!iif($timer(transclose).reps < 1,imgclosepre)
  176. else imgclosepre
  177. }
  178. on *:close:@ImagePreview:imgclosepre
  179. alias -l imgclosepre {
  180. if ($window(@ImagePreview)) window -c @ImagePreview
  181. if ($exists(%img.file) == $true) {
  182. if (%imgpre && %imgready == $true) .copy -o %img.file imgcache\ $+ %img.file
  183. .remove %img.file
  184. }
  185. .timertrans off
  186. .timerclosepreview off
  187. .unset %img.*
  188. .unset %imgloc
  189. drawpic -c
  190. sockclose fimg
  191. set %imgready $true
  192. }
  193. menu @ImagePreview {
  194. sclick:set %img.move $mouse.x $mouse.y | .timerclosepreview off
  195. leave:unset %img.move | .timerclosepreview 1 %imgfadeout fimgClose
  196. uclick:unset %img.move | .timerclosepreview 1 %imgfadeout fimgClose
  197. mouse:{
  198. if (%img.move && $mouse.key & 1) {
  199. set %img.x $calc($mouse.dx - $gettok(%img.move,1,32))
  200. set %img.y $calc($mouse.dy - $gettok(%img.move,2,32))
  201. .window @ImagePreview %img.x %img.y $window(@ImagePreview).w $window(@ImagePreview).h
  202. }
  203. }
  204. dclick:imgclosepre
  205. rclick:{
  206. run %imgloc
  207. imgclosepre
  208. ;Open in browser:run %imgloc
  209. ;Close:imgclosepre
  210. }
  211. }
  212. menu status,channel,query {
  213. Image Preview
  214. .Turn $iif(%imgready,Off,On):set %imgready $iif(%imgready,$false,$true)
  215. . $iif(!%imgready,$style(2),$iif(%imgfade,$style(1))) Fade in\out:set %imgfade $iif(%imgfade,$false,$true)
  216. . $iif(!%imgready,$style(2),$iif(%imgpre,$style(1))) Prefetch images:{
  217. set %imgpre $iif(%imgpre,$false,$true)
  218. if ($exists(imgcache\) == $false) .mkdir imgcache
  219. }
  220. . $iif(!%imgready || !%imgpre || !$findfile(imgcache\,*.*,0),$style(2)) Clear cache:{
  221. var %i 1
  222. while ($findfile(imgcache\,*.*,%i)) {
  223. .remove $ifmatch
  224. inc %i
  225. }
  226. echo $color(info) -ae * ImagePreview: Cache cleared.
  227. }
  228. . $iif(!%imgready,$style(2),$iif(%imgclick,$style(1))) Click to preview:set %imgclick $iif(%imgclick,$false,$true)
  229. . $iif(!%imgready,$style(2),$iif(%imgactive,$style(1))) Close on focus-loss:set %imgactive $iif(%imgactive,$false,$true)
  230. . $iif(!%imgready,$style(2)) Image size...:if ($$?="Enter picture size (in pixels)" isnum) set %imgsize $v1
  231. . $iif(!%imgready,$style(2)) $iif(%imgfade,Fadeout,Auto-close) time...:if ($$?=" $+ $+(Enter fadeout start time (in seconds),$chr(58),$crlf,$chr(40),-1 for infinity,$chr(41)) $+ " isnum) set %imgfadeout $iif($v1 == -1,31536000,$v1)
  232. . $iif(!%imgready,$style(2)) $iif(%imgaspect,$style(1)) Maintain aspect ratio:set %imgaspect $iif(%imgaspect,$false,$true)
  233. . $iif(!%imgready || !%imgaspect,$style(2)) Rescale by percentage $+ $iif(%imgprct,$chr(32) $+ $chr(40) $+ $calc(%imgprct * 100) $+ $chr(37) $+ $chr(41),...):if ($$?="Enter a precentage (0-100%): $+ $crlf $+ No need for the % symbol." isnum 0-100) set %imgprct $calc($v1 / 100)
  234. .Reset:{
  235. unset %img*
  236. set %imgready $true
  237. set %imgfade $true
  238. set %imgpre $false
  239. set %imgclick $true
  240. set %imgsize 128
  241. set %imgfadeout 3
  242. set %imgactive $false
  243. set %imgaspect $true
  244. }
  245. }
  246. on *:text:*:*:{
  247. if (%imgpre && $regex($1-,/^((http:\x2F\x2F)?(?(2)(?:www\.)?|www\.).+?\x2F(?:.+\x2F)?.+\.(?:jp(?:e)?g|gif|png|bmp))$/i)) {
  248. set %imgloc $regml(1)
  249. set %imgready $false
  250. set %img.x $mouse.mx
  251. set %img.y $mouse.my
  252. set %img.pre $true
  253. $fetchimg($remove($regsubex(%imgloc,/(\w\x2F).++/,\1),http:,/))
  254. }
  255. }
  256. on *:load:{
  257. .mkdir imgcache
  258. %imgready = $true
  259. %imgfade = $true
  260. %imgpre = $false
  261. %imgclick = $true
  262. %imgsize = 128
  263. %imgfadeout = 3
  264. %imgactive = $false
  265. echo $color(info) -ae * ImagePreview: Fully loaded. Enjoy. (By HydroIT, aka ^Vampire^, aka [FtUC]Hydro) moded by Dashh`
  266. }
  267. on *:unload:{
  268. var %i 1
  269. echo $color(info2) -ae * ImagePreview: So long!
  270. .window -c @ImagePreview
  271. unset %img*
  272. while ($findfile(imgcache\,*.*,%i)) { .remove $ifmatch | inc %i }
  273. .rmdir imgcache
  274. }
  275. on *:active:*:{
  276. if ($lactive == @ImagePreview && !$timer(trans) && $active != $null && $appactive == $true && %imgactive == $true) {
  277. fimgClose
  278. sockclose fimg
  279. if ($exists(%img.file) == $true) {
  280. if (%imgpre && %imgready == $true) { .copy -o %img.file imgcache\ $+ %img.file }
  281. .remove %img.file
  282. }
  283. .timertrans off
  284. .timerclosepreview off
  285. .unset %img.* %imgloc
  286. drawpic -c
  287. %imgready = $true
  288. }
  289. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement