the new snapshot script

This commit is contained in:
be5invis 2016-02-13 09:05:42 +08:00
parent 8ce6313bfd
commit 8f2f7da24d
4 changed files with 251 additions and 147 deletions

View File

@ -7,9 +7,10 @@ var cp = require('child_process');
var mainWindow = null;
var allWindowClosed = false;
var pendingTasks = 0;
var zoom = 1.5
function checkQuit(){
if(pendingTasks == 0) app.quit();
if(allWindowClosed && pendingTasks == 0) app.quit();
}
app.on('window-all-closed', function() {
@ -17,9 +18,9 @@ app.on('window-all-closed', function() {
checkQuit()
});
function combineImages(images, outfile, width, height){
function combineImages(images, outfile, width, height, background, padding){
pendingTasks += 1
var command = 'convert ' + images.join(' ') + ' -append -crop ' + width + 'x' + height + '+0+0 +repage -trim ' + outfile;
var command = 'convert ' + images.join(' ') + ' -append -crop ' + width + 'x' + height + '+0+0 +repage -gravity South -background red -splice 0x1 -background blue -splice 0x1 -trim +repage -chop 0x1 -gravity North -background red -splice 0x1 -background blue -splice 0x1 -trim +repage -chop 0x1 -bordercolor ' + background + ' -border 0x' + padding +' ' + outfile;
console.log(command);
cp.exec(command, function(err, stdout, stderr){
images.forEach(function(file){
@ -39,13 +40,13 @@ var phases = {
},
'receive-rect' : function(event, rect){
rect = JSON.parse(JSON.stringify(rect));
var file = argv[rect.name];
var file = argv.dir + '/' + rect.name + '.png';
var j = 0;
function step(){
event.sender.send('scroll', rect.y + j * rect.windowHeight);
GOTO(function(event){
mainWindow.capturePage(function(image){
fs.writeFileSync(file + '.' + j + '.png', image.toPng())
fs.writeFileSync(argv.dir + '/' + rect.name + '.' + j + '.png', image.toPng())
j += 1;
if(j * rect.windowHeight >= rect.height) {
// done
@ -53,9 +54,9 @@ var phases = {
GOTO(phases['receive-rect']);
var images = [];
for(var k = 0; k < j; k++){
images.push(file + '.' + k + '.png')
images.push(argv.dir + '/' + rect.name + '.' + k + '.png')
}
combineImages(images, file, rect.windowWidth * rect.dpi, rect.height * rect.dpi);
combineImages(images, file, rect.windowWidth * rect.dpi, rect.height * rect.dpi, rect.background, rect.padding);
} else {
step()
}
@ -74,10 +75,7 @@ ipc.on('log', function(event, arg){
})
app.on('ready', function() {
mainWindow = new BrowserWindow({width: 64 * 16, height: 750, x:5000, y:5000});
mainWindow = new BrowserWindow({width: 64 * 16 * zoom, height: 750 * zoom, x: 5000, y: 5000, zoomFactor: zoom});
mainWindow.loadURL('file://' + __dirname + '/index.html');
//mainWindow.hide();
mainWindow.on('page-title-updated', function(){
console.log('load')
})
});

View File

@ -321,21 +321,21 @@ section.color-light {
.color-light .hljs-comment {
color: hsl(0, 0%, 62%);
}
.color-light .hljs-title, .color-light .hljs-attribute, .color-light .hljs-params {
.color-light .hljs-title, .color-light .hljs-attribute, .color-light .hljs-params, .color-light .hljs-built_in {
color: #8757ad;
}
.color-light .hljs-variable {
color: #535353;
}
.color-light .hljs-string, .color-light .hljs-pi, .color-light .language-less .hljs-keyword, .color-light .xml .hljs-value {
color: #e88501;
}
.color-light .hljs-number, .color-light .xml .hljs-attribute {
color: #6d8600;
}
.color-light .hljs-operator {
color: #c33500;
}
section.color-dark {
background-color: hsl(39, 6%, 12%);
color: #dddddd;
color: #cfcfcf;
}
.color-dark .hljs-keyword, .color-dark .hljs-class, .color-dark .hljs-tag, .color-dark .hljs-pseudo, .color-dark .hljs-attr_selector, .color-dark .hljs-constant, .color-dark .xml .hljs-title {
color: #6c9ef8;
@ -346,12 +346,12 @@ section.color-dark {
.color-dark .hljs-title, .color-dark .hljs-attribute, .color-dark .hljs-params, .color-dark .hljs-built_in {
color: #b77fdb;
}
.color-dark .hljs-variable {
color: #dddddd;
}
.color-dark .hljs-string, .color-dark .hljs-pi, .color-dark .language-less .hljs-keyword, .color-dark .xml .hljs-value {
color: #D89333;
}
.color-dark .hljs-number, .color-dark .xml .hljs-attribute {
color: #85a300;
}
.color-dark .hljs-operator {
color: #c34564;
}

View File

@ -1,92 +1,92 @@
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<title>Iosevka</title>
<style> @import url(index.css); </style>
<script src="https://cdn.bootcss.com/vue/1.0.7/vue.min.js"></script>
<script>if (!window.Vue) document.write('<script src="vue.min.js">\x3C/script>')</script>
<link href="https://cdn.bootcss.com/simple-line-icons/2.2.3/css/simple-line-icons.css" rel="stylesheet">
<meta charset="utf-8">
<title>Iosevka</title>
<style> @import url(index.css); </style>
<script src="https://cdn.bootcss.com/vue/1.0.7/vue.min.js"></script>
<script>if (!window.Vue) document.write('<script src="vue.min.js">\x3C/script>')</script>
<link href="https://cdn.bootcss.com/simple-line-icons/2.2.3/css/simple-line-icons.css" rel="stylesheet">
</head>
<body>
<section id="introduction">
<h1>Iosevka</h1>
<div id="downlinks">
<a href="https://github.com/be5invis/Iosevka/releases/latest"><icon class="icon-cloud-download"></icon>Download Iosevka<span>Version {{version}} “{{codename}}”</span></a>
<a href="specimen.html"><icon class="icon-book-open"></icon>View Specimen<span>All characters &amp; styles</span></a>
</div>
</section>
<section id="descriptions">
<ul class="col">
<li><h2>Concept</h2>
<p>Iosevka is a slender monospace sans-serif and <span class="slab">slab-serif</span> typeface inspired by <a href="http://www.fsd.it/fonts/pragmatapro.htm">Pragmata Pro</a>, <a href="http://mplus-fonts.osdn.jp/">M+</a> and <a href="http://www.parachute.gr/typefaces/allfonts/din-mono-pro">PF DIN Mono</a>, designed to be the ideal font for programming.</p>
</li>
<li><h2>Open Source</h2>
<p>Iosevka is completely generated from its <a href="https://github.com/be5invis/Iosevka">source code</a>. You can build your own variant by adjusting its <a href="https://github.com/be5invis/Iosevka/blob/master/parameters.toml">parameters</a>.</p>
</li>
</ul>
<ul class="col">
<li><h2>Support</h2>
<p>Iosevka comes in regular, bold, italic and bold-italic with over 2000 latin, greek, cyrillic, phonetic and PowerLine glyphs. A IosevkaCC variant is also provided, with several symbols enwiden, to be compatible with most CJK typefaces.</p>
</li>
<li><h2>Readme</h2>
<p>The instructions, building procedure, and other informations can be found in <a href="https://github.com/be5invis/Iosevka/blob/master/README.md">its readme</a>.</p>
</li>
</ul>
</section>
<section id="weights">
<template v-for="weight in (['thin', 'extralight', 'light', 'regular', 'medium', 'bold', 'heavy'])">
<div class="{{weight}}"><span class="weightname">{{weight}}</span><span>float Fox.quick(h){ is_brown &amp;&amp; it_jumps_over(doges.lazy) }</span></div>
</template>
</section>
<section id="opentype">
<h2>Opentype features</h2>
<template v-for="showcase in opentypeSamples">
<template v-if="(typeof showcase === 'string')"><div class="hr">{{showcase}}</div></template>
<template v-else>
<div>
<span class="normal-example"><span class="lhs">default</span><span class="rhs {{(showcase[2])}}">{{{showcase[0]}}}<br><i>{{{showcase[0]}}}</i></span></span>
<span class="arrow icon-arrow-right-circle"></span>
<span class="feature-example" v-for="feature in (showcase[1])"><span class="lhs">{{feature}}</span><span class="rhs {{(showcase[2])}}" style="-webkit-font-feature-settings:'{{feature}}'; font-feature-settings:'{{feature}}'">{{{showcase[0]}}}<br><i>{{{showcase[0]}}}</i></span></span>
</div>
</template>
</template>
</section>
<section id="preview" class="{{theme}} {{(isSlab ? 'slab' : '')}} {{(isBold ? 'bold' : '')}} {{(isItalic ? 'italic' : '')}}">
<div id="preview-toolbar">
<span class="options"><h2>Preview</h2></span>
<span id="styles-toggle" class="options"><h3>Styles</h3><compact-toggle v-bind:on.sync="isSlab" v-bind:cls="'slab'">slab-serif</compact-toggle> <compact-toggle v-bind:on.sync="isBold" v-bind:cls="'bold'">bold</compact-toggle> <compact-toggle v-bind:on.sync="isItalic" v-bind:cls="'italic'">italic</compact-toggle></span>
<span id="theme-picker" class="options"><h3>Color</h3><compact-picker v-bind:items="themes" v-bind:current.sync="theme"></compact-picker></span>
<span id="snippet-picker" class="options"><h3>Language</h3><compact-picker v-bind:items="snippets" v-bind:current.sync="snippet"></compact-picker></span>
</div>
<snippet v-bind:name="'javascript'" v-bind:current="snippet"><code class="javascript hljs"><span class=hljs-keyword>var</span> languages = [
{lang: <span class=hljs-string>'English'</span>, sample: <span class=hljs-string>'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.'</span>},
{lang: <span class=hljs-string>'IPA'</span>, sample: <span class=hljs-string>'[ɢʷɯʔ.nas.doːŋ.kʰlja] [ŋan.ȵʑi̯wo.ɕi̯uĕn.ɣwa]'</span>},
{lang: <span class=hljs-string>'Bulgarian'</span>, sample: <span class=hljs-string>'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.'</span>},
{lang: <span class=hljs-string>'Czech'</span>, sample: <span class=hljs-string>'Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu.'</span>},
{lang: <span class=hljs-string>'Finnish'</span>, sample: <span class=hljs-string>'Charles Darwin jammaili Åken hevixylofonilla Qatarin yöpub Zeligissä.'</span>},
{lang: <span class=hljs-string>'French'</span>, sample: <span class=hljs-string>'Voix ambiguë dun cœur qui au zéphyr préfère les jattes de kiwi.'</span>},
{lang: <span class=hljs-string>'German'</span>, sample: <span class=hljs-string>'Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.'</span>},
{lang: <span class=hljs-string>'Greek'</span>, sample: <span class=hljs-string>'Ταχίστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός.'</span>},
{lang: <span class=hljs-string>'Ancient Greek'</span>, sample: <span class=hljs-string>'Ἄδμηθ’, ὁρᾷς γὰρ τἀμὰ πράγμαθ’ ὡς ἔχει, λέξαι θέλω σοι πρὶν θανεῖν ἃ βούλομαι. '</span>},
{lang: <span class=hljs-string>'Hungarian'</span>, sample: <span class=hljs-string>'Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.'</span>},
{lang: <span class=hljs-string>'Icelandic'</span>, sample: <span class=hljs-string>'Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa.'</span>},
{lang: <span class=hljs-string>'Irish'</span>, sample: <span class=hljs-string>'Ċuaiġ bé ṁórṡáċ le dlúṫspád fíorḟinn trí hata mo ḋea-ṗorcáin ḃig.'</span>},
{lang: <span class=hljs-string>'Latvian'</span>, sample: <span class=hljs-string>'Muļķa hipiji mēģina brīvi nogaršot celofāna žņaudzējčūsku.'</span>},
{lang: <span class=hljs-string>'Lithuanian'</span>, sample: <span class=hljs-string>'Įlinkdama fechtuotojo špaga sublykčiojusi pragręžė apvalų arbūzą.'</span>},
{lang: <span class=hljs-string>'Macedonian'</span>, sample: <span class=hljs-string>'Ѕидарски пејзаж: шугав билмез со чудење џвака ќофте и кељ на туѓ цех.'</span>},
{lang: <span class=hljs-string>'Norwegian'</span>, sample: <span class=hljs-string>'Jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz'</span>},
{lang: <span class=hljs-string>'Polish'</span>, sample: <span class=hljs-string>'Pchnąć w tę łódź jeża lub ośm skrzyń fig.'</span>},
{lang: <span class=hljs-string>'Portuguese'</span>, sample: <span class=hljs-string>'Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.'</span>},
{lang: <span class=hljs-string>'Romanian'</span>, sample: <span class=hljs-string>'Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila.'</span>},
{lang: <span class=hljs-string>'Russian'</span>, sample: <span class=hljs-string>'Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.'</span>},
{lang: <span class=hljs-string>'Serbian'</span>, sample: <span class=hljs-string lang=sr>'Ајшо, лепото и чежњо, за љубав срца мога дођи у Хаџиће на кафу.'</span>},
{lang: <span class=hljs-string>'Spanish'</span>, sample: <span class=hljs-string>'Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.'</span>},
{lang: <span class=hljs-string>'Turkish'</span>, sample: <span class=hljs-string>'Pijamalı hasta yağız şoföre çabucak güvendi.'</span>},
{lang: <span class=hljs-string>'Ukrainian'</span>, sample: <span class=hljs-string>'Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!'</span>}
<section id="introduction">
<h1>Iosevka</h1>
<div id="downlinks">
<a href="https://github.com/be5invis/Iosevka/releases/latest"><icon class="icon-cloud-download"></icon>Download Iosevka<span>Version {{version}} “{{codename}}”</span></a>
<a href="specimen.html"><icon class="icon-book-open"></icon>View Specimen<span>All characters &amp; styles</span></a>
</div>
</section>
<section id="descriptions">
<ul class="col">
<li><h2>Concept</h2>
<p>Iosevka is a slender monospace sans-serif and <span class="slab">slab-serif</span> typeface inspired by <a href="http://www.fsd.it/fonts/pragmatapro.htm">Pragmata Pro</a>, <a href="http://mplus-fonts.osdn.jp/">M+</a> and <a href="http://www.parachute.gr/typefaces/allfonts/din-mono-pro">PF DIN Mono</a>, designed to be the ideal font for programming.</p>
</li>
<li><h2>Open Source</h2>
<p>Iosevka is completely generated from its <a href="https://github.com/be5invis/Iosevka">source code</a>. You can build your own variant by adjusting its <a href="https://github.com/be5invis/Iosevka/blob/master/parameters.toml">parameters</a>.</p>
</li>
</ul>
<ul class="col">
<li><h2>Support</h2>
<p>Iosevka comes in regular, bold, italic and bold-italic with over 2000 latin, greek, cyrillic, phonetic and PowerLine glyphs. A IosevkaCC variant is also provided, with several symbols enwiden, to be compatible with most CJK typefaces.</p>
</li>
<li><h2>Readme</h2>
<p>The instructions, building procedure, and other informations can be found in <a href="https://github.com/be5invis/Iosevka/blob/master/README.md">its readme</a>.</p>
</li>
</ul>
</section>
<section id="weights">
<template v-for="weight in (['thin', 'extralight', 'light', 'regular', 'medium', 'bold', 'heavy'])">
<div class="{{weight}}"><span class="weightname">{{weight}}</span><span>float Fox.quick(h){ is_brown &amp;&amp; it_jumps_over(doges.lazy) }</span></div>
</template>
</section>
<section id="opentype">
<h2>Opentype features</h2>
<template v-for="showcase in opentypeSamples">
<template v-if="(typeof showcase === 'string')"><div class="hr">{{showcase}}</div></template>
<template v-else>
<div>
<span class="normal-example"><span class="lhs">default</span><span class="rhs {{(showcase[2])}}">{{{showcase[0]}}}<br><i>{{{showcase[0]}}}</i></span></span>
<span class="arrow icon-arrow-right-circle"></span>
<span class="feature-example" v-for="feature in (showcase[1])"><span class="lhs">{{feature}}</span><span class="rhs {{(showcase[2])}}" style="-webkit-font-feature-settings:'{{feature}}'; font-feature-settings:'{{feature}}'">{{{showcase[0]}}}<br><i>{{{showcase[0]}}}</i></span></span>
</div>
</template>
</template>
</section>
<section id="preview" class="{{theme}} {{(isSlab ? 'slab' : '')}} {{(isBold ? 'bold' : '')}} {{(isItalic ? 'italic' : '')}}">
<div id="preview-toolbar">
<span class="options"><h2>Preview</h2></span>
<span id="styles-toggle" class="options"><h3>Styles</h3><compact-toggle v-bind:on.sync="isSlab" v-bind:cls="'slab'">slab-serif</compact-toggle> <compact-toggle v-bind:on.sync="isBold" v-bind:cls="'bold'">bold</compact-toggle> <compact-toggle v-bind:on.sync="isItalic" v-bind:cls="'italic'">italic</compact-toggle></span>
<span id="theme-picker" class="options"><h3>Color</h3><compact-picker v-bind:items="themes" v-bind:current.sync="theme"></compact-picker></span>
<span id="snippet-picker" class="options"><h3>Language</h3><compact-picker v-bind:items="snippets" v-bind:current.sync="snippet"></compact-picker></span>
</div>
<snippet v-bind:name="'javascript'" v-bind:current="snippet"><code class="javascript hljs"><span class=hljs-keyword>var</span> languages = [
{lang: <span class=hljs-string>'English'</span>, sample: <span class=hljs-string>'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.'</span>},
{lang: <span class=hljs-string>'IPA'</span>, sample: <span class=hljs-string>'[ɢʷɯʔ.nas.doːŋ.kʰlja] [ŋan.ȵʑi̯wo.ɕi̯uĕn.ɣwa]'</span>},
{lang: <span class=hljs-string>'Bulgarian'</span>, sample: <span class=hljs-string>'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.'</span>},
{lang: <span class=hljs-string>'Czech'</span>, sample: <span class=hljs-string>'Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu.'</span>},
{lang: <span class=hljs-string>'Finnish'</span>, sample: <span class=hljs-string>'Charles Darwin jammaili Åken hevixylofonilla Qatarin yöpub Zeligissä.'</span>},
{lang: <span class=hljs-string>'French'</span>, sample: <span class=hljs-string>'Voix ambiguë dun cœur qui au zéphyr préfère les jattes de kiwi.'</span>},
{lang: <span class=hljs-string>'German'</span>, sample: <span class=hljs-string>'Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.'</span>},
{lang: <span class=hljs-string>'Greek'</span>, sample: <span class=hljs-string>'Ταχίστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός.'</span>},
{lang: <span class=hljs-string>'Ancient Greek'</span>, sample: <span class=hljs-string>'Ἄδμηθ’, ὁρᾷς γὰρ τἀμὰ πράγμαθ’ ὡς ἔχει, λέξαι θέλω σοι πρὶν θανεῖν ἃ βούλομαι. '</span>},
{lang: <span class=hljs-string>'Hungarian'</span>, sample: <span class=hljs-string>'Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.'</span>},
{lang: <span class=hljs-string>'Icelandic'</span>, sample: <span class=hljs-string>'Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa.'</span>},
{lang: <span class=hljs-string>'Irish'</span>, sample: <span class=hljs-string>'Ċuaiġ bé ṁórṡáċ le dlúṫspád fíorḟinn trí hata mo ḋea-ṗorcáin ḃig.'</span>},
{lang: <span class=hljs-string>'Latvian'</span>, sample: <span class=hljs-string>'Muļķa hipiji mēģina brīvi nogaršot celofāna žņaudzējčūsku.'</span>},
{lang: <span class=hljs-string>'Lithuanian'</span>, sample: <span class=hljs-string>'Įlinkdama fechtuotojo špaga sublykčiojusi pragręžė apvalų arbūzą.'</span>},
{lang: <span class=hljs-string>'Macedonian'</span>, sample: <span class=hljs-string>'Ѕидарски пејзаж: шугав билмез со чудење џвака ќофте и кељ на туѓ цех.'</span>},
{lang: <span class=hljs-string>'Norwegian'</span>, sample: <span class=hljs-string>'Jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz'</span>},
{lang: <span class=hljs-string>'Polish'</span>, sample: <span class=hljs-string>'Pchnąć w tę łódź jeża lub ośm skrzyń fig.'</span>},
{lang: <span class=hljs-string>'Portuguese'</span>, sample: <span class=hljs-string>'Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.'</span>},
{lang: <span class=hljs-string>'Romanian'</span>, sample: <span class=hljs-string>'Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila.'</span>},
{lang: <span class=hljs-string>'Russian'</span>, sample: <span class=hljs-string>'Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.'</span>},
{lang: <span class=hljs-string>'Serbian'</span>, sample: <span class=hljs-string lang=sr>'Ајшо, лепото и чежњо, за љубав срца мога дођи у Хаџиће на кафу.'</span>},
{lang: <span class=hljs-string>'Spanish'</span>, sample: <span class=hljs-string>'Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.'</span>},
{lang: <span class=hljs-string>'Turkish'</span>, sample: <span class=hljs-string>'Pijamalı hasta yağız şoföre çabucak güvendi.'</span>},
{lang: <span class=hljs-string>'Ukrainian'</span>, sample: <span class=hljs-string>'Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!'</span>}
]
</code></snippet>
<snippet v-bind:name="'cpp'" v-bind:current="snippet"><code class="cpp hljs"><span class="hljs-comment">// From Rosetta Code</span>
@ -96,36 +96,36 @@
<span class="hljs-keyword">class</span> ormConverter {
<span class="hljs-keyword">public</span>:
ormConverter() : AR( <span class="hljs-number">0.7112f</span> ), CE( <span class="hljs-number">0.01f</span> ), DI( <span class="hljs-number">0.0254f</span> ), FU( <span class="hljs-number">0.3048f</span> ), KI( <span class="hljs-number">1000.0f</span> ), LI( <span class="hljs-number">0.00254f</span> ), ME( <span class="hljs-number">1.0f</span> ),
MI( <span class="hljs-number">7467.6f</span> ), PI( <span class="hljs-number">0.1778f</span> ), SA( <span class="hljs-number">2.1336f</span> ), TO( <span class="hljs-number">0.000254f</span> ), VE( <span class="hljs-number">0.04445f</span> ), VR( <span class="hljs-number">1066.8f</span> ) {}
MI( <span class="hljs-number">7467.6f</span> ), PI( <span class="hljs-number">0.1778f</span> ), SA( <span class="hljs-number">2.1336f</span> ), TO( <span class="hljs-number">0.000254f</span> ), VE( <span class="hljs-number">0.04445f</span> ), VR( <span class="hljs-number">1066.8f</span> ) {}
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">convert</span><span class="hljs-params">( <span class="hljs-keyword">char</span> c, <span class="hljs-keyword">float</span> l )</span> </span>{
system( <span class="hljs-string">"cls"</span> );
<span class="hljs-built_in">cout</span> &lt;&lt; endl &lt;&lt; l;
<span class="hljs-keyword">switch</span>( c ) {
<span class="hljs-keyword">case</span> <span class="hljs-string">'A'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Arshin to:"</span>; l *= AR; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'C'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Centimeter to:"</span>; l *= CE; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'D'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Diuym to:"</span>; l *= DI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'F'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Fut to:"</span>; l *= FU; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'K'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Kilometer to:"</span>; l *= KI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'L'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Liniya to:"</span>; l *= LI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'M'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Meter to:"</span>; l *= ME; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'I'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Milia to:"</span>; l *= MI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'P'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Piad to:"</span>; l *= PI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'S'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Sazhen to:"</span>; l *= SA; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'T'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Tochka to:"</span>; l *= TO; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'V'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Vershok to:"</span>; l *= VE; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'E'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Versta to:"</span>; l *= VR;
}
system( <span class="hljs-string">"cls"</span> );
<span class="hljs-built_in">cout</span> &lt;&lt; endl &lt;&lt; l;
<span class="hljs-keyword">switch</span>( c ) {
<span class="hljs-keyword">case</span> <span class="hljs-string">'A'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Arshin to:"</span>; l *= AR; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'C'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Centimeter to:"</span>; l *= CE; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'D'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Diuym to:"</span>; l *= DI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'F'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Fut to:"</span>; l *= FU; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'K'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Kilometer to:"</span>; l *= KI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'L'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Liniya to:"</span>; l *= LI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'M'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Meter to:"</span>; l *= ME; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'I'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Milia to:"</span>; l *= MI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'P'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Piad to:"</span>; l *= PI; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'S'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Sazhen to:"</span>; l *= SA; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'T'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Tochka to:"</span>; l *= TO; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'V'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Vershok to:"</span>; l *= VE; <span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> <span class="hljs-string">'E'</span>: <span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">" Versta to:"</span>; l *= VR;
}
<span class="hljs-keyword">float</span> ar = l / AR, ce = l / CE, di = l / DI, fu = l / FU, ki = l / KI, li = l / LI, me = l / ME,
mi = l / MI, pi = l / PI, sa = l / SA, to = l / TO, ve = l / VE, vr = l / VR;
<span class="hljs-built_in">cout</span> &lt;&lt; left &lt;&lt; endl &lt;&lt; <span class="hljs-string">"================="</span> &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Arshin:"</span> &lt;&lt; ar &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Centimeter:"</span> &lt;&lt; ce &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Diuym:"</span> &lt;&lt; di &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Fut:"</span> &lt;&lt; fu &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Kilometer:"</span> &lt;&lt; ki &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Liniya:"</span> &lt;&lt; li &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Meter:"</span> &lt;&lt; me &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Milia:"</span> &lt;&lt; mi &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Piad:"</span> &lt;&lt; pi &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Sazhen:"</span> &lt;&lt; sa &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Tochka:"</span> &lt;&lt; to &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Vershok:"</span> &lt;&lt; ve &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Versta:"</span> &lt;&lt; vr &lt;&lt; endl &lt;&lt; endl &lt;&lt; endl;
<span class="hljs-keyword">float</span> ar = l / AR, ce = l / CE, di = l / DI, fu = l / FU, ki = l / KI, li = l / LI, me = l / ME,
mi = l / MI, pi = l / PI, sa = l / SA, to = l / TO, ve = l / VE, vr = l / VR;
<span class="hljs-built_in">cout</span> &lt;&lt; left &lt;&lt; endl &lt;&lt; <span class="hljs-string">"================="</span> &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Arshin:"</span> &lt;&lt; ar &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Centimeter:"</span> &lt;&lt; ce &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Diuym:"</span> &lt;&lt; di &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Fut:"</span> &lt;&lt; fu &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Kilometer:"</span> &lt;&lt; ki &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Liniya:"</span> &lt;&lt; li &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Meter:"</span> &lt;&lt; me &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Milia:"</span> &lt;&lt; mi &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Piad:"</span> &lt;&lt; pi &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Sazhen:"</span> &lt;&lt; sa &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Tochka:"</span> &lt;&lt; to &lt;&lt; endl &lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Vershok:"</span> &lt;&lt; ve &lt;&lt; endl
&lt;&lt; setw( <span class="hljs-number">12</span> ) &lt;&lt; <span class="hljs-string">"Versta:"</span> &lt;&lt; vr &lt;&lt; endl &lt;&lt; endl &lt;&lt; endl;
}
<span class="hljs-keyword">private</span>:
<span class="hljs-keyword">const</span> <span class="hljs-keyword">float</span> AR, CE, DI, FU, KI, LI, ME, MI, PI, SA, TO, VE, VR;
@ -134,14 +134,19 @@
ormConverter c;
<span class="hljs-keyword">char</span> s; <span class="hljs-keyword">float</span> l;
<span class="hljs-keyword">while</span>( <span class="hljs-literal">true</span> ) {
<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"What unit:\n(A)rshin, (C)entimeter, (D)iuym, (F)ut\n(K)ilometer, (L)iniya, (M)eter, m(I)lia, (P)iad\n(S)azhen, "</span>
<span class="hljs-string">"(T)ochka, (V)ershok, v(E)rsta, (Q)uit\n"</span>;
<span class="hljs-built_in">cin</span> &gt;&gt; s; <span class="hljs-keyword">if</span>( s &amp; <span class="hljs-number">32</span> ) s ^= <span class="hljs-number">32</span>; <span class="hljs-keyword">if</span>( s == <span class="hljs-string">'Q'</span> ) <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Length (0 to Quit): "</span>; <span class="hljs-built_in">cin</span> &gt;&gt; l; <span class="hljs-keyword">if</span>( l == <span class="hljs-number">0</span> ) <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
c.convert( s, l ); system( <span class="hljs-string">"pause"</span> ); system( <span class="hljs-string">"cls"</span> );
<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"What unit:\n(A)rshin, (C)entimeter, (D)iuym, (F)ut\n(K)ilometer, (L)iniya, (M)eter, m(I)lia, (P)iad\n(S)azhen, "</span>
<span class="hljs-string">"(T)ochka, (V)ershok, v(E)rsta, (Q)uit\n"</span>;
<span class="hljs-built_in">cin</span> &gt;&gt; s; <span class="hljs-keyword">if</span>( s &amp; <span class="hljs-number">32</span> ) s ^= <span class="hljs-number">32</span>; <span class="hljs-keyword">if</span>( s == <span class="hljs-string">'Q'</span> ) <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Length (0 to Quit): "</span>; <span class="hljs-built_in">cin</span> &gt;&gt; l; <span class="hljs-keyword">if</span>( l == <span class="hljs-number">0</span> ) <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
c.convert( s, l ); system( <span class="hljs-string">"pause"</span> ); system( <span class="hljs-string">"cls"</span> );
}
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</code></snippet>
<snippet v-bind:name="'cpp-2'" v-bind:current="snippet"><code class="cpp hljs"><span class="hljs-keyword">SAMPLE_CODE</span>(TestMyTypefaceCodeSnippet) { <span class="hljs-comment">// Clarity : [i l I 1] [0 O 8] {}[]()&lt;&gt;$*-+=/#_%^@\&amp;|~?'"`!,.;:</span>
<span class="hljs-keyword">const</span> <span class="hljs-built_in">wchar_t</span>* code <span class="hljs-operator">=</span> L<span class="hljs-string">"(&lt;#part&gt;<span class="hljs-built_in">\\d</span><span class="hljs-operator">+</span>)(&lt;#capture&gt;(&lt;section&gt;(&lt;&amp;part&gt;)))((&lt;&amp;capture&gt;)<span class="hljs-built_in">.</span>)<span class="hljs-operator">{3}</span>(&lt;&amp;capture&gt;)"</span>;
<span class="hljs-built_in">RegexNode</span> node <span class="hljs-operator">=</span> (rCapture(L<span class="hljs-string">"section"</span>, r_d().Some()) <span class="hljs-operator">+</span> rC(L<span class="hljs-string">'.'</span>)).Loop(<span class="hljs-number">3</span>, <span class="hljs-number">3</span>) <span class="hljs-operator">+</span> rCapture(L<span class="hljs-string">"section"</span>, r_d().Some());
ThePatternsMustBeSame(code, node); <span class="hljs-comment">// The quick brown fox jumps over the lazy dog. 1234567890.</span>
}</code></snippet>
<snippet v-bind:name="'julia'" v-bind:current="snippet"><code class="julia hljs"><span class="hljs-comment"># From Rosetta Code</span>
<span class="hljs-keyword">function</span> walk(maze, cell, visited = <span class="hljs-built_in">Any</span>[])
push!(visited, cell)

121
index.js
View File

@ -95,10 +95,11 @@ if(window && window.process && window.process.type && process.versions['electron
return style.sheet;
})();
sheet.insertRule('::-webkit-scrollbar {display: none;}');
sheet.insertRule('#preview-toolbar{display:none}');
sheet.insertRule('section#preview #preview-toolbar{display:none}');
sheet.insertRule('#opentype>h2{display:none}');
sheet.insertRule('#opentype:before{display:none}');
document.querySelector('#preview').style.paddingBottom = windowHeight * 2 + 'px';
document.querySelector('#preview').style.transition = 'none';
var onScroll = function(){};
ipc.on('scroll', function(){
@ -108,13 +109,15 @@ if(window && window.process && window.process.type && process.versions['electron
var onComplete = function(){};
ipc.on('complete', function(){ onComplete.apply(this, arguments) });
function captureElement(el, name, callback){
function captureElement(options, callback){
window.scroll(0, 0);
var rect = el.getBoundingClientRect();
var rect = options.el.getBoundingClientRect();
ipc.send('snapshot', {
name: name,
name: options.name,
windowWidth: windowWidth,
windowHeight: windowHeight,
background: options.background || 'white',
padding: options.padding || 1,
dpi: dpi,
x: rect.left | 0,
y: rect.top | 0,
@ -126,18 +129,116 @@ if(window && window.process && window.process.type && process.versions['electron
};
onComplete = function(){
if(callback) callback();
onComplete = function(){};
}
}
var snapshotTasks = [
{
el: document.querySelector('#opentype'),
name: 'opentype',
background: 'white',
padding: 1
},
{
el: document.querySelector('#preview>pre#javascript'),
name: 'languages',
background: 'rgb(32,31,28)',
padding: 72
},
{
el: document.querySelector('#preview>pre#javascript'),
name: 'languages-slab',
background: 'rgb(32,31,28)',
padding: 72,
prepare: function(callback){
indexPage.isSlab = true;
setTimeout(callback, 1)
}
},
{
el: document.querySelector('#preview>pre#javascript'),
name: 'languages-light',
background: 'rgb(243,243,242)',
padding: 72,
prepare: function(callback){
indexPage.isSlab = false;
indexPage.theme = 'color-light';
setTimeout(callback, 1)
}
},
{
el: document.querySelector('#preview>pre#javascript'),
name: 'languages-slab-light',
background: 'rgb(243,243,242)',
padding: 72,
prepare: function(callback){
indexPage.isSlab = true;
indexPage.theme = 'color-light';
setTimeout(callback, 1)
}
},
{
el: document.querySelector('#preview>pre#cpp-2'),
name: 'preview',
background: 'rgb(32,31,28)',
padding: 72,
prepare: function(callback){
indexPage.isSlab = false;
indexPage.theme = 'color-dark';
indexPage.snippet = "cpp-2"
setTimeout(callback, 1)
}
},
{
el: document.querySelector('#preview>pre#cpp-2'),
name: 'preview-slab',
background: 'rgb(32,31,28)',
padding: 72,
prepare: function(callback){
indexPage.isSlab = true;
setTimeout(callback, 1)
}
},
{
el: document.querySelector('#preview>pre#cpp-2'),
name: 'preview-light',
background: 'rgb(243,243,242)',
padding: 72,
prepare: function(callback){
indexPage.isSlab = false;
indexPage.theme = 'color-light';
setTimeout(callback, 1)
}
},
{
el: document.querySelector('#preview>pre#cpp-2'),
name: 'preview-slab-light',
background: 'rgb(243,243,242)',
padding: 72,
prepare: function(callback){
indexPage.isSlab = true;
indexPage.theme = 'color-light';
setTimeout(callback, 1)
}
}
]
window.onload = function(){
ipc.send('snapshot', 'i am ready');
console.log('I AM READY');
setTimeout(function(){
captureElement(document.querySelector('#opentype'), 'opentype', function(){
captureElement(document.querySelector('#preview>pre#javascript'), 'languages', function(){
window.close()
current = 0;
var step = function(){
var doit = function(){
captureElement(snapshotTasks[current], function(){
current += 1;
if(current >= snapshotTasks.length) window.close()
else setTimeout(step, 100)
})
})
}, 1000)
};
if(snapshotTasks[current].prepare) snapshotTasks[current].prepare(doit);
else setTimeout(doit, 1)
};
setTimeout(step, 500);
}
})()