stats.min.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. a++;
  48. var c = (performance || Date).now();
  49. if(c > e + 1E3){
  50. var v = 1E3 * a / (c - e)
  51. var {min,max} = r.update(v, 100)
  52. e = c
  53. a = 0
  54. return {min, max, fps:v}
  55. }
  56. },
  57. update: function() {
  58. g = this.end()
  59. return g
  60. },
  61. domElement: c,
  62. setMode: k
  63. }
  64. };
  65. Stats.Panel = function(h, k, l) {
  66. var c = Infinity
  67. , g = 0
  68. , e = Math.round
  69. , a = e(window.devicePixelRatio || 1)
  70. , r = 80 * a
  71. , f = 48 * a
  72. , t = 3 * a
  73. , u = 2 * a
  74. , d = 3 * a
  75. , m = 15 * a
  76. , n = 74 * a
  77. , p = 30 * a
  78. , q = document.createElement("canvas");
  79. q.width = r;
  80. q.height = f;
  81. q.style.cssText = "width:80px;height:48px";
  82. var b = q.getContext("2d");
  83. b.font = "bold " + 9 * a + "px Helvetica,Arial,sans-serif";
  84. b.textBaseline = "top";
  85. b.fillStyle = l;
  86. b.fillRect(0, 0, r, f);
  87. b.fillStyle = k;
  88. b.fillText(h, t, u);
  89. b.fillRect(d, m, n, p);
  90. b.fillStyle = l;
  91. b.globalAlpha = .9;
  92. b.fillRect(d, m, n, p);
  93. return {
  94. dom: q,
  95. update: function(f, v) {
  96. c = Math.min(c, f);
  97. g = Math.max(g, f);
  98. b.fillStyle = l;
  99. b.globalAlpha = 1;
  100. b.fillRect(0, 0, r, m);
  101. b.fillStyle = k;
  102. b.fillText(e(f) + " " + h + " (" + e(c) + "-" + e(g) + ")", t, u);
  103. b.drawImage(q, d + a, m, n - a, p, d, m, n - a, p);
  104. b.fillRect(d + n - a, m, a, p);
  105. b.fillStyle = l;
  106. b.globalAlpha = .9;
  107. b.fillRect(d + n - a, m, a, e((1 - f / v) * p))
  108. return {min:c, max:g}
  109. }
  110. }
  111. }
  112. ;
  113. "object" === typeof module && (module.exports = Stats);