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