Delete glyfeditor.js
This commit is contained in:
@@ -1,311 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file 字形编辑器
|
|
||||||
* @author mengke01(kekee000@gmail.com)
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
define(
|
|
||||||
function (require) {
|
|
||||||
|
|
||||||
var editorFactory = require('editor/main');
|
|
||||||
var editorOptions = require('editor/options');
|
|
||||||
var settingSupport = require('../dialog/support');
|
|
||||||
var program = require('./program');
|
|
||||||
var lang = require('common/lang');
|
|
||||||
|
|
||||||
|
|
||||||
// 支持的命令列表
|
|
||||||
var COMMAND_SUPPORT = {
|
|
||||||
// 形状组
|
|
||||||
shapes: [
|
|
||||||
'copyshapes', 'removeshapes', 'reversepoints',
|
|
||||||
'horizontalalignshapes', 'verticalalignshapes',
|
|
||||||
'rotateleft', 'rotateright', 'flipshapes', 'mirrorshapes'
|
|
||||||
],
|
|
||||||
shapes2: [
|
|
||||||
'joinshapes', 'intersectshapes', 'tangencyshapes'
|
|
||||||
],
|
|
||||||
// 单个形状
|
|
||||||
shape: ['pointmode', 'upshape', 'downshape']
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定editor编辑器
|
|
||||||
*/
|
|
||||||
function bindEditor() {
|
|
||||||
|
|
||||||
// 设置字形信息
|
|
||||||
var me = this;
|
|
||||||
var editor = this.editor;
|
|
||||||
var delayFocus = lang.debounce(function () {
|
|
||||||
me.focus();
|
|
||||||
}, 20);
|
|
||||||
|
|
||||||
editor.on('setting:font', function (e) {
|
|
||||||
var SettingGlyf = settingSupport.glyf;
|
|
||||||
!new SettingGlyf({
|
|
||||||
onChange: function (setting) {
|
|
||||||
editor.adjustFont(setting);
|
|
||||||
// 此处需要等待点击完成后设置focus状态
|
|
||||||
delayFocus();
|
|
||||||
}
|
|
||||||
}).show(e.setting);
|
|
||||||
});
|
|
||||||
|
|
||||||
editor.on('setting:editor', function (e) {
|
|
||||||
var SettingEditor = settingSupport.editor;
|
|
||||||
var dlg = new SettingEditor({
|
|
||||||
onChange: function (setting) {
|
|
||||||
setTimeout(function () {
|
|
||||||
program.viewer.setSetting(setting.viewer);
|
|
||||||
me.setSetting(setting.editor);
|
|
||||||
}, 20);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
dlg.show({
|
|
||||||
viewer: program.viewer.getSetting(),
|
|
||||||
editor: e.setting
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
var commandMenu = this.commandMenu;
|
|
||||||
if (commandMenu) {
|
|
||||||
|
|
||||||
editor.on('selection:change', lang.debounce(function (e) {
|
|
||||||
var length = e.shapes ? e.shapes.length : 0;
|
|
||||||
if (!length) {
|
|
||||||
commandMenu.disableCommands(COMMAND_SUPPORT.shapes);
|
|
||||||
commandMenu.disableCommands(COMMAND_SUPPORT.shapes2);
|
|
||||||
commandMenu.disableCommands(COMMAND_SUPPORT.shape);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
commandMenu.enableCommands(COMMAND_SUPPORT.shapes);
|
|
||||||
commandMenu[length >= 2 ? 'enableCommands' : 'disableCommands'](COMMAND_SUPPORT.shapes2);
|
|
||||||
commandMenu[length === 1 ? 'enableCommands' : 'disableCommands'](COMMAND_SUPPORT.shape);
|
|
||||||
}
|
|
||||||
}), 100);
|
|
||||||
|
|
||||||
commandMenu.on('command', function (e) {
|
|
||||||
|
|
||||||
// 这里延时进行focus
|
|
||||||
delayFocus();
|
|
||||||
|
|
||||||
var command = e.command;
|
|
||||||
var args = e.args;
|
|
||||||
var shapes;
|
|
||||||
|
|
||||||
if (command === 'save') {
|
|
||||||
program.fire('save', {
|
|
||||||
saveType: 'editor'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (command === 'splitshapes') {
|
|
||||||
editor.setMode('split');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (command === 'pasteshapes') {
|
|
||||||
shapes = editor.getClipBoard();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
shapes = editor.getSelected();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (shapes && shapes.length) {
|
|
||||||
switch (command) {
|
|
||||||
case 'pointmode':
|
|
||||||
editor.setMode('point', shapes[0]);
|
|
||||||
break;
|
|
||||||
case 'topshape':
|
|
||||||
case 'bottomshape':
|
|
||||||
case 'upshape':
|
|
||||||
case 'downshape':
|
|
||||||
editor.execCommand(command, shapes[0]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'copyshapes':
|
|
||||||
case 'pasteshapes':
|
|
||||||
case 'removeshapes':
|
|
||||||
case 'joinshapes':
|
|
||||||
case 'intersectshapes':
|
|
||||||
case 'tangencyshapes':
|
|
||||||
case 'rotateleft':
|
|
||||||
case 'rotateright':
|
|
||||||
case 'flipshapes':
|
|
||||||
case 'mirrorshapes':
|
|
||||||
case 'cutshapes':
|
|
||||||
case 'copyshapes':
|
|
||||||
case 'removeshapes':
|
|
||||||
case 'reversepoints':
|
|
||||||
case 'joinshapes':
|
|
||||||
case 'intersectshapes':
|
|
||||||
case 'tangencyshapes':
|
|
||||||
editor.execCommand(command, shapes);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'alignshapes':
|
|
||||||
case 'verticalalignshapes':
|
|
||||||
case 'horizontalalignshapes':
|
|
||||||
editor.execCommand(command, shapes, args.align);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (command === 'rangemode') {
|
|
||||||
editor.setMode('bound');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 执行指定命令
|
|
||||||
*
|
|
||||||
* @param {string} command 命令名
|
|
||||||
*/
|
|
||||||
function execCommand() {
|
|
||||||
if (this.editor) {
|
|
||||||
this.editor.execCommand.apply(this.editor, arguments);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* font查看器
|
|
||||||
*
|
|
||||||
* @constructor
|
|
||||||
* @param {HTMLElement} main 主元素
|
|
||||||
* @param {Object} options 参数
|
|
||||||
* @param {CommandMenu} options.commandMenu 命令菜单对象
|
|
||||||
*/
|
|
||||||
function GLYFEditor(main, options) {
|
|
||||||
|
|
||||||
this.main = $(main);
|
|
||||||
this.options = lang.extend({}, options);
|
|
||||||
|
|
||||||
if (this.options.commandMenu) {
|
|
||||||
this.commandMenu = this.options.commandMenu;
|
|
||||||
delete this.options.commandMenu;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 显示
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.show = function () {
|
|
||||||
// 这里注意显示顺序,否则editor创建的时候计算宽度会错误
|
|
||||||
this.main.show();
|
|
||||||
|
|
||||||
if (!this.editor) {
|
|
||||||
this.editor = editorFactory.create(this.main.get(0));
|
|
||||||
bindEditor.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.editing = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 隐藏
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.hide = function () {
|
|
||||||
this.editor && this.editor.blur();
|
|
||||||
this.main.hide();
|
|
||||||
this.editing = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否编辑中
|
|
||||||
* @return {boolean} 是否
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.isEditing = function () {
|
|
||||||
return this.editing;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否可见
|
|
||||||
* @return {boolean} 是否
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.isVisible = function () {
|
|
||||||
return this.editor && this.main.get(0).style.display !== 'none';
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取焦点
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.focus = function () {
|
|
||||||
this.editing = true;
|
|
||||||
this.editor && this.editor.focus();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 失去焦点
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.blur = function () {
|
|
||||||
this.editing = false;
|
|
||||||
this.editor && this.editor.blur();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 撤销
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.undo = function () {
|
|
||||||
execCommand.call(this, 'undo');
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 重做
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.redo = function () {
|
|
||||||
execCommand.call(this, 'redo');
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置项目
|
|
||||||
* @param {Object} options 参数集合
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.setSetting = function (options) {
|
|
||||||
if (this.editor) {
|
|
||||||
this.editor.setOptions(options);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
lang.overwrite(editorOptions.editor, options);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取设置项目
|
|
||||||
* @return {Object} 设置项目
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.getSetting = function () {
|
|
||||||
return this.editor ? this.editor.options : editorOptions.editor;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取设置项目
|
|
||||||
* @return {Object} 设置项目
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.execCommand = execCommand;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 注销
|
|
||||||
*/
|
|
||||||
GLYFEditor.prototype.dispose = function () {
|
|
||||||
this.editor.dispose();
|
|
||||||
this.main = this.options = this.editor = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 导出editor的函数
|
|
||||||
[
|
|
||||||
'reset', 'setFont', 'getFont',
|
|
||||||
'isChanged', 'setChanged', 'setAxis', 'adjustFont'
|
|
||||||
].forEach(function (fn) {
|
|
||||||
GLYFEditor.prototype[fn] = function () {
|
|
||||||
return this.editor ? this.editor[fn].apply(this.editor, arguments) : undefined;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
return GLYFEditor;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
Reference in New Issue
Block a user