'use strict' ;
function builddemo ( id , val ) {
var demo = document . getElementById ( id ) ;
var prog = demo . querySelector ( '.prog' ) ;
var out = demo . querySelector ( '.out' ) ;
var disp = demo . querySelector ( '.display' ) ;
var dctx = disp . getContext ( '2d' ) ;
disp . width = 0 ;
disp . height = 0 ;
demo . querySelector ( '.runbutton' ) . onclick = function ( ) {
setrunning ( 0 ) ;
run ( editor ) ;
editor . clear ( ) ;
prog . setValue ( 0 ) ;
} ;
prog . setValue = function ( v ) {
prog . querySelector ( 'div' ) . style . width = v * 100 + '%' ;
} ;
function show _progress ( p ) {
setrunning ( 0 ) ;
console . log ( p ) ;
if ( p . loaded _lang _model ) prog . setValue ( p . loaded _lang _model ) ;
if ( p . recognized ) prog . setValue ( p . recognized ) ;
out . innerText = JSON . stringify ( p ) ;
}
function setrunning ( v ) {
if ( v == 1 ) {
demo . querySelector ( '.running' ) . style . display = 'none' ;
demo . querySelector ( '.notrunning' ) . style . display = 'block' ;
// out.style.visibility = 'hidden'
} else {
demo . querySelector ( '.running' ) . style . display = 'block' ;
demo . querySelector ( '.notrunning' ) . style . display = 'none' ;
}
}
function display ( result ) {
React . render ( React . createElement ( Node , { node : result , expanded : true , label : "output_of_above_demo_plz_click_stuff" } ) , document . getElementById ( "explorer" ) ) ;
setrunning ( 1 ) ;
out . innerText = "Lightning Speeeeeeed" ;
prog . value = 0 ;
console . log ( result ) ;
disp . width = demo . querySelector ( '.to_ocr' ) . naturalWidth ;
disp . height = demo . querySelector ( '.to_ocr' ) . naturalHeight ;
disp . style . width = demo . querySelector ( '.to_ocr' ) . offsetWidth ;
disp . style . height = demo . querySelector ( '.to_ocr' ) . offsetHeight ;
dctx . shadowColor = "rgba(255,255,255,.1)" ;
dctx . shadowOffsetX = 0 ;
dctx . shadowOffsetY = 0 ;
dctx . shadowBlur = 10 ;
dctx . fillRect ( 0 , 0 , disp . width , disp . height ) ;
var m = result . words . map ( function ( w ) {
var b = w . bbox ;
dctx . font = '20px Times' ;
var font = 20 * ( b . x1 - b . x0 ) / dctx . measureText ( w . text ) . width + "px Times" ;
var k = function k ( ) {
dctx . font = font ;
dctx . fillText ( w . text , b . x0 , w . baseline . y0 ) ;
return font ;
} ;
return k ;
} ) ;
var times = 0 ;
var maxtimes = m . length + 100 ;
function draw ( i ) {
times ++ ;
// dctx.fillStyle="rgba(30, 29, 49, .8)"
dctx . fillStyle = "rgba(0, 219, 157, " + Math . min ( i / 100 , 1 ) + ")" ;
// dctx.fillStyle="rgba(0, 219, 199, "+Math.min(i/100,1)+")"
// dctx.globalAlpha = .1;
dctx . clearRect ( 0 , 0 , disp . width , disp . height ) ;
dctx . fillRect ( 0 , 0 , disp . width , disp . height ) ;
for ( var j = 0 ; j < Math . min ( i , m . length ) ; j ++ ) {
var asdf = Math . min ( Math . max ( i - j , 0 ) , 100 ) ;
dctx . fillStyle = "rgba(255,255,255," + asdf * . 01 + ")" ;
m [ j ] ( ) ;
} ;
if ( i < maxtimes ) {
setTimeout ( function ( ) {
draw ( i + 1 ) ;
} , 10 ) ;
} else {
console . log ( 'done' ) ;
}
}
draw ( 0 ) ;
result . words . forEach ( function ( word , index ) {
var wdiv = document . createElement ( 'div' ) ;
wdiv . innerText = word . text + ' ' ;
wdiv . style [ 'font-family' ] = "Times" ;
wdiv . style . position = 'absolute' ;
var to _ocr = document . querySelector ( '.to_ocr' ) ;
var scale = to _ocr . offsetHeight / to _ocr . naturalHeight ;
wdiv . style [ 'font-size' ] = parseFloat ( m [ index ] ( ) . split ( 'px' ) [ 0 ] ) * scale ;
wdiv . style . color = "rgba(0,0,0,0)" ;
wdiv . style . top = word . bbox . y0 * scale ;
wdiv . style . left = word . bbox . x0 * scale ;
wdiv . style . height = ( word . bbox . y1 - word . bbox . y0 ) * scale ;
wdiv . style . width = ( word . bbox . x1 - word . bbox . x0 ) * scale ;
document . querySelector ( '.ocroutput' ) . appendChild ( wdiv ) ;
} ) ;
}
window . addEventListener ( 'resize' , function ( ) {
disp . style . width = demo . querySelector ( '.to_ocr' ) . offsetWidth ;
disp . style . height = demo . querySelector ( '.to_ocr' ) . offsetHeight ;
} ) ;
function run ( c ) {
eval ( c . getValue ( ) ) ;
}
var editor = CodeMirror ( demo . querySelector ( '.editor' ) , {
// lineNumbers: true,
viewportMargin : Infinity ,
value : val
} ) ;
var sc = demo . querySelector ( '.demoheader' ) ;
var scdiv = document . createElement ( 'div' ) ;
sc . appendChild ( scdiv ) ;
scdiv . className = 'CodeMirror cm-s-default' ;
// scdiv.className = 'cm-s-default'
CodeMirror . runMode ( '<script src="http://localhost:1234/master/lib/Tesseract_dev.js"></script>' , {
name : 'xml' ,
htmlMode : true
} , scdiv ) ;
// var scripttag = CodeMirror(,{
// mode: {name: 'xml', htmlMode: true},
// readOnly: 'nocursor',
// value:
// });
editor . clear = function ( ) {
dctx . clearRect ( 0 , 0 , disp . width , disp . height ) ;
document . querySelector ( '.ocroutput' ) . innerHTML = '' ;
} ;
editor . img = demo . querySelector ( '.to_ocr' ) ;
editor . run = function ( ) {
if ( editor . img . complete ) {
run ( editor ) ;
} else {
editor . img . onload = function ( ) {
run ( editor ) ;
editor . img . onload = function ( ) { } ;
} ;
}
} ;
return editor ;
}
setTimeout ( function ( ) {
document . getElementById ( 'wow' ) . className += ' opaque' ;
} , 100 ) ;
var wow = builddemo ( 'wow' , "var img = demo.querySelector('img.to_ocr')\n\n" + "Tesseract\n" + " .recognize( img, {\n" + " progress: show_progress} )\n" + " .then( display ) // scroll down for full output\n" + " // you can edit this code" ) ;
wow . run ( ) ;
var tabs = Array . prototype . slice . call ( document . querySelectorAll ( '.langlabel' ) ) ;
var ltabs = Array . prototype . slice . call ( document . querySelectorAll ( '.ltab' ) ) ;
var langs = [ 'eng' , 'chi_sim' , 'rus' , 'meme' ] ;
var langims = langs . map ( function ( lang ) {
var limg = new Image ( ) ;
limg . src = 'img/' + lang + '.png' ;
return limg ;
} ) ;
function setlang ( i ) {
tabs . forEach ( function ( t ) {
t . className = 'langlabel' ;
} ) ;
tabs [ i ] . className = 'langlabel selected' ;
console . log ( tabs [ i ] ) ;
wow . setValue ( "var img = demo.querySelector('img.to_ocr')\n\n" + "Tesseract\n" + " .recognize( img, {\n" + " progress: show_progress, lang: '" + langs [ i ] + "'} )\n" + " .then( display ) // scroll down for full output\n" + " // you can edit this code" ) ;
wow . img . src = 'img/' + langs [ i ] + '.png' ;
wow . clear ( ) ;
}
ltabs . forEach ( function ( ltab , i ) {
ltab . onclick = function ( ) {
setlang ( i ) ;
} ;
} ) ;
tabs . forEach ( function ( tab , i ) {
tab . onclick = function ( ) {
setlang ( i ) ;
} ;
} ) ;
// document.querySelector('.getStarted')[0].onclick = function(){
// location.href = '#'
// location.href = '#get_started'
// }
// builddemo('demo2',
// "var img = demo.querySelector('img.to_ocr')\n\n\
// Tesseract\n\
// .recognize( img, {progress: show_progress, lang:'chi_sim'} )\n\
// .then( display )")