mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-15 11:07:57 +01:00
185 lines
5.2 KiB
JavaScript
185 lines
5.2 KiB
JavaScript
|
/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||
|
* contributor license agreements. See the NOTICE file distributed with
|
||
|
* this work for additional information regarding copyright ownership.
|
||
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||
|
* (the "License"); you may not use this file except in compliance with
|
||
|
* the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*
|
||
|
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||
|
*/
|
||
|
|
||
|
web2d.peer.svg.TextPeer = function()
|
||
|
{
|
||
|
var svgElement = window.document.createElementNS(this.svgNamespace, 'text');
|
||
|
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||
|
this._native.setAttribute("focusable", "true");
|
||
|
this._position = {x:0,y:0};
|
||
|
this._font = new web2d.Font("Arial", this);
|
||
|
};
|
||
|
|
||
|
objects.extend(web2d.peer.svg.TextPeer, web2d.peer.svg.ElementPeer);
|
||
|
|
||
|
//todo: use ths method to specify the maximum size of the text box
|
||
|
/*web2d.web2d.peer.svg.TextPeer.prototype.setSize = function(width, height)
|
||
|
{
|
||
|
web2d.web2d.peer.svg.TextPeer.superClass.setSize.call(this,width,height);
|
||
|
this._native.setAttribute('rx', width / 2);
|
||
|
this._native.setAttribute('ry', height /ose 2);
|
||
|
};
|
||
|
*/
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.appendChild = function(element)
|
||
|
{
|
||
|
this._native.appendChild(element._native);
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setText = function(text)
|
||
|
{
|
||
|
text = core.Utils.escapeInvalidTags(text);
|
||
|
var child = this._native.firstChild;
|
||
|
if (child)
|
||
|
{
|
||
|
this._native.removeChild(child);
|
||
|
}
|
||
|
this._text = text;
|
||
|
var textNode = window.document.createTextNode(text);
|
||
|
this._native.appendChild(textNode);
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.getText = function()
|
||
|
{
|
||
|
return this._text;
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setPosition = function(x, y)
|
||
|
{
|
||
|
this._position = {x:x, y:y};
|
||
|
var size = parseInt(this._font.getSize());
|
||
|
this._native.setAttribute('y', y + size);
|
||
|
//y+size/2
|
||
|
this._native.setAttribute('x', x);
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.getPosition = function()
|
||
|
{
|
||
|
return this._position;
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setFont = function(font, size, style, weight)
|
||
|
{
|
||
|
if (core.Utils.isDefined(font))
|
||
|
{
|
||
|
this._font = new web2d.Font(font, this);
|
||
|
}
|
||
|
if (core.Utils.isDefined(style))
|
||
|
{
|
||
|
this._font.setStyle(style);
|
||
|
}
|
||
|
if (core.Utils.isDefined(weight))
|
||
|
{
|
||
|
this._font.setWeight(weight);
|
||
|
}
|
||
|
if (core.Utils.isDefined(size))
|
||
|
{
|
||
|
this._font.setSize(size);
|
||
|
}
|
||
|
this._updateFontStyle();
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype._updateFontStyle = function()
|
||
|
{
|
||
|
this._native.setAttribute('font-family', this._font.getFontFamily());
|
||
|
this._native.setAttribute('font-size', this._font.getGraphSize());
|
||
|
this._native.setAttribute('font-style', this._font.getStyle());
|
||
|
this._native.setAttribute('font-weight', this._font.getWeight());
|
||
|
|
||
|
var scale = this._font.getFontScale();
|
||
|
this._native.xFontScale = scale.toFixed(1);
|
||
|
|
||
|
};
|
||
|
web2d.peer.svg.TextPeer.prototype.setColor = function(color)
|
||
|
{
|
||
|
this._native.setAttribute('fill', color);
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.getColor = function()
|
||
|
{
|
||
|
return this._native.getAttribute('fill');
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setTextSize = function (size)
|
||
|
{
|
||
|
this._font.setSize(size);
|
||
|
this._updateFontStyle();
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setContentSize = function(width, height)
|
||
|
{
|
||
|
this._native.xTextSize = width.toFixed(1) + "," + height.toFixed(1);
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setStyle = function (style)
|
||
|
{
|
||
|
this._font.setStyle(style);
|
||
|
this._updateFontStyle();
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setWeight = function (weight)
|
||
|
{
|
||
|
this._font.setWeight(weight);
|
||
|
this._updateFontStyle();
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setFontFamily = function (family)
|
||
|
{
|
||
|
var oldFont = this._font;
|
||
|
this._font = new web2d.Font(family, this);
|
||
|
this._font.setSize(oldFont.getSize());
|
||
|
this._font.setStyle(oldFont.getStyle());
|
||
|
this._font.setWeight(oldFont.getWeight());
|
||
|
this._updateFontStyle();
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.getFont = function ()
|
||
|
{
|
||
|
return {
|
||
|
font:this._font.getFont(),
|
||
|
size:parseInt(this._font.getSize()),
|
||
|
style:this._font.getStyle(),
|
||
|
weight:this._font.getWeight()
|
||
|
};
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.setSize = function (size)
|
||
|
{
|
||
|
this._font.setSize(size);
|
||
|
this._updateFontStyle();
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.getWidth = function ()
|
||
|
{
|
||
|
var width = parseInt(this._native.getComputedTextLength());
|
||
|
width = width + this._font.getWidthMargin();
|
||
|
return width;
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.getHeight = function ()
|
||
|
{
|
||
|
return this._font.getGraphSize();
|
||
|
};
|
||
|
|
||
|
web2d.peer.svg.TextPeer.prototype.getHtmlFontSize = function ()
|
||
|
{
|
||
|
return this._font.getHtmlSize();
|
||
|
};
|
||
|
|