diff --git a/public_html/js/action-script.js b/public_html/js/action-script.js
index d897c53..9054b48 100644
--- a/public_html/js/action-script.js
+++ b/public_html/js/action-script.js
@@ -19,6 +19,8 @@ var _CON = _CAN.getContext('2d');
var iL;
var process;
+var exec = false;
+var last;
@@ -32,12 +34,14 @@ var init = function(){
Controller.addFolder('image source');
Controller.add(this, 'src', this._images).listen();
+ last = this.src;
};
/* (x) Variables globales
---------------------------------------------------------*/
+/* (1) Gestion du ration de l'image */
var pixelRatio = {
initialized: false,
@@ -66,33 +70,118 @@ var pixelRatio = {
};
+/* (2) Gestion de tracking.js */
+var zones;
+
+/* (3) Gestion du track de l'image */
+var track = {update: true};
+var tracker = new tracking.ObjectTracker(['face', 'eye', 'mouth']);
+
+tracker.setStepSize(1.5);
+
+Controller.addFolder('Tracking.js');
+Controller.add(track, 'update');
/* [2] Routine principale
=========================================================*/
-var count = 0;
process = function(){
- console.warn('PROCESS');
+ // Si erreur de `bind()`, on quitte
+ if( !(this instanceof HTMLImageElement) )
+ return;
- if( !count ){
+ console.time('PROCESS');
+
+
+ /* [0.0] Gestion du changement d'image
+ =========================================================*/
+ if( this.src != last ){
+ exec = false;
+ last = this.src;
+ }
+
+
+ /* [0.1] Gestion de la première exécution (par image)
+ =========================================================*/
+ if( !exec ){
+
+ /* (1) On enregistre les dimensions par défaut
+ ---------------------------------------------------------*/
this.defaultWidth = this.width;
this.defaultHeight = this.height;
log('Image copied', '[Canvas]');
- }
- count++;
- /* [0] On efface le Canvas
+
+ /* (2) Si `track.update` est TRUE, on lance `Tracking.js`
+ ---------------------------------------------------------*/
+ if( track.update ){
+
+ /* (1) On initialise la liste des zones */
+ zones = [];
+
+ /* (2) On lance le tracking */
+ tracking.track(DOM.imageLoader, tracker);
+
+ /* (3) Routine exécutée quand le tracking est terminé */
+ tracker.on('track', function(event){
+
+ // On enregistre dans `zones` les zones trackées
+ event.data.forEach(function(rect){ zones.push({ x: rect.x / DOM.imageLoader.defaultWidth, y: rect.y / DOM.imageLoader.defaultHeight,
+ w: rect.width / DOM.imageLoader.defaultWidth, h: rect.height / DOM.imageLoader.defaultHeight }); });
+ log('Recognition done', '[Tracking.js]');
+
+ // On met à jour le rendu (affichage des zones)
+ process.bind(DOM.imageLoader)();
+ });
+ }
+
+ // On change la valeur de `exec` pour qu'il n'entre plus dans ce `if`
+ exec = true;
+ }
+
+
+
+ /* [1] On initialise/efface le `