paper.js/src/text/TextItem.js

121 lines
3.3 KiB
JavaScript
Raw Normal View History

/*
* Paper.js
*
* This file is part of Paper.js, a JavaScript Vector Graphics Library,
* based on Scriptographer.org and designed to be largely API compatible.
* http://paperjs.org/
* http://scriptographer.org/
*
* Copyright (c) 2011, Juerg Lehni & Jonathan Puckey
* http://lehni.org/ & http://jonathanpuckey.com/
*
2011-07-01 06:17:45 -04:00
* Distributed under the MIT license. See LICENSE file for details.
*
* All rights reserved.
*/
/**
* @name TextItem
*
* @class The TextItem type allows you to create typography. Its
* functionality is inherited by different text item types such as
* {@link PointText}, and {@link AreaText} (coming soon). They each add a
* layer of functionality that is unique to their type, but share the
* underlying properties and functions that they inherit from TextItem.
*
* @extends Item
*/
var TextItem = this.TextItem = Item.extend(/** @lends TextItem# */{
// TextItem doesn't make the distinction between the different bounds,
// so use the same name for all of them
_boundsType: 'bounds',
initialize: function(pointOrMatrix) {
// Note that internally #characterStyle is the same as #style, but
// defined as an instance of CharacterStyle. We need to define it before
// calling this.base(), to override the default PathStyle instance.
this._style = CharacterStyle.create(this);
this._paragraphStyle = ParagraphStyle.create(this);
this.base(pointOrMatrix);
// No need to call setStyle(), since base() handles this already.
// Call with no parameter to initalize defaults now.
this.setParagraphStyle();
this._content = '';
this._lines = [];
},
2011-05-23 12:52:54 -04:00
/**
* The text contents of the text item.
*
2011-05-23 12:52:54 -04:00
* @name TextItem#content
* @type String
*
2011-06-10 08:05:58 -04:00
* @example {@paperscript}
* // Setting the content of a PointText item:
*
2011-06-10 08:05:58 -04:00
* // Create a point-text item at {x: 30, y: 30}:
* var text = new PointText(new Point(30, 30));
* text.fillColor = 'black';
*
2011-06-10 08:05:58 -04:00
* // Set the content of the text item:
* text.content = 'Hello world';
*
2011-06-10 08:05:58 -04:00
* @example {@paperscript}
* // Interactive example, move your mouse over the view below:
*
2011-06-10 08:05:58 -04:00
* // Create a point-text item at {x: 30, y: 30}:
* var text = new PointText(new Point(30, 30));
* text.fillColor = 'black';
*
2011-06-10 08:05:58 -04:00
* text.content = 'Move your mouse over the view, to see its position';
*
2011-06-10 08:05:58 -04:00
* function onMouseMove(event) {
* // Each time the mouse is moved, set the content of
* // the point text to describe the position of the mouse:
* text.content = 'Your position is: ' + event.point.toString();
* }
2011-05-23 12:52:54 -04:00
*/
_clone: function(copy) {
copy.setContent(this._content);
copy.setParagraphStyle(this._paragraphStyle);
return this.base(copy);
},
getContent: function() {
return this._content;
},
setContent: function(content) {
this._content = '' + content;
this._lines = this._content.split(/\r\n|\n|\r/mg);
this._changed(Change.CONTENT);
},
2011-05-23 12:52:54 -04:00
/**
* {@grouptitle Style Properties}
*
2011-05-23 12:52:54 -04:00
* The character style of the text item.
*
2011-05-23 12:52:54 -04:00
* @type CharacterStyle
* @bean
*/
// As explained in CharacterStyle, this is internally the same as #style.
getCharacterStyle: function() {
return this.getStyle();
},
setCharacterStyle: function(style) {
this.setStyle(style);
}
2011-05-23 12:52:54 -04:00
/**
* The paragraph style of the text item.
*
* @name TextItem#getParagraphStyle
2011-05-23 12:52:54 -04:00
* @type ParagraphStyle
* @bean
*/
});