Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

# http://editorconfig.org

root = true

[*]
end_of_line = lf
insert_final_newline = true

[*.{js,ts,html}]
charset = utf-8
indent_style = tab

[*.{js,ts}]
trim_trailing_whitespace = true
206 changes: 103 additions & 103 deletions build/stats.js
Original file line number Diff line number Diff line change
@@ -1,179 +1,179 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.Stats = factory());
}(this, (function () { 'use strict';
(global = global || self, global.Stats = factory());
}(this, function () { 'use strict';

/**
* @author mrdoob / http://mrdoob.com/
*/
/**
* @author mrdoob / http://mrdoob.com/
*/

var Stats = function () {
var Stats = function () {

var mode = 0;
var mode = 0;

var container = document.createElement( 'div' );
container.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';
container.addEventListener( 'click', function ( event ) {
var container = document.createElement( 'div' );
container.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';
container.addEventListener( 'click', function ( event ) {

event.preventDefault();
showPanel( ++ mode % container.children.length );
event.preventDefault();
showPanel( ++ mode % container.children.length );

}, false );
}, false );

//
//

function addPanel( panel ) {
function addPanel( panel ) {

container.appendChild( panel.dom );
return panel;
container.appendChild( panel.dom );
return panel;

}
}

function showPanel( id ) {
function showPanel( id ) {

for ( var i = 0; i < container.children.length; i ++ ) {
for ( var i = 0; i < container.children.length; i ++ ) {

container.children[ i ].style.display = i === id ? 'block' : 'none';
container.children[ i ].style.display = i === id ? 'block' : 'none';

}
}

mode = id;
mode = id;

}

}
//

//
var beginTime = ( performance || Date ).now(), prevTime = beginTime, frames = 0;

var beginTime = ( performance || Date ).now(), prevTime = beginTime, frames = 0;
var fpsPanel = addPanel( new Stats.Panel( 'FPS', '#0ff', '#002' ) );
var msPanel = addPanel( new Stats.Panel( 'MS', '#0f0', '#020' ) );

var fpsPanel = addPanel( new Stats.Panel( 'FPS', '#0ff', '#002' ) );
var msPanel = addPanel( new Stats.Panel( 'MS', '#0f0', '#020' ) );
if ( self.performance && self.performance.memory ) {

if ( self.performance && self.performance.memory ) {
var memPanel = addPanel( new Stats.Panel( 'MB', '#f08', '#201' ) );

var memPanel = addPanel( new Stats.Panel( 'MB', '#f08', '#201' ) );
}

}
showPanel( 0 );

showPanel( 0 );
return {

return {
REVISION: 16,

REVISION: 16,
dom: container,

dom: container,
addPanel: addPanel,
showPanel: showPanel,

addPanel: addPanel,
showPanel: showPanel,
begin: function () {

begin: function () {
beginTime = ( performance || Date ).now();

beginTime = ( performance || Date ).now();
},

},
end: function () {

end: function () {
frames ++;

frames ++;
var time = ( performance || Date ).now();

var time = ( performance || Date ).now();
msPanel.update( time - beginTime, 200 );

msPanel.update( time - beginTime, 200 );
if ( time >= prevTime + 1000 ) {

if ( time >= prevTime + 1000 ) {
fpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 );

fpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 );
prevTime = time;
frames = 0;

prevTime = time;
frames = 0;
if ( memPanel ) {

if ( memPanel ) {
var memory = performance.memory;
memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 );

var memory = performance.memory;
memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 );
}

}

}
return time;

return time;
},

},
update: function () {

update: function () {
beginTime = this.end();

beginTime = this.end();
},

},
// Backwards Compatibility

// Backwards Compatibility
domElement: container,
setMode: showPanel

domElement: container,
setMode: showPanel
};

};

};
Stats.Panel = function ( name, fg, bg ) {

Stats.Panel = function ( name, fg, bg ) {
var min = Infinity, max = 0, round = Math.round;
var PR = round( window.devicePixelRatio || 1 );

var min = Infinity, max = 0, round = Math.round;
var PR = round( window.devicePixelRatio || 1 );
var WIDTH = 80 * PR, HEIGHT = 48 * PR,
TEXT_X = 3 * PR, TEXT_Y = 2 * PR,
GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,
GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;

var WIDTH = 80 * PR, HEIGHT = 48 * PR,
TEXT_X = 3 * PR, TEXT_Y = 2 * PR,
GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,
GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;
var canvas = document.createElement( 'canvas' );
canvas.width = WIDTH;
canvas.height = HEIGHT;
canvas.style.cssText = 'width:80px;height:48px';

var canvas = document.createElement( 'canvas' );
canvas.width = WIDTH;
canvas.height = HEIGHT;
canvas.style.cssText = 'width:80px;height:48px';
var context = canvas.getContext( '2d' );
context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif';
context.textBaseline = 'top';

var context = canvas.getContext( '2d' );
context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif';
context.textBaseline = 'top';
context.fillStyle = bg;
context.fillRect( 0, 0, WIDTH, HEIGHT );

context.fillStyle = bg;
context.fillRect( 0, 0, WIDTH, HEIGHT );
context.fillStyle = fg;
context.fillText( name, TEXT_X, TEXT_Y );
context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );

context.fillStyle = fg;
context.fillText( name, TEXT_X, TEXT_Y );
context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );
context.fillStyle = bg;
context.globalAlpha = 0.9;
context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );

context.fillStyle = bg;
context.globalAlpha = 0.9;
context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );
return {

return {
dom: canvas,

dom: canvas,
update: function ( value, maxValue ) {

update: function ( value, maxValue ) {
min = Math.min( min, value );
max = Math.max( max, value );

min = Math.min( min, value );
max = Math.max( max, value );
context.fillStyle = bg;
context.globalAlpha = 1;
context.fillRect( 0, 0, WIDTH, GRAPH_Y );
context.fillStyle = fg;
context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y );

context.fillStyle = bg;
context.globalAlpha = 1;
context.fillRect( 0, 0, WIDTH, GRAPH_Y );
context.fillStyle = fg;
context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y );
context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT );

context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT );
context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT );

context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT );
context.fillStyle = bg;
context.globalAlpha = 0.9;
context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) );

context.fillStyle = bg;
context.globalAlpha = 0.9;
context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) );
}

}
};

};

};

return Stats;
return Stats;

})));
}));
8 changes: 4 additions & 4 deletions build/stats.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 12 additions & 3 deletions examples/custom.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,21 @@
</style>
</head>
<body>
<script src="../build/stats.min.js"></script>
<script src="../build/stats.js"></script>
<script>

var stats = new Stats();
var xPanel = stats.addPanel( new Stats.Panel( 'x', '#ff8', '#221' ) );
var yPanel = stats.addPanel( new Stats.Panel( 'y', '#f8f', '#212' ) );
var xPanel = stats.addPanel( new Stats.Panel( 'x', '#ff8', '#221' ) ); // 3
var yPanel = stats.addPanel( new Stats.Panel( 'y', '#f8f', '#212' ) ); // 4
var currentPanel = 3;

stats.dom.style.cssText = 'position:fixed;bottom:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';
stats.dom.addEventListener('click', e => {
e.stopPropagation();
currentPanel = ( currentPanel == 3 ) ? 4 : 3;
stats.showPanel( currentPanel );
}, true);

stats.showPanel( 3 );
document.body.appendChild( stats.dom );

Expand Down
Loading