@@ -287,30 +287,126 @@ ooo. .oo. .oo. .oooo. .o888oo 888 .oo.
287287o888o o888o o888o `Y888""8o "888" o888o o888o
288288*/
289289
290- Blockly . JavaScript [ 'math_round_digit' ] = function ( block ) {
290+ Blockly . JavaScript [ 'math_round_digit' ] = function ( block ) {
291291 var dropdown_type_ = block . getFieldValue ( 'type_' ) ;
292292 var dropdown_digit_ = block . getFieldValue ( 'digit_' ) ;
293293 var value_round_ = Blockly . JavaScript . valueToCode ( block , 'round_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
294294 var code ;
295- if ( dropdown_digit_ == 0 ) {
296- code = 'Math.' + dropdown_type_ + '(' + value_round_ + ')' ;
297- } else {
298- var a = Math . pow ( 10 , dropdown_digit_ ) ;
299- code = '(Math.' + dropdown_type_ + '((' + value_round_ + ')*' + a + '))/' + a ;
295+ if ( dropdown_digit_ == 0 ) {
296+ code = 'Math.' + dropdown_type_ + '(' + value_round_ + ')' ;
297+ } else {
298+ var a = Math . pow ( 10 , dropdown_digit_ ) ;
299+ code = '(Math.' + dropdown_type_ + '((' + value_round_ + ')*' + a + '))/' + a ;
300300 }
301301 return [ code , Blockly . JavaScript . ORDER_ATOMIC ] ;
302302} ;
303303
304- Blockly . JavaScript [ 'math_value_conversion' ] = function ( block ) {
304+ Blockly . JavaScript [ 'math_value_conversion' ] = function ( block ) {
305305 var value_source_ = Blockly . JavaScript . valueToCode ( block , 'source_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
306306 var value_omin_ = Blockly . JavaScript . valueToCode ( block , 'omin_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
307307 var value_omax_ = Blockly . JavaScript . valueToCode ( block , 'omax_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
308308 var value_cmin_ = Blockly . JavaScript . valueToCode ( block , 'cmin_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
309309 var value_cmax_ = Blockly . JavaScript . valueToCode ( block , 'cmax_' , Blockly . JavaScript . ORDER_ATOMIC ) ;
310- var code = '((' + value_source_ + ' - (' + value_omin_ + ')) * (1/((' + value_omax_ + ')-(' + value_omin_ + ')))) * ((' + value_cmax_ + ')-(' + value_cmin_ + ')) + (' + value_cmin_ + ')' ;
310+ var code = '((' + value_source_ + ' - (' + value_omin_ + ')) * (1/((' + value_omax_ + ')-(' + value_omin_ + ')))) * ((' + value_cmax_ + ')-(' + value_cmin_ + ')) + (' + value_cmin_ + ')' ;
311311 return [ code , Blockly . JavaScript . ORDER_NONE ] ;
312312} ;
313313
314+ Blockly . JavaScript [ 'demo_tracking' ] = function ( block ) {
315+ var dropdown_type_ = block . getFieldValue ( 'type_' ) ;
316+ var code ;
317+ if ( dropdown_type_ == 'color' ) {
318+ code = 'var canvas = document.getElementById("demo-area-08-canvas");\n' +
319+ 'var context = canvas.getContext("2d");\n' +
320+ 'tracking.ColorTracker.registerColor("red", function(r, g, b) {\n' +
321+ ' if (r > 150 && g < 50 && b < 50) {\n' +
322+ ' return true;\n' +
323+ ' }\n' +
324+ ' return false;\n' +
325+ '});\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' +
334+ ' return true;\n' +
335+ ' }\n' +
336+ ' return false;\n' +
337+ '});\n' +
338+ 'tracking.ColorTracker.registerColor("green", function(r, g, b) {\n' +
339+ ' if (r < 50 && g > 150 && b < 50) {\n' +
340+ ' return true;\n' +
341+ ' }\n' +
342+ ' return false;\n' +
343+ '});\n\n' +
344+ 'var myTracker = new tracking.ColorTracker(["magenta", "cyan", "yellow", "red", "black", "white", "green"]);\n' +
345+ 'var storkColor = {\n' +
346+ ' magenta: "#f09",\n' +
347+ ' red: "#f00",\n' +
348+ ' cyan: "#0ff",\n' +
349+ ' yellow: "#ff0",\n' +
350+ ' black: "#000",\n' +
351+ ' white: "#fff",\n' +
352+ ' green: "#0c0"\n' +
353+ '};\n\n' ;
354+ } 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' ;
361+ }
362+ return code ;
363+ } ;
364+
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' ;
390+ return code ;
391+ } ;
392+
393+ Blockly . JavaScript [ 'demo_tracking_run' ] = function ( block ) {
394+ var code = 'trackerTask.run();\n' ;
395+ return code ;
396+ } ;
397+
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+ } ;
403+
404+ Blockly . JavaScript [ 'demo_tracking_val' ] = function ( block ) {
405+ var dropdown_val_ = block . getFieldValue ( 'val_' ) ;
406+ var code = 'data.' + dropdown_val_ ;
407+ return [ code , Blockly . JavaScript . ORDER_ATOMIC ] ;
408+ } ;
409+
314410
315411/*
316412 o8o
@@ -416,13 +512,13 @@ Blockly.JavaScript['board_ready'] = function (block) {
416512 var checkbox_check_ = block . getFieldValue ( 'check_' ) ;
417513 var dropdown_rate_ = block . getFieldValue ( 'rate_' ) ;
418514 var statements_callbacks_ = Blockly . JavaScript . statementToCode ( block , 'callbacks_' ) ;
419-
515+
420516 var type ;
421- if ( checkbox_type_ == '1' ) {
517+ if ( checkbox_type_ == '1' ) {
422518 type = 'boardReady(' + value_device_ + ', function (board) {\n' ;
423- } else if ( checkbox_type_ == '2' ) {
519+ } else if ( checkbox_type_ == '2' ) {
424520 type = 'boardReady({ transport: \'serial\', path:' + value_device_ + ' }, function (board) {\n' ;
425- } else if ( checkbox_type_ == '3' ) {
521+ } else if ( checkbox_type_ == '3' ) {
426522 type = 'boardReady({ transport: \'bluetooth\', address:' + value_device_ + ' }, function (board) {\n' ;
427523 }
428524
0 commit comments