gzuncompress
|
Server IP : 172.19.0.3 / Your IP : 216.73.216.178 Web Server : Apache/2.4 System : Linux 880f91b28fd7 5.15.0-117-generic #127~20.04.1-Ubuntu SMP Thu Jul 11 15:36:12 UTC 2024 x86_64 User : tomlinde ( 155017) PHP Version : 5.6.40 Disable Function : dl, syslog, opcache_get_status MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0700) : /home/webpages/lima-city/tomlinde/html/Server_TOMPC/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] | [ Lock Shell ] | [ Logout ] |
|---|
<html>
<head>
<title></title>
<style>
#canvas {
position: absolute;
top: 30px; left: 0px;
/*width: 50%; height:50%;*/
}
</style>
</head>
<body>
<h1>Cloud</h1>
<canvas id="tagCloud" width="600" height="400"></canvas>
<script type="text/javascript">
/*
TODO:
create Tags from XML
make an array sorted by Fontsize
make a function called by onclick,
- checking the tags in the order of fontsize for redirection
*/
var pageX = 0;
var pageY = 0;
var eventX = 0;
var eventY = 0;
var x = 0;
var y = 0;
var cloud = document.getElementById("tagCloud");
var ctx = cloud.getContext("2d");
var offsetTop = cloud.offsetTop;
var zoomX = cloud.width/2;
var zoomY = cloud.height/2;
var drawNow = false;
var initial = true;
var smoke = new Image();
smoke.src = "smoke.png";
var Tags = [ "Linux",
"Exherbo", "Gentoo",
"Web", "HowTo", "Winows", "Firefox",
"IE7", "IE8", "IE9", "Gnom", "Opera", "Elinks", "Test9", "Test10"];
document.getElementById("tagCloud").onmouseover = function(ev){drawNow = true;}
document.getElementById("tagCloud").onmouseout = function(ev){drawNow = false;}
function draw() {
if(!drawNow && !initial)
return;
initial = false;
cloud.width = cloud.width;//clear the old image
drawFrame(3);
updatePageXY();
x = eventX + pageX - cloud.offsetLeft;
y = eventY + pageY - cloud.offsetTop;
rectOnHover(10,10,cloud.width-20,cloud.height/6,'y',-3);
rectOnHover(10,10,cloud.width/6,cloud.height-20,'x',3);
rectOnHover(cloud.width/6*5-10,10,cloud.width/6,cloud.height-20,'x',-3);
rectOnHover(10,cloud.height/6*5-10,cloud.width-20,cloud.height/6,'y',3);
for(var i = 0; i < Tags.length; i++){
drawTag(i, Tags[i]);
}
}
setInterval("draw()", 30);
function updatePageXY(){
if (window.innerWidth) //Not IE
{
pageX = window.pageXOffset;
pageY = window.pageYOffset;
}
else if (document.documentElement.scrollLeft || document.documentElement.scrollTop) //IE with doctype
{
pageX = document.documentElement.scrollLeft;
pageY = document.documentElement.scrollTop;
}
else if (document.body.scrollLeft || document.body.scrollTop) //IE with no doctype
{
pageX = document.body.scrollLeft;
pageY = document.body.scrollTop;
}
}
document.onload = function(){draw(true);};
document.onmousemove = function(ev)
{
var e = ev || window.event;
eventX = e.clientX;
eventY = e.clientY;
}
function drawFrame(width){
ctx.beginPath();
ctx.rect(0,0,cloud.width, cloud.height);
ctx.fillStyle = '#000';
ctx.fill();
ctx.closePath();
ctx.beginPath();
ctx.rect(width, width, cloud.width-width*2, cloud.height-width*2);
ctx.fillStyle = '#acf';
ctx.fill();
ctx.closePath();
}
function rectOnHover(rx,ry,rw,rh,achse,n){
if(rx < x && x < rx+rw && ry < y && y < ry+rh ){
if(achse == 'x')
{
if((0 < n && zoomX < cloud.width/6*5) || (n < 0 && cloud.width/6 < zoomX ))
zoomX += n;
}
else if(achse == 'y')
if((0 < n && zoomY < cloud.height/6*5) || (n < 0 && cloud.height/6 < zoomY ))
zoomY += n;
}
}
function drawTag(id, title){
var tw = cloud.width/2;
var th = cloud.height/2;
var xf = cloud.width/400;//scaling
var yf = cloud.height/200;//scaling
var ff = 1.0;//font factor
switch(id){
case 0: drawTagAt(tw, th, title);break;
case 1: drawTagAt(tw-100*xf, th,title);break;
case 2: drawTagAt(tw+100*xf, th,title);break;
case 3: drawTagAt(tw-75*xf, th-40*yf,title);break;
case 4: drawTagAt(tw+75*xf, th-40*yf,title);break;
case 5: drawTagAt(tw-75*xf, th+40*yf,title);break;
case 6: drawTagAt(tw+75*xf, th+40*yf,title);break;
case 7: drawTagAt(tw-175*xf, th, title);break;
case 8: drawTagAt(tw, th-80*yf, title);break;
case 9: drawTagAt(tw+175*xf, th, title);break;
case 10: drawTagAt(tw, th+80*yf, title);break;
case 11: drawTagAt(tw-120*xf, th-70*yf, title);break;
case 12: drawTagAt(tw+120*xf, th-70*yf, title);break;
case 13: drawTagAt(tw+120*xf, th+70*yf, title);break;
case 14: drawTagAt(tw-120*xf, th+70*yf, title);break;
}
}
function drawTagAt(tx, ty, title){
var distanceToCenter = Math.round(distance(cloud.width/2,cloud.height/2,tx,ty));
var distanceToZoom = Math.round(distance(zoomX, zoomY, tx, ty));
if((distanceToCenter-distanceToZoom) < 0){
tx = tx - ((cloud.width/2) - zoomX)*(distanceToZoom-distanceToCenter)/100;
ty = ty + ((cloud.height/2) - zoomY)*(distanceToZoom-distanceToCenter)/100;
} else {
tx = tx - ((cloud.width/2) - zoomX)*(distanceToCenter-distanceToZoom)/100;
ty = ty + ((cloud.height/2) - zoomY)*(distanceToCenter-distanceToZoom)/100;
}
var baseSize = Math.round(Math.sqrt(cloud.width * cloud.height)/10);
var centerDistance = (Math.round(distance(cloud.width/2,cloud.height/2,tx,ty)*0.2));
if(0 <= x && x < cloud.width && 0 <= y && y < cloud.height)
var mouseFactor = Math.round(distance(x,y,tx,ty)*0.15);
else
var mouseFactor = centerDistance;
var fontSize = Math.round(baseSize - (centerDistance+mouseFactor)/2);
if(fontSize < 8)
fontSize = 8;
var smokeSize = 2*100*fontSize/(baseSize/2);
if(smokeSize < 100)
smokeSize = 100;
ctx.drawImage(smoke, tx-smokeSize/2, ty-smokeSize/2, smokeSize, smokeSize);
ctx.fillStyle = '#6aa';
ctx.font = 'normal ' + fontSize + 'px sans-serif';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillText(title, tx, ty);
}
function distance(ax,ay,bx,by){
var xDiff = Math.pow(ax - Math.abs(bx),2);
var yDiff = Math.pow(ay - Math.abs(by),2);
return Math.sqrt(xDiff + yDiff);
}
</script>
</body>
</html>