(function () { var coresPossiveis = { ciano: '#0bc0d3', laranja: '#fc671d', roxo: '#2c006a', magenta: '#d34af4', branco: '#ffffff' }; var coresPossiveisDosDetalhes = ['ciano', 'laranja', 'magenta']; var tempoDeTrocaDeCor = parseInt('0'); var callbackDeTrocaDeCor = ''; var contador = 0; var corAtual = 'laranja'; var corDoFundo = '#'; var ehAleatorio = 'undefined' === 'true'; var svgs = { 'ciano': 'digixbranco-ciano', 'laranja': 'digixbranco-laranja', 'magenta': 'digixbranco-magenta' }; function parseSvg(svg) { return (new window.DOMParser()).parseFromString(svg, "text/xml"); } function logo() { var pontoEsquerdo, pontoDireito, pontoTopo, trianguloroxo, fundo; var canvas = document.getElementById("Logo"); var paperLogo = new paper.PaperScope(); configurar(canvas); desenhar(); function desenhar() { console.log('desenhar', 'logo', canvas.id); paperLogo.project.clear(); configurar(canvas); pontoEsquerdo = new paperLogo.Point(calcularProporcao(10), calcularProporcao(80)); pontoDireito = new paperLogo.Point(calcularProporcao(90), pontoEsquerdo.y); pontoTopo = new paperLogo.Point((pontoEsquerdo.x + pontoDireito.y) / 2, calcularProporcao(18)); if(trianguloroxo) trianguloroxo.remove(); trianguloroxo = criarTriangulo(coresPossiveis[corAtual]); trianguloroxo.sendToBack(); if(ehAleatorio) { var tempoAleatorio = Math.floor((Math.random() * 45) + 0); atualizarFrame({ time: tempoAleatorio * 1000 }); } if (corDoFundo !== '#') { fundo = new paperLogo.Path.Rectangle({ point: [0, 0], size: [canvas.offsetWidth, canvas.offsetHeight], }); fundo.sendToBack(); fundo.selected = false; fundo.strokeColor = corDoFundo; fundo.fillColor = corDoFundo; } var symbolSvg = new paperLogo.Symbol(paper.project.importSVG(parseSvg(svgs[corAtual]).getElementsByTagName("svg")[0])); var pathSvg = symbolSvg.place(); pathSvg.position = new paperLogo.Point(calcularProporcao(95), calcularProporcao(56)); pathSvg.scale(calcularProporcao(0.85)); } if(!ehAleatorio) paperLogo.view.onFrame = atualizarFrame; paperLogo.view.onResize = desenhar; function configurar(canvas) { canvas.height = canvas.width / 1.7; canvas.offsetHeight = canvas.offsetWidth / 1.7; paperLogo.setup(canvas); } function calcularProporcao(percentual) { return (percentual / 100) * canvas.offsetHeight; } function criarTriangulo(cor) { var primeiroSegmento = new paperLogo.Segment(pontoEsquerdo); var segundoSegmento = new paperLogo.Segment(pontoDireito); var terceiroSegmento = new paperLogo.Segment(pontoTopo); var triangulo = new paperLogo.Path(primeiroSegmento, segundoSegmento, terceiroSegmento); triangulo.strokeColor = cor; triangulo.fillColor = cor; triangulo.strokeWidth = calcularProporcao(4); triangulo.closed = true; // triangulo.fullySelected = true; return triangulo; } function atualizarFrame(event) { var raioTrianguloRoxo = calcularProporcao(15); var velocidadeDoRoxo = 0.5; if(tempoDeTrocaDeCor && tempoDeTrocaDeCor > 0 && contador%(tempoDeTrocaDeCor*60) === 0) trocarDeCor(); atualizarTriangulo(event.time, trianguloroxo, raioTrianguloRoxo, velocidadeDoRoxo + 0.1, velocidadeDoRoxo - 0.1, velocidadeDoRoxo); contador++; } function trocarDeCor() { var cor = coresPossiveisDosDetalhes[Math.floor(Math.random() * 3)]; if (cor === corAtual) return trocarDeCor(); corAtual = cor; trianguloroxo.strokeColor = coresPossiveis[corAtual]; trianguloroxo.fillColor = coresPossiveis[corAtual]; desenhar(); if(callbackDeTrocaDeCor) { if(typeof window[callbackDeTrocaDeCor] === 'function') window[callbackDeTrocaDeCor].apply(window, [corAtual, coresPossiveis[corAtual]]); else console.error('callbackDeTrocaDeCor recebeu "' + callbackDeTrocaDeCor + '" que não é uma função válida.'); } } function atualizarSegmento(tempo, segmento, velocidade, raio, deveInverter, anguloInicial, anguloFinal) { var radianoInicial = (anguloInicial / 180) * Math.PI; var radianoFinal = (anguloFinal / 180) * Math.PI; var angulo = ((Math.sin(((tempo + 5) * velocidade)) + 1) / 2) * (radianoFinal - radianoInicial) + radianoInicial; var raioCalculado = ((Math.sin(((tempo + 5) * velocidade * 2.2)) + 1) / 2) * (raio * 1.2 - raio * 0.8) + raio * 0.8; var x = Math.cos(angulo) * raioCalculado; var y = Math.sin(angulo) * raioCalculado; var multiplicador = deveInverter ? -1 : 1; segmento.handleIn.x = x * multiplicador; segmento.handleIn.y = y * multiplicador; segmento.handleOut.x = -x * multiplicador; segmento.handleOut.y = -y * multiplicador; } function atualizarTriangulo(tempo, triangulo, raio, velocidade1, velocidade2, velocidade3) { atualizarSegmento(tempo, triangulo.segments[0], velocidade1, raio, false, -230, -70); // esquerda atualizarSegmento(tempo, triangulo.segments[1], velocidade2, raio, true, -100, 40); // direita atualizarSegmento(tempo, triangulo.segments[2], velocidade3, raio, false, -60, 60); // cima } } if (typeof paper === 'undefined') { var script = document.createElement('script'); script.src = 'https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.10.2/paper-full.min.js'; script.onload = function () { logo(); } document.body.appendChild(script); } else { logo(); } }());