Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: Source/devtools/front_end/timeline/Layers3DView.js

Issue 331143005: DevTools: Add showing viewport for Layers3DView. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed test. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 this._canvasElement.height = this._canvasElement.offsetHeight * window.d evicePixelRatio; 242 this._canvasElement.height = this._canvasElement.offsetHeight * window.d evicePixelRatio;
243 this._gl.viewportWidth = this._canvasElement.width; 243 this._gl.viewportWidth = this._canvasElement.width;
244 this._gl.viewportHeight = this._canvasElement.height; 244 this._gl.viewportHeight = this._canvasElement.height;
245 }, 245 },
246 246
247 /** 247 /**
248 * @return {!CSSMatrix} 248 * @return {!CSSMatrix}
249 */ 249 */
250 _calculateProjectionMatrix: function() 250 _calculateProjectionMatrix: function()
251 { 251 {
252 var rootLayerPadding = 20; 252 var scaleFactorForMargins = 1.2;
253 var rootWidth = this._layerTree.contentRoot().width(); 253 var viewport = this._layerTree.viewportSize();
254 var rootHeight = this._layerTree.contentRoot().height(); 254 var baseWidth = viewport ? viewport.width : this._layerTree.contentRoot( ).width();
255 var baseHeight = viewport ? viewport.height : this._layerTree.contentRoo t().height();
255 var canvasWidth = this._canvasElement.width; 256 var canvasWidth = this._canvasElement.width;
256 var canvasHeight = this._canvasElement.height; 257 var canvasHeight = this._canvasElement.height;
257 var scaleX = (canvasWidth - rootLayerPadding) / rootWidth; 258 var scaleX = canvasWidth / baseWidth / scaleFactorForMargins;
258 var scaleY = (canvasHeight - rootLayerPadding) / rootHeight; 259 var scaleY = canvasHeight / baseHeight / scaleFactorForMargins;
259 var viewScale = Math.min(scaleX, scaleY); 260 var viewScale = Math.min(scaleX, scaleY);
260 var scale = this._transformController.scale(); 261 var scale = this._transformController.scale();
261 var offsetX = this._transformController.offsetX() * window.devicePixelRa tio; 262 var offsetX = this._transformController.offsetX() * window.devicePixelRa tio;
262 var offsetY = this._transformController.offsetY() * window.devicePixelRa tio; 263 var offsetY = this._transformController.offsetY() * window.devicePixelRa tio;
263 var rotateX = this._transformController.rotateX(); 264 var rotateX = this._transformController.rotateX();
264 var rotateY = this._transformController.rotateY(); 265 var rotateY = this._transformController.rotateY();
265 return new WebKitCSSMatrix().translate(offsetX, offsetY, 0).scale(scale, scale, scale).translate(canvasWidth / 2, canvasHeight / 2, 0) 266 return new WebKitCSSMatrix().translate(offsetX, offsetY, 0).scale(scale, scale, scale).translate(canvasWidth / 2, canvasHeight / 2, 0)
266 .rotate(rotateX, rotateY, 0).scale(viewScale, viewScale, viewScale). translate(-rootWidth / 2, -rootHeight / 2, 0); 267 .rotate(rotateX, rotateY, 0).scale(viewScale, viewScale, viewScale). translate(-baseWidth / 2, -baseHeight / 2, 0);
267 }, 268 },
268 269
269 _initProjectionMatrix: function() 270 _initProjectionMatrix: function()
270 { 271 {
271 this._pMatrix = new WebKitCSSMatrix().scale(1, -1, -1).translate(-1, -1, 0) 272 this._pMatrix = new WebKitCSSMatrix().scale(1, -1, -1).translate(-1, -1, 0)
272 .scale(2 / this._canvasElement.width, 2 / this._canvasElement.height , 1 / 1000000).multiply(this._calculateProjectionMatrix()); 273 .scale(2 / this._canvasElement.width, 2 / this._canvasElement.height , 1 / 1000000).multiply(this._calculateProjectionMatrix());
273 this._gl.uniformMatrix4fv(this._shaderProgram.pMatrixUniform, false, thi s._arrayFromMatrix(this._pMatrix)); 274 this._gl.uniformMatrix4fv(this._shaderProgram.pMatrixUniform, false, thi s._arrayFromMatrix(this._pMatrix));
274 }, 275 },
275 276
276 /** 277 /**
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 var scrollRectQuads = this._scrollRectQuadsForLayer[layer.id()]; 492 var scrollRectQuads = this._scrollRectQuadsForLayer[layer.id()];
492 for (var i = 0; i < scrollRectQuads.length; ++i) { 493 for (var i = 0; i < scrollRectQuads.length; ++i) {
493 vertices = this._calculateVerticesForQuad(scrollRectQuads[i], this._ calculateScrollRectDepth(layer, i)); 494 vertices = this._calculateVerticesForQuad(scrollRectQuads[i], this._ calculateScrollRectDepth(layer, i));
494 var isSelected = this._isObjectActive(WebInspector.Layers3DView.Outl ineType.Selected, layer, i); 495 var isSelected = this._isObjectActive(WebInspector.Layers3DView.Outl ineType.Selected, layer, i);
495 var color = isSelected ? WebInspector.Layers3DView.SelectedScrollRec tBackgroundColor : WebInspector.Layers3DView.ScrollRectBackgroundColor; 496 var color = isSelected ? WebInspector.Layers3DView.SelectedScrollRec tBackgroundColor : WebInspector.Layers3DView.ScrollRectBackgroundColor;
496 this._drawRectangle(vertices, color, gl.TRIANGLE_FAN); 497 this._drawRectangle(vertices, color, gl.TRIANGLE_FAN);
497 this._drawRectangle(vertices, WebInspector.Layers3DView.ScrollRectBo rderColor, gl.LINE_LOOP); 498 this._drawRectangle(vertices, WebInspector.Layers3DView.ScrollRectBo rderColor, gl.LINE_LOOP);
498 } 499 }
499 }, 500 },
500 501
502 _drawViewport: function()
503 {
504 var viewport = this._layerTree.viewportSize();
505 var vertices = [0, 0, 0, viewport.width, 0, 0, viewport.width, viewport. height, 0, 0, viewport.height, 0];
506 var color = [0, 0, 0, 1];
507 this._gl.lineWidth(3.0);
508 this._drawRectangle(vertices, color, this._gl.LINE_LOOP);
509 this._gl.lineWidth(1.0);
510 },
511
501 _calculateDepths: function() 512 _calculateDepths: function()
502 { 513 {
503 this._depthByLayerId = {}; 514 this._depthByLayerId = {};
504 this._isVisible = {}; 515 this._isVisible = {};
505 var depth = 0; 516 var depth = 0;
506 var root = this._layerTree.root(); 517 var root = this._layerTree.root();
507 var queue = [root]; 518 var queue = [root];
508 this._depthByLayerId[root.id()] = 0; 519 this._depthByLayerId[root.id()] = 0;
509 this._isVisible[root.id()] = false; 520 this._isVisible[root.id()] = false;
510 while (queue.length > 0) { 521 while (queue.length > 0) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 this._emptyView.detach(); 553 this._emptyView.detach();
543 554
544 var gl = this._initGLIfNecessary(); 555 var gl = this._initGLIfNecessary();
545 this._resizeCanvas(); 556 this._resizeCanvas();
546 this._initProjectionMatrix(); 557 this._initProjectionMatrix();
547 this._calculateDepths(); 558 this._calculateDepths();
548 559
549 gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight); 560 gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
550 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 561 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
551 562
563 if (this._layerTree.viewportSize())
564 this._drawViewport();
552 this._layerTree.forEachLayer(this._drawLayer.bind(this)); 565 this._layerTree.forEachLayer(this._drawLayer.bind(this));
553 }, 566 },
554 567
555 /** 568 /**
556 * Intersects quad with given transform matrix and line l(t) = (x0, y0, t) 569 * Intersects quad with given transform matrix and line l(t) = (x0, y0, t)
557 * @param {!Array.<number>} vertices 570 * @param {!Array.<number>} vertices
558 * @param {!CSSMatrix} matrix 571 * @param {!CSSMatrix} matrix
559 * @param {!number} x0 572 * @param {!number} x0
560 * @param {!number} y0 573 * @param {!number} y0
561 * @return {(number|undefined)} 574 * @return {(number|undefined)}
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 _onDoubleClick: function(event) 697 _onDoubleClick: function(event)
685 { 698 {
686 var object = this._activeObjectFromEventPoint(event); 699 var object = this._activeObjectFromEventPoint(event);
687 if (object && object.layer) 700 if (object && object.layer)
688 this.dispatchEventToListeners(WebInspector.Layers3DView.Events.Layer SnapshotRequested, object.layer); 701 this.dispatchEventToListeners(WebInspector.Layers3DView.Events.Layer SnapshotRequested, object.layer);
689 event.stopPropagation(); 702 event.stopPropagation();
690 }, 703 },
691 704
692 __proto__: WebInspector.VBox.prototype 705 __proto__: WebInspector.VBox.prototype
693 } 706 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/sdk/LayerTreeModel.js ('k') | Source/devtools/front_end/timeline/TimelineFrameModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698