From a42a9afb935454407ce673c14f94a7b77deaf097 Mon Sep 17 00:00:00 2001 From: kry008 Date: Mon, 1 Aug 2022 19:17:10 +0200 Subject: [PATCH] Add files via upload --- README.md | 3 + images/android.webp | Bin 0 -> 3102 bytes images/discord.webp | Bin 0 -> 2642 bytes images/java.webp | Bin 0 -> 6732 bytes images/js.webp | Bin 0 -> 6518 bytes images/logo.webp | Bin 0 -> 38808 bytes images/logokry008.png | Bin 0 -> 36033 bytes images/nodejs.webp | Bin 0 -> 12176 bytes images/php.webp | Bin 0 -> 15936 bytes index.html | 221 ++++++ particles.js | 1541 +++++++++++++++++++++++++++++++++++++++++ particles.json | 110 +++ script.js | 19 + 13 files changed, 1894 insertions(+) create mode 100644 README.md create mode 100644 images/android.webp create mode 100644 images/discord.webp create mode 100644 images/java.webp create mode 100644 images/js.webp create mode 100644 images/logo.webp create mode 100644 images/logokry008.png create mode 100644 images/nodejs.webp create mode 100644 images/php.webp create mode 100644 index.html create mode 100644 particles.js create mode 100644 particles.json create mode 100644 script.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..f515a32 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# [kry008.ml](https://kry008.ml) + +Aby przeczytać więcej o projekcie, zobacz [wpis na blogu](https://kry008.ml/blog/?p=71) \ No newline at end of file diff --git a/images/android.webp b/images/android.webp new file mode 100644 index 0000000000000000000000000000000000000000..959eafa7ee27b69ee6e0e9196c7b5697e996515d GIT binary patch literal 3102 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 literal 0 HcmV?d00001 diff --git a/images/discord.webp b/images/discord.webp new file mode 100644 index 0000000000000000000000000000000000000000..dae3dd3b4b00af0376690fe42236d94e907eada7 GIT binary patch literal 2642 zcmV-Y3a#~0Nk&FW3IG6CMM6+kP&iCJ3IG5v=m0DbCd>ZE zY};v@|9@a+W@ct?&<&JZM{$_rkgPh|{ht8!?HkL{@^iIjyRjrjPU{y6Z<@sDdMGPa zemWKT@aCE3)|>sI@>8|pY6I;J3hr{pHp3mA&ZJ{-8k9v z*3O5bY(u?W|KZ!>ZSJ7bICcIn=sd!$ih9Wqlg}S_)vGq8ekl9>N$t@`W3xrmhT;vi zD1h>dIEM0fh3T99_crrvM7=L{?vV|p&Aj`*H?|jG{{68pn1`!;`N7o4MVuFVK3HGY z%*TZfn3vB;;zcQP6X(PM9P@L5W&&~)&xm3j?7>|9*d2tr$XA9ulF7iFUBQbp-lLee ziw|TbVT?=eVoVaHvJG?in3w}$9)B0(BuOsgT)YIqeBMJa204v&qVgsaig~@bksB9h z9C91a5YnE_w3*}k8k@p?m*)&sS<8c(xqc{`5M?~_T})BZvrd@vr{t_4W0Cg^89C27 zVD6uZmc$sF{AVaiSsm02z^PzM$nQeHP?oVc;W7wiya^E?~V8{an)?r!>_0 zQZt}wR}UpvFUuat_sgTm-1fZ?gSWa18B_WMEY`poZtSaDaq8GqfnhSj zR`956VQbN?D}4?#&1jPOKN=>&ROc(BuBe!_x`)~0A<4lYD2BEQjNTDcd^|HMU~3YT zm|T+R36ur7BSA0ZY;&p-FG0?eya4H`$o(b6oU2R_4h6Fbx*%&j%Fqibhj@kj7i5jS zPFr&jRE5?~k#gVe7qYPlNS&un%`-p@1t}`zU6l%A$aXScfNb+DrYmEQkQh?~!yr3- z2cx)Im=_c0k#XN05OZ=0M$uQ^=+MQuQn4GGT84_98I>4Zi7wmCjJJsSN{))SlB3rc zrx@)j2O7i>_scH?86OOTXcv6}QYYk>V?G5L4UBi%{Rw0rub{4k4g7-48yLNI*C4xi z{IZHika+~7Xh+Z;Ui?zR>pKoK51=YM`el`8LFNIFl6Y*H=ujw4qJk(fA}Pp}0cl{i zZ0&0l!=GOa6+!<8G2~jlfMUqY8T;Xg=n3kA7#b~qLU}1?eM^g=oR#@DL5r4al;XCw zAf}l@#$d1{<|im@A?&7n5!01XPMqP?QJwE$2dqcRJ{K56%h*qwp6yF^qs7XV^~TM?IX-V;IKV@%b` zB1n9rHY(uj6kOp+K;sgmCPKA(1yn@J-Sn`cut@-_N7bMIqSj7{9=n9)QP{256B~8={C+4k&B7SWvbDM z;w639FFQOz8q~ZINiw#bs#P`NH{0T4$=w9^r#|=6ik|EXd%V$lCe@x>SWa6DujxIb zUUgI)K~F}pd)&5HwB-DUwUxC`EE%;m{n;may^?dkH~z;7Ck>~Cgbt_eUczaAlyKS~ z=MzweV}#Rkf^ZuB>4ekQK8fo|*bz<|P$NHNC>5#!Wdg$Kc{mx1Kr%E`Bb`8s5URC% zVD=;H#=%dsOa`4Vm(m+~g|xE{NTIDIRc6d_oYmGd1CT00b!Q2Th^lscIwwv|of!tV zWW8y}rDcgxi49eSIM>9R53-vDHCY+@deo%G1Y%z9sOnh`gyLy=H<9YlVzOSlBw#%X7-uv&7WkwZ)t0n(O~0YIgf#r$NKI(szTV;m0=eo1(y87Y z36-DhW}v+g@xNtR{kJ}~SXP}bArGX`)U_NCd|k3b>00m4er$ZyzXJ98pjDjsHq`3k zf&CUCzuT8TR*REk^)3R*!&um8JENqJO6pSx)v>ecx1$)N<*pc|pu$gj%kCgF(hL z2QoKy+E1OwH#7E`gOH*o8q1~68#@>3@Knjib)&;j9yyDmrmKTxLZa}_w=3rs5i8Rd~}tnEJhTj;xs0VD?hQ-|ve> zbtG-YUeBqd*9#4wLXM6VFU1&|>idm#EvA^OKP&8mMCRKZ*xPGhf_eR7w+}*7VXMo1OU| z_f^f-)h;?5L`luowWoUAhUER`aK>o#4Owh^;v?#oX79&`0`r%@n!SB$=%IS6z%^DV Ap8x;= literal 0 HcmV?d00001 diff --git a/images/java.webp b/images/java.webp new file mode 100644 index 0000000000000000000000000000000000000000..a3a353f5abf38c1a5d36e8ef7ef4a416462a43c0 GIT binary patch literal 6732 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 literal 0 HcmV?d00001 diff --git a/images/logo.webp b/images/logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..c059cdd773d90d807695afdee32038acf87a3c26 GIT binary patch literal 38808 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 _T;IKPBar%hR?V3A`*|qUE>qwMhJeJ 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 VFOs|PO)DX6xpO}PE(Qrj{tqN%OcwwE literal 0 HcmV?d00001 diff --git a/images/logokry008.png b/images/logokry008.png new file mode 100644 index 0000000000000000000000000000000000000000..0c771ab0868651bf3cf3383949d5ccaa52a28c32 GIT binary patch literal 36033 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

