1 goog.provide('lime'); 2 3 goog.require('goog.style'); 4 goog.require('lime.css'); 5 goog.require('lime.userAgent'); 6 7 (function() { 8 9 var dirtyObjectQueue = [[], []]; 10 var dirtyObjectQueueNext = [[], []]; 11 12 /** 13 * Add object to Dirty objects queue (waiting for redraw) 14 * @param {lime.DirtyObject} obj Object that needs to be updated. 15 * @param {number=} opt_pass Pass number. 16 * @param {boolean=} opt_nextframe Register for next frame. 17 */ 18 lime.setObjectDirty = function(obj, opt_pass, opt_nextframe) { 19 var queue = opt_nextframe ? dirtyObjectQueueNext : dirtyObjectQueue; 20 var pass = opt_pass || 0; 21 goog.array.insert(queue[pass], obj); 22 }; 23 24 /** 25 * Remove object from Dirty obejcts queue 26 * @param {lime.DirtyObject} obj Object that needs to be updated. 27 * @param {number=} opt_pass Pass number. 28 * @param {boolean=} opt_nextframe Register for next frame. 29 */ 30 lime.clearObjectDirty = function(obj, opt_pass, opt_nextframe) { 31 /* 32 //todo: enable and test 33 var queue = opt_nextframe ? dirtyObjectQueueNext : dirtyObjectQueue; 34 var pass = opt_pass || 0; 35 goog.array.remove(queue[pass], obj);*/ 36 }; 37 38 /** 39 * Call update on all elements waiting to be invalidated 40 */ 41 lime.updateDirtyObjects = function() { 42 var ob; 43 for (var i = 0; i < 2; i++) { 44 while (dirtyObjectQueue[i].length) { 45 ob = dirtyObjectQueue[i][0]; 46 ob.update(i); 47 ob.dirty_ = 0; 48 if (ob == dirtyObjectQueue[i][0])dirtyObjectQueue[i].shift(); 49 } 50 dirtyObjectQueue[i] = []; 51 } 52 /* 53 if (dirtyObjectQueue.length != 2 && !dirtyObjectQueue[0].length && 54 !dirtyObjectQueue[1].length) 55 console.log(dirtyObjectQueue); 56 for (var i = 0; i < 2; i++) { 57 for (var j = 0; i < dirtyObjectQueue[i].length; i++) { 58 59 } 60 }*/ 61 //dirtyObjectQueue=dirtyObjectQueueNext; 62 dirtyObjectQueueNext = [[], []]; 63 }; 64 65 })(); 66 67 /** 68 * Enum for Dirty states. 69 * @enum {number} 70 */ 71 lime.Dirty = { 72 POSITION: 1, 73 SCALE: 2, 74 CONTENT: 4, 75 FONT: 8, 76 ALPHA: 16, 77 VISIBILITY: 32, 78 LAYOUT: 64, 79 ROTATION: 128, 80 ALL: 7 // POSITION | SCALE 81 }; 82 83 /** 84 * Enum for AutoResize values 85 * @enum {number} 86 */ 87 lime.AutoResize = { 88 NONE: 0, 89 LEFT: 1, 90 WIDTH: 2, 91 RIGHT: 4, 92 TOP: 8, 93 HEIGHT: 16, 94 BOTTOM: 32, 95 ALL: 63 96 }; 97 98 /** 99 * Enum for Transtion properties 100 * @enum {number} 101 */ 102 lime.Transition = { 103 POSITION: 1, 104 SCALE: 2, 105 SIZE: 3, 106 ROTATION: 4, 107 OPACITY: 5 108 }; 109 110 111 goog.style.installStyles(lime.css.css()); 112 113