/**
* 依赖jquery1.7.2
*/
(function($) {
var mark = window.mark = {
tempData : null,
show : function() {
this.util.preventScroll();
if (!$("#markContainer")[0]) {
this.container.init();
}
this.container.show();
},
close : function() {
this.container.close();
},
remove : function() {
this.save();
this.container.remove();
},
save : function() {
var canvas = this.util.getCanvas();
if (null != canvas) {
this.tempData = canvas.toDataURL();
}
},
saveToServer : function() {
this.serverUtil.save();
},
rotate : function() {
this.save();
var canvas = this.util.getCanvas();
if (null != this.tempData && null != canvas) {
// canvas.clearRect(0, 0, canvas.width, canvas.height);
canvas.width = this.util.getPhotoSwipeImageWidth();
canvas.height = this.util.getPhotoSwipeImageHeight();
$(canvas).css({
marginLeft : this.util.getPhotoSwipeImageLeft()
});
var context = canvas.getContext("2d");
var image = new Image();
image.onload = function() {
context.drawImage(image, 0, 0, canvas.width, canvas.height);
};
image.src = this.tempData;
}
},
next : function() {
var pageNo = mark.util.getPhotoswipeImgIdx() + 1;
if (pageNo > pageSum) {
pageNo = 1;
}
mark.refreshData(pageNo);
setTimeout(function() {
mark.resize();
}, 100);
},
previous : function() {
var pageNo = mark.util.getPhotoswipeImgIdx() - 1;
if (pageNo == 0) {
pageNo = pageSum;
}
mark.refreshData(pageNo);
setTimeout(function() {
mark.resize();
}, 100);
},
refreshData : function(pageNo) {
mark.util.clearCanvas();
var canvas = this.util.getCanvas();
var data = this.serverUtil.getSpecPageMarkNoteData(pageNo);
var context = canvas.getContext("2d");
var image = new Image();
image.onload = function() {
context.drawImage(image, 0, 0, canvas.width, canvas.height);
};
image.src = data;
},
resize : function() {
$("#" + this.const.MARKCONTAINER_ID).css("top", 0);
$("#" + this.const.TB_TOOLBAR_ID).css("top", 0);
}
};
/* 常量 */
mark.const = {
// 容器ID
MARKCONTAINER_ID : "markContainer",
// 画布
CANVAS_ID : "canvas",
// 工具栏和工具ID
TB_TOOLBAR_ID : "toolbar",
TB_LINE_ID : "line",
TB_LINECHANGER_ID : "lineChanger",
TB_COLORPICKER_ID : "colorPicker",
TB_PEN_ID : "pen",
TB_ERASE_ID : "erase",
TB_COLOR_ID : "color",
TB_HAND_ID : "hand",
TB_UNDO_ID : "undo",
TB_REDO_ID : "redo",
TB_SAVE_ID : "save",
TB_CLOSE_ID : "close",
TB_SPLIT_ID : "split",
TB_EMAIL_ID : "email",
TB_TIP_ID : "tip",
// 线条宽度
LINEWIDTH : [ 1, 2, 3, 4, 5, 6 ],
// 颜色
COLOR : [ 'rgb(192, 80, 77)', 'rgb(155, 187, 89)',
'rgb(128, 100, 162)', 'rgb(0, 0, 0)', 'rgba(255,250,0, 0.05)' ],
ERASE_COLOR : "rgba(0,0,0,)",
ERASE_LINE_WIDTH : 20,
ERASE_OPERATION : "destination-out",
// 动画速度
ANIMAL_TIME : 200,
ANIMAL_LEN : 50
};
mark.styleUtil = {
getToolStyle : function(toolName, direction) {
var styleValue = "float:" + direction
+ ";padding-left:48px;height:50px;"
+ "background-image:url(../images/canvas/" + toolName
+ ".png); background-repeat:no-repeat;";
return styleValue;
},
getCanvasStyle : function() {
return "border :1px solid black; margin-left:"
+ mark.util.getPhotoSwipeImageLeft() + "px;";
}
};
/* 样式 */
mark.style = {
/*
* containerStyle : "position: absolute; border:1px solid red; top:0px; " +
* "left :" + $(".ps-carousel-item-1 img").position().left +
* +"z-index:2000;display:none;",
*/
containerStyle : "position: absolute; top:0px; z-index:1500;display:none;width:100%;height:2000px;",
toolbarStyle : "position:absolute;top:0px;float:right;width:100%;height:52px;"
// "background-image:url(../images/canvas/toolbar.png);background-repeat:repeat-x;",
+ "background-color : black;",
splitStyle : "float:left;padding-left:10px;",
lineStyle : mark.styleUtil.getToolStyle(mark.const.TB_LINE_ID, "left"),
lineChangerStyle : "background-color:silver; position:absolute;)",
lineChangerElemetnStyle : "margin:2px;height:44px; border : 1px solid white;",
colorStyle : mark.styleUtil
.getToolStyle(mark.const.TB_COLOR_ID, "left"),
colorPickerStyle : "background-color:silver; position:absolute;)",
colorPickerElemetnStyle : "margin:2px;height:44px; border : 1px solid white;",
penStyle : mark.styleUtil.getToolStyle(mark.const.TB_PEN_ID, "left"),
eraseStyle : mark.styleUtil
.getToolStyle(mark.const.TB_ERASE_ID, "left"),
handStyle : mark.styleUtil.getToolStyle(mark.const.TB_HAND_ID, "left"),
undoStyle : mark.styleUtil.getToolStyle(mark.const.TB_UNDO_ID, "left"),
redoStyle : mark.styleUtil.getToolStyle(mark.const.TB_REDO_ID, "left"),
saveStyle : mark.styleUtil.getToolStyle(mark.const.TB_SAVE_ID, "left"),
closeStyle : mark.styleUtil
.getToolStyle(mark.const.TB_CLOSE_ID, "left"),
emailStyle : mark.styleUtil
.getToolStyle(mark.const.TB_EMAIL_ID, "left"),
tipStyle : "color : white;line-height:50px;vertical-align:center;",
getInstanceStyle : function(toolId) {
return this[toolId + "Style"];
}
};
/* 和服务器数据交互 */
mark.serverUtil = {
/* 将数据保存到服务器 */
save : function() {
var fileId = mark.util.getQueryString("fileId");
var pageNo = Code.PhotoSwipe.instances[0].carousel.currentCacheIndex + 1;
var markData = mark.util.getCanvas().toDataURL();
var noteData = "";
service.saveMarkNote(fileId, pageNo, markData, noteData,
function(data) {
$("#" + mark.const.TB_TIP_ID).show();
if (data > 0) {
$("#" + mark.const.TB_TIP_ID).html("保存成功!");
} else {
$("#" + mark.const.TB_TIP_ID).html("保存失败,请联系管理员!");
}
setTimeout(function() {
$("#" + mark.const.TB_TIP_ID).fadeOut(1000);
}, 2000);
});
mark.container.needSave = false;
},
getMarkNoteData : function(column) {
var serverData = null;
var fileId = mark.util.getQueryString("fileId");
var pageNo = Code.PhotoSwipe.instances[0].carousel.currentCacheIndex + 1;
DWREngine.setAsync(false);
service.getMarkNoteData(fileId, pageNo, column, function(data) {
if ("" != data) {
serverData = data;
}
});
DWREngine.setAsync(true);
return serverData;
},
getSpecPageMarkNoteData : function(pageNo) {
var serverData = null;
var fileId = mark.util.getQueryString("fileId");
DWREngine.setAsync(false);
service.getMarkNoteData(fileId, pageNo, "mark", function(data) {
if ("" != data) {
serverData = data;
}
});
DWREngine.setAsync(true);
return serverData;
},
getEmailAddr : function() {
var emailAddr = null;
var fileId = mark.util.getQueryString("fileId");
DWREngine.setAsync(false);
service.getEmailAddr(fileId, function(data) {
if ("" != data) {
emailAddr = data;
}
});
DWREngine.setAsync(true);
return emailAddr;
},
saveEmailAddr : function(emailValue) {
var fileId = mark.util.getQueryString("fileId");
service.saveEmailAddr(fileId, emailValue, function(data) {
if (data) {
}
});
}
};
/* 工具 */
mark.util = {
// 保存恢复操作数据
dataUndoContainer : [],
// 保存重做操作数据
dataRedoContainer : [],
getDomWidth : function(dom) {
return dom.attr("clientWidth");
},
getDomHeight : function(dom) {
return dom.attr("clientHeight");
},
createElement : function(tagName, id) {
var newDom = $(document.createElement(tagName));
newDom.attr("id", id);
return newDom;
},
createElement : function(tagName, id, style, dom) {
var newDom = $(document.createElement(tagName));
newDom.attr("id", id);
newDom.attr("style", style);
if (null != dom) {
}
return newDom;
},
getElementTop : function(elementId) {
return $("#" + elementId).position().top;
},
getToolInstance : function(toolId, text, bindEvent) {
var style = mark.style.getInstanceStyle(toolId);
var instance = this.createElement("div", toolId, style, null);
if ("" != text) {
instance.html(text);
}
if (bindEvent) {
instance.bind("click", {
toolId : toolId,
toolType : toolId + "Click"
}, mark.event.onToolbarClick);
}
return instance;
},
showDetailTools : function(toolId) {
if (!$("#" + toolId)[0]) {
var detailTools = mark.toolbar[toolId].getInstance();
$("#" + mark.const.MARKCONTAINER_ID).append(detailTools);
$("#" + toolId).hide();
}
if ("none" == $("#" + toolId).css("display")) {
$("#" + toolId).slideDown(mark.const.ANIMAL_TIME);
} else {
$("#" + toolId).slideUp(mark.const.ANIMAL_TIME);
}
},
hideDetailTools : function(toolId) {
var tools = $("#" + toolId);
if (tools) {
if ("none" != tools.css("display")) {
tools.slideUp(mark.const.ANIMAL_TIME);
}
}
},
setCurrentToolStyle : function(toolId) {
var toolDivs = $("#" + mark.const.TB_TOOLBAR_ID + " DIV");
$.each(toolDivs, function(i, dom) {
if (toolId == $(dom).attr("id")) {
$(dom).css("background-color", "silver");
} else {
$(dom).css("background-color", "");
}
});
},
/* 压入一个图像数据 */
pushUndoData : function(data) {
this.dataUndoContainer.push(data);
},
/* 弹出一个图像数据 */
popUndoData : function() {
if (this.dataUndoContainer.length > 0) {
return this.dataUndoContainer.pop();
} else {
return null;
}
},
pushRedoData : function(data) {
this.dataRedoContainer.push(data);
},
popRedoData : function(data) {
if (this.dataRedoContainer.length > 0) {
return this.dataRedoContainer.pop();
} else {
return null;
}
},
getCanvas : function() {
return document.getElementById(mark.const.CANVAS_ID);
},
getContext : function() {
return mark.util.getCanvas().getContext("2d");
},
clearCanvas : function() {
mark.util.getContext().clearRect(0, 0, mark.util.getCanvas().width,
mark.util.getCanvas().height);
},
preventScroll : function() {
document.body.addEventListener('touchmove',
mark.event.preventDefaultEventListener, false);
},
/* 和photoswipe插件相关的东西 */
getPhotoSwipeImageWidth : function() {
return $(".ps-carousel-content img")[1].width;
},
getPhotoSwipeImageHeight : function() {
return $(".ps-carousel-content img")[1].height;
},
getPhotoSwipeImageLeft : function() {
return $($(".ps-carousel-content img")[1]).position().left;
},
getPhotoswipeImgIdx : function() {
return (mark.util.getPhotoSwipeInstance().carousel.currentCacheIndex + 1);
},
getPhotoSwipeInstance : function() {
return window.Code.PhotoSwipe.instances[0];
},
getQueryString : function(name) {
var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i");
if (reg.test(location.href))
return unescape(RegExp.$2.replace(/\+/g, " "));
return "";
}
};
/* 画布操作 */
mark.drawer = {
// 绘图操作类型
operation : "",
context : null,
getContext : function() {
return mark.util.getCanvas().getContext("2d");
},
draw : {
startTime : null,
startX : 0,
sourceY : 0,
saveUndoData : function(canvas) {
var data = canvas.toDataURL();
mark.util.pushUndoData(data);
},
saveRedoData : function(canvas) {
var data = canvas.toDataURL();
mark.util.pushRedoData(data);
},
touchstart : function(coors, len) {
if (len == 2) {
var toolId = mark.toolbar.currentToolId = mark.const.TB_HAND_ID;
mark.util.setCurrentToolStyle(toolId);
}
var markContainerTop = mark.util
.getElementTop(mark.const.MARKCONTAINER_ID);
this.sourceY = coors.y - markContainerTop;
this.context = mark.drawer.getContext();
if (mark.toolbar.currentToolId == mark.const.TB_PEN_ID) {
// this.saveUndoData(canvas);
this.context.lineWidth = (undefined == mark.canvas.lineWidth ? 1
: mark.canvas.lineWidth);
this.context.strokeStyle = (undefined == mark.canvas.lineColor ? "BLACK"
: mark.canvas.lineColor);
this.context.lineCap = "round";
this.context.iineJoin = "round";
this.context.globalCompositeOperation = "source-over";
this.context.beginPath();
this.context.moveTo(coors.x, this.sourceY);
mark.canvas.paint = true;
mark.canvas.erase = false;
mark.canvas.drag = false;
} else if (mark.toolbar.currentToolId == mark.const.TB_ERASE_ID) {
// this.saveRedoData(canvas);
this.context.lineWidth = mark.const.ERASE_LINE_WIDTH;
this.context.strokeStyle = mark.const.ERASE_COLOR;
this.context.globalCompositeOperation = mark.const.ERASE_OPERATION;
this.context.beginPath();
this.context.moveTo(coors.x, this.sourceY);
mark.canvas.paint = false;
mark.canvas.drag = false;
mark.canvas.erase = true;
} else if (mark.toolbar.currentToolId == mark.const.TB_HAND_ID) {
mark.canvas.paint = false;
mark.canvas.erase = false;
mark.canvas.drag = true;
this.startX = coors.x;
this.startTime = new Date();
}
},
touchmove : function(coors, len) {
var markContainerTop = mark.util
.getElementTop(mark.const.MARKCONTAINER_ID);
if (mark.canvas.paint || mark.canvas.erase) {
this.context.lineTo(coors.x, coors.y - markContainerTop);
this.context.stroke();
} else if (mark.canvas.drag) {
Code.PhotoSwipe.instances[0].destroyZoomPanRotate();
$($(".ps-carousel-content img")[1]).css(
{
top : (coors.y - this.sourceY) > 0 ? 0
: coors.y - this.sourceY,
});
var markContainer = $("#" + mark.const.MARKCONTAINER_ID);
var markTop = markContainer.position().top;
var toolbarTop = markTop < 0 ? 0 - markTop : 0;
markContainer.css({
top : (coors.y - this.sourceY) > 0 ? 0 : coors.y
- this.sourceY,
});
$("#" + mark.const.TB_TOOLBAR_ID).css({
top : toolbarTop
});
}
},
touchend : function(coors, len) {
if (mark.canvas.paint) {
mark.container.needSave = true;
// this.saveUndoData(canvas);
this.touchmove(coors, len);
mark.canvas.paint = false;
} else if (mark.canvas.erase) {
mark.container.needSave = true;
// this.saveUndoData(canvas);
this.touchmove(coors, len);
mark.canvas.erase = false;
this.context.globalCompositeOperation = "source-over";
} else if (mark.canvas.drag) {
if (len >= 1) {
mark.util.preventScroll();
mark.toolbar.currentToolId = mark.const.TB_PEN_ID;
mark.util
.setCurrentToolStyle(mark.toolbar.currentToolId);
}
this.endTime = new Date();
if (this.endTime - this.startTime < 300) {
if (coors.x - this.startX < -(mark.const.ANIMAL_LEN)) {
mark.event.checkStateAndShowNext();
} else if (coors.x - this.startX > mark.const.ANIMAL_LEN) {
mark.event.checkStateAndShowPrevious();
} else if (coors.x == this.startX) {
if (coors.x < window.innerWidth / 2) {
mark.event.checkStateAndShowPrevious();
} else {
mark.event.checkStateAndShowNext();
}
}
}
}
this.touchmove(coors, len);
mark.canvas.drag = false;
}
},
action : function(event) {
var touchLen = event.originalEvent.touches.length
|| event.originalEvent.changedTouches.length;
var touch = event.originalEvent.touches[0]
|| event.originalEvent.changedTouches[0];
var coors = {
x : touch.pageX - mark.util.getPhotoSwipeImageLeft(),
y : touch.pageY
};
if (mark.toolbar.currentTool == mark.const.TB_PEN) {
mark.drawer.draw[event.type](coors, touchLen);
} else if (mark.toolbar.currentTool == mark.const.TB_ERASE) {
mark.drawer.erase[event.type](coors, toucheLen);
}
}
};
/* 事件 */
mark.event = {
/* 事件 名称组成 id+Click */
lineClick : function(event) {
mark.util.showDetailTools(mark.const.TB_LINECHANGER_ID);
mark.util.hideDetailTools(mark.const.TB_COLORPICKER_ID);
},
linePickerClick : function(event) {
// $("#" + mark.const.TB_COLOR_ID).css("background-color",
// "silver");
mark.canvas.lineWidth = event.data.lineWidth;
$("#" + mark.const.TB_LINECHANGER_ID).slideUp(
mark.const.ANIMAL_TIME);
// 选择完成后,将工具栏工具设置成画笔
mark.toolbar.currentToolId = mark.const.TB_PEN_ID;
mark.util.setCurrentToolStyle(mark.toolbar.currentToolId);
},
colorClick : function(event) {
mark.util.showDetailTools(mark.const.TB_COLORPICKER_ID);
mark.util.hideDetailTools(mark.const.TB_LINECHANGER_ID);
},
colorPickerClick : function(event) {
// $("#" + mark.const.TB_COLOR_ID).css("background-color",
// "silver");
mark.canvas.lineColor = event.data.color;
$("#" + mark.const.TB_COLORPICKER_ID).slideUp(
mark.const.ANIMAL_TIME);
// 选择完成后,将工具栏工具设置成画笔
mark.toolbar.currentToolId = mark.const.TB_PEN_ID;
mark.util.setCurrentToolStyle(mark.toolbar.currentToolId);
},
penClick : function(event) {
mark.util.preventScroll();
mark.toolbar.currentToolId = mark.const.TB_PEN_ID;
mark.util.hideDetailTools(mark.const.TB_COLORPICKER_ID);
mark.util.hideDetailTools(mark.const.TB_LINECHANGER_ID);
},
eraseClick : function(event) {
mark.util.preventScroll();
mark.toolbar.currentToolId = mark.const.TB_ERASE_ID;
mark.util.hideDetailTools(mark.const.TB_COLORPICKER_ID);
mark.util.hideDetailTools(mark.const.TB_LINECHANGER_ID);
},
handClick : function(event) {
/*
* document.body.removeEventListener('touchmove',
* mark.event.preventDefaultEventListener);
*/
mark.util.hideDetailTools(mark.const.TB_COLORPICKER_ID);
mark.util.hideDetailTools(mark.const.TB_LINECHANGER_ID);
},
undoClick : function(event) {
if (mark.util.dataUndoContainer.length > 0) {
var data = mark.util.popUndoData();
if (null != data) {
mark.util.pushRedoData(data);
}
}
var undoContainerLen = mark.util.dataUndoContainer.length;
var imageData = null;
if (undoContainerLen > 0) {
imageData = mark.util.dataUndoContainer[undoContainerLen - 1];
}
var canvas = document.getElementById(mark.const.CANVAS_ID);
var context = canvas.getContext("2d");
if (null != imageData) {
var image = new Image();
image.onload = function() {
context.clearRect(0, 0, canvas.width, canvas.height);
context.drawImage(image, 0, 0, canvas.width, canvas.height);
};
image.src = imageData;
} else {
context.clearRect(0, 0, canvas.width, canvas.height);
}
},
redoClick : function(event) {
if (mark.util.dataRedoContainer.length > 0) {
var data = mark.util.popRedoData();
if (null != data) {
mark.util.pushUndoData(data);
var canvas = document.getElementById(mark.const.CANVAS_ID);
var context = canvas.getContext("2d");
var image = new Image();
image.onload = function() {
context.clearRect(0, 0, canvas.width, canvas.height);
context.drawImage(image, 0, 0, canvas.width,
canvas.height);
};
image.src = data;
}
}
},
emailClick : function(evnet) {
// 读取数据库中存储的email地址
var emailAddr = mark.serverUtil.getEmailAddr();
var emailValue = window.prompt("请输入您的EMAIL地址,\n会议结束后由系统发送到您的邮箱!",
emailAddr);
if (emailValue != emailAddr && emailValue != null) {
mark.serverUtil.saveEmailAddr(emailValue);
}
},
saveClick : function(event) {
mark.saveToServer();
},
closeClick : function(event) {
mark.util.hideDetailTools(mark.const.TB_COLORPICKER_ID);
mark.util.hideDetailTools(mark.const.TB_LINECHANGER_ID);
if (mark.container.needSave) {
if (confirm("推出前需要保存当前批注么?")) {
mark.saveToServer();
mark.close();
} else {
mark.close();
}
} else {
mark.close();
}
},
/* 工具栏事件统一入口 */
onToolbarClick : function(event) {
// var toolId = event.data.toolId;
var toolId = mark.toolbar.currentToolId = event.data.toolId;
mark.util.setCurrentToolStyle(toolId);
var toolType = event.data.toolType;
mark.event[toolType](event);
},
onContainerRotate : function(event) {
mark.rotate();
},
preventDefaultEventListener : function(event) {
event.preventDefault();
},
/* 图片和笔记同事操作事件 */
photoAndMarkNext : function() {
mark.util.getPhotoSwipeInstance().carousel.next();
mark.next();
},
photoAndMarkPrevious : function() {
mark.util.getPhotoSwipeInstance().carousel.previous();
mark.previous();
},
checkStateAndShowNext : function() {
if (mark.container.needSave) {
if (window.confirm("是否需要保存当前笔记?")) {
mark.saveToServer();
}
}
mark.event.photoAndMarkNext();
mark.container.needSave = false;
},
checkStateAndShowPrevious : function() {
if (mark.container.needSave) {
if (window.confirm("是否需要保存当前笔记?")) {
mark.saveToServer();
}
}
mark.event.photoAndMarkPrevious();
mark.container.needSave = false;
}
};
/* 容器 */
mark.container = {
needSave : false,
instance : {},
id : mark.const.MARKCONTAINER_ID,
style : mark.style.containerStyle,
init : function() {
var container = mark.util.createElement("div", this.id, this.style,
null);
var canvas = mark.canvas.getCanvas();
var toolbar = mark.toolbar.getToolBar();
container.append(canvas);
container.append(toolbar);
this.instance = container;
$("body").append(container);
// window.onorientationchange = mark.event.onContainerRotate;
},
show : function() {
this.instance.fadeIn(mark.const.ANIMAL_TIME);
var markServerData = mark.serverUtil.getMarkNoteData("mark");
if (markServerData != null) {
var context = mark.drawer.getContext();
var image = new Image();
image.onload = function() {
context.drawImage(image, 0, 0, mark.util
.getPhotoSwipeImageWidth(), mark.util
.getPhotoSwipeImageHeight());
};
image.src = markServerData;
} else {
mark.util.clearCanvas();
}
mark.toolbar.currentToolId = mark.const.TB_PEN_ID;
mark.util.setCurrentToolStyle(mark.toolbar.currentToolId);
},
close : function() {
if (this.instance) {
this.instance.fadeOut(mark.const.ANIMAL_TIME, function() {
// this.instance.remove();
});
}
},
remove : function() {
this.instance.remove();
}
};
/* 画布 */
mark.canvas = {
paint : false,
erase : false,
drag : false,
lineWidth : 1,
lineColor : "BLACK",
lineCap : "round",
id : mark.const.CANVAS_ID,
// style : mark.sytle.getCanvasStyle(),
getCanvas : function() {
var canvas = mark.util.createElement("canvas", this.id,
mark.styleUtil.getCanvasStyle(), null);
canvas.attr("width", mark.util.getPhotoSwipeImageWidth());
canvas.attr("height", mark.util.getPhotoSwipeImageHeight());
canvas.bind("touchstart", mark.drawer.action);
canvas.bind("touchmove", mark.drawer.action);
canvas.bind("touchend", mark.drawer.action);
return canvas;
}
};
/* 工具栏 */
mark.toolbar = {
currentToolId : mark.const.TB_HAND_ID,
id : mark.const.TB_TOOLBAR_ID,
style : mark.style.toolbarStyle,
split : {
id : mark.const.TB_SPLIT_ID,
style : mark.style.splitStyle,
getInstance : function() {
var instance = mark.util.createElement("div", this.id,
this.style, null);
return instance;
}
},
line : {
id : mark.const.TB_LINE_ID,
text : "",
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
lineChanger : {
id : mark.const.TB_LINECHANGER_ID,
style : mark.style.lineChangerStyle,
getInstance : function() {
var lineChanger = mark.util.createElement("div", this.id,
this.style, null);
var lineChangerElementStyle = mark.style.lineChangerElemetnStyle;
$.each(mark.const.LINEWIDTH, function(i, width) {
var tmepId = "line" + width;
var tempLine = mark.util.createElement("div", tmepId,
lineChangerElementStyle, null);
tempLine.html(width + "号");
tempLine.bind("click", {
lineWidth : width * 2,
toolType : "linePickerClick"
}, mark.event.onToolbarClick);
lineChanger.append(tempLine);
});
var line = $("#" + mark.const.TB_LINE_ID);
var toolbar = $("#" + mark.const.TB_TOOLBAR_ID);
lineChanger.css("top", toolbar.position().top + 50);
lineChanger.css("margin-left", line.position().left);
lineChanger.css("width", line.outerWidth(true));
return lineChanger;
}
},
color : {
id : mark.const.TB_COLOR_ID,
text : "",
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
colorPicker : {
id : mark.const.TB_COLORPICKER_ID,
style : mark.style.colorPickerStyle,
getInstance : function() {
var colorPicker = mark.util.createElement("div", this.id,
this.style, null);
var colorPickerElementStyle = mark.style.colorPickerElemetnStyle;
$.each(mark.const.COLOR, function(i, color) {
var tempId = color + "Div";
var tempColor = mark.util.createElement("div", tempId,
colorPickerElementStyle, null);
tempColor.css("background-color", color);
tempColor.bind("click", {
color : color,
toolType : "colorPickerClick"
}, mark.event.onToolbarClick);
colorPicker.append(tempColor);
});
var color = $("#" + mark.const.TB_COLOR_ID);
var toolbar = $("#" + mark.const.TB_TOOLBAR_ID);
colorPicker.css("top", toolbar.position().top + 50);
colorPicker.css("margin-left", color.position().left);
colorPicker.css("width", color.outerWidth(true));
return colorPicker;
}
},
pen : {
id : mark.const.TB_PEN_ID,
text : "",
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
erase : {
eraseLineWidth : mark.const.ERASE_LINE_WIDTH,
id : mark.const.TB_ERASE_ID,
text : "",
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
hand : {
id : mark.const.TB_HAND_ID,
text : "",
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
undo : {
id : mark.const.TB_UNDO_ID,
text : "",
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
redo : {
id : mark.const.TB_REDO_ID,
text : "",
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
save : {
id : mark.const.TB_SAVE_ID,
text : '',
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
email : {
id : mark.const.TB_EMAIL_ID,
text : '',
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
close : {
id : mark.const.TB_CLOSE_ID,
text : '',
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, true);
}
},
tip : {
id : mark.const.TB_TIP_ID,
text : '',
getInstance : function() {
return mark.util.getToolInstance(this.id, this.text, false);
}
},
getToolBar : function() {
var toolBar = mark.util.createElement("div", this.id, this.style,
null);
/* 从左到右排列 */
toolBar.append(this.line.getInstance());
toolBar.append(this.color.getInstance());
toolBar.append(this.pen.getInstance());
toolBar.append(this.erase.getInstance());
toolBar.append(this.hand.getInstance());
toolBar.append(this.split.getInstance());
// toolBar.append(this.undo.getInstance());
// toolBar.append(this.redo.getInstance());
toolBar.append(this.split.getInstance());
toolBar.append(this.save.getInstance());
toolBar.append(this.email.getInstance());
toolBar.append(this.close.getInstance());
toolBar.append(this.tip.getInstance());
return toolBar;
}
};
})($);