| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- define(function(require, exports, module) {
- var kity = require('../core/kity');
- var utils = require('../core/utils');
- var Minder = require('../core/minder');
- var MinderNode = require('../core/node');
- var Command = require('../core/command');
- var Module = require('../core/module');
- var TextRenderer = require('./text');
- function getNodeDataOrStyle(node, name) {
- return node.getData(name) || node.getStyle(name);
- }
- TextRenderer.registerStyleHook(function(node, textGroup) {
- var dataColor = node.getData('color');
- var selectedColor = node.getStyle('selected-color');
- var styleColor = node.getStyle('color');
- var foreColor = dataColor || (node.isSelected() && selectedColor ? selectedColor : styleColor);
- var fontFamily = getNodeDataOrStyle(node, 'font-family');
- var fontSize = getNodeDataOrStyle(node, 'font-size');
- textGroup.fill(foreColor);
- textGroup.eachItem(function(index, item) {
- item.setFont({
- 'family': fontFamily,
- 'size': fontSize
- });
- });
- });
- Module.register('fontmodule', {
- 'commands': {
- /**
- * @command ForeColor
- * @description 设置选中节点的字体颜色
- * @param {string} color 表示颜色的字符串
- * @state
- * 0: 当前有选中的节点
- * -1: 当前没有选中的节点
- * @return 如果只有一个节点选中,返回已选中节点的字体颜色;否则返回 'mixed'。
- */
- 'forecolor': kity.createClass('fontcolorCommand', {
- base: Command,
- execute: function(km, color) {
- var nodes = km.getSelectedNodes();
- nodes.forEach(function(n) {
- n.setData('color', color);
- n.render();
- });
- },
- queryState: function(km) {
- return km.getSelectedNodes().length === 0 ? -1 : 0;
- },
- queryValue: function(km) {
- if (km.getSelectedNodes().length == 1) {
- return km.getSelectedNodes()[0].getData('color');
- }
- return 'mixed';
- }
- }),
- /**
- * @command Background
- * @description 设置选中节点的背景颜色
- * @param {string} color 表示颜色的字符串
- * @state
- * 0: 当前有选中的节点
- * -1: 当前没有选中的节点
- * @return 如果只有一个节点选中,返回已选中节点的背景颜色;否则返回 'mixed'。
- */
- 'background': kity.createClass('backgroudCommand', {
- base: Command,
- execute: function(km, color) {
- var nodes = km.getSelectedNodes();
- nodes.forEach(function(n) {
- n.setData('background', color);
- n.render();
- });
- },
- queryState: function(km) {
- return km.getSelectedNodes().length === 0 ? -1 : 0;
- },
- queryValue: function(km) {
- if (km.getSelectedNodes().length == 1) {
- return km.getSelectedNodes()[0].getData('background');
- }
- return 'mixed';
- }
- }),
- /**
- * @command FontFamily
- * @description 设置选中节点的字体
- * @param {string} family 表示字体的字符串
- * @state
- * 0: 当前有选中的节点
- * -1: 当前没有选中的节点
- * @return 返回首个选中节点的字体
- */
- 'fontfamily': kity.createClass('fontfamilyCommand', {
- base: Command,
- execute: function(km, family) {
- var nodes = km.getSelectedNodes();
- nodes.forEach(function(n) {
- n.setData('font-family', family);
- n.render();
- km.layout();
- });
- },
- queryState: function(km) {
- return km.getSelectedNodes().length === 0 ? -1 : 0;
- },
- queryValue: function(km) {
- var node = km.getSelectedNode();
- if (node) return node.getData('font-family');
- return null;
- }
- }),
- /**
- * @command FontSize
- * @description 设置选中节点的字体大小
- * @param {number} size 字体大小(px)
- * @state
- * 0: 当前有选中的节点
- * -1: 当前没有选中的节点
- * @return 返回首个选中节点的字体大小
- */
- 'fontsize': kity.createClass('fontsizeCommand', {
- base: Command,
- execute: function(km, size) {
- var nodes = km.getSelectedNodes();
- nodes.forEach(function(n) {
- n.setData('font-size', size);
- n.render();
- km.layout(300);
- });
- },
- queryState: function(km) {
- return km.getSelectedNodes().length === 0 ? -1 : 0;
- },
- queryValue: function(km) {
- var node = km.getSelectedNode();
- if (node) return node.getData('font-size');
- return null;
- }
- })
- }
- });
- });
|