~)9yAuKwYLRQ03w(5(wFomx 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 literal 0 HcmV?d00001 diff --git a/images/nodejs.webp b/images/nodejs.webp new file mode 100644 index 0000000000000000000000000000000000000000..342475a78d602d0d87dc1eb135de742a378141bc GIT binary patch literal 12176 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�)?gm+M7E)LKd(O7c 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 iOyhqkr@F50qNb*%rVih^>26I;O-&o>>go + + + + Kry008 + + + + + + + + + + + + + + + + + +

+
+

Kry008

+ +

Programmer with passion

+
+ JS + Android + PHP + NodeJS + Java +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/particles.js b/particles.js new file mode 100644 index 0000000..1d6b746 --- /dev/null +++ b/particles.js @@ -0,0 +1,1541 @@ +/* ----------------------------------------------- +/* Author : Vincent Garreau - vincentgarreau.com +/* MIT license: http://opensource.org/licenses/MIT +/* Demo / Generator : vincentgarreau.com/particles.js +/* GitHub : github.com/VincentGarreau/particles.js +/* How to use? : Check the GitHub README +/* v2.0.0 +/* ----------------------------------------------- */ + +var pJS = function(tag_id, params){ + + var canvas_el = document.querySelector('#'+tag_id+' > .particles-js-canvas-el'); + + /* particles.js variables with default values */ + this.pJS = { + canvas: { + el: canvas_el, + w: canvas_el.offsetWidth, + h: canvas_el.offsetHeight + }, + particles: { + number: { + value: 40, + density: { + enable: true, + value_area: 800 + } + }, + color: { + value: '#4eade3' + }, + shape: { + type: 'star', + stroke: { + width: 0, + color: '#4eade3' + }, + polygon: { + nb_sides: 5 + }, + image: { + src: '', + width: 100, + height: 100 + } + }, + opacity: { + value: 0.5, + random: false, + anim: { + enable: true, + speed: 1, + opacity_min: 0.1, + sync: false + } + }, + size: { + value: 10, + random: false, + anim: { + enable: false, + speed: 80, + size_min: 0.1, + sync: false + } + }, + line_linked: { + enable: true, + distance: 300, + color: '#4eade3', + opacity: 0.4, + width: 2 + }, + move: { + enable: true, + speed: 10, + direction: 'none', + random: false, + straight: false, + out_mode: 'out', + bounce: false, + attract: { + enable: false, + rotateX: 3000, + rotateY: 3000 + } + }, + array: [] + }, + interactivity: { + detect_on: 'canvas', + events: { + onhover: { + enable: true, + mode: 'grab' + }, + onclick: { + enable: true, + mode: 'push' + }, + resize: true + }, + modes: { + grab:{ + distance: 100, + line_linked:{ + opacity: 1 + } + }, + bubble:{ + distance: 200, + size: 80, + duration: 0.4 + }, + repulse:{ + distance: 200, + duration: 0.4 + }, + push:{ + particles_nb: 4 + }, + remove:{ + particles_nb: 2 + } + }, + mouse:{} + }, + retina_detect: false, + fn: { + interact: {}, + modes: {}, + vendors:{} + }, + tmp: {} + }; + + var pJS = this.pJS; + + /* params settings */ + if(params){ + Object.deepExtend(pJS, params); + } + + pJS.tmp.obj = { + size_value: pJS.particles.size.value, + size_anim_speed: pJS.particles.size.anim.speed, + move_speed: pJS.particles.move.speed, + line_linked_distance: pJS.particles.line_linked.distance, + line_linked_width: pJS.particles.line_linked.width, + mode_grab_distance: pJS.interactivity.modes.grab.distance, + mode_bubble_distance: pJS.interactivity.modes.bubble.distance, + mode_bubble_size: pJS.interactivity.modes.bubble.size, + mode_repulse_distance: pJS.interactivity.modes.repulse.distance + }; + + + pJS.fn.retinaInit = function(){ + + if(pJS.retina_detect && window.devicePixelRatio > 1){ + pJS.canvas.pxratio = window.devicePixelRatio; + pJS.tmp.retina = true; + } + else{ + pJS.canvas.pxratio = 1; + pJS.tmp.retina = false; + } + + pJS.canvas.w = pJS.canvas.el.offsetWidth * pJS.canvas.pxratio; + pJS.canvas.h = pJS.canvas.el.offsetHeight * pJS.canvas.pxratio; + + pJS.particles.size.value = pJS.tmp.obj.size_value * pJS.canvas.pxratio; + pJS.particles.size.anim.speed = pJS.tmp.obj.size_anim_speed * pJS.canvas.pxratio; + pJS.particles.move.speed = pJS.tmp.obj.move_speed * pJS.canvas.pxratio; + pJS.particles.line_linked.distance = pJS.tmp.obj.line_linked_distance * pJS.canvas.pxratio; + pJS.interactivity.modes.grab.distance = pJS.tmp.obj.mode_grab_distance * pJS.canvas.pxratio; + pJS.interactivity.modes.bubble.distance = pJS.tmp.obj.mode_bubble_distance * pJS.canvas.pxratio; + pJS.particles.line_linked.width = pJS.tmp.obj.line_linked_width * pJS.canvas.pxratio; + pJS.interactivity.modes.bubble.size = pJS.tmp.obj.mode_bubble_size * pJS.canvas.pxratio; + pJS.interactivity.modes.repulse.distance = pJS.tmp.obj.mode_repulse_distance * pJS.canvas.pxratio; + + }; + + + + /* ---------- pJS functions - canvas ------------ */ + + pJS.fn.canvasInit = function(){ + pJS.canvas.ctx = pJS.canvas.el.getContext('2d'); + }; + + pJS.fn.canvasSize = function(){ + + pJS.canvas.el.width = pJS.canvas.w; + pJS.canvas.el.height = pJS.canvas.h; + + if(pJS && pJS.interactivity.events.resize){ + + window.addEventListener('resize', function(){ + + pJS.canvas.w = pJS.canvas.el.offsetWidth; + pJS.canvas.h = pJS.canvas.el.offsetHeight; + + /* resize canvas */ + if(pJS.tmp.retina){ + pJS.canvas.w *= pJS.canvas.pxratio; + pJS.canvas.h *= pJS.canvas.pxratio; + } + + pJS.canvas.el.width = pJS.canvas.w; + pJS.canvas.el.height = pJS.canvas.h; + + /* repaint canvas on anim disabled */ + if(!pJS.particles.move.enable){ + pJS.fn.particlesEmpty(); + pJS.fn.particlesCreate(); + pJS.fn.particlesDraw(); + pJS.fn.vendors.densityAutoParticles(); + } + + /* density particles enabled */ + pJS.fn.vendors.densityAutoParticles(); + + }); + + } + + }; + + + pJS.fn.canvasPaint = function(){ + pJS.canvas.ctx.fillRect(0, 0, pJS.canvas.w, pJS.canvas.h); + }; + + pJS.fn.canvasClear = function(){ + pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); + }; + + + /* --------- pJS functions - particles ----------- */ + + pJS.fn.particle = function(color, opacity, position){ + + /* size */ + this.radius = (pJS.particles.size.random ? Math.random() : 1) * pJS.particles.size.value; + if(pJS.particles.size.anim.enable){ + this.size_status = false; + this.vs = pJS.particles.size.anim.speed / 100; + if(!pJS.particles.size.anim.sync){ + this.vs = this.vs * Math.random(); + } + } + + /* position */ + this.x = position ? position.x : Math.random() * pJS.canvas.w; + this.y = position ? position.y : Math.random() * pJS.canvas.h; + + /* check position - into the canvas */ + if(this.x > pJS.canvas.w - this.radius*2) this.x = this.x - this.radius; + else if(this.x < this.radius*2) this.x = this.x + this.radius; + if(this.y > pJS.canvas.h - this.radius*2) this.y = this.y - this.radius; + else if(this.y < this.radius*2) this.y = this.y + this.radius; + + /* check position - avoid overlap */ + if(pJS.particles.move.bounce){ + pJS.fn.vendors.checkOverlap(this, position); + } + + /* color */ + this.color = {}; + if(typeof(color.value) == 'object'){ + + if(color.value instanceof Array){ + var color_selected = color.value[Math.floor(Math.random() * pJS.particles.color.value.length)]; + this.color.rgb = hexToRgb(color_selected); + }else{ + if(color.value.r != undefined && color.value.g != undefined && color.value.b != undefined){ + this.color.rgb = { + r: color.value.r, + g: color.value.g, + b: color.value.b + } + } + if(color.value.h != undefined && color.value.s != undefined && color.value.l != undefined){ + this.color.hsl = { + h: color.value.h, + s: color.value.s, + l: color.value.l + } + } + } + + } + else if(color.value == 'random'){ + this.color.rgb = { + r: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), + g: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), + b: (Math.floor(Math.random() * (255 - 0 + 1)) + 0) + } + } + else if(typeof(color.value) == 'string'){ + this.color = color; + this.color.rgb = hexToRgb(this.color.value); + } + + /* opacity */ + this.opacity = (pJS.particles.opacity.random ? Math.random() : 1) * pJS.particles.opacity.value; + if(pJS.particles.opacity.anim.enable){ + this.opacity_status = false; + this.vo = pJS.particles.opacity.anim.speed / 100; + if(!pJS.particles.opacity.anim.sync){ + this.vo = this.vo * Math.random(); + } + } + + /* animation - velocity for speed */ + var velbase = {} + switch(pJS.particles.move.direction){ + case 'top': + velbase = { x:0, y:-1 }; + break; + case 'top-right': + velbase = { x:0.5, y:-0.5 }; + break; + case 'right': + velbase = { x:1, y:-0 }; + break; + case 'bottom-right': + velbase = { x:0.5, y:0.5 }; + break; + case 'bottom': + velbase = { x:0, y:1 }; + break; + case 'bottom-left': + velbase = { x:-0.5, y:1 }; + break; + case 'left': + velbase = { x:-1, y:0 }; + break; + case 'top-left': + velbase = { x:-0.5, y:-0.5 }; + break; + default: + velbase = { x:0, y:0 }; + break; + } + + if(pJS.particles.move.straight){ + this.vx = velbase.x; + this.vy = velbase.y; + if(pJS.particles.move.random){ + this.vx = this.vx * (Math.random()); + this.vy = this.vy * (Math.random()); + } + }else{ + this.vx = velbase.x + Math.random()-0.5; + this.vy = velbase.y + Math.random()-0.5; + } + + // var theta = 2.0 * Math.PI * Math.random(); + // this.vx = Math.cos(theta); + // this.vy = Math.sin(theta); + + this.vx_i = this.vx; + this.vy_i = this.vy; + + + + /* if shape is image */ + + var shape_type = pJS.particles.shape.type; + if(typeof(shape_type) == 'object'){ + if(shape_type instanceof Array){ + var shape_selected = shape_type[Math.floor(Math.random() * shape_type.length)]; + this.shape = shape_selected; + } + }else{ + this.shape = shape_type; + } + + if(this.shape == 'image'){ + var sh = pJS.particles.shape; + this.img = { + src: sh.image.src, + ratio: sh.image.width / sh.image.height + } + if(!this.img.ratio) this.img.ratio = 1; + if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg != undefined){ + pJS.fn.vendors.createSvgImg(this); + if(pJS.tmp.pushing){ + this.img.loaded = false; + } + } + } + + + + }; + + + pJS.fn.particle.prototype.draw = function() { + + var p = this; + + if(p.radius_bubble != undefined){ + var radius = p.radius_bubble; + }else{ + var radius = p.radius; + } + + if(p.opacity_bubble != undefined){ + var opacity = p.opacity_bubble; + }else{ + var opacity = p.opacity; + } + + if(p.color.rgb){ + var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+opacity+')'; + }else{ + var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+opacity+')'; + } + + pJS.canvas.ctx.fillStyle = color_value; + pJS.canvas.ctx.beginPath(); + + switch(p.shape){ + + case 'circle': + pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false); + break; + + case 'edge': + pJS.canvas.ctx.rect(p.x-radius, p.y-radius, radius*2, radius*2); + break; + + case 'triangle': + pJS.fn.vendors.drawShape(pJS.canvas.ctx, p.x-radius, p.y+radius / 1.66, radius*2, 3, 2); + break; + + case 'polygon': + pJS.fn.vendors.drawShape( + pJS.canvas.ctx, + p.x - radius / (pJS.particles.shape.polygon.nb_sides/3.5), // startX + p.y - radius / (2.66/3.5), // startY + radius*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength + pJS.particles.shape.polygon.nb_sides, // sideCountNumerator + 1 // sideCountDenominator + ); + break; + + case 'star': + pJS.fn.vendors.drawShape( + pJS.canvas.ctx, + p.x - radius*2 / (pJS.particles.shape.polygon.nb_sides/4), // startX + p.y - radius / (2*2.66/3.5), // startY + radius*2*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength + pJS.particles.shape.polygon.nb_sides, // sideCountNumerator + 2 // sideCountDenominator + ); + break; + + case 'image': + + function draw(){ + pJS.canvas.ctx.drawImage( + img_obj, + p.x-radius, + p.y-radius, + radius*2, + radius*2 / p.img.ratio + ); + } + + if(pJS.tmp.img_type == 'svg'){ + var img_obj = p.img.obj; + }else{ + var img_obj = pJS.tmp.img_obj; + } + + if(img_obj){ + draw(); + } + + break; + + } + + pJS.canvas.ctx.closePath(); + + if(pJS.particles.shape.stroke.width > 0){ + pJS.canvas.ctx.strokeStyle = pJS.particles.shape.stroke.color; + pJS.canvas.ctx.lineWidth = pJS.particles.shape.stroke.width; + pJS.canvas.ctx.stroke(); + } + + pJS.canvas.ctx.fill(); + + }; + + + pJS.fn.particlesCreate = function(){ + for(var i = 0; i < pJS.particles.number.value; i++) { + pJS.particles.array.push(new pJS.fn.particle(pJS.particles.color, pJS.particles.opacity.value)); + } + }; + + pJS.fn.particlesUpdate = function(){ + + for(var i = 0; i < pJS.particles.array.length; i++){ + + /* the particle */ + var p = pJS.particles.array[i]; + + // var d = ( dx = pJS.interactivity.mouse.click_pos_x - p.x ) * dx + ( dy = pJS.interactivity.mouse.click_pos_y - p.y ) * dy; + // var f = -BANG_SIZE / d; + // if ( d < BANG_SIZE ) { + // var t = Math.atan2( dy, dx ); + // p.vx = f * Math.cos(t); + // p.vy = f * Math.sin(t); + // } + + /* move the particle */ + if(pJS.particles.move.enable){ + var ms = pJS.particles.move.speed/2; + p.x += p.vx * ms; + p.y += p.vy * ms; + } + + /* change opacity status */ + if(pJS.particles.opacity.anim.enable) { + if(p.opacity_status == true) { + if(p.opacity >= pJS.particles.opacity.value) p.opacity_status = false; + p.opacity += p.vo; + }else { + if(p.opacity <= pJS.particles.opacity.anim.opacity_min) p.opacity_status = true; + p.opacity -= p.vo; + } + if(p.opacity < 0) p.opacity = 0; + } + + /* change size */ + if(pJS.particles.size.anim.enable){ + if(p.size_status == true){ + if(p.radius >= pJS.particles.size.value) p.size_status = false; + p.radius += p.vs; + }else{ + if(p.radius <= pJS.particles.size.anim.size_min) p.size_status = true; + p.radius -= p.vs; + } + if(p.radius < 0) p.radius = 0; + } + + /* change particle position if it is out of canvas */ + if(pJS.particles.move.out_mode == 'bounce'){ + var new_pos = { + x_left: p.radius, + x_right: pJS.canvas.w, + y_top: p.radius, + y_bottom: pJS.canvas.h + } + }else{ + var new_pos = { + x_left: -p.radius, + x_right: pJS.canvas.w + p.radius, + y_top: -p.radius, + y_bottom: pJS.canvas.h + p.radius + } + } + + if(p.x - p.radius > pJS.canvas.w){ + p.x = new_pos.x_left; + p.y = Math.random() * pJS.canvas.h; + } + else if(p.x + p.radius < 0){ + p.x = new_pos.x_right; + p.y = Math.random() * pJS.canvas.h; + } + if(p.y - p.radius > pJS.canvas.h){ + p.y = new_pos.y_top; + p.x = Math.random() * pJS.canvas.w; + } + else if(p.y + p.radius < 0){ + p.y = new_pos.y_bottom; + p.x = Math.random() * pJS.canvas.w; + } + + /* out of canvas modes */ + switch(pJS.particles.move.out_mode){ + case 'bounce': + if (p.x + p.radius > pJS.canvas.w) p.vx = -p.vx; + else if (p.x - p.radius < 0) p.vx = -p.vx; + if (p.y + p.radius > pJS.canvas.h) p.vy = -p.vy; + else if (p.y - p.radius < 0) p.vy = -p.vy; + break; + } + + /* events */ + if(isInArray('grab', pJS.interactivity.events.onhover.mode)){ + pJS.fn.modes.grabParticle(p); + } + + if(isInArray('bubble', pJS.interactivity.events.onhover.mode) || isInArray('bubble', pJS.interactivity.events.onclick.mode)){ + pJS.fn.modes.bubbleParticle(p); + } + + if(isInArray('repulse', pJS.interactivity.events.onhover.mode) || isInArray('repulse', pJS.interactivity.events.onclick.mode)){ + pJS.fn.modes.repulseParticle(p); + } + + /* interaction auto between particles */ + if(pJS.particles.line_linked.enable || pJS.particles.move.attract.enable){ + for(var j = i + 1; j < pJS.particles.array.length; j++){ + var p2 = pJS.particles.array[j]; + + /* link particles */ + if(pJS.particles.line_linked.enable){ + pJS.fn.interact.linkParticles(p,p2); + } + + /* attract particles */ + if(pJS.particles.move.attract.enable){ + pJS.fn.interact.attractParticles(p,p2); + } + + /* bounce particles */ + if(pJS.particles.move.bounce){ + pJS.fn.interact.bounceParticles(p,p2); + } + + } + } + + + } + + }; + + pJS.fn.particlesDraw = function(){ + + /* clear canvas */ + pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); + + /* update each particles param */ + pJS.fn.particlesUpdate(); + + /* draw each particle */ + for(var i = 0; i < pJS.particles.array.length; i++){ + var p = pJS.particles.array[i]; + p.draw(); + } + + }; + + pJS.fn.particlesEmpty = function(){ + pJS.particles.array = []; + }; + + pJS.fn.particlesRefresh = function(){ + + /* init all */ + cancelRequestAnimFrame(pJS.fn.checkAnimFrame); + cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + pJS.tmp.source_svg = undefined; + pJS.tmp.img_obj = undefined; + pJS.tmp.count_svg = 0; + pJS.fn.particlesEmpty(); + pJS.fn.canvasClear(); + + /* restart */ + pJS.fn.vendors.start(); + + }; + + + /* ---------- pJS functions - particles interaction ------------ */ + + pJS.fn.interact.linkParticles = function(p1, p2){ + + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy); + + /* draw a line between p1 and p2 if the distance between them is under the config distance */ + if(dist <= pJS.particles.line_linked.distance){ + + var opacity_line = pJS.particles.line_linked.opacity - (dist / (1/pJS.particles.line_linked.opacity)) / pJS.particles.line_linked.distance; + + if(opacity_line > 0){ + + /* style */ + var color_line = pJS.particles.line_linked.color_rgb_line; + pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; + pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; + //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ + + /* path */ + pJS.canvas.ctx.beginPath(); + pJS.canvas.ctx.moveTo(p1.x, p1.y); + pJS.canvas.ctx.lineTo(p2.x, p2.y); + pJS.canvas.ctx.stroke(); + pJS.canvas.ctx.closePath(); + + } + + } + + }; + + + pJS.fn.interact.attractParticles = function(p1, p2){ + + /* condensed particles */ + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy); + + if(dist <= pJS.particles.line_linked.distance){ + + var ax = dx/(pJS.particles.move.attract.rotateX*1000), + ay = dy/(pJS.particles.move.attract.rotateY*1000); + + p1.vx -= ax; + p1.vy -= ay; + + p2.vx += ax; + p2.vy += ay; + + } + + + } + + + pJS.fn.interact.bounceParticles = function(p1, p2){ + + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy), + dist_p = p1.radius+p2.radius; + + if(dist <= dist_p){ + p1.vx = -p1.vx; + p1.vy = -p1.vy; + + p2.vx = -p2.vx; + p2.vy = -p2.vy; + } + + } + + + /* ---------- pJS functions - modes events ------------ */ + + pJS.fn.modes.pushParticles = function(nb, pos){ + + pJS.tmp.pushing = true; + + for(var i = 0; i < nb; i++){ + pJS.particles.array.push( + new pJS.fn.particle( + pJS.particles.color, + pJS.particles.opacity.value, + { + 'x': pos ? pos.pos_x : Math.random() * pJS.canvas.w, + 'y': pos ? pos.pos_y : Math.random() * pJS.canvas.h + } + ) + ) + if(i == nb-1){ + if(!pJS.particles.move.enable){ + pJS.fn.particlesDraw(); + } + pJS.tmp.pushing = false; + } + } + + }; + + + pJS.fn.modes.removeParticles = function(nb){ + + pJS.particles.array.splice(0, nb); + if(!pJS.particles.move.enable){ + pJS.fn.particlesDraw(); + } + + }; + + + pJS.fn.modes.bubbleParticle = function(p){ + + /* on hover event */ + if(pJS.interactivity.events.onhover.enable && isInArray('bubble', pJS.interactivity.events.onhover.mode)){ + + var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), + ratio = 1 - dist_mouse / pJS.interactivity.modes.bubble.distance; + + function init(){ + p.opacity_bubble = p.opacity; + p.radius_bubble = p.radius; + } + + /* mousemove - check ratio */ + if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ + + if(ratio >= 0 && pJS.interactivity.status == 'mousemove'){ + + /* size */ + if(pJS.interactivity.modes.bubble.size != pJS.particles.size.value){ + + if(pJS.interactivity.modes.bubble.size > pJS.particles.size.value){ + var size = p.radius + (pJS.interactivity.modes.bubble.size*ratio); + if(size >= 0){ + p.radius_bubble = size; + } + }else{ + var dif = p.radius - pJS.interactivity.modes.bubble.size, + size = p.radius - (dif*ratio); + if(size > 0){ + p.radius_bubble = size; + }else{ + p.radius_bubble = 0; + } + } + + } + + /* opacity */ + if(pJS.interactivity.modes.bubble.opacity != pJS.particles.opacity.value){ + + if(pJS.interactivity.modes.bubble.opacity > pJS.particles.opacity.value){ + var opacity = pJS.interactivity.modes.bubble.opacity*ratio; + if(opacity > p.opacity && opacity <= pJS.interactivity.modes.bubble.opacity){ + p.opacity_bubble = opacity; + } + }else{ + var opacity = p.opacity - (pJS.particles.opacity.value-pJS.interactivity.modes.bubble.opacity)*ratio; + if(opacity < p.opacity && opacity >= pJS.interactivity.modes.bubble.opacity){ + p.opacity_bubble = opacity; + } + } + + } + + } + + }else{ + init(); + } + + + /* mouseleave */ + if(pJS.interactivity.status == 'mouseleave'){ + init(); + } + + } + + /* on click event */ + else if(pJS.interactivity.events.onclick.enable && isInArray('bubble', pJS.interactivity.events.onclick.mode)){ + + + if(pJS.tmp.bubble_clicking){ + var dx_mouse = p.x - pJS.interactivity.mouse.click_pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.click_pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), + time_spent = (new Date().getTime() - pJS.interactivity.mouse.click_time)/1000; + + if(time_spent > pJS.interactivity.modes.bubble.duration){ + pJS.tmp.bubble_duration_end = true; + } + + if(time_spent > pJS.interactivity.modes.bubble.duration*2){ + pJS.tmp.bubble_clicking = false; + pJS.tmp.bubble_duration_end = false; + } + } + + + function process(bubble_param, particles_param, p_obj_bubble, p_obj, id){ + + if(bubble_param != particles_param){ + + if(!pJS.tmp.bubble_duration_end){ + if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ + if(p_obj_bubble != undefined) var obj = p_obj_bubble; + else var obj = p_obj; + if(obj != bubble_param){ + var value = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration); + if(id == 'size') p.radius_bubble = value; + if(id == 'opacity') p.opacity_bubble = value; + } + }else{ + if(id == 'size') p.radius_bubble = undefined; + if(id == 'opacity') p.opacity_bubble = undefined; + } + }else{ + if(p_obj_bubble != undefined){ + var value_tmp = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration), + dif = bubble_param - value_tmp; + value = bubble_param + dif; + if(id == 'size') p.radius_bubble = value; + if(id == 'opacity') p.opacity_bubble = value; + } + } + + } + + } + + if(pJS.tmp.bubble_clicking){ + /* size */ + process(pJS.interactivity.modes.bubble.size, pJS.particles.size.value, p.radius_bubble, p.radius, 'size'); + /* opacity */ + process(pJS.interactivity.modes.bubble.opacity, pJS.particles.opacity.value, p.opacity_bubble, p.opacity, 'opacity'); + } + + } + + }; + + + pJS.fn.modes.repulseParticle = function(p){ + + if(pJS.interactivity.events.onhover.enable && isInArray('repulse', pJS.interactivity.events.onhover.mode) && pJS.interactivity.status == 'mousemove') { + + var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); + + var normVec = {x: dx_mouse/dist_mouse, y: dy_mouse/dist_mouse}, + repulseRadius = pJS.interactivity.modes.repulse.distance, + velocity = 100, + repulseFactor = clamp((1/repulseRadius)*(-1*Math.pow(dist_mouse/repulseRadius,2)+1)*repulseRadius*velocity, 0, 50); + + var pos = { + x: p.x + normVec.x * repulseFactor, + y: p.y + normVec.y * repulseFactor + } + + if(pJS.particles.move.out_mode == 'bounce'){ + if(pos.x - p.radius > 0 && pos.x + p.radius < pJS.canvas.w) p.x = pos.x; + if(pos.y - p.radius > 0 && pos.y + p.radius < pJS.canvas.h) p.y = pos.y; + }else{ + p.x = pos.x; + p.y = pos.y; + } + + } + + + else if(pJS.interactivity.events.onclick.enable && isInArray('repulse', pJS.interactivity.events.onclick.mode)) { + + if(!pJS.tmp.repulse_finish){ + pJS.tmp.repulse_count++; + if(pJS.tmp.repulse_count == pJS.particles.array.length){ + pJS.tmp.repulse_finish = true; + } + } + + if(pJS.tmp.repulse_clicking){ + + var repulseRadius = Math.pow(pJS.interactivity.modes.repulse.distance/6, 3); + + var dx = pJS.interactivity.mouse.click_pos_x - p.x, + dy = pJS.interactivity.mouse.click_pos_y - p.y, + d = dx*dx + dy*dy; + + var force = -repulseRadius / d * 1; + + function process(){ + + var f = Math.atan2(dy,dx); + p.vx = force * Math.cos(f); + p.vy = force * Math.sin(f); + + if(pJS.particles.move.out_mode == 'bounce'){ + var pos = { + x: p.x + p.vx, + y: p.y + p.vy + } + if (pos.x + p.radius > pJS.canvas.w) p.vx = -p.vx; + else if (pos.x - p.radius < 0) p.vx = -p.vx; + if (pos.y + p.radius > pJS.canvas.h) p.vy = -p.vy; + else if (pos.y - p.radius < 0) p.vy = -p.vy; + } + + } + + // default + if(d <= repulseRadius){ + process(); + } + + // bang - slow motion mode + // if(!pJS.tmp.repulse_finish){ + // if(d <= repulseRadius){ + // process(); + // } + // }else{ + // process(); + // } + + + }else{ + + if(pJS.tmp.repulse_clicking == false){ + + p.vx = p.vx_i; + p.vy = p.vy_i; + + } + + } + + } + + } + + + pJS.fn.modes.grabParticle = function(p){ + + if(pJS.interactivity.events.onhover.enable && pJS.interactivity.status == 'mousemove'){ + + var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); + + /* draw a line between the cursor and the particle if the distance between them is under the config distance */ + if(dist_mouse <= pJS.interactivity.modes.grab.distance){ + + var opacity_line = pJS.interactivity.modes.grab.line_linked.opacity - (dist_mouse / (1/pJS.interactivity.modes.grab.line_linked.opacity)) / pJS.interactivity.modes.grab.distance; + + if(opacity_line > 0){ + + /* style */ + var color_line = pJS.particles.line_linked.color_rgb_line; + pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; + pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; + //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ + + /* path */ + pJS.canvas.ctx.beginPath(); + pJS.canvas.ctx.moveTo(p.x, p.y); + pJS.canvas.ctx.lineTo(pJS.interactivity.mouse.pos_x, pJS.interactivity.mouse.pos_y); + pJS.canvas.ctx.stroke(); + pJS.canvas.ctx.closePath(); + + } + + } + + } + + }; + + + + /* ---------- pJS functions - vendors ------------ */ + + pJS.fn.vendors.eventsListeners = function(){ + + /* events target element */ + if(pJS.interactivity.detect_on == 'window'){ + pJS.interactivity.el = window; + }else{ + pJS.interactivity.el = pJS.canvas.el; + } + + + /* detect mouse pos - on hover / click event */ + if(pJS.interactivity.events.onhover.enable || pJS.interactivity.events.onclick.enable){ + + /* el on mousemove */ + pJS.interactivity.el.addEventListener('mousemove', function(e){ + + if(pJS.interactivity.el == window){ + var pos_x = e.clientX, + pos_y = e.clientY; + } + else{ + var pos_x = e.offsetX || e.clientX, + pos_y = e.offsetY || e.clientY; + } + + pJS.interactivity.mouse.pos_x = pos_x; + pJS.interactivity.mouse.pos_y = pos_y; + + if(pJS.tmp.retina){ + pJS.interactivity.mouse.pos_x *= pJS.canvas.pxratio; + pJS.interactivity.mouse.pos_y *= pJS.canvas.pxratio; + } + + pJS.interactivity.status = 'mousemove'; + + }); + + /* el on onmouseleave */ + pJS.interactivity.el.addEventListener('mouseleave', function(e){ + + pJS.interactivity.mouse.pos_x = null; + pJS.interactivity.mouse.pos_y = null; + pJS.interactivity.status = 'mouseleave'; + + }); + + } + + /* on click event */ + if(pJS.interactivity.events.onclick.enable){ + + pJS.interactivity.el.addEventListener('click', function(){ + + pJS.interactivity.mouse.click_pos_x = pJS.interactivity.mouse.pos_x; + pJS.interactivity.mouse.click_pos_y = pJS.interactivity.mouse.pos_y; + pJS.interactivity.mouse.click_time = new Date().getTime(); + + if(pJS.interactivity.events.onclick.enable){ + + switch(pJS.interactivity.events.onclick.mode){ + + case 'push': + if(pJS.particles.move.enable){ + pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); + }else{ + if(pJS.interactivity.modes.push.particles_nb == 1){ + pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); + } + else if(pJS.interactivity.modes.push.particles_nb > 1){ + pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb); + } + } + break; + + case 'remove': + pJS.fn.modes.removeParticles(pJS.interactivity.modes.remove.particles_nb); + break; + + case 'bubble': + pJS.tmp.bubble_clicking = true; + break; + + case 'repulse': + pJS.tmp.repulse_clicking = true; + pJS.tmp.repulse_count = 0; + pJS.tmp.repulse_finish = false; + setTimeout(function(){ + pJS.tmp.repulse_clicking = false; + }, pJS.interactivity.modes.repulse.duration*1000) + break; + + } + + } + + }); + + } + + + }; + + pJS.fn.vendors.densityAutoParticles = function(){ + + if(pJS.particles.number.density.enable){ + + /* calc area */ + var area = pJS.canvas.el.width * pJS.canvas.el.height / 1000; + if(pJS.tmp.retina){ + area = area/(pJS.canvas.pxratio*2); + } + + /* calc number of particles based on density area */ + var nb_particles = area * pJS.particles.number.value / pJS.particles.number.density.value_area; + + /* add or remove X particles */ + var missing_particles = pJS.particles.array.length - nb_particles; + if(missing_particles < 0) pJS.fn.modes.pushParticles(Math.abs(missing_particles)); + else pJS.fn.modes.removeParticles(missing_particles); + + } + + }; + + + pJS.fn.vendors.checkOverlap = function(p1, position){ + for(var i = 0; i < pJS.particles.array.length; i++){ + var p2 = pJS.particles.array[i]; + + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy); + + if(dist <= p1.radius + p2.radius){ + p1.x = position ? position.x : Math.random() * pJS.canvas.w; + p1.y = position ? position.y : Math.random() * pJS.canvas.h; + pJS.fn.vendors.checkOverlap(p1); + } + } + }; + + + pJS.fn.vendors.createSvgImg = function(p){ + + /* set color to svg element */ + var svgXml = pJS.tmp.source_svg, + rgbHex = /#([0-9A-F]{3,6})/gi, + coloredSvgXml = svgXml.replace(rgbHex, function (m, r, g, b) { + if(p.color.rgb){ + var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+p.opacity+')'; + }else{ + var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+p.opacity+')'; + } + return color_value; + }); + + /* prepare to create img with colored svg */ + var svg = new Blob([coloredSvgXml], {type: 'image/svg+xml;charset=utf-8'}), + DOMURL = window.URL || window.webkitURL || window, + url = DOMURL.createObjectURL(svg); + + /* create particle img obj */ + var img = new Image(); + img.addEventListener('load', function(){ + p.img.obj = img; + p.img.loaded = true; + DOMURL.revokeObjectURL(url); + pJS.tmp.count_svg++; + }); + img.src = url; + + }; + + + pJS.fn.vendors.destroypJS = function(){ + cancelAnimationFrame(pJS.fn.drawAnimFrame); + canvas_el.remove(); + pJSDom = null; + }; + + + pJS.fn.vendors.drawShape = function(c, startX, startY, sideLength, sideCountNumerator, sideCountDenominator){ + + // By Programming Thomas - https://programmingthomas.wordpress.com/2013/04/03/n-sided-shapes/ + var sideCount = sideCountNumerator * sideCountDenominator; + var decimalSides = sideCountNumerator / sideCountDenominator; + var interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides; + var interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180; // convert to radians + c.save(); + c.beginPath(); + c.translate(startX, startY); + c.moveTo(0,0); + for (var i = 0; i < sideCount; i++) { + c.lineTo(sideLength,0); + c.translate(sideLength,0); + c.rotate(interiorAngle); + } + //c.stroke(); + c.fill(); + c.restore(); + + }; + + pJS.fn.vendors.exportImg = function(){ + window.open(pJS.canvas.el.toDataURL('image/png'), '_blank'); + }; + + + pJS.fn.vendors.loadImg = function(type){ + + pJS.tmp.img_error = undefined; + + if(pJS.particles.shape.image.src != ''){ + + if(type == 'svg'){ + + var xhr = new XMLHttpRequest(); + xhr.open('GET', pJS.particles.shape.image.src); + xhr.onreadystatechange = function (data) { + if(xhr.readyState == 4){ + if(xhr.status == 200){ + pJS.tmp.source_svg = data.currentTarget.response; + pJS.fn.vendors.checkBeforeDraw(); + }else{ + console.log('Error pJS - Image not found'); + pJS.tmp.img_error = true; + } + } + } + xhr.send(); + + }else{ + + var img = new Image(); + img.addEventListener('load', function(){ + pJS.tmp.img_obj = img; + pJS.fn.vendors.checkBeforeDraw(); + }); + img.src = pJS.particles.shape.image.src; + + } + + }else{ + console.log('Error pJS - No image.src'); + pJS.tmp.img_error = true; + } + + }; + + + pJS.fn.vendors.draw = function(){ + + if(pJS.particles.shape.type == 'image'){ + + if(pJS.tmp.img_type == 'svg'){ + + if(pJS.tmp.count_svg >= pJS.particles.number.value){ + pJS.fn.particlesDraw(); + if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + }else{ + //console.log('still loading...'); + if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + } + + }else{ + + if(pJS.tmp.img_obj != undefined){ + pJS.fn.particlesDraw(); + if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + }else{ + if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + } + + } + + }else{ + pJS.fn.particlesDraw(); + if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + } + + }; + + + pJS.fn.vendors.checkBeforeDraw = function(){ + + // if shape is image + if(pJS.particles.shape.type == 'image'){ + + if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg == undefined){ + pJS.tmp.checkAnimFrame = requestAnimFrame(check); + }else{ + //console.log('images loaded! cancel check'); + cancelRequestAnimFrame(pJS.tmp.checkAnimFrame); + if(!pJS.tmp.img_error){ + pJS.fn.vendors.init(); + pJS.fn.vendors.draw(); + } + + } + + }else{ + pJS.fn.vendors.init(); + pJS.fn.vendors.draw(); + } + + }; + + + pJS.fn.vendors.init = function(){ + + /* init canvas + particles */ + pJS.fn.retinaInit(); + pJS.fn.canvasInit(); + pJS.fn.canvasSize(); + pJS.fn.canvasPaint(); + pJS.fn.particlesCreate(); + pJS.fn.vendors.densityAutoParticles(); + + /* particles.line_linked - convert hex colors to rgb */ + pJS.particles.line_linked.color_rgb_line = hexToRgb(pJS.particles.line_linked.color); + + }; + + + pJS.fn.vendors.start = function(){ + + if(isInArray('image', pJS.particles.shape.type)){ + pJS.tmp.img_type = pJS.particles.shape.image.src.substr(pJS.particles.shape.image.src.length - 3); + pJS.fn.vendors.loadImg(pJS.tmp.img_type); + }else{ + pJS.fn.vendors.checkBeforeDraw(); + } + + }; + + + + + /* ---------- pJS - start ------------ */ + + + pJS.fn.vendors.eventsListeners(); + + pJS.fn.vendors.start(); + + + +}; + +/* ---------- global functions - vendors ------------ */ + +Object.deepExtend = function(destination, source) { + for (var property in source) { + if (source[property] && source[property].constructor && + source[property].constructor === Object) { + destination[property] = destination[property] || {}; + arguments.callee(destination[property], source[property]); + } else { + destination[property] = source[property]; + } + } + return destination; +}; + +window.requestAnimFrame = (function(){ + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback){ + window.setTimeout(callback, 1000 / 60); + }; +})(); + +window.cancelRequestAnimFrame = ( function() { + return window.cancelAnimationFrame || + window.webkitCancelRequestAnimationFrame || + window.mozCancelRequestAnimationFrame || + window.oCancelRequestAnimationFrame || + window.msCancelRequestAnimationFrame || + clearTimeout +} )(); + +function hexToRgb(hex){ + // By Tim Down - http://stackoverflow.com/a/5624139/3493650 + // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") + var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + hex = hex.replace(shorthandRegex, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; +}; + +function clamp(number, min, max) { + return Math.min(Math.max(number, min), max); +}; + +function isInArray(value, array) { + return array.indexOf(value) > -1; +} + + +/* ---------- particles.js functions - start ------------ */ + +window.pJSDom = []; + +window.particlesJS = function(tag_id, params){ + + //console.log(params); + + /* no string id? so it's object params, and set the id with default id */ + if(typeof(tag_id) != 'string'){ + params = tag_id; + tag_id = 'particles-js'; + } + + /* no id? set the id to default id */ + if(!tag_id){ + tag_id = 'particles-js'; + } + + /* pJS elements */ + var pJS_tag = document.getElementById(tag_id), + pJS_canvas_class = 'particles-js-canvas-el', + exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class); + + /* remove canvas if exists into the pJS target tag */ + if(exist_canvas.length){ + while(exist_canvas.length > 0){ + pJS_tag.removeChild(exist_canvas[0]); + } + } + + /* create canvas element */ + var canvas_el = document.createElement('canvas'); + canvas_el.className = pJS_canvas_class; + + /* set size canvas */ + canvas_el.style.width = "100%"; + canvas_el.style.height = "100%"; + + /* append canvas */ + var canvas = document.getElementById(tag_id).appendChild(canvas_el); + + /* launch particle.js */ + if(canvas != null){ + pJSDom.push(new pJS(tag_id, params)); + } + +}; + +window.particlesJS.load = function(tag_id, path_config_json, callback){ + + /* load json config */ + var xhr = new XMLHttpRequest(); + xhr.open('GET', path_config_json); + xhr.onreadystatechange = function (data) { + if(xhr.readyState == 4){ + if(xhr.status == 200){ + var params = JSON.parse(data.currentTarget.response); + window.particlesJS(tag_id, params); + if(callback) callback(); + }else{ + console.log('Error pJS - XMLHttpRequest status: '+xhr.status); + console.log('Error pJS - File config not found'); + } + } + }; + xhr.send(); + +}; \ No newline at end of file diff --git a/particles.json b/particles.json new file mode 100644 index 0000000..0f96b7b --- /dev/null +++ b/particles.json @@ -0,0 +1,110 @@ +{ + "particles": { + "number": { + "value": 20, + "density": { + "enable": true, + "value_area": 800 + } + }, + "color": { + "value": "#4eade3" + }, + "shape": { + "type": "star", + "stroke": { + "width": 0, + "color": "#4eade3" + }, + "polygon": { + "nb_sides": 5 + }, + "image": { + "src": "images/js.png", + "width": 100, + "height": 100 + } + }, + "opacity": { + "value": 0.5, + "random": true, + "anim": { + "enable": true, + "speed": 1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 5, + "random": false, + "anim": { + "enable": false, + "speed": 80, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": true, + "distance": 300, + "color": "#4eade3", + "opacity": 0.4, + "width": 3 + }, + "move": { + "enable": true, + "speed": 3, + "direction": "random", + "random": true, + "straight": false, + "out_mode": "bounce", + "bounce": true, + "attract": { + "enable": true, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "canvas", + "events": { + "onhover": { + "enable": true, + "mode": "grab" + }, + "onclick": { + "enable": true, + "mode": "remove" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 400, + "line_linked": { + "opacity": 0.8 + } + }, + "bubble": { + "distance": 800, + "size": 80, + "duration": 2, + "opacity": 0.8, + "speed": 3 + }, + "repulse": { + "distance": 400, + "duration": 0.4 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": true + } \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..7a84b00 --- /dev/null +++ b/script.js @@ -0,0 +1,19 @@ +particlesJS.load('particles-js', 'particles.json', function() { + console.log('callback - particles.js config loaded'); + }); + window.onscroll = function () { window.scrollTo(0, 0); }; + function f1() { + navigator.clipboard.writeText('k̠̠̄r̲̱̱ȳ̲͞0̲̳̿0̠̳͞8̠̳̳#8914').catch(function(err) { + document.getElementById("info").style.color = "rgb(255, 0, 0)"; + console.log('Failed to copy text: ', err); + return setTimeout(() => { + document.getElementById("info").innerHTML = ""; + document.getElementById("info").style.color = "rgb(9, 255, 0)"; + }, 1000); + }); + document.getElementById("info").innerHTML = "Copied username to clipboard"; + setTimeout(() => { + document.getElementById("info").innerHTML = ""; + document.getElementById("info").style.color = "rgb(9, 255, 0)"; + }, 1000); + } \ No newline at end of file