svgbutton.js

来自「Hippo CMS是一个以信息为中心的开源内容管理系统。Hippo CMS目标是」· JavaScript 代码 · 共 101 行

JS
101
字号
/*
	Copyright (c) 2004-2006, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/



dojo.provide("dojo.widget.SvgButton");
dojo.require("dojo.experimental");
dojo.experimental("dojo.widget.SvgButton");
dojo.widget.SvgButton = function () {
	dojo.widget.DomButton.call(this);
	dojo.widget.SvgWidget.call(this);
	this.onFoo = function () {
		alert("bar");
	};
	this.label = "huzzah!";
	this.setLabel = function (x, y, textSize, label, shape) {
		var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
		var textString = "";
		switch (shape) {
		  case "ellipse":
			textString = "<text x='" + coords[6] + "' y='" + coords[7] + "'>" + label + "</text>";
			break;
		  case "rectangle":
			textString = "";
			break;
		  case "circle":
			textString = "";
			break;
		}
		return textString;
	};
	this.fillInTemplate = function (x, y, textSize, label, shape) {
		this.textSize = textSize || 12;
		this.label = label;
		var textWidth = this.label.length * this.textSize;
	};
};
dojo.inherits(dojo.widget.SvgButton, dojo.widget.DomButton);
dojo.widget.SvgButton.prototype.shapeString = function (x, y, textSize, label, shape) {
	switch (shape) {
	  case "ellipse":
		var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
		return "<ellipse cx='" + coords[4] + "' cy='" + coords[5] + "' rx='" + coords[2] + "' ry='" + coords[3] + "'/>";
		break;
	  case "rect":
		return "";
		break;
	  case "circle":
		return "";
		break;
	}
};
dojo.widget.SvgButton.prototype.coordinates = function (x, y, textSize, label, shape) {
	switch (shape) {
	  case "ellipse":
		var buttonWidth = label.length * textSize;
		var buttonHeight = textSize * 2.5;
		var rx = buttonWidth / 2;
		var ry = buttonHeight / 2;
		var cx = rx + x;
		var cy = ry + y;
		var textX = cx - rx * textSize / 25;
		var textY = cy * 1.1;
		return [buttonWidth, buttonHeight, rx, ry, cx, cy, textX, textY];
		break;
	  case "rectangle":
		return "";
		break;
	  case "circle":
		return "";
		break;
	}
};
dojo.widget.SvgButton.prototype.labelString = function (x, y, textSize, label, shape) {
	var textString = "";
	var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
	switch (shape) {
	  case "ellipse":
		textString = "<text x='" + coords[6] + "' y='" + coords[7] + "'>" + label + "</text>";
		break;
	  case "rectangle":
		textString = "";
		break;
	  case "circle":
		textString = "";
		break;
	}
	return textString;
};
dojo.widget.SvgButton.prototype.templateString = function (x, y, textSize, label, shape) {
	return "<g class='dojoButton' dojoAttachEvent='onClick; onMouseMove: onFoo;' dojoAttachPoint='labelNode'>" + dojo.widgets.SVGButton.prototype.shapeString(x, y, textSize, label, shape) + dojo.widget.SVGButton.prototype.labelString(x, y, textSize, label, shape) + "</g>";
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?