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

Side by Side Diff: third_party/WebKit/Source/devtools/scripts/spritesheet_assembler/index.js

Issue 2671413004: DevTools: introduce spritesheet assembler. (Closed)
Patch Set: rebaseline tests Created 3 years, 10 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
(Empty)
1 var fs = require('fs');
2 var path = require('path');
3 var SVGSprite = require('./SVGSprite');
4 var Packer = require('./Packer');
5 var DevToolsDescriptors = require('./DevToolsDescriptors');
6
7 var timestamp = 0;
8 function markStart() {
9 timestamp = Date.now();
10 }
11 function markEnd(label) {
12 console.log('==> ' + label + ': ' + (Date.now() - timestamp) + 'ms');
13 }
14
15 /**
16 * @param {string} directoryPath
17 * @param {number} padding
18 * @param {string} outputSVGPath
19 * @param {string} outputJSPath
20 */
21 module.exports = function(directoryPath, padding, outputSVGPath, outputJSPath) {
22 // 1. Read all the svg files from given directory.
23 markStart();
24 var svgFilePaths = fs.readdirSync(directoryPath)
25 .filter(file => path.extname(file) === '.svg')
26 .map(fileName => path.join(directoryPath, fileName));
27
28 var sprites = [];
29 var spritesArea = 0;
30 for (var filePath of svgFilePaths) {
31 var sprite = SVGSprite.loadFromFile(filePath);
32 spritesArea += sprite.width * sprite.height;
33 sprites.push(sprite);
34 }
35 markEnd('Loaded ' + svgFilePaths.length + ' files');
36
37 // 2. Iterate over different sprite compositions to find best.
38 markStart();
39 var bestStyleSheet = null;
40 var bestCoverage = 0;
41 for (var sortOrderName in Packer.SpriteSortOrder) {
42 var sortOrder = Packer.SpriteSortOrder[sortOrderName];
43 var spriteSheet = Packer.packSprites(sprites, sortOrder, padding, padding);
44 var coverage = spritesArea / (spriteSheet.width() * spriteSheet.height());
45 if (!bestStyleSheet || coverage > bestCoverage) {
46 bestStyleSheet = spriteSheet;
47 bestCoverage = coverage;
48 }
49 }
50 markEnd(
51 'Created spritesheet ' + bestStyleSheet.width() + 'x' + bestStyleSheet.hei ght() + ' with ' +
52 ((bestCoverage * 10000 | 0) / 100) + '% coverage');
53
54 // 3. Write results to disk
55 fs.writeFileSync(outputSVGPath, bestStyleSheet.svgText());
56 fs.writeFileSync(outputJSPath, DevToolsDescriptors.generateJS(bestStyleSheet)) ;
57 }
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/scripts/spritesheet_assembler/SVGSpriteSheet.js ('k') | tools/checkperms/checkperms.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698