Move defaults handling fully to Style base class.

This commit is contained in:
Jürg Lehni 2011-06-20 14:10:37 +01:00
parent f064886c67
commit 55724b0e29
5 changed files with 23 additions and 26 deletions

View file

@ -65,14 +65,6 @@ this.Base = Base.inject({
return res;
},
initialize: function(object, values, defaults) {
if (!values)
values = defaults;
return Base.each(defaults, function(value, key) {
this[key] = values[key] || value;
}, object);
},
/**
* Utility function for adding and removing items from a list of which
* each entry keeps a reference to its index in the list in the private

View file

@ -77,6 +77,9 @@ var PathStyle = this.PathStyle = Style.extend(new function() {
? value.clone() : value;
}
}
// Let Style#initialize handle the defaults:
if (this._defaults)
this.base(style);
}
};

View file

@ -19,6 +19,13 @@
* PargraphStyle.
*/
var Style = Item.extend({
initialize: function(style) {
return Base.each(this._defaults || {}, function(value, key) {
this[key] = style && style[key] || value;
}, this);
},
statics: {
create: function(item) {
var style = new this(this.dont);

View file

@ -17,16 +17,20 @@
var CharacterStyle = this.CharacterStyle = PathStyle.extend({
/** @lends CharacterStyle# */
_defaults: {
fontSize: 10,
font: 'sans-serif'
},
/**
* CharacterStyle objects don't need to be created directly. Just pass an
* object to {@link TextItem#characterStyle}, it will be converted to a
* CharacterStyle object internally.
*
* @constructs CharacterStyle
* @name CharacterStyle
* @constructor
* @param {object} style
*
* @constructs CharacterStyle
*
* @class The CharacterStyle object represents the character style of a text
* item ({@link TextItem#characterStyle})
*
@ -42,13 +46,6 @@ var CharacterStyle = this.CharacterStyle = PathStyle.extend({
*
* @extends PathStyle
*/
initialize: function(style) {
Base.initialize(this, style, {
fontSize: 10,
font: 'sans-serif'
});
this.base(style);
}
/**
* The font of the character style.

View file

@ -17,16 +17,19 @@
var ParagraphStyle = this.ParagraphStyle = Style.extend({
/** @lends ParagraphStyle# */
_defaults: {
justification: 'left'
},
/**
* ParagraphStyle objects don't need to be created directly. Just pass an
* object to {@link TextItem#paragraphStyle}, it will be converted to a
* ParagraphStyle object internally.
*
* @constructs ParagraphStyle
* @name ParagraphStyle
* @constructor
* @param {object} style
*
* @constructs ParagraphStyle
*
* @class The ParagraphStyle object represents the paragraph style of a text
* item ({@link TextItem#paragraphStyle}).
*
@ -42,11 +45,6 @@ var ParagraphStyle = this.ParagraphStyle = Style.extend({
* text.paragraphStyle.justification = 'center';
* </pre>
*/
initialize: function(style) {
Base.initialize(this, style, {
justification: 'left'
});
}
/**
* The justification of the paragraph.