FilterShortcuts.as 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. package caurina.transitions.properties {
  2. /**
  3. * properties.FilterShortcuts
  4. * Special properties for the Tweener class to handle MovieClip filters
  5. * The function names are strange/inverted because it makes for easier debugging (alphabetic order). They're only for internal use (on this class) anyways.
  6. *
  7. * @author Zeh Fernando, Nate Chatellier, Arthur Debert
  8. * @version 1.0.0
  9. */
  10. import flash.display.BitmapData;
  11. import flash.filters.BevelFilter;
  12. import flash.filters.BitmapFilter;
  13. import flash.filters.BlurFilter;
  14. import flash.filters.ColorMatrixFilter;
  15. import flash.filters.ConvolutionFilter;
  16. import flash.filters.DisplacementMapFilter;
  17. import flash.filters.DropShadowFilter;
  18. import flash.filters.GlowFilter;
  19. import flash.filters.GradientBevelFilter;
  20. import flash.filters.GradientGlowFilter;
  21. import flash.geom.Point;
  22. import caurina.transitions.Tweener;
  23. import caurina.transitions.AuxFunctions;
  24. public class FilterShortcuts {
  25. /**
  26. * There's no constructor.
  27. */
  28. public function FilterShortcuts () {
  29. trace ("This is an static class and should not be instantiated.")
  30. }
  31. /**
  32. * Registers all the special properties to the Tweener class, so the Tweener knows what to do with them.
  33. */
  34. public static function init(): void {
  35. // Filter tweening splitter properties
  36. Tweener.registerSpecialPropertySplitter("_filter", _filter_splitter);
  37. // Shortcuts - BevelFilter
  38. // http://livedocs.adobe.com/flex/2/langref/flash/filters/BevelFilter.html
  39. Tweener.registerSpecialProperty("_Bevel_angle", _filter_property_get, _filter_property_set, [BevelFilter, "angle"]);
  40. Tweener.registerSpecialProperty("_Bevel_blurX", _filter_property_get, _filter_property_set, [BevelFilter, "blurX"]);
  41. Tweener.registerSpecialProperty("_Bevel_blurY", _filter_property_get, _filter_property_set, [BevelFilter, "blurY"]);
  42. Tweener.registerSpecialProperty("_Bevel_distance", _filter_property_get, _filter_property_set, [BevelFilter, "distance"]);
  43. Tweener.registerSpecialProperty("_Bevel_highlightAlpha", _filter_property_get, _filter_property_set, [BevelFilter, "highlightAlpha"]);
  44. Tweener.registerSpecialPropertySplitter("_Bevel_highlightColor", _generic_color_splitter, ["_Bevel_highlightColor_r", "_Bevel_highlightColor_g", "_Bevel_highlightColor_b"]);
  45. Tweener.registerSpecialProperty("_Bevel_highlightColor_r", _filter_property_get, _filter_property_set, [BevelFilter, "highlightColor", "color", "r"]);
  46. Tweener.registerSpecialProperty("_Bevel_highlightColor_g", _filter_property_get, _filter_property_set, [BevelFilter, "highlightColor", "color", "g"]);
  47. Tweener.registerSpecialProperty("_Bevel_highlightColor_b", _filter_property_get, _filter_property_set, [BevelFilter, "highlightColor", "color", "b"]);
  48. Tweener.registerSpecialProperty("_Bevel_knockout", _filter_property_get, _filter_property_set, [BevelFilter, "knockout"]);
  49. Tweener.registerSpecialProperty("_Bevel_quality", _filter_property_get, _filter_property_set, [BevelFilter, "quality"]);
  50. Tweener.registerSpecialProperty("_Bevel_shadowAlpha", _filter_property_get, _filter_property_set, [BevelFilter, "shadowAlpha"]);
  51. Tweener.registerSpecialPropertySplitter("_Bevel_shadowColor", _generic_color_splitter, ["_Bevel_shadowColor_r", "_Bevel_shadowColor_g", "_Bevel_shadowColor_b"]);
  52. Tweener.registerSpecialProperty("_Bevel_shadowColor_r", _filter_property_get, _filter_property_set, [BevelFilter, "shadowColor", "color", "r"]);
  53. Tweener.registerSpecialProperty("_Bevel_shadowColor_g", _filter_property_get, _filter_property_set, [BevelFilter, "shadowColor", "color", "g"]);
  54. Tweener.registerSpecialProperty("_Bevel_shadowColor_b", _filter_property_get, _filter_property_set, [BevelFilter, "shadowColor", "color", "b"]);
  55. Tweener.registerSpecialProperty("_Bevel_strength", _filter_property_get, _filter_property_set, [BevelFilter, "strength"]);
  56. Tweener.registerSpecialProperty("_Bevel_type", _filter_property_get, _filter_property_set, [BevelFilter, "type"]);
  57. // Shortcuts - BlurFilter
  58. // http://livedocs.adobe.com/flex/2/langref/flash/filters/BlurFilter.html
  59. Tweener.registerSpecialProperty("_Blur_blurX", _filter_property_get, _filter_property_set, [BlurFilter, "blurX"]);
  60. Tweener.registerSpecialProperty("_Blur_blurY", _filter_property_get, _filter_property_set, [BlurFilter, "blurY"]);
  61. Tweener.registerSpecialProperty("_Blur_quality", _filter_property_get, _filter_property_set, [BlurFilter, "quality"]);
  62. // Shortcuts - ColorMatrixFilter
  63. // http://livedocs.adobe.com/flex/2/langref/flash/filters/ColorMatrixFilter.html
  64. Tweener.registerSpecialPropertySplitter("_ColorMatrix_matrix", _generic_matrix_splitter, [[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
  65. ["_ColorMatrix_matrix_rr", "_ColorMatrix_matrix_rg", "_ColorMatrix_matrix_rb", "_ColorMatrix_matrix_ra", "_ColorMatrix_matrix_ro",
  66. "_ColorMatrix_matrix_gr", "_ColorMatrix_matrix_gg", "_ColorMatrix_matrix_gb", "_ColorMatrix_matrix_ga", "_ColorMatrix_matrix_go",
  67. "_ColorMatrix_matrix_br", "_ColorMatrix_matrix_bg", "_ColorMatrix_matrix_bb", "_ColorMatrix_matrix_ba", "_ColorMatrix_matrix_bo",
  68. "_ColorMatrix_matrix_ar", "_ColorMatrix_matrix_ag", "_ColorMatrix_matrix_ab", "_ColorMatrix_matrix_aa", "_ColorMatrix_matrix_ao"]]);
  69. Tweener.registerSpecialProperty("_ColorMatrix_matrix_rr", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 0]);
  70. Tweener.registerSpecialProperty("_ColorMatrix_matrix_rg", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 1]);
  71. Tweener.registerSpecialProperty("_ColorMatrix_matrix_rb", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 2]);
  72. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ra", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 3]);
  73. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ro", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 4]);
  74. Tweener.registerSpecialProperty("_ColorMatrix_matrix_gr", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 5]);
  75. Tweener.registerSpecialProperty("_ColorMatrix_matrix_gg", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 6]);
  76. Tweener.registerSpecialProperty("_ColorMatrix_matrix_gb", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 7]);
  77. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ga", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 8]);
  78. Tweener.registerSpecialProperty("_ColorMatrix_matrix_go", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 9]);
  79. Tweener.registerSpecialProperty("_ColorMatrix_matrix_br", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 10]);
  80. Tweener.registerSpecialProperty("_ColorMatrix_matrix_bg", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 11]);
  81. Tweener.registerSpecialProperty("_ColorMatrix_matrix_bb", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 12]);
  82. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ba", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 13]);
  83. Tweener.registerSpecialProperty("_ColorMatrix_matrix_bo", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 14]);
  84. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ar", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 15]);
  85. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ag", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 16]);
  86. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ab", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 17]);
  87. Tweener.registerSpecialProperty("_ColorMatrix_matrix_aa", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 18]);
  88. Tweener.registerSpecialProperty("_ColorMatrix_matrix_ao", _filter_property_get, _filter_property_set, [ColorMatrixFilter, "matrix", "matrix", 19]);
  89. // Shortcuts - ConvolutionFilter
  90. // http://livedocs.adobe.com/flex/2/langref/flash/filters/ConvolutionFilter.html
  91. Tweener.registerSpecialProperty("_Convolution_alpha", _filter_property_get, _filter_property_set, [ConvolutionFilter, "alpha"]);
  92. Tweener.registerSpecialProperty("_Convolution_bias", _filter_property_get, _filter_property_set, [ConvolutionFilter, "bias"]);
  93. Tweener.registerSpecialProperty("_Convolution_clamp", _filter_property_get, _filter_property_set, [ConvolutionFilter, "clamp"]);
  94. Tweener.registerSpecialPropertySplitter("_Convolution_color", _generic_color_splitter, ["_Convolution_color_r", "_Convolution_color_g", "_Convolution_color_b"]);
  95. Tweener.registerSpecialProperty("_Convolution_color_r", _filter_property_get, _filter_property_set, [ConvolutionFilter, "color", "color", "r"]);
  96. Tweener.registerSpecialProperty("_Convolution_color_g", _filter_property_get, _filter_property_set, [ConvolutionFilter, "color", "color", "g"]);
  97. Tweener.registerSpecialProperty("_Convolution_color_b", _filter_property_get, _filter_property_set, [ConvolutionFilter, "color", "color", "b"]);
  98. Tweener.registerSpecialProperty("_Convolution_divisor", _filter_property_get, _filter_property_set, [ConvolutionFilter, "divisor"]);
  99. //Tweener.registerSpecialPropertySplitter("_Convolution_matrix", _generic_array_splitter, ["_Convolution_matrix_array"]);
  100. //Tweener.registerSpecialProperty("_Convolution_matrix_array", _filter_property_get, _filter_property_set, [ConvolutionFilter, "matrix", "array"]);
  101. Tweener.registerSpecialProperty("_Convolution_matrixX", _filter_property_get, _filter_property_set, [ConvolutionFilter, "matrixX"]);
  102. Tweener.registerSpecialProperty("_Convolution_matrixY", _filter_property_get, _filter_property_set, [ConvolutionFilter, "matrixY"]);
  103. Tweener.registerSpecialProperty("_Convolution_preserveAlpha", _filter_property_get, _filter_property_set, [ConvolutionFilter, "preserveAlpha"]);
  104. // Shortcuts - DisplacementMapFilter
  105. // http://livedocs.adobe.com/flex/2/langref/flash/filters/DisplacementMapFilter.html
  106. Tweener.registerSpecialProperty("_DisplacementMap_alpha", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "alpha"]);
  107. Tweener.registerSpecialPropertySplitter("_DisplacementMap_color", _generic_color_splitter, ["_DisplacementMap_color_r", "_DisplacementMap_color_r", "_DisplacementMap_color_r"]);
  108. Tweener.registerSpecialProperty("_DisplacementMap_color_r", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "color", "color", "r"]);
  109. Tweener.registerSpecialProperty("_DisplacementMap_color_g", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "color", "color", "g"]);
  110. Tweener.registerSpecialProperty("_DisplacementMap_color_b", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "color", "color", "b"]);
  111. Tweener.registerSpecialProperty("_DisplacementMap_componentX", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "componentX"]);
  112. Tweener.registerSpecialProperty("_DisplacementMap_componentY", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "componentY"]);
  113. Tweener.registerSpecialProperty("_DisplacementMap_mapBitmap", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "mapBitmap"]);
  114. Tweener.registerSpecialPropertySplitter("_DisplacementMap_mapPoint",_generic_point_splitter, ["_DisplacementMap_mapPoint_x", "_DisplacementMap_mapPoint_y"]);
  115. Tweener.registerSpecialProperty("_DisplacementMap_mapPoint_x", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "mapPoint", "point", "x"]);
  116. Tweener.registerSpecialProperty("_DisplacementMap_mapPoint_y", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "mapPoint", "point", "y"]);
  117. Tweener.registerSpecialProperty("_DisplacementMap_mode", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "mode"]);
  118. Tweener.registerSpecialProperty("_DisplacementMap_scaleX", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "scaleX"]);
  119. Tweener.registerSpecialProperty("_DisplacementMap_scaleY", _filter_property_get, _filter_property_set, [DisplacementMapFilter, "scaleY"]);
  120. // Shortcuts - DropShadowFilter
  121. // http://livedocs.adobe.com/flex/2/langref/flash/filters/DropShadowFilter.html
  122. Tweener.registerSpecialProperty("_DropShadow_alpha", _filter_property_get, _filter_property_set, [DropShadowFilter, "alpha"]);
  123. Tweener.registerSpecialProperty("_DropShadow_angle", _filter_property_get, _filter_property_set, [DropShadowFilter, "angle"]);
  124. Tweener.registerSpecialProperty("_DropShadow_blurX", _filter_property_get, _filter_property_set, [DropShadowFilter, "blurX"]);
  125. Tweener.registerSpecialProperty("_DropShadow_blurY", _filter_property_get, _filter_property_set, [DropShadowFilter, "blurY"]);
  126. Tweener.registerSpecialPropertySplitter("_DropShadow_color", _generic_color_splitter, ["_DropShadow_color_r", "_DropShadow_color_g", "_DropShadow_color_b"]);
  127. Tweener.registerSpecialProperty("_DropShadow_color_r", _filter_property_get, _filter_property_set, [DropShadowFilter, "color", "color", "r"]);
  128. Tweener.registerSpecialProperty("_DropShadow_color_g", _filter_property_get, _filter_property_set, [DropShadowFilter, "color", "color", "g"]);
  129. Tweener.registerSpecialProperty("_DropShadow_color_b", _filter_property_get, _filter_property_set, [DropShadowFilter, "color", "color", "b"]);
  130. Tweener.registerSpecialProperty("_DropShadow_distance", _filter_property_get, _filter_property_set, [DropShadowFilter, "distance"]);
  131. Tweener.registerSpecialProperty("_DropShadow_hideObject", _filter_property_get, _filter_property_set, [DropShadowFilter, "hideObject"]);
  132. Tweener.registerSpecialProperty("_DropShadow_inner", _filter_property_get, _filter_property_set, [DropShadowFilter, "inner"]);
  133. Tweener.registerSpecialProperty("_DropShadow_knockout", _filter_property_get, _filter_property_set, [DropShadowFilter, "knockout"]);
  134. Tweener.registerSpecialProperty("_DropShadow_quality", _filter_property_get, _filter_property_set, [DropShadowFilter, "quality"]);
  135. Tweener.registerSpecialProperty("_DropShadow_strength", _filter_property_get, _filter_property_set, [DropShadowFilter, "strength"]);
  136. // Shortcuts - GlowFilter
  137. // http://livedocs.adobe.com/flex/2/langref/flash/filters/GlowFilter.html
  138. Tweener.registerSpecialProperty("_Glow_alpha", _filter_property_get, _filter_property_set, [GlowFilter, "alpha"]);
  139. Tweener.registerSpecialProperty("_Glow_blurX", _filter_property_get, _filter_property_set, [GlowFilter, "blurX"]);
  140. Tweener.registerSpecialProperty("_Glow_blurY", _filter_property_get, _filter_property_set, [GlowFilter, "blurY"]);
  141. Tweener.registerSpecialPropertySplitter("_Glow_color", _generic_color_splitter, ["_Glow_color_r", "_Glow_color_g", "_Glow_color_b"]);
  142. Tweener.registerSpecialProperty("_Glow_color_r", _filter_property_get, _filter_property_set, [GlowFilter, "color", "color", "r"]);
  143. Tweener.registerSpecialProperty("_Glow_color_g", _filter_property_get, _filter_property_set, [GlowFilter, "color", "color", "g"]);
  144. Tweener.registerSpecialProperty("_Glow_color_b", _filter_property_get, _filter_property_set, [GlowFilter, "color", "color", "b"]);
  145. Tweener.registerSpecialProperty("_Glow_inner", _filter_property_get, _filter_property_set, [GlowFilter, "inner"]);
  146. Tweener.registerSpecialProperty("_Glow_knockout", _filter_property_get, _filter_property_set, [GlowFilter, "knockout"]);
  147. Tweener.registerSpecialProperty("_Glow_quality", _filter_property_get, _filter_property_set, [GlowFilter, "quality"]);
  148. Tweener.registerSpecialProperty("_Glow_strength", _filter_property_get, _filter_property_set, [GlowFilter, "strength"]);
  149. // Shortcuts - GradientBevelFilter
  150. // http://livedocs.adobe.com/flex/2/langref/flash/filters/GradientBevelFilter.html
  151. // .alphas (array)
  152. Tweener.registerSpecialProperty("_GradientBevel_angle", _filter_property_get, _filter_property_set, [GradientBevelFilter, "angle"]);
  153. Tweener.registerSpecialProperty("_GradientBevel_blurX", _filter_property_get, _filter_property_set, [GradientBevelFilter, "blurX"]);
  154. Tweener.registerSpecialProperty("_GradientBevel_blurY", _filter_property_get, _filter_property_set, [GradientBevelFilter, "blurY"]);
  155. // .colors (array)
  156. Tweener.registerSpecialProperty("_GradientBevel_distance", _filter_property_get, _filter_property_set, [GradientBevelFilter, "distance"]);
  157. Tweener.registerSpecialProperty("_GradientBevel_quality", _filter_property_get, _filter_property_set, [GradientBevelFilter, "quality"]);
  158. // .ratios(array)
  159. Tweener.registerSpecialProperty("_GradientBevel_strength", _filter_property_get, _filter_property_set, [GradientBevelFilter, "strength"]);
  160. Tweener.registerSpecialProperty("_GradientBevel_type", _filter_property_get, _filter_property_set, [GradientBevelFilter, "type"]);
  161. // Shortcuts - GradientGlowFilter
  162. // http://livedocs.adobe.com/flex/2/langref/flash/filters/GradientGlowFilter.html
  163. // .alphas (array)
  164. Tweener.registerSpecialProperty("_GradientGlow_angle", _filter_property_get, _filter_property_set, [GradientGlowFilter, "angle"]);
  165. Tweener.registerSpecialProperty("_GradientGlow_blurX", _filter_property_get, _filter_property_set, [GradientGlowFilter, "blurX"]);
  166. Tweener.registerSpecialProperty("_GradientGlow_blurY", _filter_property_get, _filter_property_set, [GradientGlowFilter, "blurY"]);
  167. // .colors (array)
  168. Tweener.registerSpecialProperty("_GradientGlow_distance", _filter_property_get, _filter_property_set, [GradientGlowFilter, "distance"]);
  169. Tweener.registerSpecialProperty("_GradientGlow_knockout", _filter_property_get, _filter_property_set, [GradientGlowFilter, "knockout"]);
  170. Tweener.registerSpecialProperty("_GradientGlow_quality", _filter_property_get, _filter_property_set, [GradientGlowFilter, "quality"]);
  171. // .ratios (array)
  172. Tweener.registerSpecialProperty("_GradientGlow_strength", _filter_property_get, _filter_property_set, [GradientGlowFilter, "strength"]);
  173. Tweener.registerSpecialProperty("_GradientGlow_type", _filter_property_get, _filter_property_set, [GradientGlowFilter, "type"]);
  174. }
  175. // ==================================================================================================================================
  176. // PROPERTY GROUPING/SPLITTING functions --------------------------------------------------------------------------------------------
  177. // ----------------------------------------------------------------------------------------------------------------------------------
  178. // generic splitters
  179. /**
  180. * A generic color splitter - from 0xrrggbb to r, g, b with the name of the parameters passed
  181. *
  182. * @param p_value Number The original _color value
  183. * @return Array An array containing the .name and .value of all new properties
  184. */
  185. public static function _generic_color_splitter (p_value:Number, p_parameters:Array):Array {
  186. var nArray:Array = new Array();
  187. nArray.push({name:p_parameters[0], value:AuxFunctions.numberToR(p_value)});
  188. nArray.push({name:p_parameters[1], value:AuxFunctions.numberToG(p_value)});
  189. nArray.push({name:p_parameters[2], value:AuxFunctions.numberToB(p_value)});
  190. return nArray;
  191. }
  192. /**
  193. * A generic mapPoint splitter - from Point to x, y with the name of the parameters passed
  194. *
  195. * @param p_value Point The original point
  196. * @return Array An array containing the .name and .value of all new properties
  197. */
  198. public static function _generic_point_splitter (p_value:Point, p_parameters:Array):Array {
  199. var nArray:Array = new Array();
  200. nArray.push({name:p_parameters[0], value:p_value.x});
  201. nArray.push({name:p_parameters[1], value:p_value.y});
  202. return nArray;
  203. }
  204. /**
  205. * A generic matrix splitter - from [] to items with the name of the parameters passed
  206. *
  207. * @param p_value Array The original matrix
  208. * @return Array An array containing the .name and .value of all new properties
  209. */
  210. public static function _generic_matrix_splitter (p_value:Array, p_parameters:Array):Array {
  211. if (p_value == null) p_value = p_parameters[0].concat();
  212. var nArray:Array = new Array();
  213. for (var i:Number = 0; i < p_value.length; i++) {
  214. nArray.push({name:p_parameters[1][i], value:p_value[i]});
  215. }
  216. return nArray;
  217. }
  218. /**
  219. * A generic array splitter - from [] to items with the index passed back
  220. *
  221. * @param p_value Array The original array value
  222. * @return Array An array containing the .name and .value of all new properties
  223. */
  224. /*
  225. public static function _generic_array_splitter (p_value:Array, p_parameters:Array):Array {
  226. if (p_value == null) p_value = p_parameters[0].concat();
  227. var nArray:Array = new Array();
  228. for (var i:Number = 0; i < p_value.length; i++) {
  229. nArray.push({name:p_parameters[1][i], value:p_value[i], arrayIndex:i});
  230. }
  231. return nArray;
  232. }
  233. */
  234. // ----------------------------------------------------------------------------------------------------------------------------------
  235. // filters
  236. /**
  237. * Splits the _filter, _blur, etc parameter into specific filter variables
  238. *
  239. * @param p_value BitmapFilter A BitmapFilter instance
  240. * @return Array An array containing the .name and .value of all new properties
  241. */
  242. public static function _filter_splitter (p_value:BitmapFilter, p_parameters:Array, p_extra:Object = null):Array {
  243. var nArray:Array = new Array();
  244. if (p_value is BevelFilter) {
  245. nArray.push({name:"_Bevel_angle", value:BevelFilter(p_value).angle});
  246. nArray.push({name:"_Bevel_blurX", value:BevelFilter(p_value).blurX});
  247. nArray.push({name:"_Bevel_blurY", value:BevelFilter(p_value).blurY});
  248. nArray.push({name:"_Bevel_distance", value:BevelFilter(p_value).distance});
  249. nArray.push({name:"_Bevel_highlightAlpha", value:BevelFilter(p_value).highlightAlpha});
  250. nArray.push({name:"_Bevel_highlightColor", value:BevelFilter(p_value).highlightColor});
  251. nArray.push({name:"_Bevel_knockout", value:BevelFilter(p_value).knockout});
  252. nArray.push({name:"_Bevel_quality", value:BevelFilter(p_value).quality});
  253. nArray.push({name:"_Bevel_shadowAlpha", value:BevelFilter(p_value).shadowAlpha});
  254. nArray.push({name:"_Bevel_shadowColor", value:BevelFilter(p_value).shadowColor});
  255. nArray.push({name:"_Bevel_strength", value:BevelFilter(p_value).strength});
  256. nArray.push({name:"_Bevel_type", value:BevelFilter(p_value).type});
  257. } else if (p_value is BlurFilter) {
  258. nArray.push({name:"_Blur_blurX", value:BlurFilter(p_value).blurX});
  259. nArray.push({name:"_Blur_blurY", value:BlurFilter(p_value).blurY});
  260. nArray.push({name:"_Blur_quality", value:BlurFilter(p_value).quality});
  261. } else if (p_value is ColorMatrixFilter) {
  262. nArray.push({name:"_ColorMatrix_matrix", value:ColorMatrixFilter(p_value).matrix});
  263. } else if (p_value is ConvolutionFilter) {
  264. nArray.push({name:"_Convolution_alpha", value:ConvolutionFilter(p_value).alpha});
  265. nArray.push({name:"_Convolution_bias", value:ConvolutionFilter(p_value).bias});
  266. nArray.push({name:"_Convolution_clamp", value:ConvolutionFilter(p_value).clamp});
  267. nArray.push({name:"_Convolution_color", value:ConvolutionFilter(p_value).color});
  268. // .matrix
  269. nArray.push({name:"_Convolution_divisor", value:ConvolutionFilter(p_value).divisor});
  270. nArray.push({name:"_Convolution_matrixX", value:ConvolutionFilter(p_value).matrixX});
  271. nArray.push({name:"_Convolution_matrixY", value:ConvolutionFilter(p_value).matrixY});
  272. nArray.push({name:"_Convolution_preserveAlpha", value:ConvolutionFilter(p_value).preserveAlpha});
  273. } else if (p_value is DisplacementMapFilter) {
  274. nArray.push({name:"_DisplacementMap_alpha", value:DisplacementMapFilter(p_value).alpha});
  275. nArray.push({name:"_DisplacementMap_color", value:DisplacementMapFilter(p_value).color});
  276. nArray.push({name:"_DisplacementMap_componentX", value:DisplacementMapFilter(p_value).componentX});
  277. nArray.push({name:"_DisplacementMap_componentY", value:DisplacementMapFilter(p_value).componentY});
  278. nArray.push({name:"_DisplacementMap_mapBitmap", value:DisplacementMapFilter(p_value).mapBitmap});
  279. nArray.push({name:"_DisplacementMap_mapPoint", value:DisplacementMapFilter(p_value).mapPoint});
  280. nArray.push({name:"_DisplacementMap_mode", value:DisplacementMapFilter(p_value).mode});
  281. nArray.push({name:"_DisplacementMap_scaleX", value:DisplacementMapFilter(p_value).scaleX});
  282. nArray.push({name:"_DisplacementMap_scaleY", value:DisplacementMapFilter(p_value).scaleY});
  283. } else if (p_value is DropShadowFilter) {
  284. nArray.push({name:"_DropShadow_alpha", value:DropShadowFilter(p_value).alpha});
  285. nArray.push({name:"_DropShadow_angle", value:DropShadowFilter(p_value).angle});
  286. nArray.push({name:"_DropShadow_blurX", value:DropShadowFilter(p_value).blurX});
  287. nArray.push({name:"_DropShadow_blurY", value:DropShadowFilter(p_value).blurY});
  288. nArray.push({name:"_DropShadow_color", value:DropShadowFilter(p_value).color});
  289. nArray.push({name:"_DropShadow_distance", value:DropShadowFilter(p_value).distance});
  290. nArray.push({name:"_DropShadow_hideObject", value:DropShadowFilter(p_value).hideObject});
  291. nArray.push({name:"_DropShadow_inner", value:DropShadowFilter(p_value).inner});
  292. nArray.push({name:"_DropShadow_knockout", value:DropShadowFilter(p_value).knockout});
  293. nArray.push({name:"_DropShadow_quality", value:DropShadowFilter(p_value).quality});
  294. nArray.push({name:"_DropShadow_strength", value:DropShadowFilter(p_value).strength});
  295. } else if (p_value is GlowFilter) {
  296. nArray.push({name:"_Glow_alpha", value:GlowFilter(p_value).alpha});
  297. nArray.push({name:"_Glow_blurX", value:GlowFilter(p_value).blurX});
  298. nArray.push({name:"_Glow_blurY", value:GlowFilter(p_value).blurY});
  299. nArray.push({name:"_Glow_color", value:GlowFilter(p_value).color});
  300. nArray.push({name:"_Glow_inner", value:GlowFilter(p_value).inner});
  301. nArray.push({name:"_Glow_knockout", value:GlowFilter(p_value).knockout});
  302. nArray.push({name:"_Glow_quality", value:GlowFilter(p_value).quality});
  303. nArray.push({name:"_Glow_strength", value:GlowFilter(p_value).strength});
  304. } else if (p_value is GradientBevelFilter) {
  305. // .alphas (array)
  306. nArray.push({name:"_GradientBevel_angle", value:GradientBevelFilter(p_value).strength});
  307. nArray.push({name:"_GradientBevel_blurX", value:GradientBevelFilter(p_value).blurX});
  308. nArray.push({name:"_GradientBevel_blurY", value:GradientBevelFilter(p_value).blurY});
  309. // .colors (array)
  310. nArray.push({name:"_GradientBevel_distance", value:GradientBevelFilter(p_value).distance});
  311. nArray.push({name:"_GradientBevel_quality", value:GradientBevelFilter(p_value).quality});
  312. // .ratios(array)
  313. nArray.push({name:"_GradientBevel_strength", value:GradientBevelFilter(p_value).strength});
  314. nArray.push({name:"_GradientBevel_type", value:GradientBevelFilter(p_value).type});
  315. } else if (p_value is GradientGlowFilter) {
  316. // .alphas (array)
  317. nArray.push({name:"_GradientGlow_angle", value:GradientGlowFilter(p_value).strength});
  318. nArray.push({name:"_GradientGlow_blurX", value:GradientGlowFilter(p_value).blurX});
  319. nArray.push({name:"_GradientGlow_blurY", value:GradientGlowFilter(p_value).blurY});
  320. // .colors (array)
  321. nArray.push({name:"_GradientGlow_distance", value:GradientGlowFilter(p_value).distance});
  322. nArray.push({name:"_GradientGlow_knockout", value:GradientGlowFilter(p_value).knockout});
  323. nArray.push({name:"_GradientGlow_quality", value:GradientGlowFilter(p_value).quality});
  324. // .ratios(array)
  325. nArray.push({name:"_GradientGlow_strength", value:GradientGlowFilter(p_value).strength});
  326. nArray.push({name:"_GradientGlow_type", value:GradientGlowFilter(p_value).type});
  327. } else {
  328. // ?
  329. trace ("Tweener FilterShortcuts Error :: Unknown filter class used");
  330. }
  331. return nArray;
  332. }
  333. // ==================================================================================================================================
  334. // NORMAL SPECIAL PROPERTY functions ------------------------------------------------------------------------------------------------
  335. // ----------------------------------------------------------------------------------------------------------------------------------
  336. // filters
  337. /**
  338. * (filters)
  339. * Generic function for the properties of filter objects
  340. */
  341. public static function _filter_property_get (p_obj:Object, p_parameters:Array, p_extra:Object = null):Number {
  342. var f:Array = p_obj.filters;
  343. var i:Number;
  344. var filterClass:Object = p_parameters[0];
  345. var propertyName:String = p_parameters[1];
  346. var splitType:String = p_parameters[2];
  347. for (i = 0; i < f.length; i++) {
  348. if (f[i] is Class(filterClass)) {
  349. if (splitType == "color") {
  350. // Composite, color channel
  351. var colorComponent:String = p_parameters[3];
  352. if (colorComponent == "r") return AuxFunctions.numberToR(f[i][propertyName]);
  353. if (colorComponent == "g") return AuxFunctions.numberToG(f[i][propertyName]);
  354. if (colorComponent == "b") return AuxFunctions.numberToB(f[i][propertyName]);
  355. } else if (splitType == "matrix") {
  356. // Composite, some kind of matrix
  357. return f[i][propertyName][p_parameters[3]];
  358. } else if (splitType == "point") {
  359. // Composite, a point
  360. return f[i][propertyName][p_parameters[3]];
  361. } else {
  362. // Standard property
  363. return (f[i][propertyName]);
  364. }
  365. }
  366. }
  367. // No value found for this property - no filter instance found using this class!
  368. // Must return default desired values
  369. var defaultValues:Object;
  370. switch (filterClass) {
  371. case BevelFilter:
  372. defaultValues = {angle:NaN, blurX:0, blurY:0, distance:0, highlightAlpha:1, highlightColor:NaN, knockout:null, quality:NaN, shadowAlpha:1, shadowColor:NaN, strength:2, type:null};
  373. break;
  374. case BlurFilter:
  375. defaultValues = {blurX:0, blurY:0, quality:NaN};
  376. break;
  377. case ColorMatrixFilter:
  378. defaultValues = {matrix:[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]};
  379. break;
  380. case ConvolutionFilter:
  381. defaultValues = {alpha:0, bias:0, clamp:null, color:NaN, divisor:1, matrix:[1], matrixX:1, matrixY:1, preserveAlpha:null};
  382. break;
  383. case DisplacementMapFilter:
  384. defaultValues = {alpha:0, color:NaN, componentX:null, componentY:null, mapBitmap:null, mapPoint:null, mode:null, scaleX:0, scaleY:0};
  385. break;
  386. case DropShadowFilter:
  387. defaultValues = {distance:0, angle:NaN, color:NaN, alpha:1, blurX:0, blurY:0, strength:1, quality:NaN, inner:null, knockout:null, hideObject:null};
  388. break;
  389. case GlowFilter:
  390. defaultValues = {alpha:1, blurX:0, blurY:0, color:NaN, inner:null, knockout:null, quality:NaN, strength:2};
  391. break;
  392. case GradientBevelFilter:
  393. defaultValues = {alphas:null, angle:NaN, blurX:0, blurY:0, colors:null, distance:0, knockout:null, quality:NaN, ratios:NaN, strength:1, type:null};
  394. break;
  395. case GradientGlowFilter:
  396. defaultValues = {alphas:null, angle:NaN, blurX:0, blurY:0, colors:null, distance:0, knockout:null, quality:NaN, ratios:NaN, strength:1, type:null};
  397. break;
  398. }
  399. // When returning NaN, the Tweener engine sets the starting value as being the same as the final value (if not found)
  400. // When returning null, the Tweener engine doesn't tween it at all, just setting it to the final value
  401. // This is DIFFERENT from the default filter applied as default on _filter_property_set because some values shouldn't be tweened
  402. if (splitType == "color") {
  403. // Composite, color channel; always defaults to target value
  404. return NaN;
  405. } else if (splitType == "matrix") {
  406. // Composite, matrix; always defaults to target value
  407. return defaultValues[propertyName][p_parameters[3]];
  408. } else if (splitType == "point") {
  409. // Composite, point; always defaults to target value
  410. return defaultValues[propertyName][p_parameters[3]];
  411. } else {
  412. // Standard property
  413. return defaultValues[propertyName];
  414. }
  415. }
  416. public static function _filter_property_set (p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object = null): void {
  417. var f:Array = p_obj.filters;
  418. var i:Number;
  419. var filterClass:Object = p_parameters[0];
  420. var propertyName:String = p_parameters[1];
  421. var splitType:String = p_parameters[2];
  422. for (i = 0; i < f.length; i++) {
  423. if (f[i] is Class(filterClass)) {
  424. if (splitType == "color") {
  425. // Composite, color channel
  426. var colorComponent:String = p_parameters[3];
  427. if (colorComponent == "r") f[i][propertyName] = (f[i][propertyName] & 0xffff) | (p_value << 16);
  428. if (colorComponent == "g") f[i][propertyName] = (f[i][propertyName] & 0xff00ff) | (p_value << 8);
  429. if (colorComponent == "b") f[i][propertyName] = (f[i][propertyName] & 0xffff00) | p_value;
  430. } else if (splitType == "matrix") {
  431. var mtx:Array = f[i][propertyName];
  432. mtx[p_parameters[3]] = p_value;
  433. f[i][propertyName] = mtx;
  434. } else if (splitType == "point") {
  435. var pt:Point = Point(f[i][propertyName]);
  436. pt[p_parameters[3]] = p_value;
  437. f[i][propertyName] = pt;
  438. } else {
  439. // Standard property
  440. f[i][propertyName] = p_value;
  441. }
  442. p_obj.filters = f;
  443. return;
  444. }
  445. }
  446. // The correct filter class wasn't found, so create a new one that is the equivalent of the object without the filter
  447. if (f == null) f = new Array();
  448. var fi:BitmapFilter;
  449. switch (filterClass) {
  450. case BevelFilter:
  451. fi = new BevelFilter(0, 45, 0xffffff, 1, 0x000000, 1, 0, 0);
  452. break;
  453. case BlurFilter:
  454. fi = new BlurFilter(0, 0);
  455. break;
  456. case ColorMatrixFilter:
  457. fi = new ColorMatrixFilter([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]);
  458. break;
  459. case ConvolutionFilter:
  460. fi = new ConvolutionFilter(1, 1, [1], 1, 0, true, true, 0x000000, 0);
  461. break;
  462. case DisplacementMapFilter:
  463. // Doesn't make much sense to create a new empty DisplacementMapFilter if there's nothing to tween
  464. fi = new DisplacementMapFilter(new BitmapData(10, 10), new Point(0, 0), 0, 1, 0, 0);
  465. break;
  466. case DropShadowFilter:
  467. fi = new DropShadowFilter(0, 45, 0x000000, 1, 0, 0);
  468. break;
  469. case GlowFilter:
  470. fi = new GlowFilter(0xff0000, 1, 0, 0);
  471. break;
  472. case GradientBevelFilter:
  473. fi = new GradientBevelFilter(0, 45, [0xffffff, 0x000000], [1, 1], [32, 223], 0, 0);
  474. break;
  475. case GradientGlowFilter:
  476. fi = new GradientGlowFilter(0, 45, [0xffffff, 0x000000], [1, 1], [32, 223], 0, 0);
  477. break;
  478. }
  479. //fi[propertyName] = p_value;
  480. f.push(fi);
  481. p_obj.filters = f;
  482. _filter_property_set(p_obj, p_value, p_parameters);
  483. }
  484. }
  485. }