@@ -273,7 +273,9 @@ Blockly.JavaScript['demo_youtube_status'] = function (block) {
273273Blockly . JavaScript [ 'demo_youtube_id' ] = function ( block ) {
274274 var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
275275 var value_id_ = Blockly . JavaScript . valueToCode ( block , 'id_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
276- var code = variable_name_ + '.loadVideoById(' + value_id_ + ');\n' ;
276+ var code ;
277+
278+ variable_name_ + '.loadVideoById(' + value_id_ + ');\n' ;
277279 return code ;
278280} ;
279281
@@ -312,94 +314,96 @@ Blockly.JavaScript['math_value_conversion'] = function (block) {
312314} ;
313315
314316Blockly . JavaScript [ 'demo_tracking' ] = function ( block ) {
317+ var value_var_ = Blockly . JavaScript . valueToCode ( block , 'var_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
315318 var dropdown_type_ = block . getFieldValue ( 'type_' ) ;
319+ var statements_do_ = Blockly . JavaScript . statementToCode ( block , 'do_' ) ;
320+ var share = value_var_ + '.myTracker.on("track", function(event) {\n' +
321+ ' if (event.data.length === 0) {\n' +
322+ ' ' + value_var_ + '.context.clearRect(0, 0, ' + value_var_ + '.canvas.width, ' + value_var_ + '.canvas.height);\n' +
323+ ' } else {\n' +
324+ ' ' + value_var_ + '.context.clearRect(0, 0, ' + value_var_ + '.canvas.width, ' + value_var_ + '.canvas.height);\n' +
325+ ' event.data.forEach(function(data) {\n' +
326+ ' ' + statements_do_ +
327+ ' if(data.color){\n' +
328+ ' ' + value_var_ + '.context.strokeStyle = ' + value_var_ + '.storkColor[data.color];\n' +
329+ ' }else{\n' +
330+ ' ' + value_var_ + '.context.strokeStyle = "#f00";\n' +
331+ ' }\n' +
332+ ' ' + value_var_ + '.context.lineWidth = 5;\n' +
333+ ' ' + value_var_ + '.context.strokeRect(data.x, data.y, data.width, data.height-30);\n' +
334+ ' ' + value_var_ + '.context.font = "11px Helvetica";\n' +
335+ ' ' + value_var_ + '.context.fillStyle = "#fff";\n' +
336+ ' });\n' +
337+ ' }\n' +
338+ '});\n' +
339+ value_var_ + '.trackerTask = tracking.track("#demo-area-08-video", ' + value_var_ + '.myTracker, {\n' +
340+ ' camera: true\n' +
341+ '});\n\n' ;
316342 var code ;
317343 if ( dropdown_type_ == 'color' ) {
318- code = 'var canvas = document.getElementById("demo-area-08-canvas");\n' +
319- 'var context = canvas.getContext("2d");\n' +
344+ code = value_var_ + ' = {};\n' +
345+ value_var_ + '.canvas = document.getElementById("demo-area-08-canvas");\n' +
346+ value_var_ + '.context = ' + value_var_ + '.canvas.getContext("2d");\n' +
320347 'tracking.ColorTracker.registerColor("red", function(r, g, b) {\n' +
321- ' if (r > 150 && g < 50 && b < 50 ) {\n' +
348+ ' if (r > 160 && g < 80 && b < 80 ) {\n' +
322349 ' return true;\n' +
323350 ' }\n' +
324351 ' return false;\n' +
325352 '});\n' +
326- 'tracking.ColorTracker.registerColor("black", function(r, g, b) {\n' +
327- ' if (r < 50 && g < 50 && b < 50) {\n' +
328- ' return true;\n' +
329- ' }\n' +
330- ' return false;\n' +
331- '});\n' +
332- 'tracking.ColorTracker.registerColor("white", function(r, g, b) {\n' +
333- ' if (r > 200 && g > 200 && b > 200) {\n' +
353+ 'tracking.ColorTracker.registerColor("green", function(r, g, b) {\n' +
354+ ' if (r < 80 && g > 160 && b < 80) {\n' +
334355 ' return true;\n' +
335356 ' }\n' +
336357 ' return false;\n' +
337- '});\n' +
338- 'tracking.ColorTracker.registerColor("green ", function(r, g, b) {\n' +
339- ' if (r < 50 && g > 150 && b < 50 ) {\n' +
358+ '});\n\n ' +
359+ 'tracking.ColorTracker.registerColor("blue ", function(r, g, b) {\n' +
360+ ' if (r < 80 && g < 80 && b > 160 ) {\n' +
340361 ' return true;\n' +
341362 ' }\n' +
342363 ' return false;\n' +
343364 '});\n\n' +
344- 'var myTracker = new tracking.ColorTracker(["magenta", "cyan", "yellow", "red", "black ", "white", "green "]);\n' +
345- 'var storkColor = {\n' +
346- ' magenta: "#f09 ",\n' +
365+ value_var_ + '. myTracker = new tracking.ColorTracker(["magenta", "cyan", "yellow", "red", "green ", "blue "]);\n' +
366+ value_var_ + '. storkColor = {\n' +
367+ ' magenta: "#f0a ",\n' +
347368 ' red: "#f00",\n' +
348369 ' cyan: "#0ff",\n' +
349370 ' yellow: "#ff0",\n' +
350- ' black : "#000 ",\n' +
351- ' white : "#fff", \n' +
352- ' green: "#0c0" \n' +
353- '};\n\n' ;
371+ ' green : "#0c0 ",\n' +
372+ ' blue : "#00f" \n' +
373+ '};\n \n' +
374+ share ;
354375 } else if ( dropdown_type_ == 'face' ) {
355- code = 'var canvas = document.getElementById("demo-area-08-canvas");\n' +
356- 'var context = canvas.getContext("2d");\n\n' +
357- 'var myTracker = new tracking.ObjectTracker("face");\n' +
358- 'myTracker.setInitialScale(3);\n' +
359- 'myTracker.setStepSize(1.5);\n' +
360- 'myTracker.setEdgesDensity(0.1);\n\n' ;
376+ code = value_var_ + ' = {};\n' +
377+ value_var_ + '.canvas = document.getElementById("demo-area-08-canvas");\n' +
378+ value_var_ + '.context = ' + value_var_ + '.canvas.getContext("2d");\n' +
379+ value_var_ + '.myTracker = new tracking.ObjectTracker("face");\n' +
380+ value_var_ + '.myTracker.setInitialScale(4);\n' +
381+ value_var_ + '.myTracker.setStepSize(0.5);\n' +
382+ value_var_ + '.myTracker.setEdgesDensity(0.1);\n\n' +
383+ share ;
361384 }
362385 return code ;
363386} ;
364387
365- Blockly . JavaScript [ 'demo_tracking_on' ] = function ( block ) {
366- var statements_do_ = Blockly . JavaScript . statementToCode ( block , 'do_' ) ;
367- var code = 'myTracker.on("track", function(event) {\n' +
368- ' if (event.data.length === 0) {\n' +
369- ' context.clearRect(0, 0, canvas.width, canvas.height);\n' +
370- ' } else {\n' +
371- ' context.clearRect(0, 0, canvas.width, canvas.height);\n' +
372- ' event.data.forEach(function(data) {\n' +
373- ' ' + statements_do_ +
374- ' if(data.color){\n' +
375- ' context.strokeStyle = storkColor[data.color];\n' +
376- ' }else{\n' +
377- ' context.strokeStyle = "#f00";\n' +
378- ' }\n' +
379- ' context.lineWidth = 5;\n' +
380- ' context.strokeRect(data.x, data.y, data.width, data.height-30);\n' +
381- ' context.font = "11px Helvetica";\n' +
382- ' context.fillStyle = "#fff";\n' +
383- ' });\n' +
384- ' }\n' +
385- '});\n' +
386- 'var trackerTask = tracking.track("#demo-area-08-video", myTracker, {\n' +
387- ' camera: true\n' +
388- '});\n\n' +
389- 'trackerTask.run();\n' ;
388+ Blockly . JavaScript [ 'demo_tracking_face' ] = function ( block ) {
389+ var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
390+ var dropdown_ed_ = block . getFieldValue ( 'ed_' ) ;
391+ var dropdown_ss_ = block . getFieldValue ( 'ss_' ) ;
392+ var dropdown_is_ = block . getFieldValue ( 'is_' ) ;
393+ var code = variable_name_ + '.myTracker.setInitialScale(' + dropdown_is_ + ');\n' +
394+ variable_name_ + '.myTracker.setStepSize(' + dropdown_ss_ + ');\n' +
395+ variable_name_ + '.myTracker.setEdgesDensity(' + dropdown_ed_ + ');\n\n' ;
390396 return code ;
391397} ;
392398
393- Blockly . JavaScript [ 'demo_tracking_run' ] = function ( block ) {
394- var code = 'trackerTask.run();\n' ;
399+ Blockly . JavaScript [ 'demo_tracking_action' ] = function ( block ) {
400+ var variable_name_ = Blockly . JavaScript . variableDB_ . getName ( block . getFieldValue ( 'name_' ) , Blockly . Variables . NAME_TYPE ) ;
401+ var dropdown_action_ = block . getFieldValue ( 'action_' ) ;
402+ var code = variable_name_ + '.context.clearRect(0, 0, ' + variable_name_ + '.canvas.width, ' + variable_name_ + '.canvas.height);\n' +
403+ variable_name_ + '.trackerTask.' + dropdown_action_ + '();\n' ;
395404 return code ;
396405} ;
397406
398- Blockly . JavaScript [ 'demo_tracking_stop' ] = function ( block ) {
399- var code = 'context.clearRect(0, 0, canvas.width, canvas.height);\n' +
400- 'trackerTask.stop();\n' ;
401- return code ;
402- } ;
403407
404408Blockly . JavaScript [ 'demo_tracking_val' ] = function ( block ) {
405409 var dropdown_val_ = block . getFieldValue ( 'val_' ) ;
0 commit comments