mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-14 21:43:18 +00:00
158 lines
6.8 KiB
ActionScript
158 lines
6.8 KiB
ActionScript
package caurina.transitions.properties {
|
|
|
|
/**
|
|
* properties.TextShortcuts
|
|
* Special properties for the Tweener class to handle MovieClip filters
|
|
* The function names are strange/inverted because it makes for easier debugging (alphabetic order). They're only for internal use (on this class) anyways.
|
|
*
|
|
* @author Zeh Fernando, Nate Chatellier, Arthur Debert
|
|
* @version 1.0.0
|
|
*/
|
|
|
|
import caurina.transitions.Tweener;
|
|
import caurina.transitions.AuxFunctions;
|
|
|
|
import flash.text.TextFormat;
|
|
|
|
public class TextShortcuts {
|
|
|
|
/**
|
|
* There's no constructor.
|
|
*/
|
|
public function TextShortcuts () {
|
|
trace ("This is an static class and should not be instantiated.")
|
|
}
|
|
|
|
/**
|
|
* Registers all the special properties to the Tweener class, so the Tweener knows what to do with them.
|
|
*/
|
|
public static function init(): void {
|
|
// Normal properties
|
|
Tweener.registerSpecialProperty("_text", _text_get, _text_set, null, _text_preProcess);
|
|
// Tweener.registerSpecialPropertyModifier("_text", _text_modifier, _text_get);
|
|
|
|
// TextFormat-based properties
|
|
Tweener.registerSpecialPropertySplitter("_text_color", _generic_color_splitter, ["_text_color_r", "_text_color_g", "_text_color_b"]);
|
|
Tweener.registerSpecialProperty("_text_color_r", _textFormat_property_get, _textFormat_property_set, ["color", true, "r"]);
|
|
Tweener.registerSpecialProperty("_text_color_g", _textFormat_property_get, _textFormat_property_set, ["color", true, "g"]);
|
|
Tweener.registerSpecialProperty("_text_color_b", _textFormat_property_get, _textFormat_property_set, ["color", true, "b"]);
|
|
Tweener.registerSpecialProperty("_text_indent", _textFormat_property_get, _textFormat_property_set, ["indent"]);
|
|
Tweener.registerSpecialProperty("_text_leading", _textFormat_property_get, _textFormat_property_set, ["leading"]);
|
|
Tweener.registerSpecialProperty("_text_leftMargin", _textFormat_property_get, _textFormat_property_set, ["leftMargin"]);
|
|
Tweener.registerSpecialProperty("_text_letterSpacing", _textFormat_property_get, _textFormat_property_set, ["letterSpacing"]);
|
|
Tweener.registerSpecialProperty("_text_rightMargin", _textFormat_property_get, _textFormat_property_set, ["rightMargin"]);
|
|
Tweener.registerSpecialProperty("_text_size", _textFormat_property_get, _textFormat_property_set, ["size"]);
|
|
|
|
}
|
|
|
|
|
|
// ==================================================================================================================================
|
|
// NORMAL SPECIAL PROPERTY functions ------------------------------------------------------------------------------------------------
|
|
|
|
// ----------------------------------------------------------------------------------------------------------------------------------
|
|
// _text
|
|
|
|
/**
|
|
* Returns the current frame number from the movieclip timeline
|
|
*
|
|
* @param p_obj Object MovieClip object
|
|
* @return Number The current frame
|
|
*/
|
|
public static function _text_get (p_obj:Object, p_parameters:Array, p_extra:Object = null):Number {
|
|
//return p_obj._currentFrame;
|
|
return -p_obj.text.length;
|
|
}
|
|
|
|
/**
|
|
* Sets the timeline frame
|
|
*
|
|
* @param p_obj Object MovieClip object
|
|
* @param p_value Number New frame number
|
|
*/
|
|
public static function _text_set (p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object = null): void {
|
|
//p_obj.gotoAndStop(Math.round(p_value));
|
|
//p_obj.text =
|
|
if (p_value < 0) {
|
|
// Old text
|
|
p_obj.text = p_extra.oldText.substr(0, -Math.round(p_value));
|
|
} else {
|
|
// New text
|
|
p_obj.text = p_extra.newText.substr(0, Math.round(p_value));
|
|
}
|
|
}
|
|
|
|
public static function _text_preProcess (p_obj:Object, p_parameters:Array, p_originalValueComplete:Object, p_extra:Object): Number {
|
|
p_extra.oldText = p_obj.text;
|
|
p_extra.newText = p_originalValueComplete;
|
|
return p_extra.newText.length;
|
|
}
|
|
|
|
// ==================================================================================================================================
|
|
// PROPERTY GROUPING/SPLITTING functions --------------------------------------------------------------------------------------------
|
|
|
|
// ----------------------------------------------------------------------------------------------------------------------------------
|
|
// generic splitters
|
|
|
|
/**
|
|
* A generic color splitter - from 0xrrggbb to r, g, b with the name of the parameters passed
|
|
*
|
|
* @param p_value Number The original _color value
|
|
* @return Array An array containing the .name and .value of all new properties
|
|
*/
|
|
public static function _generic_color_splitter (p_value:Number, p_parameters:Array):Array {
|
|
var nArray:Array = new Array();
|
|
nArray.push({name:p_parameters[0], value:AuxFunctions.numberToR(p_value)});
|
|
nArray.push({name:p_parameters[1], value:AuxFunctions.numberToG(p_value)});
|
|
nArray.push({name:p_parameters[2], value:AuxFunctions.numberToB(p_value)});
|
|
return nArray;
|
|
}
|
|
|
|
|
|
// ==================================================================================================================================
|
|
// NORMAL SPECIAL PROPERTY functions ------------------------------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Generic function for the textformat properties
|
|
*/
|
|
public static function _textFormat_property_get (p_obj:Object, p_parameters:Array, p_extra:Object = null):Number {
|
|
var fmt:TextFormat = p_obj.getTextFormat();
|
|
var propertyName:String = p_parameters[0];
|
|
var isColor:Boolean = p_parameters[1];
|
|
if (!isColor) {
|
|
// Standard property
|
|
return (fmt[propertyName]);
|
|
} else {
|
|
// Composite, color channel
|
|
var colorComponent:String = p_parameters[2];
|
|
if (colorComponent == "r") return AuxFunctions.numberToR(fmt[propertyName]);
|
|
if (colorComponent == "g") return AuxFunctions.numberToG(fmt[propertyName]);
|
|
if (colorComponent == "b") return AuxFunctions.numberToB(fmt[propertyName]);
|
|
}
|
|
|
|
return NaN;
|
|
}
|
|
|
|
public static function _textFormat_property_set (p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object = null): void {
|
|
var fmt:TextFormat = p_obj.getTextFormat();
|
|
var propertyName:String = p_parameters[0];
|
|
var isColor:Boolean = p_parameters[1];
|
|
if (!isColor) {
|
|
// Standard property
|
|
fmt[propertyName] = p_value;
|
|
} else {
|
|
// Composite, color channel
|
|
var colorComponent:String = p_parameters[2];
|
|
if (colorComponent == "r") fmt[propertyName] = (fmt[propertyName] & 0xffff) | (p_value << 16);
|
|
if (colorComponent == "g") fmt[propertyName] = (fmt[propertyName] & 0xff00ff) | (p_value << 8);
|
|
if (colorComponent == "b") fmt[propertyName] = (fmt[propertyName] & 0xffff00) | p_value;
|
|
}
|
|
|
|
p_obj.defaultTextFormat = fmt;
|
|
p_obj.setTextFormat(fmt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|