modules/renderqueue.js

  1. aeq = ( function ( aeq ) {
  2. /**
  3. * Module for dealing with the render queue.
  4. * @namespace aeq.renderqueue
  5. * @memberof aeq
  6. * @type {Object}
  7. */
  8. aeq.renderqueue = aeq.extend({}, {
  9. toString: function () {
  10. return '[object aeq.RenderQueue]';
  11. },
  12. // Function for extending the object using objects
  13. extend: aeq.extend,
  14. /**
  15. * Add a project item to the render queue.
  16. * @method
  17. * @memberof aeq.renderqueue
  18. * @param {Item|CompItem} item The item to add to the queue.
  19. * @return {RenderQueueItem} The added RenderQueueItem.
  20. */
  21. queue: function ( item ) {
  22. return app.project.renderQueue.items.add( item );
  23. },
  24. /**
  25. * Unqueues all items in the render queue
  26. * @method
  27. * @memberof aeq.renderqueue
  28. */
  29. unqueueAll: function () {
  30. var items = aeq.renderqueue.getRQItems();
  31. items.forEach( function ( item ) {
  32. if ( item.status !== RQItemStatus.USER_STOPPED &&
  33. item.status !== RQItemStatus.ERR_STOPPED &&
  34. item.status !== RQItemStatus.RENDERING &&
  35. item.status !== RQItemStatus.DONE ) {
  36. item.render = false;
  37. }
  38. });
  39. },
  40. /**
  41. * Removes all items from the render queue.
  42. * @method
  43. * @memberof aeq.renderqueue
  44. */
  45. clear: function () {
  46. var items = aeq.renderqueue.getRQItems();
  47. items = items.reverse();
  48. items.forEach( function ( item ) {
  49. item.remove();
  50. });
  51. },
  52. /**
  53. * Check if an item in the render queue is queued for rendering.
  54. * @method
  55. * @memberof aeq.renderqueue
  56. * @param {RenderQueueItem} rqItem The item to check.
  57. * @return {boolean} `true` if the item is going to be rendered.
  58. */
  59. isQueued: function ( rqItem ) {
  60. return rqItem.status === RQItemStatus.QUEUED;
  61. },
  62. /**
  63. * Gets all `RenderQueueItem`s in the render queue which are queued for
  64. * rendering.
  65. * @method
  66. * @memberof aeq.renderqueue
  67. * @return {aeq.arrayEx} ArrayEx of `RenderQueueItem`s
  68. */
  69. getQueuedItems: function () {
  70. var items = aeq.renderqueue.getRQItems();
  71. return items.filter( function ( item ) {
  72. return aeq.renderqueue.isQueued( item );
  73. });
  74. },
  75. /**
  76. * Gets all `CompItem`s that are queued for rendering.
  77. * @method
  78. * @memberof aeq.renderqueue
  79. * @return {aeq.arrayEx} ArrayEx of `CompItem`s
  80. */
  81. getQueuedComps: function () {
  82. var queuedItems = aeq.renderqueue.getQueuedItems();
  83. var compIDs = {};
  84. var comps = [];
  85. queuedItems.forEach( function ( item ) {
  86. var comp = item.comp;
  87. var compID = comp.id;
  88. if ( compIDs[compID] === undefined ) {
  89. compIDs[compID] = true;
  90. comps.push( comp );
  91. }
  92. });
  93. return aeq.arrayEx( comps );
  94. },
  95. /**
  96. * Gets all render queue items.
  97. * @method
  98. * @memberof aeq.renderqueue
  99. * @return {aeq.arrayEx} ArrayEx of `RenderQueueItem`s
  100. */
  101. getRQItems: function () {
  102. return aeq.arrayEx( aeq.normalizeCollection( app.project.renderQueue.items ) );
  103. },
  104. /**
  105. * Gets all `compItem`s added to the render queue.
  106. * @method
  107. * @memberof aeq.renderqueue
  108. * @return {aeq.arrayEx} ArrayEx of CompItems in the render queue.
  109. */
  110. getRQComps: function () {
  111. var rqItems = aeq.renderqueue.getRQItems();
  112. var compIDs = {};
  113. var comps = [];
  114. rqItems.forEach( function ( item ) {
  115. var comp = item.comp;
  116. var compID = comp.id;
  117. if ( compIDs[compID] === undefined ) {
  118. compIDs[compID] = true;
  119. comps.push( comp );
  120. }
  121. });
  122. return aeq.arrayEx( comps );
  123. },
  124. /**
  125. * Gets settings from a `RenderQueueItem` or `OutputModule`.
  126. * @see [OutputModule.getSettings]{@link
  127. * http://docs.aenhancers.com/outputmodule/#outputmodule-getsettings}
  128. * @see [RenderQueueItem.getSettings]{@link
  129. * http://docs.aenhancers.com/renderqueueitem/#renderqueueitem-getsettings}
  130. * @method
  131. * @memberof aeq.renderqueue
  132. * @param {RenderQueueItem|OutputModule} renderItem The object to get settings
  133. * from.
  134. * @return {Object} Object with render settings as strings.
  135. */
  136. getSettings: function ( renderItem ) {
  137. return renderItem.getSettings( GetSettingsFormat.STRING );
  138. },
  139. /**
  140. * Checks if the folder where the output module is rendering to exists, if
  141. * it does not exist, it gets created.
  142. * @method
  143. * @memberof aeq.renderqueue
  144. * @param {OutputModule} outputModule The output module to check the render
  145. * path of.
  146. */
  147. ensureRenderPathExists: function ( outputModule ) {
  148. aeq.app.ensureSecurityPrefEnabled();
  149. aeq.file.ensureFolderExists( outputModule.file.parent );
  150. },
  151. /**
  152. * Checks if the given output module template exists.
  153. * @method
  154. * @memberof aeq.renderqueue
  155. * @param {string} templateName Name of the template to check if exists.
  156. * @return {boolean} `true` if the output module template exists.
  157. */
  158. omTemplateExists: function ( templateName ) {
  159. var tempComp = aeq.comp.create();
  160. var tempRQItem = aeq.renderqueue.queue( tempComp );
  161. var templates = aeq.arrayEx( tempRQItem.outputModule( 1 ).templates );
  162. var templateExists = templates.some( function ( template ) {
  163. return template === templateName;
  164. });
  165. tempRQItem.remove();
  166. tempComp.remove();
  167. return templateExists;
  168. },
  169. /**
  170. * Checks if the given render queue template exists.
  171. * @method
  172. * @memberof aeq.renderqueue
  173. * @param {string} templateName Name of the template to check.
  174. * @return {boolean} `true` if the template exists.
  175. */
  176. rqTemplateExists: function ( templateName ) {
  177. var tempComp = aeq.comp.create();
  178. var tempRQItem = aeq.renderqueue.queue( tempComp );
  179. var templates = aeq.arrayEx( tempRQItem.templates );
  180. var templateExists = templates.some( function ( template ) {
  181. return template === templateName;
  182. });
  183. tempRQItem.remove();
  184. tempComp.remove();
  185. return templateExists;
  186. }
  187. });
  188. // Function aliases
  189. return aeq;
  190. }( aeq || {}) );