stats.min.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. // stats.js - http://github.com/mrdoob/stats.js
  2. var Stats = function() {
  3. function h(a) {
  4. c.appendChild(a.dom);
  5. return a
  6. }
  7. function k(a) {
  8. for (var d = 0; d < c.children.length; d++)
  9. c.children[d].style.display = d === a ? "block" : "none";
  10. l = a
  11. }
  12. var l = 0
  13. , c = document.createElement("div");
  14. c.style.cssText = "position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000";
  15. c.addEventListener("click", function(a) {
  16. a.preventDefault();
  17. k(++l % c.children.length)
  18. }, !1);
  19. var g = (performance || Date).now()
  20. , e = g
  21. , a = 0
  22. , r = h(new Stats.Panel("FPS","#0ff","#002"))
  23. , f = h(new Stats.Panel("MS","#0f0","#020"));
  24. if (self.performance && self.performance.memory)
  25. var t = h(new Stats.Panel("MB","#f08","#201"));
  26. k(0);
  27. return {
  28. REVISION: 16,
  29. dom: c,
  30. addPanel: h,
  31. showPanel: k,
  32. begin: function() {
  33. g = (performance || Date).now()
  34. },
  35. end: function() {
  36. a++;
  37. var c = (performance || Date).now();
  38. if(f.dom.clientWidth) f.update(c - g, 200);
  39. if (c > e + 1E3 && (r.dom.clientWidth && r.update(1E3 * a / (c - e), 100),
  40. e = c,
  41. a = 0,
  42. t && t.dom.clientWidth)) {
  43. var d = performance.memory;
  44. t.update(d.usedJSHeapSize / 1048576, d.jsHeapSizeLimit / 1048576)
  45. }
  46. return 1E3 * a / (c - e)//c
  47. },
  48. update: function() {
  49. g = this.end()
  50. return g
  51. },
  52. domElement: c,
  53. setMode: k
  54. }
  55. };
  56. Stats.Panel = function(h, k, l) {
  57. var c = Infinity
  58. , g = 0
  59. , e = Math.round
  60. , a = e(window.devicePixelRatio || 1)
  61. , r = 80 * a
  62. , f = 48 * a
  63. , t = 3 * a
  64. , u = 2 * a
  65. , d = 3 * a
  66. , m = 15 * a
  67. , n = 74 * a
  68. , p = 30 * a
  69. , q = document.createElement("canvas");
  70. q.width = r;
  71. q.height = f;
  72. q.style.cssText = "width:80px;height:48px";
  73. var b = q.getContext("2d");
  74. b.font = "bold " + 9 * a + "px Helvetica,Arial,sans-serif";
  75. b.textBaseline = "top";
  76. b.fillStyle = l;
  77. b.fillRect(0, 0, r, f);
  78. b.fillStyle = k;
  79. b.fillText(h, t, u);
  80. b.fillRect(d, m, n, p);
  81. b.fillStyle = l;
  82. b.globalAlpha = .9;
  83. b.fillRect(d, m, n, p);
  84. return {
  85. dom: q,
  86. update: function(f, v) {
  87. c = Math.min(c, f);
  88. g = Math.max(g, f);
  89. b.fillStyle = l;
  90. b.globalAlpha = 1;
  91. b.fillRect(0, 0, r, m);
  92. b.fillStyle = k;
  93. b.fillText(e(f) + " " + h + " (" + e(c) + "-" + e(g) + ")", t, u);
  94. b.drawImage(q, d + a, m, n - a, p, d, m, n - a, p);
  95. b.fillRect(d + n - a, m, a, p);
  96. b.fillStyle = l;
  97. b.globalAlpha = .9;
  98. b.fillRect(d + n - a, m, a, e((1 - f / v) * p))
  99. }
  100. }
  101. }
  102. ;
  103. "object" === typeof module && (module.exports = Stats);