Removed CrystalDiskInfo
							
								
								
									
										
											BIN
										
									
								
								CrystalDiskInfo7_6_1/CdiResource/AlertMail.exe
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								CrystalDiskInfo7_6_1/CdiResource/AlertMail4.exe
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						| @@ -1,160 +0,0 @@ | ||||
| * | ||||
| { | ||||
| 	margin: 0px; | ||||
| 	padding: 0px; | ||||
| } | ||||
|  | ||||
| body | ||||
| { | ||||
| 	color: #000000; | ||||
| 	background: #ffffff; | ||||
| 	background-image: url(image/background.png); | ||||
| 	font-family: "<22><><EFBFBD>C<EFBFBD><43><EFBFBD>I", Meiryo, Tahoma; | ||||
| 	overflow: hidden; | ||||
| } | ||||
|  | ||||
| select | ||||
| { | ||||
| 	font-family: "<22><><EFBFBD>C<EFBFBD><43><EFBFBD>I", Meiryo, Tahoma; | ||||
| 	font-size: 100%; | ||||
| } | ||||
|  | ||||
| .inline | ||||
| { | ||||
| 	display: inline; | ||||
| } | ||||
|  | ||||
| .double | ||||
| { | ||||
| 	font-size: 24px; | ||||
| 	font-weight: bold; | ||||
| 	font-family: "<22><><EFBFBD>C<EFBFBD><43><EFBFBD>I", Meiryo, Tahoma; | ||||
| 	text-align: center; | ||||
| } | ||||
|  | ||||
| a#AllOn | ||||
| { | ||||
| 	vertical-align: bottom; | ||||
| 	background-image: url(image/GraphAllOn.png); | ||||
| 	opacity: 0.6; | ||||
| 	filter: alpha(opacity=60); | ||||
| 	display: block; | ||||
| 	width: 24px; | ||||
| 	height: 24px; | ||||
| } | ||||
|  | ||||
| a:hover#AllOn | ||||
| { | ||||
| 	background-image: url(image/GraphAllOn.png); | ||||
| 	opacity: 1.0; | ||||
| 	filter: alpha(opacity=100); | ||||
| 	display: block; | ||||
| 	width: 24px; | ||||
| 	height: 24px; | ||||
| } | ||||
|  | ||||
| a#AllOff | ||||
| { | ||||
| 	vertical-align: bottom; | ||||
| 	background-image: url(image/GraphAllOff.png); | ||||
| 	opacity: 0.6; | ||||
| 	filter: alpha(opacity=60); | ||||
| 	display: block; | ||||
| 	width: 24px; | ||||
| 	height: 24px; | ||||
| } | ||||
|  | ||||
| a:hover#AllOff | ||||
| { | ||||
| 	background-image: url(image/GraphAllOff.png); | ||||
| 	opacity: 1.0; | ||||
| 	filter: alpha(opacity=100); | ||||
| 	display: block; | ||||
| 	width: 24px; | ||||
| 	height: 24px; | ||||
| } | ||||
|  | ||||
| a#Reset | ||||
| { | ||||
| 	vertical-align: bottom; | ||||
| 	background-image: url(image/GraphReset.png); | ||||
| 	opacity: 0.6; | ||||
| 	filter: alpha(opacity=60); | ||||
| 	display: block; | ||||
| 	width: 24px; | ||||
| 	height: 24px; | ||||
| } | ||||
|  | ||||
| a:hover#Reset | ||||
| { | ||||
| 	background-image: url(image/GraphReset.png); | ||||
| 	opacity: 1.0; | ||||
| 	filter: alpha(opacity=100); | ||||
| 	display: block; | ||||
| 	width: 24px; | ||||
| 	height: 24px; | ||||
| } | ||||
|  | ||||
|  | ||||
| #menuBar | ||||
| { | ||||
| 	width: 100%; | ||||
| 	list-style-type: none; | ||||
| 	margin-bottom: 4px; | ||||
| 	font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif; | ||||
| 	font-weight: bold; | ||||
| 	line-height: 1.20; | ||||
| 	text-align: center; | ||||
| 	background: #cccccc url(image/graphMenuBar.png) repeat-x; | ||||
| 	background-position: 0px 0px; | ||||
| 	height: 20px; | ||||
| } | ||||
|  | ||||
| #menuBar li | ||||
| { | ||||
| 	display: inline; | ||||
| 	font-size: 12px; | ||||
| 	margin: 0px; | ||||
| 	padding-top: 2px; | ||||
| 	margin-top: 10px; | ||||
| } | ||||
|  | ||||
| #menuBar li a | ||||
| { | ||||
| 	float: left; | ||||
| 	margin: 0px; | ||||
| 	padding: 0px; | ||||
| 	color: #666666; | ||||
| 	text-decoration: none; | ||||
| 	overflow: hidden; | ||||
| 	text-overflow: ellipsis; | ||||
| 	width: 30px; | ||||
| 	height: 20px; | ||||
| } | ||||
|  | ||||
| #menuBar li a:hover | ||||
| { | ||||
| 	color: #000000; | ||||
| 	font-size: 14px; | ||||
| } | ||||
|  | ||||
| #menuBar li a.selected  | ||||
| { | ||||
| 	color: #333333; | ||||
| 	background: url(check.png) no-repeat; | ||||
| 	background-position: 20px 12px; | ||||
| } | ||||
|  | ||||
| #menuBar li a.hidden | ||||
| { | ||||
| 	visibility: hidden; | ||||
| 	margin: 0px; | ||||
| 	padding: 0px; | ||||
| 	width: 0px; | ||||
| 	height: 0px; | ||||
| } | ||||
|  | ||||
| #menuBar li a.visible | ||||
| { | ||||
| 	visibility: visible; | ||||
| } | ||||
| @@ -1,222 +0,0 @@ | ||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||||
| <html oncontextmenu="return false" onmousewheel="return !event.shiftKey" onselectstart="return false" ondragover="return false"> | ||||
| <head> | ||||
|   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||||
|   <meta http-equiv="X-UA-Compatible" content="IE=edge" > | ||||
|   <title>CrystalDiskInfo</title> | ||||
|   <!--[if lte IE 8 ]><script language="javascript" type="text/javascript" src="./flot/excanvas.min.js"></script><![endif]--> | ||||
|   <script language="javascript" type="text/javascript" src="./flot/jquery.min.js"></script> | ||||
|   <script language="javascript" type="text/javascript" src="./flot/jquery.flot.min.js"></script> | ||||
|   <link id="StyleSheet" href="Graph.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body onresize="changeSize();" oncontextmenu="return false" onmousewheel="return !event.shiftKey" onselectstart="return false" ondragover="return false"> | ||||
| <div id="mainMenu"> | ||||
|   <ul id="menuBar"> | ||||
|     <li id="LiAllOn" class="allOnOff"></li> | ||||
|     <li id="LiAllOff" class="allOnOff"></li> | ||||
|     <li id="LiRefresh" class="allOnOff"></li> | ||||
|     <li id="LiDisk0"><a href="#" id="Disk0"></a></li> | ||||
|     <li id="LiDisk1"><a href="#" id="Disk1"></a></li> | ||||
|     <li id="LiDisk2"><a href="#" id="Disk2"></a></li> | ||||
|     <li id="LiDisk3"><a href="#" id="Disk3"></a></li> | ||||
|     <li id="LiDisk4"><a href="#" id="Disk4"></a></li> | ||||
|     <li id="LiDisk5"><a href="#" id="Disk5"></a></li> | ||||
|     <li id="LiDisk6"><a href="#" id="Disk6"></a></li> | ||||
|     <li id="LiDisk7"><a href="#" id="Disk7"></a></li> | ||||
|     <li id="LiDisk8"><a href="#" id="Disk8"></a></li> | ||||
|     <li id="LiDisk9"><a href="#" id="Disk9"></a></li> | ||||
|     <li id="LiDisk10"><a href="#" id="Disk10"></a></li> | ||||
|     <li id="LiDisk11"><a href="#" id="Disk11"></a></li> | ||||
|     <li id="LiDisk12"><a href="#" id="Disk12"></a></li> | ||||
|     <li id="LiDisk13"><a href="#" id="Disk13"></a></li> | ||||
|     <li id="LiDisk14"><a href="#" id="Disk14"></a></li> | ||||
|     <li id="LiDisk15"><a href="#" id="Disk15"></a></li> | ||||
|     <li id="LiDisk16"><a href="#" id="Disk16"></a></li> | ||||
|     <li id="LiDisk17"><a href="#" id="Disk17"></a></li> | ||||
|     <li id="LiDisk18"><a href="#" id="Disk18"></a></li> | ||||
|     <li id="LiDisk19"><a href="#" id="Disk19"></a></li> | ||||
|     <li id="LiDisk20"><a href="#" id="Disk20"></a></li> | ||||
|     <li id="LiDisk21"><a href="#" id="Disk21"></a></li> | ||||
|     <li id="LiDisk22"><a href="#" id="Disk22"></a></li> | ||||
|     <li id="LiDisk23"><a href="#" id="Disk23"></a></li> | ||||
|     <li id="LiDisk24"><a href="#" id="Disk24"></a></li> | ||||
|     <li id="LiDisk25"><a href="#" id="Disk25"></a></li> | ||||
|     <li id="LiDisk26"><a href="#" id="Disk26"></a></li> | ||||
|     <li id="LiDisk27"><a href="#" id="Disk27"></a></li> | ||||
|     <li id="LiDisk28"><a href="#" id="Disk28"></a></li> | ||||
|     <li id="LiDisk29"><a href="#" id="Disk29"></a></li> | ||||
|     <li id="LiDisk30"><a href="#" id="Disk30"></a></li> | ||||
|     <li id="LiDisk31"><a href="#" id="Disk31"></a></li> | ||||
|     <li id="LiDisk32"><a href="#" id="Disk32"></a></li> | ||||
|     <li id="LiDisk33"><a href="#" id="Disk33"></a></li> | ||||
|     <li id="LiDisk34"><a href="#" id="Disk34"></a></li> | ||||
|     <li id="LiDisk35"><a href="#" id="Disk35"></a></li> | ||||
|     <li id="LiDisk36"><a href="#" id="Disk36"></a></li> | ||||
|     <li id="LiDisk37"><a href="#" id="Disk37"></a></li> | ||||
|     <li id="LiDisk38"><a href="#" id="Disk38"></a></li> | ||||
|     <li id="LiDisk39"><a href="#" id="Disk39"></a></li> | ||||
|     <li id="LiDisk40"><a href="#" id="Disk40"></a></li> | ||||
|     <li id="LiDisk41"><a href="#" id="Disk41"></a></li> | ||||
|     <li id="LiDisk42"><a href="#" id="Disk42"></a></li> | ||||
|     <li id="LiDisk43"><a href="#" id="Disk43"></a></li> | ||||
|     <li id="LiDisk44"><a href="#" id="Disk44"></a></li> | ||||
|     <li id="LiDisk45"><a href="#" id="Disk45"></a></li> | ||||
|     <li id="LiDisk46"><a href="#" id="Disk46"></a></li> | ||||
|     <li id="LiDisk47"><a href="#" id="Disk47"></a></li> | ||||
|   </ul> | ||||
| <div id="select" style="margin-left: 10px;"> | ||||
| <table> | ||||
| <tr> | ||||
| <td><a href="#" id="AllOn"></a></td> | ||||
| <td><a href="#" id="AllOff"></a></td> | ||||
| <td><a href="#" id="Reset"></a></td> | ||||
| <td> | ||||
| <select id="SelectAttributeId" title="Select Attribute ID" onchange="this.click()"> | ||||
|   <option value="261" selected="selected">Reallocated Sectors Count</option> | ||||
| </select> | ||||
| </td> | ||||
| </tr> | ||||
| </table> | ||||
| </div> | ||||
| <div id="placeholder" style="margin:20px;width:600px;height:340px;"></div> | ||||
| <div id="overview" style="margin-left:20px;margin-right:20px;width:600px;height:40px"></div> | ||||
| <script id="source" language="javascript" type="text/javascript"> | ||||
|  | ||||
| function changeBackgroundImage(x) | ||||
| { | ||||
| 	document.body.style.backgroundImage = x; | ||||
| } | ||||
|  | ||||
| function updateData(x) | ||||
| { | ||||
| 	d = eval(x); | ||||
| } | ||||
|  | ||||
| function updateMainViewOptions(x) | ||||
| { | ||||
| 	options = eval("(" + x + ")"); | ||||
| } | ||||
|  | ||||
| function updateOverViewOptions(x) | ||||
| { | ||||
| 	overViewOptions = eval("(" + x + ")"); | ||||
| } | ||||
|  | ||||
| function reDraw() | ||||
| { | ||||
| 	document.body.style.cursor = "wait"; | ||||
| 	plot = $.plot($("#placeholder"), d, options); | ||||
| 	overview = $.plot($("#overview"), d, overViewOptions); | ||||
| 	document.body.style.cursor = "auto"; | ||||
| } | ||||
|  | ||||
| var d = [[]]; | ||||
| var options = {}; | ||||
| var overViewOptions = {}; | ||||
| var plot; | ||||
| var overview; | ||||
|  | ||||
| function changeSize() | ||||
| { | ||||
| 	var obj = document.getElementById("placeholder"); | ||||
| 	if(obj) | ||||
| 	{ | ||||
| 		obj.style.width = (document.documentElement.clientWidth - 40) + "px"; | ||||
| 		obj.style.height = (document.documentElement.clientHeight - 150) + "px"; | ||||
| 	} | ||||
| 	var obj = document.getElementById("overview"); | ||||
| 	if(obj) | ||||
| 	{ | ||||
| 		obj.style.width = (document.documentElement.clientWidth - 40) + "px"; | ||||
| 	} | ||||
|  | ||||
| 	plot = $.plot($("#placeholder"), d, options); | ||||
| 	overview = $.plot($("#overview"), d, overViewOptions); | ||||
| } | ||||
|  | ||||
| // helper for returning the weekends in a period | ||||
| function weekendAreas(plotarea) | ||||
| { | ||||
|     var areas = []; | ||||
|     var d = new Date(plotarea.xmin); | ||||
|     // go to the first Saturday | ||||
|     d.setDate(d.getDate() - ((d.getDay() + 1) % 7)) | ||||
|     d.setSeconds(0); | ||||
|     d.setMinutes(0); | ||||
|     d.setHours(0); | ||||
|  | ||||
|     var i = d.getTime() - d.getTimezoneOffset() * 60 * 1000; | ||||
|     do { | ||||
|         // when we don't set y1 and y2 the rectangle | ||||
|         // automatically extends to infinity in those directions | ||||
|         areas.push({ x1: i, x2: i + 2 * 24 * 60 * 60 * 1000 }); | ||||
|         i += 7 * 24 * 60 * 60 * 1000; | ||||
|     } while (i < plotarea.xmax); | ||||
|  | ||||
|     return areas; | ||||
| } | ||||
|  | ||||
| // now connect the two | ||||
| var internalSelection = false; | ||||
|  | ||||
| $("#placeholder").bind("selected", function (event, area) { | ||||
|     // do the zooming | ||||
|     plot = $.plot($("#placeholder"), d, | ||||
|                   $.extend(true, {}, options, { | ||||
|                       xaxis: { min: area.x1, max: area.x2 }, | ||||
|                       yaxis: { min: area.y1, max: area.y2 } | ||||
|                   })); | ||||
|      | ||||
|     if (internalSelection) | ||||
|         return; // prevent eternal loop | ||||
|     internalSelection = true; | ||||
|     overview.setSelection(area); | ||||
|     internalSelection = false; | ||||
| }); | ||||
|  | ||||
| $("#overview").bind("selected", function (event, area) { | ||||
|     if (internalSelection) | ||||
|         return; | ||||
|     internalSelection = true; | ||||
|     plot.setSelection(area); | ||||
|     internalSelection = false; | ||||
| }); | ||||
|  | ||||
| function showTooltip(x, y, contents) { | ||||
|     var str = "" + contents; | ||||
|     x = x - str.length * 6; | ||||
|     $('<div id="tooltip">' + contents + '</div>').css( { | ||||
| 	position: 'absolute', | ||||
|         display: 'none', | ||||
|         top: y - 40, | ||||
|         left: x, | ||||
|         border: '1px solid #ddd', | ||||
|         padding: '4px', | ||||
|         'background-color': '#eee', | ||||
|         'font-size': '20px', | ||||
|        opacity: 0.90 | ||||
|     }).appendTo("body").fadeIn(200); | ||||
| } | ||||
|  | ||||
| var previousPoint = null; | ||||
| $("#placeholder").bind("plothover", function (event, pos, item) { | ||||
|     if (item) { | ||||
|         if (previousPoint != item.datapoint) { | ||||
|             previousPoint = item.datapoint; | ||||
|              | ||||
|             $("#tooltip").remove(); | ||||
|             var x = item.datapoint[0].toFixed(2), | ||||
|                 y = item.datapoint[1].toFixed(2); | ||||
|              | ||||
|             showTooltip(item.pageX, item.pageY, parseInt(y)); | ||||
|         } | ||||
|     } | ||||
|     else { | ||||
|         $("#tooltip").remove(); | ||||
|         previousPoint = null; | ||||
|     } | ||||
| }); | ||||
| </script> | ||||
| <div id="complete"></div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,222 +0,0 @@ | ||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||||
| <html oncontextmenu="return false" onmousewheel="return !event.shiftKey" onselectstart="return false" ondragover="return false"> | ||||
| <head> | ||||
|   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||||
|   <meta http-equiv="X-UA-Compatible" content="IE=8" > | ||||
|   <title>CrystalDiskInfo</title> | ||||
|   <!--[if lte IE 8 ]><script language="javascript" type="text/javascript" src="./flot/excanvas.min.js"></script><![endif]--> | ||||
|   <script language="javascript" type="text/javascript" src="./flot/jquery.min.js"></script> | ||||
|   <script language="javascript" type="text/javascript" src="./flot/jquery.flot.min.js"></script> | ||||
|   <link id="StyleSheet" href="Graph.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body onresize="changeSize();" oncontextmenu="return false" onmousewheel="return !event.shiftKey" onselectstart="return false" ondragover="return false"> | ||||
| <div id="mainMenu"> | ||||
|   <ul id="menuBar"> | ||||
|     <li id="LiAllOn" class="allOnOff"></li> | ||||
|     <li id="LiAllOff" class="allOnOff"></li> | ||||
|     <li id="LiRefresh" class="allOnOff"></li> | ||||
|     <li id="LiDisk0"><a href="#" id="Disk0"></a></li> | ||||
|     <li id="LiDisk1"><a href="#" id="Disk1"></a></li> | ||||
|     <li id="LiDisk2"><a href="#" id="Disk2"></a></li> | ||||
|     <li id="LiDisk3"><a href="#" id="Disk3"></a></li> | ||||
|     <li id="LiDisk4"><a href="#" id="Disk4"></a></li> | ||||
|     <li id="LiDisk5"><a href="#" id="Disk5"></a></li> | ||||
|     <li id="LiDisk6"><a href="#" id="Disk6"></a></li> | ||||
|     <li id="LiDisk7"><a href="#" id="Disk7"></a></li> | ||||
|     <li id="LiDisk8"><a href="#" id="Disk8"></a></li> | ||||
|     <li id="LiDisk9"><a href="#" id="Disk9"></a></li> | ||||
|     <li id="LiDisk10"><a href="#" id="Disk10"></a></li> | ||||
|     <li id="LiDisk11"><a href="#" id="Disk11"></a></li> | ||||
|     <li id="LiDisk12"><a href="#" id="Disk12"></a></li> | ||||
|     <li id="LiDisk13"><a href="#" id="Disk13"></a></li> | ||||
|     <li id="LiDisk14"><a href="#" id="Disk14"></a></li> | ||||
|     <li id="LiDisk15"><a href="#" id="Disk15"></a></li> | ||||
|     <li id="LiDisk16"><a href="#" id="Disk16"></a></li> | ||||
|     <li id="LiDisk17"><a href="#" id="Disk17"></a></li> | ||||
|     <li id="LiDisk18"><a href="#" id="Disk18"></a></li> | ||||
|     <li id="LiDisk19"><a href="#" id="Disk19"></a></li> | ||||
|     <li id="LiDisk20"><a href="#" id="Disk20"></a></li> | ||||
|     <li id="LiDisk21"><a href="#" id="Disk21"></a></li> | ||||
|     <li id="LiDisk22"><a href="#" id="Disk22"></a></li> | ||||
|     <li id="LiDisk23"><a href="#" id="Disk23"></a></li> | ||||
|     <li id="LiDisk24"><a href="#" id="Disk24"></a></li> | ||||
|     <li id="LiDisk25"><a href="#" id="Disk25"></a></li> | ||||
|     <li id="LiDisk26"><a href="#" id="Disk26"></a></li> | ||||
|     <li id="LiDisk27"><a href="#" id="Disk27"></a></li> | ||||
|     <li id="LiDisk28"><a href="#" id="Disk28"></a></li> | ||||
|     <li id="LiDisk29"><a href="#" id="Disk29"></a></li> | ||||
|     <li id="LiDisk30"><a href="#" id="Disk30"></a></li> | ||||
|     <li id="LiDisk31"><a href="#" id="Disk31"></a></li> | ||||
|     <li id="LiDisk32"><a href="#" id="Disk32"></a></li> | ||||
|     <li id="LiDisk33"><a href="#" id="Disk33"></a></li> | ||||
|     <li id="LiDisk34"><a href="#" id="Disk34"></a></li> | ||||
|     <li id="LiDisk35"><a href="#" id="Disk35"></a></li> | ||||
|     <li id="LiDisk36"><a href="#" id="Disk36"></a></li> | ||||
|     <li id="LiDisk37"><a href="#" id="Disk37"></a></li> | ||||
|     <li id="LiDisk38"><a href="#" id="Disk38"></a></li> | ||||
|     <li id="LiDisk39"><a href="#" id="Disk39"></a></li> | ||||
|     <li id="LiDisk40"><a href="#" id="Disk40"></a></li> | ||||
|     <li id="LiDisk41"><a href="#" id="Disk41"></a></li> | ||||
|     <li id="LiDisk42"><a href="#" id="Disk42"></a></li> | ||||
|     <li id="LiDisk43"><a href="#" id="Disk43"></a></li> | ||||
|     <li id="LiDisk44"><a href="#" id="Disk44"></a></li> | ||||
|     <li id="LiDisk45"><a href="#" id="Disk45"></a></li> | ||||
|     <li id="LiDisk46"><a href="#" id="Disk46"></a></li> | ||||
|     <li id="LiDisk47"><a href="#" id="Disk47"></a></li> | ||||
|   </ul> | ||||
| <div id="select" style="margin-left: 10px;"> | ||||
| <table> | ||||
| <tr> | ||||
| <td><a href="#" id="AllOn"></a></td> | ||||
| <td><a href="#" id="AllOff"></a></td> | ||||
| <td><a href="#" id="Reset"></a></td> | ||||
| <td> | ||||
| <select id="SelectAttributeId" title="Select Attribute ID" onchange="this.click()"> | ||||
|   <option value="261" selected="selected">Reallocated Sectors Count</option> | ||||
| </select> | ||||
| </td> | ||||
| </tr> | ||||
| </table> | ||||
| </div> | ||||
| <div id="placeholder" style="margin:20px;width:600px;height:340px;"></div> | ||||
| <div id="overview" style="margin-left:20px;margin-right:20px;width:600px;height:40px"></div> | ||||
| <script id="source" language="javascript" type="text/javascript"> | ||||
|  | ||||
| function changeBackgroundImage(x) | ||||
| { | ||||
| 	document.body.style.backgroundImage = x; | ||||
| } | ||||
|  | ||||
| function updateData(x) | ||||
| { | ||||
| 	d = eval(x); | ||||
| } | ||||
|  | ||||
| function updateMainViewOptions(x) | ||||
| { | ||||
| 	options = eval("(" + x + ")"); | ||||
| } | ||||
|  | ||||
| function updateOverViewOptions(x) | ||||
| { | ||||
| 	overViewOptions = eval("(" + x + ")"); | ||||
| } | ||||
|  | ||||
| function reDraw() | ||||
| { | ||||
| 	document.body.style.cursor = "wait"; | ||||
| 	plot = $.plot($("#placeholder"), d, options); | ||||
| 	overview = $.plot($("#overview"), d, overViewOptions); | ||||
| 	document.body.style.cursor = "auto"; | ||||
| } | ||||
|  | ||||
| var d = [[]]; | ||||
| var options = {}; | ||||
| var overViewOptions = {}; | ||||
| var plot; | ||||
| var overview; | ||||
|  | ||||
| function changeSize() | ||||
| { | ||||
| 	var obj = document.getElementById("placeholder"); | ||||
| 	if(obj) | ||||
| 	{ | ||||
| 		obj.style.width = (document.documentElement.clientWidth - 40) + "px"; | ||||
| 		obj.style.height = (document.documentElement.clientHeight - 150) + "px"; | ||||
| 	} | ||||
| 	var obj = document.getElementById("overview"); | ||||
| 	if(obj) | ||||
| 	{ | ||||
| 		obj.style.width = (document.documentElement.clientWidth - 40) + "px"; | ||||
| 	} | ||||
|  | ||||
| 	plot = $.plot($("#placeholder"), d, options); | ||||
| 	overview = $.plot($("#overview"), d, overViewOptions); | ||||
| } | ||||
|  | ||||
| // helper for returning the weekends in a period | ||||
| function weekendAreas(plotarea) | ||||
| { | ||||
|     var areas = []; | ||||
|     var d = new Date(plotarea.xmin); | ||||
|     // go to the first Saturday | ||||
|     d.setDate(d.getDate() - ((d.getDay() + 1) % 7)) | ||||
|     d.setSeconds(0); | ||||
|     d.setMinutes(0); | ||||
|     d.setHours(0); | ||||
|  | ||||
|     var i = d.getTime() - d.getTimezoneOffset() * 60 * 1000; | ||||
|     do { | ||||
|         // when we don't set y1 and y2 the rectangle | ||||
|         // automatically extends to infinity in those directions | ||||
|         areas.push({ x1: i, x2: i + 2 * 24 * 60 * 60 * 1000 }); | ||||
|         i += 7 * 24 * 60 * 60 * 1000; | ||||
|     } while (i < plotarea.xmax); | ||||
|  | ||||
|     return areas; | ||||
| } | ||||
|  | ||||
| // now connect the two | ||||
| var internalSelection = false; | ||||
|  | ||||
| $("#placeholder").bind("selected", function (event, area) { | ||||
|     // do the zooming | ||||
|     plot = $.plot($("#placeholder"), d, | ||||
|                   $.extend(true, {}, options, { | ||||
|                       xaxis: { min: area.x1, max: area.x2 }, | ||||
|                       yaxis: { min: area.y1, max: area.y2 } | ||||
|                   })); | ||||
|      | ||||
|     if (internalSelection) | ||||
|         return; // prevent eternal loop | ||||
|     internalSelection = true; | ||||
|     overview.setSelection(area); | ||||
|     internalSelection = false; | ||||
| }); | ||||
|  | ||||
| $("#overview").bind("selected", function (event, area) { | ||||
|     if (internalSelection) | ||||
|         return; | ||||
|     internalSelection = true; | ||||
|     plot.setSelection(area); | ||||
|     internalSelection = false; | ||||
| }); | ||||
|  | ||||
| function showTooltip(x, y, contents) { | ||||
|     var str = "" + contents; | ||||
|     x = x - str.length * 6; | ||||
|     $('<div id="tooltip">' + contents + '</div>').css( { | ||||
| 	position: 'absolute', | ||||
|         display: 'none', | ||||
|         top: y - 40, | ||||
|         left: x, | ||||
|         border: '1px solid #ddd', | ||||
|         padding: '4px', | ||||
|         'background-color': '#eee', | ||||
|         'font-size': '20px', | ||||
|        opacity: 0.90 | ||||
|     }).appendTo("body").fadeIn(200); | ||||
| } | ||||
|  | ||||
| var previousPoint = null; | ||||
| $("#placeholder").bind("plothover", function (event, pos, item) { | ||||
|     if (item) { | ||||
|         if (previousPoint != item.datapoint) { | ||||
|             previousPoint = item.datapoint; | ||||
|              | ||||
|             $("#tooltip").remove(); | ||||
|             var x = item.datapoint[0].toFixed(2), | ||||
|                 y = item.datapoint[1].toFixed(2); | ||||
|              | ||||
|             showTooltip(item.pageX, item.pageY, parseInt(y)); | ||||
|         } | ||||
|     } | ||||
|     else { | ||||
|         $("#tooltip").remove(); | ||||
|         previousPoint = null; | ||||
|     } | ||||
| }); | ||||
| </script> | ||||
| <div id="complete"></div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,327 +0,0 @@ | ||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||||
| <html oncontextmenu="return false" onmousewheel="return !event.shiftKey" onselectstart="return false" ondragover="return false"> | ||||
| <head> | ||||
| <title>CrystalDiskInfo</title> | ||||
| <style type="text/css"> | ||||
| body | ||||
| { | ||||
| 	font-size: 14px; | ||||
| 	text-align: center; | ||||
| 	color: #000000; | ||||
| 	background: #ffffff; | ||||
| 	background-image: url("./image/background.png"); | ||||
|   	font-family: "メイリオ", Meiryo, Tahoma; | ||||
|   	line-height: 1.3; | ||||
| } | ||||
|  | ||||
| p | ||||
| { | ||||
| 	margin: 5px; | ||||
| } | ||||
|  | ||||
| th | ||||
| { | ||||
| 	font-size: 14px; | ||||
| 	background-image: url("./image/labelUnsupported.png"); | ||||
| 	background-position: center bottom; | ||||
| 	background-repeat: no-repeat; | ||||
| 	height: 24px; | ||||
| } | ||||
|  | ||||
| a:link | ||||
| { | ||||
| 	text-decoration: none; | ||||
| 	color: #3333ff; | ||||
| } | ||||
|  | ||||
| a:visited | ||||
| { | ||||
| 	text-decoration: none; | ||||
| 	color: #6666ff; | ||||
| } | ||||
|  | ||||
| div.color | ||||
| { | ||||
| 	display: block; | ||||
| 	border: #cccccc 3px double; | ||||
| 	background-color: #eeeeee; | ||||
| 	width : 16px; | ||||
| 	height: 16px; | ||||
| } | ||||
|  | ||||
| div.valueC | ||||
| { | ||||
| 	display: block; | ||||
| 	text-align: center; | ||||
| 	border-left: #cccccc 1px solid; | ||||
| 	border-top: #f0f0f0 1px solid; | ||||
| 	border-bottom: #dddddd 1px solid; | ||||
| 	border-right: #f0f0f0 1px solid; | ||||
| 	padding-left: 2px; | ||||
| 	padding-right: 2px; | ||||
| 	padding-top: 1px; | ||||
| 	padding-bottom: 0px; | ||||
| 	color: #111111; | ||||
| 	font-family: monospace; | ||||
| 	height: 18px; | ||||
| 	overflow: hidden; | ||||
| 	text-overflow: ellipsis; | ||||
| } | ||||
|  | ||||
| div.valueL | ||||
| { | ||||
| 	display: block; | ||||
| 	text-align: left; | ||||
| 	border-left: #cccccc 1px solid; | ||||
| 	border-top: #f0f0f0 1px solid; | ||||
| 	border-bottom: #dddddd 1px solid; | ||||
| 	border-right: #f0f0f0 1px solid; | ||||
| 	padding-left: 2px; | ||||
| 	padding-right: 2px; | ||||
| 	padding-top: 1px; | ||||
| 	padding-bottom: 0px; | ||||
| 	color: #111111; | ||||
| 	font-family: "メイリオ", Meiryo, Tahoma; | ||||
| 	height: 18px; | ||||
| 	overflow: hidden; | ||||
| 	text-overflow: ellipsis; | ||||
| 	line-height: 1.2; | ||||
| 	width: 404px; | ||||
| } | ||||
|  | ||||
| a.buttonEnable | ||||
| { | ||||
| 	color : #000000; | ||||
| 	width : 120px; | ||||
| 	height: 20px; | ||||
| 	font-size: 14px; | ||||
| 	padding-top: 4px; | ||||
| 	display: block; | ||||
| 	text-align: center; | ||||
| 	text-decoration: none; | ||||
| 	background-image: url(image/buttonEnable.png); | ||||
| } | ||||
|  | ||||
| a:hover.buttonEnable | ||||
| { | ||||
| 	background-image: url(image/buttonHover.png); | ||||
| } | ||||
|  | ||||
| </style> | ||||
| <script id="source" language="javascript" type="text/javascript"> | ||||
| function changeBackgroundColor(x) | ||||
| { | ||||
| 	var arg = x.split(", "); | ||||
| 	var id = "Color" + arg[0]; | ||||
| 	var color = arg[1]; | ||||
| 	 | ||||
| 	var obj = document.getElementById(id); | ||||
| 	if(obj) | ||||
| 	{ | ||||
| 		obj.style.backgroundColor = color; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| function changeBackgroundImage(x) | ||||
| { | ||||
| 	document.body.style.backgroundImage = x; | ||||
| } | ||||
|  | ||||
| </script> | ||||
| </head> | ||||
| <body oncontextmenu="return false" onmousewheel="return !event.shiftKey" onselectstart="return false" ondragover="return false"> | ||||
| <table width="416" border="0"> | ||||
|   <tr> | ||||
|     <th colspan="12" id="LabelLineColor"> </th> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td width="16"><div align="center">1</div></td> | ||||
|     <td width="20"><div id="Color0" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select0"></a></div></td> | ||||
|     <td width="68"><div id="ColorCode0" class="valueC"></div></td> | ||||
|     <td width="16"><div align="center">13</div></td> | ||||
|     <td width="20"><div id="Color12" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select12"></a></div></td> | ||||
|     <td width="68"><div id="ColorCode12" class="valueC"></div></td> | ||||
|     <td width="16"><div align="center">25</div></td> | ||||
|     <td width="20"><div id="Color24" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select24"></a></div></td> | ||||
|     <td width="68"><div id="ColorCode24" class="valueC"></div></td> | ||||
|     <td width="16"><div align="center">37</div></td> | ||||
|     <td width="20"><div id="Color36" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select36"></a></div></td> | ||||
|     <td width="68"><div id="ColorCode36" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">2</div></td> | ||||
|     <td><div id="Color1" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select1"></a></div></td> | ||||
|     <td><div id="ColorCode1" class="valueC"></div></td> | ||||
|     <td><div align="center">14</div></td> | ||||
|     <td><div id="Color13" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select13"></a></div></td> | ||||
|     <td><div id="ColorCode13" class="valueC"></div></td> | ||||
|     <td><div align="center">26</div></td> | ||||
|     <td><div id="Color25" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select25"></a></div></td> | ||||
|     <td><div id="ColorCode25" class="valueC"></div></td> | ||||
|     <td><div align="center">38</div></td> | ||||
|     <td><div id="Color37" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select37"></a></div></td> | ||||
|     <td><div id="ColorCode37" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">3</div></td> | ||||
|     <td><div id="Color2" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select2"></a></div></td> | ||||
|     <td><div id="ColorCode2" class="valueC"></div></td> | ||||
|     <td><div align="center">15</div></td> | ||||
|     <td><div id="Color14" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select14"></a></div></td> | ||||
|     <td><div id="ColorCode14" class="valueC"></div></td> | ||||
|     <td><div align="center">27</div></td> | ||||
|     <td><div id="Color26" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select26"></a></div></td> | ||||
|     <td><div id="ColorCode26" class="valueC"></div></td> | ||||
|     <td><div align="center">39</div></td> | ||||
|     <td><div id="Color38" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select38"></a></div></td> | ||||
|     <td><div id="ColorCode38" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">4</div></td> | ||||
|     <td><div id="Color3" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select3"></a></div></td> | ||||
|     <td><div id="ColorCode3" class="valueC"></div></td> | ||||
|     <td><div align="center">16</div></td> | ||||
|     <td><div id="Color15" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select15"></a></div></td> | ||||
|     <td><div id="ColorCode15" class="valueC"></div></td> | ||||
|     <td><div align="center">28</div></td> | ||||
|     <td><div id="Color27" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select27"></a></div></td> | ||||
|     <td><div id="ColorCode27" class="valueC"></div></td> | ||||
|     <td><div align="center">40</div></td> | ||||
|     <td><div id="Color39" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select39"></a></div></td> | ||||
|     <td><div id="ColorCode39" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">5</div></td> | ||||
|     <td><div id="Color4" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select4"></a></div></td> | ||||
|     <td><div id="ColorCode4" class="valueC"></div></td> | ||||
|     <td><div align="center">17</div></td> | ||||
|     <td><div id="Color16" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select16"></a></div></td> | ||||
|     <td><div id="ColorCode16" class="valueC"></div></td> | ||||
|     <td><div align="center">29</div></td> | ||||
|     <td><div id="Color28" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select28"></a></div></td> | ||||
|     <td><div id="ColorCode28" class="valueC"></div></td> | ||||
|     <td><div align="center">41</div></td> | ||||
|     <td><div id="Color40" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select40"></a></div></td> | ||||
|     <td><div id="ColorCode40" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">6</div></td> | ||||
|     <td><div id="Color5" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select5"></a></div></td> | ||||
|     <td><div id="ColorCode5" class="valueC"></div></td> | ||||
|     <td><div align="center">18</div></td> | ||||
|     <td><div id="Color17" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select17"></a></div></td> | ||||
|     <td><div id="ColorCode17" class="valueC"></div></td> | ||||
|     <td><div align="center">30</div></td> | ||||
|     <td><div id="Color29" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select29"></a></div></td> | ||||
|     <td><div id="ColorCode29" class="valueC"></div></td> | ||||
|     <td><div align="center">42</div></td> | ||||
|     <td><div id="Color41" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select41"></a></div></td> | ||||
|     <td><div id="ColorCode41" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">7</div></td> | ||||
|     <td><div id="Color6" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select6"></a></div></td> | ||||
|     <td><div id="ColorCode6" class="valueC"></div></td> | ||||
|     <td><div align="center">19</div></td> | ||||
|     <td><div id="Color18" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select18"></a></div></td> | ||||
|     <td><div id="ColorCode18" class="valueC"></div></td> | ||||
|     <td><div align="center">31</div></td> | ||||
|     <td><div id="Color30" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select30"></a></div></td> | ||||
|     <td><div id="ColorCode30" class="valueC"></div></td> | ||||
|     <td><div align="center">43</div></td> | ||||
|     <td><div id="Color42" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select42"></a></div></td> | ||||
|     <td><div id="ColorCode42" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">8</div></td> | ||||
|     <td><div id="Color7" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select7"></a></div></td> | ||||
|     <td><div id="ColorCode7" class="valueC"></div></td> | ||||
|     <td><div align="center">20</div></td> | ||||
|     <td><div id="Color19" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select19"></a></div></td> | ||||
|     <td><div id="ColorCode19" class="valueC"></div></td> | ||||
|     <td><div align="center">32</div></td> | ||||
|     <td><div id="Color31" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select31"></a></div></td> | ||||
|     <td><div id="ColorCode31" class="valueC"></div></td> | ||||
|     <td><div align="center">44</div></td> | ||||
|     <td><div id="Color43" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select43"></a></div></td> | ||||
|     <td><div id="ColorCode43" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">9</div></td> | ||||
|     <td><div id="Color8" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select8"></a></div></td> | ||||
|     <td><div id="ColorCode8" class="valueC"></div></td> | ||||
|     <td><div align="center">21</div></td> | ||||
|     <td><div id="Color20" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select20"></a></div></td> | ||||
|     <td><div id="ColorCode20" class="valueC"></div></td> | ||||
|     <td><div align="center">33</div></td> | ||||
|     <td><div id="Color32" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select32"></a></div></td> | ||||
|     <td><div id="ColorCode32" class="valueC"></div></td> | ||||
|     <td><div align="center">45</div></td> | ||||
|     <td><div id="Color44" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select44"></a></div></td> | ||||
|     <td><div id="ColorCode44" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">10</div></td> | ||||
|     <td><div id="Color9" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select9"></a></div></td> | ||||
|     <td><div id="ColorCode9" class="valueC"></div></td> | ||||
|     <td><div align="center">22</div></td> | ||||
|     <td><div id="Color21" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select21"></a></div></td> | ||||
|     <td><div id="ColorCode21" class="valueC"></div></td> | ||||
|     <td><div align="center">34</div></td> | ||||
|     <td><div id="Color33" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select33"></a></div></td> | ||||
|     <td><div id="ColorCode33" class="valueC"></div></td> | ||||
|     <td><div align="center">46</div></td> | ||||
|     <td><div id="Color45" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select45"></a></div></td> | ||||
|     <td><div id="ColorCode45" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">11</div></td> | ||||
|     <td><div id="Color10" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select10"></a></div></td> | ||||
|     <td><div id="ColorCode10" class="valueC"></div></td> | ||||
|     <td><div align="center">23</div></td> | ||||
|     <td><div id="Color22" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select22"></a></div></td> | ||||
|     <td><div id="ColorCode22" class="valueC"></div></td> | ||||
|     <td><div align="center">35</div></td> | ||||
|     <td><div id="Color34" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select34"></a></div></td> | ||||
|     <td><div id="ColorCode34" class="valueC"></div></td> | ||||
|     <td><div align="center">47</div></td> | ||||
|     <td><div id="Color46" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select46"></a></div></td> | ||||
|     <td><div id="ColorCode46" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td><div align="center">12</div></td> | ||||
|     <td><div id="Color11" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select11"></a></div></td> | ||||
|     <td><div id="ColorCode11" class="valueC"></div></td> | ||||
|     <td><div align="center">24</div></td> | ||||
|     <td><div id="Color23" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select23"></a></div></td> | ||||
|     <td><div id="ColorCode23" class="valueC"></div></td> | ||||
|     <td><div align="center">36</div></td> | ||||
|     <td><div id="Color35" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select35"></a></div></td> | ||||
|     <td><div id="ColorCode35" class="valueC"></div></td> | ||||
|     <td><div align="center">48</div></td> | ||||
|     <td><div id="Color47" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select47"></a></div></td> | ||||
|     <td><div id="ColorCode47" class="valueC"></div></td> | ||||
|   </tr> | ||||
|   </table> | ||||
| <table border="0"> | ||||
|   <tr> | ||||
|     <td width="108"><div id="LabelThreshold" align="right">Threshold</div></td> | ||||
|     <td width="20"><div id="Color48" class="color"><a href="#"><img src="image/blank.png" border="0" id="Select48"></a></div></td> | ||||
|     <td width="68"><div id="ColorCode48" class="valueC"></div></td> | ||||
|     <td width="204"><a href="#" id="Reset" class="buttonEnable">Reset</a></td> | ||||
|   </tr> | ||||
| </table> | ||||
| <hr width="450"> | ||||
| <table width="450" border="0"> | ||||
| <tr> | ||||
|   <th colspan="3" id="LabelBgImage"> </th> | ||||
|   </tr> | ||||
| <tr> | ||||
| <td width="404"><div id="BgImage" class="valueL"></td> | ||||
| <td width="16"><a href="#"><img src="image/file.png" border="0" id="SelectBgImage"></a></td> | ||||
| <td width="16"><a href="#"><img src="image/nofile.png" border="0" id="NoBgImage"></a></td> | ||||
| </tr> | ||||
| </table> | ||||
| <div id="complete"></div> | ||||
| </body> | ||||
| </html> | ||||
| @@ -1,404 +0,0 @@ | ||||
| (function($){function Plot(target_,data_,options_){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85},xaxis:{mode:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null},yaxis:{autoscaleMargin:0.02},x2axis:{autoscaleMargin:null},y2axis:{autoscaleMargin:0.02},points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left"},grid:{color:"#545454",backgroundColor:null,tickColor:"#dddddd",labelMargin:5,borderWidth:2,borderColor:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},selection:{mode:null,color:"#e8cfac"},crosshair:{mode:null,color:"#aa0000"},shadowSize:4},canvas=null,overlay=null,eventHolder=null,ctx=null,octx=null,target=$(target_),axes={xaxis:{},yaxis:{},x2axis:{},y2axis:{}},plotOffset={left:0,right:0,top:0,bottom:0},canvasWidth=0,canvasHeight=0,plotWidth=0,plotHeight=0,workarounds={};this.setData=setData;this.setupGrid=setupGrid;this.draw=draw;this.clearSelection=clearSelection;this.setSelection=setSelection;this.getCanvas=function(){return canvas;};this.getPlotOffset=function(){return plotOffset;};this.getData=function(){return series;};this.getAxes=function(){return axes;};this.setCrosshair=setCrosshair;this.clearCrosshair=function(){setCrosshair(null);};this.highlight=highlight;this.unhighlight=unhighlight;parseOptions(options_);setData(data_);constructCanvas();setupGrid();draw();function setData(d){series=parseData(d);fillInSeriesOptions();processData();} | ||||
| function parseData(d){var res=[];for(var i=0;i<d.length;++i){var s;if(d[i].data){s={};for(var v in d[i]) | ||||
| s[v]=d[i][v];} | ||||
| else{s={data:d[i]};} | ||||
| res.push(s);} | ||||
| return res;} | ||||
| function parseOptions(o){$.extend(true,options,o);if(options.grid.borderColor==null) | ||||
| options.grid.borderColor=options.grid.color | ||||
| if(options.xaxis.noTicks&&options.xaxis.ticks==null) | ||||
| options.xaxis.ticks=options.xaxis.noTicks;if(options.yaxis.noTicks&&options.yaxis.ticks==null) | ||||
| options.yaxis.ticks=options.yaxis.noTicks;if(options.grid.coloredAreas) | ||||
| options.grid.markings=options.grid.coloredAreas;if(options.grid.coloredAreasColor) | ||||
| options.grid.markingsColor=options.grid.coloredAreasColor;} | ||||
| function fillInSeriesOptions(){var i;var neededColors=series.length,usedColors=[],assignedColors=[];for(i=0;i<series.length;++i){var sc=series[i].color;if(sc!=null){--neededColors;if(typeof sc=="number") | ||||
| assignedColors.push(sc);else | ||||
| usedColors.push(parseColor(series[i].color));}} | ||||
| for(i=0;i<assignedColors.length;++i){neededColors=Math.max(neededColors,assignedColors[i]+1);} | ||||
| var colors=[],variation=0;i=0;while(colors.length<neededColors){var c;if(options.colors.length==i) | ||||
| c=new Color(100,100,100);else | ||||
| c=parseColor(options.colors[i]);var sign=variation%2==1?-1:1;var factor=1+sign*Math.ceil(variation/2)*0.2;c.scale(factor,factor,factor);colors.push(c);++i;if(i>=options.colors.length){i=0;++variation;}} | ||||
| var colori=0,s;for(i=0;i<series.length;++i){s=series[i];if(s.color==null){s.color=colors[colori].toString();++colori;} | ||||
| else if(typeof s.color=="number") | ||||
| s.color=colors[s.color].toString();s.lines=$.extend(true,{},options.lines,s.lines);s.points=$.extend(true,{},options.points,s.points);s.bars=$.extend(true,{},options.bars,s.bars);if(s.lines.show==null&&!s.bars.show&&!s.points.show) | ||||
| s.lines.show=true;if(s.shadowSize==null) | ||||
| s.shadowSize=options.shadowSize;if(!s.xaxis) | ||||
| s.xaxis=axes.xaxis;if(s.xaxis==1) | ||||
| s.xaxis=axes.xaxis;else if(s.xaxis==2) | ||||
| s.xaxis=axes.x2axis;if(!s.yaxis) | ||||
| s.yaxis=axes.yaxis;if(s.yaxis==1) | ||||
| s.yaxis=axes.yaxis;else if(s.yaxis==2) | ||||
| s.yaxis=axes.y2axis;}} | ||||
| function processData(){var topSentry=Number.POSITIVE_INFINITY,bottomSentry=Number.NEGATIVE_INFINITY,axis,i,j,k;for(axis in axes){axes[axis].datamin=topSentry;axes[axis].datamax=bottomSentry;axes[axis].min=options[axis].min;axes[axis].max=options[axis].max;axes[axis].used=false;} | ||||
| for(i=0;i<series.length;++i){var s=series[i];s.datapoints={points:[],incr:2};var data=s.data,points=s.datapoints.points,incr=s.datapoints.incr,axisx=s.xaxis,axisy=s.yaxis,xmin=topSentry,xmax=bottomSentry,ymin=topSentry,ymax=bottomSentry;axisx.used=axisy.used=true;for(j=k=0;j<data.length;++j,k+=incr){var x=null,y=null;if(data[j]!=null){x=data[j][0];y=data[j][1];} | ||||
| if(x!=null&&!isNaN(x=+x)){if(x<xmin) | ||||
| xmin=x;if(x>xmax) | ||||
| xmax=x} | ||||
| else | ||||
| x=null;if(y!=null&&!isNaN(y=+y)){if(y<ymin) | ||||
| ymin=y;if(y>ymax) | ||||
| ymax=y;} | ||||
| else | ||||
| y=null;if(x==null||y==null) | ||||
| x=y=null;points[k+1]=y;points[k]=x;} | ||||
| if(s.bars.show){var delta=s.bars.align=="left"?0:-s.bars.barWidth/2;xmin+=delta;xmax+=delta+s.bars.barWidth;} | ||||
| axisx.datamin=Math.min(axisx.datamin,xmin);axisx.datamax=Math.max(axisx.datamax,xmax);axisy.datamin=Math.min(axisy.datamin,ymin);axisy.datamax=Math.max(axisy.datamax,ymax);}} | ||||
| function constructCanvas(){function makeCanvas(width,height){var c=document.createElement('canvas');c.width=width;c.height=height; | ||||
| try{c=window.G_vmlCanvasManager.initElement(c);}catch(e){}return c;} | ||||
| canvasWidth=target.width();canvasHeight=target.height();target.html("");if(target.css("position")=='static') | ||||
| target.css("position","relative");if(canvasWidth<=0||canvasHeight<=0) | ||||
| throw"Invalid dimensions for plot, width = "+canvasWidth+", height = "+canvasHeight;canvas=$(makeCanvas(canvasWidth,canvasHeight)).appendTo(target).get(0);ctx=canvas.getContext("2d");overlay=$(makeCanvas(canvasWidth,canvasHeight)).css({position:'absolute',left:0,top:0}).appendTo(target).get(0);octx=overlay.getContext("2d");eventHolder=$([overlay,canvas]);if(options.selection.mode!=null||options.crosshair.mode!=null||options.grid.hoverable){eventHolder.each(function(){this.onmousemove=onMouseMove;});if(options.selection.mode!=null) | ||||
| eventHolder.mousedown(onMouseDown);} | ||||
| if(options.crosshair.mode!=null) | ||||
| eventHolder.mouseout(onMouseOut);if(options.grid.clickable) | ||||
| eventHolder.click(onClick);} | ||||
| function setupGrid(){function setupAxis(axis,options){setRange(axis,options);prepareTickGeneration(axis,options);setTicks(axis,options);if(axis==axes.xaxis||axis==axes.x2axis){axis.p2c=function(p){return(p-axis.min)*axis.scale;};axis.c2p=function(c){return axis.min+c/axis.scale;};} | ||||
| else{axis.p2c=function(p){return(axis.max-p)*axis.scale;};axis.c2p=function(p){return axis.max-p/axis.scale;};}} | ||||
| for(var axis in axes) | ||||
| setupAxis(axes[axis],options[axis]);setSpacing();insertLabels();insertLegend();} | ||||
| function setRange(axis,axisOptions){var min=axisOptions.min!=null?+axisOptions.min:axis.datamin,max=axisOptions.max!=null?+axisOptions.max:axis.datamax;if(min==Number.POSITIVE_INFINITY) | ||||
| min=0;if(max==Number.NEGATIVE_INFINITY) | ||||
| max=1;if(max-min==0.0){var widen=max==0?1:0.01;if(axisOptions.min==null) | ||||
| min-=widen;if(axisOptions.max==null||axisOptions.min!=null) | ||||
| max+=widen;} | ||||
| else{var margin=axisOptions.autoscaleMargin;if(margin!=null){if(axisOptions.min==null){min-=(max-min)*margin;if(min<0&&axis.datamin>=0) | ||||
| min=0;} | ||||
| if(axisOptions.max==null){max+=(max-min)*margin;if(max>0&&axis.datamax<=0) | ||||
| max=0;}}} | ||||
| axis.min=min;axis.max=max;} | ||||
| function prepareTickGeneration(axis,axisOptions){var noTicks;if(typeof axisOptions.ticks=="number"&&axisOptions.ticks>0) | ||||
| noTicks=axisOptions.ticks;else if(axis==axes.xaxis||axis==axes.x2axis) | ||||
| noTicks=canvasWidth/100;else | ||||
| noTicks=canvasHeight/60;var delta=(axis.max-axis.min)/noTicks;var size,generator,unit,formatter,i,magn,norm;if(axisOptions.mode=="time"){var timeUnitSize={"second":1000,"minute":60*1000,"hour":60*60*1000,"day":24*60*60*1000,"month":30*24*60*60*1000,"year":365.2425*24*60*60*1000};var spec=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];var minSize=0;if(axisOptions.minTickSize!=null){if(typeof axisOptions.tickSize=="number") | ||||
| minSize=axisOptions.tickSize;else | ||||
| minSize=axisOptions.minTickSize[0]*timeUnitSize[axisOptions.minTickSize[1]];} | ||||
| for(i=0;i<spec.length-1;++i) | ||||
| if(delta<(spec[i][0]*timeUnitSize[spec[i][1]] | ||||
| +spec[i+1][0]*timeUnitSize[spec[i+1][1]])/2&&spec[i][0]*timeUnitSize[spec[i][1]]>=minSize) | ||||
| break;size=spec[i][0];unit=spec[i][1];if(unit=="year"){magn=Math.pow(10,Math.floor(Math.log(delta/timeUnitSize.year)/Math.LN10));norm=(delta/timeUnitSize.year)/magn;if(norm<1.5) | ||||
| size=1;else if(norm<3) | ||||
| size=2;else if(norm<7.5) | ||||
| size=5;else | ||||
| size=10;size*=magn;} | ||||
| if(axisOptions.tickSize){size=axisOptions.tickSize[0];unit=axisOptions.tickSize[1];} | ||||
| generator=function(axis){var ticks=[],tickSize=axis.tickSize[0],unit=axis.tickSize[1],d=new Date(axis.min);var step=tickSize*timeUnitSize[unit];if(unit=="second") | ||||
| d.setUTCSeconds(floorInBase(d.getUTCSeconds(),tickSize));if(unit=="minute") | ||||
| d.setUTCMinutes(floorInBase(d.getUTCMinutes(),tickSize));if(unit=="hour") | ||||
| d.setUTCHours(floorInBase(d.getUTCHours(),tickSize));if(unit=="month") | ||||
| d.setUTCMonth(floorInBase(d.getUTCMonth(),tickSize));if(unit=="year") | ||||
| d.setUTCFullYear(floorInBase(d.getUTCFullYear(),tickSize));d.setUTCMilliseconds(0);if(step>=timeUnitSize.minute) | ||||
| d.setUTCSeconds(0);if(step>=timeUnitSize.hour) | ||||
| d.setUTCMinutes(0);if(step>=timeUnitSize.day) | ||||
| d.setUTCHours(0);if(step>=timeUnitSize.day*4) | ||||
| d.setUTCDate(1);if(step>=timeUnitSize.year) | ||||
| d.setUTCMonth(0);var carry=0,v=Number.NaN,prev;do{prev=v;v=d.getTime();ticks.push({v:v,label:axis.tickFormatter(v,axis)});if(unit=="month"){if(tickSize<1){d.setUTCDate(1);var start=d.getTime();d.setUTCMonth(d.getUTCMonth()+1);var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getUTCHours();d.setUTCHours(0);} | ||||
| else | ||||
| d.setUTCMonth(d.getUTCMonth()+tickSize);} | ||||
| else if(unit=="year"){d.setUTCFullYear(d.getUTCFullYear()+tickSize);} | ||||
| else | ||||
| d.setTime(v+step);}while(v<axis.max&&v!=prev);return ticks;};formatter=function(v,axis){var d=new Date(v);if(axisOptions.timeformat!=null) | ||||
| return $.plot.formatDate(d,axisOptions.timeformat,axisOptions.monthNames);var t=axis.tickSize[0]*timeUnitSize[axis.tickSize[1]];var span=axis.max-axis.min;if(t<timeUnitSize.minute) | ||||
| fmt="%h:%M:%S";else if(t<timeUnitSize.day){if(span<2*timeUnitSize.day) | ||||
| fmt="%h:%M";else | ||||
| fmt="%b %d %h:%M";} | ||||
| else if(t<timeUnitSize.month) | ||||
| fmt="%b %d";else if(t<timeUnitSize.year){if(span<timeUnitSize.year) | ||||
| fmt="%b";else | ||||
| fmt="%b %y";} | ||||
| else | ||||
| fmt="%y";return $.plot.formatDate(d,fmt,axisOptions.monthNames);};} | ||||
| else{var maxDec=axisOptions.tickDecimals;var dec=-Math.floor(Math.log(delta)/Math.LN10);if(maxDec!=null&&dec>maxDec) | ||||
| dec=maxDec;magn=Math.pow(10,-dec);norm=delta/magn;if(norm<1.5) | ||||
| size=1;else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec;}} | ||||
| else if(norm<7.5) | ||||
| size=5;else | ||||
| size=10;size*=magn;if(axisOptions.minTickSize!=null&&size<axisOptions.minTickSize) | ||||
| size=axisOptions.minTickSize;if(axisOptions.tickSize!=null) | ||||
| size=axisOptions.tickSize;axis.tickDecimals=Math.max(0,(maxDec!=null)?maxDec:dec);generator=function(axis){var ticks=[];var start=floorInBase(axis.min,axis.tickSize),i=0,v=Number.NaN,prev;do{prev=v;v=start+i*axis.tickSize;ticks.push({v:v,label:axis.tickFormatter(v,axis)});++i;}while(v<axis.max&&v!=prev);return ticks;};formatter=function(v,axis){return v.toFixed(axis.tickDecimals);};} | ||||
| axis.tickSize=unit?[size,unit]:size;axis.tickGenerator=generator;if($.isFunction(axisOptions.tickFormatter)) | ||||
| axis.tickFormatter=function(v,axis){return""+axisOptions.tickFormatter(v,axis);};else | ||||
| axis.tickFormatter=formatter;if(axisOptions.labelWidth!=null) | ||||
| axis.labelWidth=axisOptions.labelWidth;if(axisOptions.labelHeight!=null) | ||||
| axis.labelHeight=axisOptions.labelHeight;} | ||||
| function setTicks(axis,axisOptions){axis.ticks=[];if(!axis.used) | ||||
| return;if(axisOptions.ticks==null) | ||||
| axis.ticks=axis.tickGenerator(axis);else if(typeof axisOptions.ticks=="number"){if(axisOptions.ticks>0) | ||||
| axis.ticks=axis.tickGenerator(axis);} | ||||
| else if(axisOptions.ticks){var ticks=axisOptions.ticks;if($.isFunction(ticks)) | ||||
| ticks=ticks({min:axis.min,max:axis.max});var i,v;for(i=0;i<ticks.length;++i){var label=null;var t=ticks[i];if(typeof t=="object"){v=t[0];if(t.length>1) | ||||
| label=t[1];} | ||||
| else | ||||
| v=t;if(label==null) | ||||
| label=axis.tickFormatter(v,axis);axis.ticks[i]={v:v,label:label};}} | ||||
| if(axisOptions.autoscaleMargin!=null&&axis.ticks.length>0){if(axisOptions.min==null) | ||||
| axis.min=Math.min(axis.min,axis.ticks[0].v);if(axisOptions.max==null&&axis.ticks.length>1) | ||||
| axis.max=Math.min(axis.max,axis.ticks[axis.ticks.length-1].v);}} | ||||
| function setSpacing(){function measureXLabels(axis){if(axis.labelWidth==null) | ||||
| axis.labelWidth=canvasWidth/6;if(axis.labelHeight==null){labels=[];for(i=0;i<axis.ticks.length;++i){l=axis.ticks[i].label;if(l) | ||||
| labels.push('<div class="tickLabel" style="float:left;width:'+axis.labelWidth+'px">'+l+'</div>');} | ||||
| axis.labelHeight=0;if(labels.length>0){var dummyDiv=$('<div style="position:absolute;top:-10000px;width:10000px;font-size:smaller">' | ||||
| +labels.join("")+'<div style="clear:left"></div></div>').appendTo(target);axis.labelHeight=dummyDiv.height();dummyDiv.remove();}}} | ||||
| function measureYLabels(axis){if(axis.labelWidth==null||axis.labelHeight==null){var i,labels=[],l;for(i=0;i<axis.ticks.length;++i){l=axis.ticks[i].label;if(l) | ||||
| labels.push('<div class="tickLabel">'+l+'</div>');} | ||||
| if(labels.length>0){var dummyDiv=$('<div style="position:absolute;top:-10000px;font-size:smaller">' | ||||
| +labels.join("")+'</div>').appendTo(target);if(axis.labelWidth==null) | ||||
| axis.labelWidth=dummyDiv.width();if(axis.labelHeight==null) | ||||
| axis.labelHeight=dummyDiv.find("div").height();dummyDiv.remove();} | ||||
| if(axis.labelWidth==null) | ||||
| axis.labelWidth=0;if(axis.labelHeight==null) | ||||
| axis.labelHeight=0;}} | ||||
| measureXLabels(axes.xaxis);measureYLabels(axes.yaxis);measureXLabels(axes.x2axis);measureYLabels(axes.y2axis);var maxOutset=options.grid.borderWidth;for(i=0;i<series.length;++i) | ||||
| maxOutset=Math.max(maxOutset,2*(series[i].points.radius+series[i].points.lineWidth/2));plotOffset.left=plotOffset.right=plotOffset.top=plotOffset.bottom=maxOutset;var margin=options.grid.labelMargin+options.grid.borderWidth;if(axes.xaxis.labelHeight>0) | ||||
| plotOffset.bottom=Math.max(maxOutset,axes.xaxis.labelHeight+margin);if(axes.yaxis.labelWidth>0) | ||||
| plotOffset.left=Math.max(maxOutset,axes.yaxis.labelWidth+margin);if(axes.x2axis.labelHeight>0) | ||||
| plotOffset.top=Math.max(maxOutset,axes.x2axis.labelHeight+margin);if(axes.y2axis.labelWidth>0) | ||||
| plotOffset.right=Math.max(maxOutset,axes.y2axis.labelWidth+margin);plotWidth=canvasWidth-plotOffset.left-plotOffset.right;plotHeight=canvasHeight-plotOffset.bottom-plotOffset.top;axes.xaxis.scale=plotWidth/(axes.xaxis.max-axes.xaxis.min);axes.yaxis.scale=plotHeight/(axes.yaxis.max-axes.yaxis.min);axes.x2axis.scale=plotWidth/(axes.x2axis.max-axes.x2axis.min);axes.y2axis.scale=plotHeight/(axes.y2axis.max-axes.y2axis.min);} | ||||
| function draw(){drawGrid();for(var i=0;i<series.length;i++){drawSeries(series[i]);}} | ||||
| function extractRange(ranges,coord){var firstAxis=coord+"axis",secondaryAxis=coord+"2axis",axis,from,to,reverse;if(ranges[firstAxis]){axis=axes[firstAxis];from=ranges[firstAxis].from;to=ranges[firstAxis].to;} | ||||
| else if(ranges[secondaryAxis]){axis=axes[secondaryAxis];from=ranges[secondaryAxis].from;to=ranges[secondaryAxis].to;} | ||||
| else{axis=axes[firstAxis];from=ranges[coord+"1"];to=ranges[coord+"2"];} | ||||
| if(from!=null&&to!=null&&from>to) | ||||
| return{from:to,to:from,axis:axis};return{from:from,to:to,axis:axis};} | ||||
| function drawGrid(){var i;ctx.save();ctx.clearRect(0,0,canvasWidth,canvasHeight);ctx.translate(plotOffset.left,plotOffset.top);if(options.grid.backgroundColor){ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);} | ||||
| var markings=options.grid.markings;if(markings){if($.isFunction(markings)) | ||||
| markings=markings({xmin:axes.xaxis.min,xmax:axes.xaxis.max,ymin:axes.yaxis.min,ymax:axes.yaxis.max,xaxis:axes.xaxis,yaxis:axes.yaxis,x2axis:axes.x2axis,y2axis:axes.y2axis});for(i=0;i<markings.length;++i){var m=markings[i],xrange=extractRange(m,"x"),yrange=extractRange(m,"y");if(xrange.from==null) | ||||
| xrange.from=xrange.axis.min;if(xrange.to==null) | ||||
| xrange.to=xrange.axis.max;if(yrange.from==null) | ||||
| yrange.from=yrange.axis.min;if(yrange.to==null) | ||||
| yrange.to=yrange.axis.max;if(xrange.to<xrange.axis.min||xrange.from>xrange.axis.max||yrange.to<yrange.axis.min||yrange.from>yrange.axis.max) | ||||
| continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max);yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);if(xrange.from==xrange.to&&yrange.from==yrange.to) | ||||
| continue;xrange.from=xrange.axis.p2c(xrange.from);xrange.to=xrange.axis.p2c(xrange.to);yrange.from=yrange.axis.p2c(yrange.from);yrange.to=yrange.axis.p2c(yrange.to);if(xrange.from==xrange.to||yrange.from==yrange.to){ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.beginPath();ctx.lineWidth=m.lineWidth||options.grid.markingsLineWidth;ctx.moveTo(xrange.from,yrange.from);ctx.lineTo(xrange.to,yrange.to);ctx.stroke();} | ||||
| else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to);}}} | ||||
| ctx.lineWidth=1;ctx.strokeStyle=options.grid.tickColor;ctx.beginPath();var v,axis=axes.xaxis;for(i=0;i<axis.ticks.length;++i){v=axis.ticks[i].v;if(v<=axis.min||v>=axes.xaxis.max) | ||||
| continue;ctx.moveTo(Math.floor(axis.p2c(v))+ctx.lineWidth/2,0);ctx.lineTo(Math.floor(axis.p2c(v))+ctx.lineWidth/2,plotHeight);} | ||||
| axis=axes.yaxis;for(i=0;i<axis.ticks.length;++i){v=axis.ticks[i].v;if(v<=axis.min||v>=axis.max) | ||||
| continue;ctx.moveTo(0,Math.floor(axis.p2c(v))+ctx.lineWidth/2);ctx.lineTo(plotWidth,Math.floor(axis.p2c(v))+ctx.lineWidth/2);} | ||||
| axis=axes.x2axis;for(i=0;i<axis.ticks.length;++i){v=axis.ticks[i].v;if(v<=axis.min||v>=axis.max) | ||||
| continue;ctx.moveTo(Math.floor(axis.p2c(v))+ctx.lineWidth/2,-5);ctx.lineTo(Math.floor(axis.p2c(v))+ctx.lineWidth/2,5);} | ||||
| axis=axes.y2axis;for(i=0;i<axis.ticks.length;++i){v=axis.ticks[i].v;if(v<=axis.min||v>=axis.max) | ||||
| continue;ctx.moveTo(plotWidth-5,Math.floor(axis.p2c(v))+ctx.lineWidth/2);ctx.lineTo(plotWidth+5,Math.floor(axis.p2c(v))+ctx.lineWidth/2);} | ||||
| ctx.stroke();if(options.grid.borderWidth){var bw=options.grid.borderWidth;ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw);} | ||||
| ctx.restore();} | ||||
| function insertLabels(){target.find(".tickLabels").remove();var html='<div class="tickLabels" style="font-size:smaller;color:'+options.grid.color+'">';function addLabels(axis,labelGenerator){for(var i=0;i<axis.ticks.length;++i){var tick=axis.ticks[i];if(!tick.label||tick.v<axis.min||tick.v>axis.max) | ||||
| continue;html+=labelGenerator(tick,axis);}} | ||||
| var margin=options.grid.labelMargin+options.grid.borderWidth;addLabels(axes.xaxis,function(tick,axis){return'<div style="position:absolute;top:'+(plotOffset.top+plotHeight+margin)+'px;left:'+(plotOffset.left+axis.p2c(tick.v)-axis.labelWidth/2)+'px;width:'+axis.labelWidth+'px;text-align:center" class="tickLabel">'+tick.label+"</div>";});addLabels(axes.yaxis,function(tick,axis){return'<div style="position:absolute;top:'+(plotOffset.top+axis.p2c(tick.v)-axis.labelHeight/2)+'px;right:'+(plotOffset.right+plotWidth+margin)+'px;width:'+axis.labelWidth+'px;text-align:right" class="tickLabel">'+parseInt(tick.label)+"</div>";});addLabels(axes.x2axis,function(tick,axis){return'<div style="position:absolute;bottom:'+(plotOffset.bottom+plotHeight+margin)+'px;left:'+(plotOffset.left+axis.p2c(tick.v)-axis.labelWidth/2)+'px;width:'+axis.labelWidth+'px;text-align:center" class="tickLabel">'+tick.label+"</div>";});addLabels(axes.y2axis,function(tick,axis){return'<div style="position:absolute;top:'+(plotOffset.top+axis.p2c(tick.v)-axis.labelHeight/2)+'px;left:'+(plotOffset.left+plotWidth+margin)+'px;width:'+axis.labelWidth+'px;text-align:left" class="tickLabel">'+tick.label+"</div>";});html+='</div>';target.append(html);} | ||||
| function drawSeries(series){if(series.lines.show) | ||||
| drawSeriesLines(series);if(series.bars.show) | ||||
| drawSeriesBars(series);if(series.points.show) | ||||
| drawSeriesPoints(series);} | ||||
| function drawSeriesLines(series){function plotLine(datapoints,offset,axisx,axisy){var points=datapoints.points,incr=datapoints.incr,drawx=null,drawy=null;ctx.beginPath();for(var i=incr;i<points.length;i+=incr){var x1=points[i-incr],y1=points[i-incr+1],x2=points[i],y2=points[i+1];if(x1==null||x2==null) | ||||
| continue;if(y1<=y2&&y1<axisy.min){if(y2<axisy.min) | ||||
| continue;x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min;} | ||||
| else if(y2<=y1&&y2<axisy.min){if(y1<axisy.min) | ||||
| continue;x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min;} | ||||
| if(y1>=y2&&y1>axisy.max){if(y2>axisy.max) | ||||
| continue;x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max;} | ||||
| else if(y2>=y1&&y2>axisy.max){if(y1>axisy.max) | ||||
| continue;x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max;} | ||||
| if(x1<=x2&&x1<axisx.min){if(x2<axisx.min) | ||||
| continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min;} | ||||
| else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min) | ||||
| continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min;} | ||||
| if(x1>=x2&&x1>axisx.max){if(x2>axisx.max) | ||||
| continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max;} | ||||
| else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max) | ||||
| continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max;} | ||||
| if(drawx!=axisx.p2c(x1)||drawy!=axisy.p2c(y1)+offset) | ||||
| ctx.moveTo(axisx.p2c(x1),axisy.p2c(y1)+offset);drawx=axisx.p2c(x2);drawy=axisy.p2c(y2)+offset;ctx.lineTo(drawx,drawy);} | ||||
| ctx.stroke();} | ||||
| function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,incr=datapoints.incr,bottom=Math.min(Math.max(0,axisy.min),axisy.max),top,lastX=0,areaOpen=false;for(var i=incr;i<points.length;i+=incr){var x1=points[i-incr],y1=points[i-incr+1],x2=points[i],y2=points[i+1];if(areaOpen&&x1!=null&&x2==null){ctx.lineTo(axisx.p2c(lastX),axisy.p2c(bottom));ctx.fill();areaOpen=false;continue;} | ||||
| if(x1==null||x2==null) | ||||
| continue;if(x1<=x2&&x1<axisx.min){if(x2<axisx.min) | ||||
| continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min;} | ||||
| else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min) | ||||
| continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min;} | ||||
| if(x1>=x2&&x1>axisx.max){if(x2>axisx.max) | ||||
| continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max;} | ||||
| else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max) | ||||
| continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max;} | ||||
| if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true;} | ||||
| if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));lastX=x2;continue;} | ||||
| else if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));lastX=x2;continue;} | ||||
| var x1old=x1,x2old=x2;if(y1<=y2&&y1<axisy.min&&y2>=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min;} | ||||
| else if(y2<=y1&&y2<axisy.min&&y1>=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min;} | ||||
| if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max;} | ||||
| else if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max;} | ||||
| if(x1!=x1old){if(y1<=axisy.min) | ||||
| top=axisy.min;else | ||||
| top=axisy.max;ctx.lineTo(axisx.p2c(x1old),axisy.p2c(top));ctx.lineTo(axisx.p2c(x1),axisy.p2c(top));} | ||||
| ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){if(y2<=axisy.min) | ||||
| top=axisy.min;else | ||||
| top=axisy.max;ctx.lineTo(axisx.p2c(x2),axisy.p2c(top));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(top));} | ||||
| lastX=Math.max(x2,x2old);} | ||||
| if(areaOpen){ctx.lineTo(axisx.p2c(lastX),axisy.p2c(bottom));ctx.fill();}} | ||||
| ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotLine(series.datapoints,lw/2+w+w/2,series.xaxis,series.yaxis);ctx.strokeStyle="rgba(0,0,0,0.2)";plotLine(series.datapoints,lw/2+w/2,series.xaxis,series.yaxis);} | ||||
| ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis);} | ||||
| if(lw>0) | ||||
| plotLine(series.datapoints,0,series.xaxis,series.yaxis);ctx.restore();} | ||||
| function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,circumference,axisx,axisy){var points=datapoints.points,incr=datapoints.incr;for(var i=0;i<points.length;i+=incr){var x=points[i],y=points[i+1];if(x==null||x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max) | ||||
| continue;ctx.beginPath();ctx.arc(axisx.p2c(x),axisy.p2c(y)+offset,radius,0,circumference,true);if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill();} | ||||
| ctx.stroke();}} | ||||
| ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.lines.lineWidth,sw=series.shadowSize,radius=series.points.radius;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,2*Math.PI,series.xaxis,series.yaxis);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,2*Math.PI,series.xaxis,series.yaxis);} | ||||
| ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,2*Math.PI,series.xaxis,series.yaxis);ctx.restore();} | ||||
| function drawBar(x,y,barLeft,barRight,offset,fillStyleCallback,axisx,axisy,c){var drawLeft=true,drawRight=true,drawTop=true,drawBottom=false,left=x+barLeft,right=x+barRight,bottom=0,top=y;if(top<bottom){top=0;bottom=y;drawBottom=true;drawTop=false;} | ||||
| if(right<axisx.min||left>axisx.max||top<axisy.min||bottom>axisy.max) | ||||
| return;if(left<axisx.min){left=axisx.min;drawLeft=false;} | ||||
| if(right>axisx.max){right=axisx.max;drawRight=false;} | ||||
| if(bottom<axisy.min){bottom=axisy.min;drawBottom=false;} | ||||
| if(top>axisy.max){top=axisy.max;drawTop=false;} | ||||
| left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.beginPath();c.moveTo(left,bottom);c.lineTo(left,top);c.lineTo(right,top);c.lineTo(right,bottom);c.fillStyle=fillStyleCallback(bottom,top);c.fill();} | ||||
| if(drawLeft||drawRight||drawTop||drawBottom){c.beginPath();c.moveTo(left,bottom+offset);if(drawLeft) | ||||
| c.lineTo(left,top+offset);else | ||||
| c.moveTo(left,top+offset);if(drawTop) | ||||
| c.lineTo(right,top+offset);else | ||||
| c.moveTo(right,top+offset);if(drawRight) | ||||
| c.lineTo(right,bottom+offset);else | ||||
| c.moveTo(right,bottom+offset);if(drawBottom) | ||||
| c.lineTo(left,bottom+offset);else | ||||
| c.moveTo(left,bottom+offset);c.stroke();}} | ||||
| function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,offset,fillStyleCallback,axisx,axisy){var points=datapoints.points,incr=datapoints.incr;for(var i=0;i<points.length;i+=incr){if(points[i]==null) | ||||
| continue;drawBar(points[i],points[i+1],barLeft,barRight,offset,fillStyleCallback,axisx,axisy,ctx);}} | ||||
| ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";ctx.lineWidth=series.bars.lineWidth;ctx.strokeStyle=series.color;var barLeft=series.bars.align=="left"?0:-series.bars.barWidth/2;var fillStyleCallback=series.bars.fill?function(bottom,top){return getFillStyle(series.bars,series.color,bottom,top);}:null;plotBars(series.datapoints,barLeft,barLeft+series.bars.barWidth,0,fillStyleCallback,series.xaxis,series.yaxis);ctx.restore();} | ||||
| function getFillStyle(filloptions,seriesColor,bottom,top){var fill=filloptions.fill;if(!fill) | ||||
| return null;if(filloptions.fillColor) | ||||
| return getColorOrGradient(filloptions.fillColor,bottom,top,seriesColor);var c=parseColor(seriesColor);c.a=typeof fill=="number"?fill:0.4;c.normalize();return c.toString();} | ||||
| function insertLegend(){target.find(".legend").remove();if(!options.legend.show) | ||||
| return;var fragments=[];var rowStarted=false;for(i=0;i<series.length;++i){if(!series[i].label) | ||||
| continue;if(i%options.legend.noColumns==0){if(rowStarted) | ||||
| fragments.push('</tr>');fragments.push('<tr>');rowStarted=true;} | ||||
| var label=series[i].label;if(options.legend.labelFormatter!=null) | ||||
| label=options.legend.labelFormatter(label);fragments.push('<td class="legendColorBox"><div style="border:1px solid '+options.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+series[i].color+';overflow:hidden"></div></div></td>'+'<td class="legendLabel">'+label+'</td>');} | ||||
| if(rowStarted) | ||||
| fragments.push('</tr>');if(fragments.length==0) | ||||
| return;var table='<table style="font-size:smaller;color:'+options.grid.color+'">'+fragments.join("")+'</table>';if(options.legend.container!=null) | ||||
| $(options.legend.container).html(table);else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null) | ||||
| m=[m,m];if(p.charAt(0)=="n") | ||||
| pos+='top:'+(m[1]+plotOffset.top)+'px;';else if(p.charAt(0)=="s") | ||||
| pos+='bottom:'+(m[1]+plotOffset.bottom)+'px;';if(p.charAt(1)=="e") | ||||
| pos+='right:'+(m[0]+plotOffset.right)+'px;';else if(p.charAt(1)=="w") | ||||
| pos+='left:'+(m[0]+plotOffset.left)+'px;';var legend=$('<div class="legend">'+table.replace('style="','style="position:absolute;'+pos+';')+'</div>').appendTo(target);if(options.legend.backgroundOpacity!=0.0){var c=options.legend.backgroundColor;if(c==null){var tmp;if(options.grid.backgroundColor&&typeof options.grid.backgroundColor=="string") | ||||
| tmp=options.grid.backgroundColor;else | ||||
| tmp=extractColor(legend);c=parseColor(tmp).adjust(null,null,null,1).toString();} | ||||
| var div=legend.children();$('<div style="position:absolute;width:'+div.width()+'px;height:'+div.height()+'px;'+pos+'background-color:'+c+';"> </div>').prependTo(legend).css('opacity',options.legend.backgroundOpacity);}}} | ||||
| var lastMousePos={pageX:null,pageY:null},selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false},crosshair={pos:{x:-1,y:-1}},highlights=[],clickIsMouseUp=false,redrawTimeout=null,hoverTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,lowestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j;for(var i=0;i<series.length;++i){if(!seriesFilter(series[i])) | ||||
| continue;var s=series[i],points=s.datapoints.points,incr=s.datapoints.incr,axisx=s.xaxis,axisy=s.yaxis,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale,checkbar=s.bars.show,checkpoint=!s.bars.show||s.lines.show||s.points.show,barLeft=s.bars.align=="left"?0:-s.bars.barWidth/2,barRight=barLeft+s.bars.barWidth;for(j=0;j<points.length;j+=incr){var x=points[j],y=points[j+1];if(x==null) | ||||
| continue;if(checkbar){if(!foundPoint&&mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(0,y)&&my<=Math.max(0,y)) | ||||
| item=[i,j/incr];} | ||||
| if(checkpoint){if((x-mx>maxx||x-mx<-maxx)||(y-my>maxy||y-my<-maxy)) | ||||
| continue;var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist<lowestDistance){lowestDistance=dist;foundPoint=true;item=[i,j/incr];}}}} | ||||
| if(item){i=item[0];j=item[1];return{datapoint:series[i].data[j],dataIndex:j,series:series[i],seriesIndex:i}} | ||||
| return null;} | ||||
| function onMouseMove(ev){var e=ev||window.event;if(e.pageX==null&&e.clientX!=null){var de=document.documentElement,b=document.body;lastMousePos.pageX=e.clientX+(de&&de.scrollLeft||b.scrollLeft||0)-(de.clientLeft||0);lastMousePos.pageY=e.clientY+(de&&de.scrollTop||b.scrollTop||0)-(de.clientTop||0);} | ||||
| else{lastMousePos.pageX=e.pageX;lastMousePos.pageY=e.pageY;} | ||||
| if(options.grid.hoverable) | ||||
| triggerClickHoverEvent("plothover",lastMousePos,function(s){return s["hoverable"]!=false;});if(options.crosshair.mode!=null){if(!selection.active){setPositionFromEvent(crosshair.pos,lastMousePos);triggerRedrawOverlay();} | ||||
| else | ||||
| crosshair.pos.x=-1;} | ||||
| if(selection.active){target.trigger("plotselecting",[selectionIsSane()?getSelectionForEvent():null]);updateSelection(lastMousePos);}} | ||||
| function onMouseDown(e){if(e.which!=1) | ||||
| return;document.body.focus();if(document.onselectstart!==undefined&&workarounds.onselectstart==null){workarounds.onselectstart=document.onselectstart;document.onselectstart=function(){return false;};} | ||||
| if(document.ondrag!==undefined&&workarounds.ondrag==null){workarounds.ondrag=document.ondrag;document.ondrag=function(){return false;};} | ||||
| setSelectionPos(selection.first,e);lastMousePos.pageX=null;selection.active=true;$(document).one("mouseup",onSelectionMouseUp);} | ||||
| function onMouseOut(ev){if(options.crosshair.mode!=null&&crosshair.pos.x!=-1){crosshair.pos.x=-1;triggerRedrawOverlay();}} | ||||
| function onClick(e){if(clickIsMouseUp){clickIsMouseUp=false;return;} | ||||
| triggerClickHoverEvent("plotclick",e,function(s){return s["clickable"]!=false;});} | ||||
| function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),pos={pageX:event.pageX,pageY:event.pageY},canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top;if(axes.xaxis.used) | ||||
| pos.x=axes.xaxis.c2p(canvasX);if(axes.yaxis.used) | ||||
| pos.y=axes.yaxis.c2p(canvasY);if(axes.x2axis.used) | ||||
| pos.x2=axes.x2axis.c2p(canvasX);if(axes.y2axis.used) | ||||
| pos.y2=axes.y2axis.c2p(canvasY);var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top);} | ||||
| if(options.grid.autoHighlight){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.auto==eventname&&!(item&&h.series==item.series&&h.point==item.datapoint)) | ||||
| unhighlight(h.series,h.point);} | ||||
| if(item) | ||||
| highlight(item.series,item.datapoint,eventname);} | ||||
| target.trigger(eventname,[pos,item]);} | ||||
| function triggerRedrawOverlay(){if(!redrawTimeout) | ||||
| redrawTimeout=setTimeout(redrawOverlay,30);} | ||||
| function redrawOverlay(){redrawTimeout=null;octx.save();octx.clearRect(0,0,canvasWidth,canvasHeight);octx.translate(plotOffset.left,plotOffset.top);var i,hi;for(i=0;i<highlights.length;++i){hi=highlights[i];if(hi.series.bars.show) | ||||
| drawBarHighlight(hi.series,hi.point);else | ||||
| drawPointHighlight(hi.series,hi.point);} | ||||
| if(selection.show&&selectionIsSane()){octx.strokeStyle=parseColor(options.selection.color).scale(null,null,null,0.8).toString();octx.lineWidth=1;ctx.lineJoin="round";octx.fillStyle=parseColor(options.selection.color).scale(null,null,null,0.4).toString();var x=Math.min(selection.first.x,selection.second.x),y=Math.min(selection.first.y,selection.second.y),w=Math.abs(selection.second.x-selection.first.x),h=Math.abs(selection.second.y-selection.first.y);octx.fillRect(x,y,w,h);octx.strokeRect(x,y,w,h);} | ||||
| if(options.crosshair.mode!=null&&crosshair.pos.x!=-1){octx.strokeStyle=parseColor(options.crosshair.color).scale(null,null,null,0.8).toString();octx.lineWidth=1;ctx.lineJoin="round";var pos=crosshair.pos;octx.beginPath();if(options.crosshair.mode.indexOf("x")!=-1){octx.moveTo(pos.x,0);octx.lineTo(pos.x,plotHeight);} | ||||
| if(options.crosshair.mode.indexOf("y")!=-1){octx.moveTo(0,pos.y);octx.lineTo(plotWidth,pos.y);} | ||||
| octx.stroke();} | ||||
| octx.restore();} | ||||
| function highlight(s,point,auto){if(typeof s=="number") | ||||
| s=series[s];if(typeof point=="number") | ||||
| point=s.data[point];var i=indexOfHighlight(s,point);if(i==-1){highlights.push({series:s,point:point,auto:auto});triggerRedrawOverlay();} | ||||
| else if(!auto) | ||||
| highlights[i].auto=false;} | ||||
| function unhighlight(s,point){if(typeof s=="number") | ||||
| s=series[s];if(typeof point=="number") | ||||
| point=s.data[point];var i=indexOfHighlight(s,point);if(i!=-1){highlights.splice(i,1);triggerRedrawOverlay();}} | ||||
| function indexOfHighlight(s,p){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.series==s&&h.point[0]==p[0]&&h.point[1]==p[1]) | ||||
| return i;} | ||||
| return-1;} | ||||
| function drawPointHighlight(series,point){var x=point[0],y=point[1],axisx=series.xaxis,axisy=series.yaxis;if(x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max) | ||||
| return;var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=parseColor(series.color).scale(1,1,1,0.5).toString();var radius=1.5*pointRadius;octx.beginPath();octx.arc(axisx.p2c(x),axisy.p2c(y),radius,0,2*Math.PI,true);octx.stroke();} | ||||
| function drawBarHighlight(series,point){octx.lineJoin="round";octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=parseColor(series.color).scale(1,1,1,0.5).toString();var fillStyle=parseColor(series.color).scale(1,1,1,0.5).toString();var barLeft=series.bars.align=="left"?0:-series.bars.barWidth/2;drawBar(point[0],point[1],barLeft,barLeft+series.bars.barWidth,0,function(){return fillStyle;},series.xaxis,series.yaxis,octx);} | ||||
| function setPositionFromEvent(pos,e){var offset=eventHolder.offset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plotWidth);pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plotHeight);} | ||||
| function setCrosshair(pos){if(pos==null) | ||||
| crosshair.pos.x=-1;else{crosshair.pos.x=clamp(0,pos.x!=null?axes.xaxis.p2c(pos.x):axes.x2axis.p2c(pos.x2),plotWidth);crosshair.pos.y=clamp(0,pos.y!=null?axes.yaxis.p2c(pos.y):axes.y2axis.p2c(pos.y2),plotHeight);} | ||||
| triggerRedrawOverlay();} | ||||
| function getSelectionForEvent(){var x1=Math.min(selection.first.x,selection.second.x),x2=Math.max(selection.first.x,selection.second.x),y1=Math.max(selection.first.y,selection.second.y),y2=Math.min(selection.first.y,selection.second.y);var r={};if(axes.xaxis.used) | ||||
| r.xaxis={from:axes.xaxis.c2p(x1),to:axes.xaxis.c2p(x2)};if(axes.x2axis.used) | ||||
| r.x2axis={from:axes.x2axis.c2p(x1),to:axes.x2axis.c2p(x2)};if(axes.yaxis.used) | ||||
| r.yaxis={from:axes.yaxis.c2p(y1),to:axes.yaxis.c2p(y2)};if(axes.y2axis.used) | ||||
| r.y2axis={from:axes.y2axis.c2p(y1),to:axes.y2axis.c2p(y2)};return r;} | ||||
| function triggerSelectedEvent(){var r=getSelectionForEvent();target.trigger("plotselected",[r]);if(axes.xaxis.used&&axes.yaxis.used) | ||||
| target.trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}]);} | ||||
| function onSelectionMouseUp(e){if(document.onselectstart!==undefined) | ||||
| document.onselectstart=workarounds.onselectstart;if(document.ondrag!==undefined) | ||||
| document.ondrag=workarounds.ondrag;selection.active=false;updateSelection(e);if(selectionIsSane()){triggerSelectedEvent();clickIsMouseUp=true;} | ||||
| else{target.trigger("plotunselected",[]);target.trigger("plotselecting",[null]);} | ||||
| return false;} | ||||
| function setSelectionPos(pos,e){setPositionFromEvent(pos,e);if(options.selection.mode=="y"){if(pos==selection.first) | ||||
| pos.x=0;else | ||||
| pos.x=plotWidth;} | ||||
| if(options.selection.mode=="x"){if(pos==selection.first) | ||||
| pos.y=0;else | ||||
| pos.y=plotHeight;}} | ||||
| function updateSelection(pos){if(pos.pageX==null) | ||||
| return;setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;triggerRedrawOverlay();} | ||||
| else | ||||
| clearSelection(true);} | ||||
| function clearSelection(preventEvent){if(selection.show){selection.show=false;triggerRedrawOverlay();if(!preventEvent) | ||||
| target.trigger("plotunselected",[]);}} | ||||
| function setSelection(ranges,preventEvent){var range;if(options.selection.mode=="y"){selection.first.x=0;selection.second.x=plotWidth;} | ||||
| else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to);} | ||||
| if(options.selection.mode=="x"){selection.first.y=0;selection.second.y=plotHeight;} | ||||
| else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to);} | ||||
| selection.show=true;triggerRedrawOverlay();if(!preventEvent) | ||||
| triggerSelectedEvent();} | ||||
| function selectionIsSane(){var minSize=5;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize;} | ||||
| function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string") | ||||
| return spec;else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i<l;++i){var c=spec.colors[i];gradient.addColorStop(i/(l-1),typeof c=="string"?c:parseColor(defaultColor).scale(c.brightness,c.brightness,c.brightness,c.opacity));} | ||||
| return gradient;}}} | ||||
| $.plot=function(target,data,options){var plot=new Plot(target,data,options);return plot;};$.plot.formatDate=function(d,fmt,monthNames){var leftPad=function(n){n=""+n;return n.length==1?"0"+n:n;};var r=[];var escape=false;if(monthNames==null) | ||||
| monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];for(var i=0;i<fmt.length;++i){var c=fmt.charAt(i);if(escape){switch(c){case'h':c=""+d.getUTCHours();break;case'H':c=leftPad(d.getUTCHours());break;case'M':c=leftPad(d.getUTCMinutes());break;case'S':c=leftPad(d.getUTCSeconds());break;case'd':c=""+d.getUTCDate();break;case'm':c=""+(d.getUTCMonth()+1);break;case'y':c=""+d.getUTCFullYear();break;case'b':c=""+monthNames[d.getUTCMonth()];break;} | ||||
| r.push(c);escape=false;} | ||||
| else{if(c=="%") | ||||
| escape=true;else | ||||
| r.push(c);}} | ||||
| return r.join("");};function floorInBase(n,base){return base*Math.floor(n/base);} | ||||
| function clamp(min,value,max){if(value<min) | ||||
| return min;else if(value>max) | ||||
| return max;else | ||||
| return value;} | ||||
| function Color(r,g,b,a){var rgba=['r','g','b','a'];var x=4;while(-1<--x){this[rgba[x]]=arguments[x]||((x==3)?1.0:0);} | ||||
| this.toString=function(){if(this.a>=1.0){return"rgb("+[this.r,this.g,this.b].join(",")+")";}else{return"rgba("+[this.r,this.g,this.b,this.a].join(",")+")";}};this.scale=function(rf,gf,bf,af){x=4;while(-1<--x){if(arguments[x]!=null) | ||||
| this[rgba[x]]*=arguments[x];} | ||||
| return this.normalize();};this.adjust=function(rd,gd,bd,ad){x=4;while(-1<--x){if(arguments[x]!=null) | ||||
| this[rgba[x]]+=arguments[x];} | ||||
| return this.normalize();};this.clone=function(){return new Color(this.r,this.b,this.g,this.a);};var limit=function(val,minVal,maxVal){return Math.max(Math.min(val,maxVal),minVal);};this.normalize=function(){this.r=clamp(0,parseInt(this.r),255);this.g=clamp(0,parseInt(this.g),255);this.b=clamp(0,parseInt(this.b),255);this.a=clamp(0,this.a,1);return this;};this.normalize();} | ||||
| var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]};function extractColor(element){var color,elem=element;do{color=elem.css("background-color").toLowerCase();if(color!=''&&color!='transparent') | ||||
| break;elem=elem.parent();}while(!$.nodeName(elem.get(0),"body"));if(color=="rgba(0, 0, 0, 0)") | ||||
| return"transparent";return color;} | ||||
| function parseColor(str){var result;if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) | ||||
| return new Color(parseInt(result[1],10),parseInt(result[2],10),parseInt(result[3],10));if(result=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) | ||||
| return new Color(parseInt(result[1],10),parseInt(result[2],10),parseInt(result[3],10),parseFloat(result[4]));if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) | ||||
| return new Color(parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55);if(result=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) | ||||
| return new Color(parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55,parseFloat(result[4]));if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) | ||||
| return new Color(parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16));if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) | ||||
| return new Color(parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent") | ||||
| return new Color(255,255,255,0);else{result=lookupColors[name];return new Color(result[0],result[1],result[2]);}}})(jQuery); | ||||
| Before Width: | Height: | Size: 254 B | 
| Before Width: | Height: | Size: 306 B | 
| Before Width: | Height: | Size: 314 B | 
| Before Width: | Height: | Size: 119 B | 
| Before Width: | Height: | Size: 1.0 KiB | 
| Before Width: | Height: | Size: 550 B | 
| Before Width: | Height: | Size: 571 B | 
| Before Width: | Height: | Size: 583 B | 
| Before Width: | Height: | Size: 479 B | 
| Before Width: | Height: | Size: 147 B | 
| Before Width: | Height: | Size: 451 B | 
| Before Width: | Height: | Size: 492 B | 
| Before Width: | Height: | Size: 402 B | 
| Before Width: | Height: | Size: 490 B | 
| @@ -1,371 +0,0 @@ | ||||
|  | ||||
| Opus-tools, with the exception of opusinfo.[ch] is available under | ||||
| the following two clause BSD-style license: | ||||
|  | ||||
| Redistribution and use in source and binary forms, with or without | ||||
| modification, are permitted provided that the following conditions | ||||
| are met: | ||||
|  | ||||
| - Redistributions of source code must retain the above copyright | ||||
| notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
| - Redistributions in binary form must reproduce the above copyright | ||||
| notice, this list of conditions and the following disclaimer in the | ||||
| documentation and/or other materials provided with the distribution. | ||||
|  | ||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER | ||||
| OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
| EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | ||||
| PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||||
| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||||
| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  | ||||
|  | ||||
| Opusinfo is a fork of ogginfo from the vorbis-tools package | ||||
| (http://www.xiph.org). It is available under the GPL: | ||||
|  | ||||
| 		    GNU GENERAL PUBLIC LICENSE | ||||
| 		       Version 2, June 1991 | ||||
|  | ||||
|  Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||||
|      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||
|  Everyone is permitted to copy and distribute verbatim copies | ||||
|  of this license document, but changing it is not allowed. | ||||
|  | ||||
| 			    Preamble | ||||
|  | ||||
|   The licenses for most software are designed to take away your | ||||
| freedom to share and change it.  By contrast, the GNU General Public | ||||
| License is intended to guarantee your freedom to share and change free | ||||
| software--to make sure the software is free for all its users.  This | ||||
| General Public License applies to most of the Free Software | ||||
| Foundation's software and to any other program whose authors commit to | ||||
| using it.  (Some other Free Software Foundation software is covered by | ||||
| the GNU Library General Public License instead.)  You can apply it to | ||||
| your programs, too. | ||||
|  | ||||
|   When we speak of free software, we are referring to freedom, not | ||||
| price.  Our General Public Licenses are designed to make sure that you | ||||
| have the freedom to distribute copies of free software (and charge for | ||||
| this service if you wish), that you receive source code or can get it | ||||
| if you want it, that you can change the software or use pieces of it | ||||
| in new free programs; and that you know you can do these things. | ||||
|  | ||||
|   To protect your rights, we need to make restrictions that forbid | ||||
| anyone to deny you these rights or to ask you to surrender the rights. | ||||
| These restrictions translate to certain responsibilities for you if you | ||||
| distribute copies of the software, or if you modify it. | ||||
|  | ||||
|   For example, if you distribute copies of such a program, whether | ||||
| gratis or for a fee, you must give the recipients all the rights that | ||||
| you have.  You must make sure that they, too, receive or can get the | ||||
| source code.  And you must show them these terms so they know their | ||||
| rights. | ||||
|  | ||||
|   We protect your rights with two steps: (1) copyright the software, and | ||||
| (2) offer you this license which gives you legal permission to copy, | ||||
| distribute and/or modify the software. | ||||
|  | ||||
|   Also, for each author's protection and ours, we want to make certain | ||||
| that everyone understands that there is no warranty for this free | ||||
| software.  If the software is modified by someone else and passed on, we | ||||
| want its recipients to know that what they have is not the original, so | ||||
| that any problems introduced by others will not reflect on the original | ||||
| authors' reputations. | ||||
|  | ||||
|   Finally, any free program is threatened constantly by software | ||||
| patents.  We wish to avoid the danger that redistributors of a free | ||||
| program will individually obtain patent licenses, in effect making the | ||||
| program proprietary.  To prevent this, we have made it clear that any | ||||
| patent must be licensed for everyone's free use or not licensed at all. | ||||
|  | ||||
|   The precise terms and conditions for copying, distribution and | ||||
| modification follow. | ||||
|  | ||||
| 		    GNU GENERAL PUBLIC LICENSE | ||||
|    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||
|  | ||||
|   0. This License applies to any program or other work which contains | ||||
| a notice placed by the copyright holder saying it may be distributed | ||||
| under the terms of this General Public License.  The "Program", below, | ||||
| refers to any such program or work, and a "work based on the Program" | ||||
| means either the Program or any derivative work under copyright law: | ||||
| that is to say, a work containing the Program or a portion of it, | ||||
| either verbatim or with modifications and/or translated into another | ||||
| language.  (Hereinafter, translation is included without limitation in | ||||
| the term "modification".)  Each licensee is addressed as "you". | ||||
|  | ||||
| Activities other than copying, distribution and modification are not | ||||
| covered by this License; they are outside its scope.  The act of | ||||
| running the Program is not restricted, and the output from the Program | ||||
| is covered only if its contents constitute a work based on the | ||||
| Program (independent of having been made by running the Program). | ||||
| Whether that is true depends on what the Program does. | ||||
|  | ||||
|   1. You may copy and distribute verbatim copies of the Program's | ||||
| source code as you receive it, in any medium, provided that you | ||||
| conspicuously and appropriately publish on each copy an appropriate | ||||
| copyright notice and disclaimer of warranty; keep intact all the | ||||
| notices that refer to this License and to the absence of any warranty; | ||||
| and give any other recipients of the Program a copy of this License | ||||
| along with the Program. | ||||
|  | ||||
| You may charge a fee for the physical act of transferring a copy, and | ||||
| you may at your option offer warranty protection in exchange for a fee. | ||||
|  | ||||
|   2. You may modify your copy or copies of the Program or any portion | ||||
| of it, thus forming a work based on the Program, and copy and | ||||
| distribute such modifications or work under the terms of Section 1 | ||||
| above, provided that you also meet all of these conditions: | ||||
|  | ||||
|     a) You must cause the modified files to carry prominent notices | ||||
|     stating that you changed the files and the date of any change. | ||||
|  | ||||
|     b) You must cause any work that you distribute or publish, that in | ||||
|     whole or in part contains or is derived from the Program or any | ||||
|     part thereof, to be licensed as a whole at no charge to all third | ||||
|     parties under the terms of this License. | ||||
|  | ||||
|     c) If the modified program normally reads commands interactively | ||||
|     when run, you must cause it, when started running for such | ||||
|     interactive use in the most ordinary way, to print or display an | ||||
|     announcement including an appropriate copyright notice and a | ||||
|     notice that there is no warranty (or else, saying that you provide | ||||
|     a warranty) and that users may redistribute the program under | ||||
|     these conditions, and telling the user how to view a copy of this | ||||
|     License.  (Exception: if the Program itself is interactive but | ||||
|     does not normally print such an announcement, your work based on | ||||
|     the Program is not required to print an announcement.) | ||||
|  | ||||
| These requirements apply to the modified work as a whole.  If | ||||
| identifiable sections of that work are not derived from the Program, | ||||
| and can be reasonably considered independent and separate works in | ||||
| themselves, then this License, and its terms, do not apply to those | ||||
| sections when you distribute them as separate works.  But when you | ||||
| distribute the same sections as part of a whole which is a work based | ||||
| on the Program, the distribution of the whole must be on the terms of | ||||
| this License, whose permissions for other licensees extend to the | ||||
| entire whole, and thus to each and every part regardless of who wrote it. | ||||
|  | ||||
| Thus, it is not the intent of this section to claim rights or contest | ||||
| your rights to work written entirely by you; rather, the intent is to | ||||
| exercise the right to control the distribution of derivative or | ||||
| collective works based on the Program. | ||||
|  | ||||
| In addition, mere aggregation of another work not based on the Program | ||||
| with the Program (or with a work based on the Program) on a volume of | ||||
| a storage or distribution medium does not bring the other work under | ||||
| the scope of this License. | ||||
|  | ||||
|   3. You may copy and distribute the Program (or a work based on it, | ||||
| under Section 2) in object code or executable form under the terms of | ||||
| Sections 1 and 2 above provided that you also do one of the following: | ||||
|  | ||||
|     a) Accompany it with the complete corresponding machine-readable | ||||
|     source code, which must be distributed under the terms of Sections | ||||
|     1 and 2 above on a medium customarily used for software interchange; or, | ||||
|  | ||||
|     b) Accompany it with a written offer, valid for at least three | ||||
|     years, to give any third party, for a charge no more than your | ||||
|     cost of physically performing source distribution, a complete | ||||
|     machine-readable copy of the corresponding source code, to be | ||||
|     distributed under the terms of Sections 1 and 2 above on a medium | ||||
|     customarily used for software interchange; or, | ||||
|  | ||||
|     c) Accompany it with the information you received as to the offer | ||||
|     to distribute corresponding source code.  (This alternative is | ||||
|     allowed only for noncommercial distribution and only if you | ||||
|     received the program in object code or executable form with such | ||||
|     an offer, in accord with Subsection b above.) | ||||
|  | ||||
| The source code for a work means the preferred form of the work for | ||||
| making modifications to it.  For an executable work, complete source | ||||
| code means all the source code for all modules it contains, plus any | ||||
| associated interface definition files, plus the scripts used to | ||||
| control compilation and installation of the executable.  However, as a | ||||
| special exception, the source code distributed need not include | ||||
| anything that is normally distributed (in either source or binary | ||||
| form) with the major components (compiler, kernel, and so on) of the | ||||
| operating system on which the executable runs, unless that component | ||||
| itself accompanies the executable. | ||||
|  | ||||
| If distribution of executable or object code is made by offering | ||||
| access to copy from a designated place, then offering equivalent | ||||
| access to copy the source code from the same place counts as | ||||
| distribution of the source code, even though third parties are not | ||||
| compelled to copy the source along with the object code. | ||||
|  | ||||
|   4. You may not copy, modify, sublicense, or distribute the Program | ||||
| except as expressly provided under this License.  Any attempt | ||||
| otherwise to copy, modify, sublicense or distribute the Program is | ||||
| void, and will automatically terminate your rights under this License. | ||||
| However, parties who have received copies, or rights, from you under | ||||
| this License will not have their licenses terminated so long as such | ||||
| parties remain in full compliance. | ||||
|  | ||||
|   5. You are not required to accept this License, since you have not | ||||
| signed it.  However, nothing else grants you permission to modify or | ||||
| distribute the Program or its derivative works.  These actions are | ||||
| prohibited by law if you do not accept this License.  Therefore, by | ||||
| modifying or distributing the Program (or any work based on the | ||||
| Program), you indicate your acceptance of this License to do so, and | ||||
| all its terms and conditions for copying, distributing or modifying | ||||
| the Program or works based on it. | ||||
|  | ||||
|   6. Each time you redistribute the Program (or any work based on the | ||||
| Program), the recipient automatically receives a license from the | ||||
| original licensor to copy, distribute or modify the Program subject to | ||||
| these terms and conditions.  You may not impose any further | ||||
| restrictions on the recipients' exercise of the rights granted herein. | ||||
| You are not responsible for enforcing compliance by third parties to | ||||
| this License. | ||||
|  | ||||
|   7. If, as a consequence of a court judgment or allegation of patent | ||||
| infringement or for any other reason (not limited to patent issues), | ||||
| conditions are imposed on you (whether by court order, agreement or | ||||
| otherwise) that contradict the conditions of this License, they do not | ||||
| excuse you from the conditions of this License.  If you cannot | ||||
| distribute so as to satisfy simultaneously your obligations under this | ||||
| License and any other pertinent obligations, then as a consequence you | ||||
| may not distribute the Program at all.  For example, if a patent | ||||
| license would not permit royalty-free redistribution of the Program by | ||||
| all those who receive copies directly or indirectly through you, then | ||||
| the only way you could satisfy both it and this License would be to | ||||
| refrain entirely from distribution of the Program. | ||||
|  | ||||
| If any portion of this section is held invalid or unenforceable under | ||||
| any particular circumstance, the balance of the section is intended to | ||||
| apply and the section as a whole is intended to apply in other | ||||
| circumstances. | ||||
|  | ||||
| It is not the purpose of this section to induce you to infringe any | ||||
| patents or other property right claims or to contest validity of any | ||||
| such claims; this section has the sole purpose of protecting the | ||||
| integrity of the free software distribution system, which is | ||||
| implemented by public license practices.  Many people have made | ||||
| generous contributions to the wide range of software distributed | ||||
| through that system in reliance on consistent application of that | ||||
| system; it is up to the author/donor to decide if he or she is willing | ||||
| to distribute software through any other system and a licensee cannot | ||||
| impose that choice. | ||||
|  | ||||
| This section is intended to make thoroughly clear what is believed to | ||||
| be a consequence of the rest of this License. | ||||
|  | ||||
|   8. If the distribution and/or use of the Program is restricted in | ||||
| certain countries either by patents or by copyrighted interfaces, the | ||||
| original copyright holder who places the Program under this License | ||||
| may add an explicit geographical distribution limitation excluding | ||||
| those countries, so that distribution is permitted only in or among | ||||
| countries not thus excluded.  In such case, this License incorporates | ||||
| the limitation as if written in the body of this License. | ||||
|  | ||||
|   9. The Free Software Foundation may publish revised and/or new versions | ||||
| of the General Public License from time to time.  Such new versions will | ||||
| be similar in spirit to the present version, but may differ in detail to | ||||
| address new problems or concerns. | ||||
|  | ||||
| Each version is given a distinguishing version number.  If the Program | ||||
| specifies a version number of this License which applies to it and "any | ||||
| later version", you have the option of following the terms and conditions | ||||
| either of that version or of any later version published by the Free | ||||
| Software Foundation.  If the Program does not specify a version number of | ||||
| this License, you may choose any version ever published by the Free Software | ||||
| Foundation. | ||||
|  | ||||
|   10. If you wish to incorporate parts of the Program into other free | ||||
| programs whose distribution conditions are different, write to the author | ||||
| to ask for permission.  For software which is copyrighted by the Free | ||||
| Software Foundation, write to the Free Software Foundation; we sometimes | ||||
| make exceptions for this.  Our decision will be guided by the two goals | ||||
| of preserving the free status of all derivatives of our free software and | ||||
| of promoting the sharing and reuse of software generally. | ||||
|  | ||||
| 			    NO WARRANTY | ||||
|  | ||||
|   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||||
| FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN | ||||
| OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||||
| PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||||
| OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS | ||||
| TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE | ||||
| PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||||
| REPAIR OR CORRECTION. | ||||
|  | ||||
|   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||||
| WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||||
| REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||||
| INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||||
| OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||||
| TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||||
| YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||||
| PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||||
| POSSIBILITY OF SUCH DAMAGES. | ||||
|  | ||||
| 		     END OF TERMS AND CONDITIONS | ||||
|  | ||||
| 	    How to Apply These Terms to Your New Programs | ||||
|  | ||||
|   If you develop a new program, and you want it to be of the greatest | ||||
| possible use to the public, the best way to achieve this is to make it | ||||
| free software which everyone can redistribute and change under these terms. | ||||
|  | ||||
|   To do so, attach the following notices to the program.  It is safest | ||||
| to attach them to the start of each source file to most effectively | ||||
| convey the exclusion of warranty; and each file should have at least | ||||
| the "copyright" line and a pointer to where the full notice is found. | ||||
|  | ||||
|     <one line to give the program's name and a brief idea of what it does.> | ||||
|     Copyright (C) <year>  <name of author> | ||||
|  | ||||
|     This program is free software; you can redistribute it and/or modify | ||||
|     it under the terms of the GNU General Public License as published by | ||||
|     the Free Software Foundation; either version 2 of the License, or | ||||
|     (at your option) any later version. | ||||
|  | ||||
|     This program is distributed in the hope that it will be useful, | ||||
|     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|     GNU General Public License for more details. | ||||
|  | ||||
|     You should have received a copy of the GNU General Public License | ||||
|     along with this program; if not, write to the Free Software | ||||
|     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||
|  | ||||
|  | ||||
| Also add information on how to contact you by electronic and paper mail. | ||||
|  | ||||
| If the program is interactive, make it output a short notice like this | ||||
| when it starts in an interactive mode: | ||||
|  | ||||
|     Gnomovision version 69, Copyright (C) year  name of author | ||||
|     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||||
|     This is free software, and you are welcome to redistribute it | ||||
|     under certain conditions; type `show c' for details. | ||||
|  | ||||
| The hypothetical commands `show w' and `show c' should show the appropriate | ||||
| parts of the General Public License.  Of course, the commands you use may | ||||
| be called something other than `show w' and `show c'; they could even be | ||||
| mouse-clicks or menu items--whatever suits your program. | ||||
|  | ||||
| You should also get your employer (if you work as a programmer) or your | ||||
| school, if any, to sign a "copyright disclaimer" for the program, if | ||||
| necessary.  Here is a sample; alter the names: | ||||
|  | ||||
|   Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||||
|   `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||||
|  | ||||
|   <signature of Ty Coon>, 1 April 1989 | ||||
|   Ty Coon, President of Vice | ||||
|  | ||||
| This General Public License does not permit incorporating your program into | ||||
| proprietary programs.  If your program is a subroutine library, you may | ||||
| consider it more useful to permit linking proprietary applications with the | ||||
| library.  If this is what you want to do, use the GNU Library General | ||||
| Public License instead of this License. | ||||
| @@ -1,34 +0,0 @@ | ||||
| == Opus Audio Tools == | ||||
|  | ||||
| This is opus-tools, a set of tools to encode, inspect, and decode | ||||
| audio in the Opus format. | ||||
|  | ||||
| For more information on Opus see http://www.opus-codec.org/ | ||||
|  | ||||
| There is basic documentation in the HTML files included in this archive. | ||||
|  | ||||
| ------------------------------------------------------------------------- | ||||
| These Win32 opus-tools binaries were cross-compiled with mingw from: | ||||
|  | ||||
| http://downloads.xiph.org/releases/opus/opus-tools-0.1.7.tar.gz | ||||
| corrsponding to https://git.xiph.org/?p=opus-tools.git | ||||
| commit: 7afc14217cf6a408829bd94a3372b69c3b08344b | ||||
| tag: v0.1.7 | ||||
|  | ||||
| opus 1.1 pre-release | ||||
| corresponding to https://git.xiph.org/?p=opus.git | ||||
| commit: 02fed471a4568852d6618e041c4f2af0d7730ee2 | ||||
|  | ||||
| http://downloads.xiph.org/releases/flac/flac-1.3.0.tar.xz | ||||
| http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.xz | ||||
|  | ||||
| You can verify the files with: | ||||
|  sha256sum -c SHA256SUMS.txt | ||||
|  gpg --verify SHA256SUMS.txt.asc | ||||
|  | ||||
| These tools are available as part of cygwin: http://www.cygwin.com/ | ||||
| ------------------------------------------------------------------------- | ||||
|  | ||||
| Please send any comments/bug reports on these tools | ||||
| by email to Ralph Giles <giles@mozilla.com> and | ||||
| Greg Maxwell <greg@xiph.org>. | ||||
							
								
								
									
										
											BIN
										
									
								
								CrystalDiskInfo7_6_1/CdiResource/opus/opusdec.exe
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						| @@ -1,7 +0,0 @@ | ||||
| FlatSquare - Crystal Disk Info Theme | ||||
|  | ||||
| Designed by RejZoR | ||||
| https://rejzor.wordpress.com | ||||
| rejzor[at]gmail.com | ||||
|  | ||||
| It's flat and square. It's FlatSquare :) | ||||
| Before Width: | Height: | Size: 131 B | 
| Before Width: | Height: | Size: 143 B | 
| Before Width: | Height: | Size: 180 B | 
| Before Width: | Height: | Size: 202 B | 
| Before Width: | Height: | Size: 236 B | 
| Before Width: | Height: | Size: 265 B | 
| Before Width: | Height: | Size: 131 B | 
| Before Width: | Height: | Size: 143 B | 
| Before Width: | Height: | Size: 180 B | 
| Before Width: | Height: | Size: 202 B | 
| Before Width: | Height: | Size: 236 B | 
| Before Width: | Height: | Size: 265 B | 
| Before Width: | Height: | Size: 131 B | 
| Before Width: | Height: | Size: 145 B | 
| Before Width: | Height: | Size: 184 B | 
| Before Width: | Height: | Size: 204 B | 
| Before Width: | Height: | Size: 238 B | 
| Before Width: | Height: | Size: 268 B | 
| Before Width: | Height: | Size: 131 B | 
| Before Width: | Height: | Size: 145 B | 
| Before Width: | Height: | Size: 184 B | 
| Before Width: | Height: | Size: 204 B | 
| Before Width: | Height: | Size: 238 B | 
| Before Width: | Height: | Size: 268 B | 
| Before Width: | Height: | Size: 87 B | 
| Before Width: | Height: | Size: 89 B | 
| Before Width: | Height: | Size: 93 B | 
| Before Width: | Height: | Size: 97 B | 
| Before Width: | Height: | Size: 99 B | 
| Before Width: | Height: | Size: 101 B | 
| Before Width: | Height: | Size: 87 B | 
| Before Width: | Height: | Size: 89 B | 
| Before Width: | Height: | Size: 93 B | 
| Before Width: | Height: | Size: 97 B | 
| Before Width: | Height: | Size: 99 B | 
| Before Width: | Height: | Size: 101 B | 
| Before Width: | Height: | Size: 87 B | 
| Before Width: | Height: | Size: 89 B |