Commit 3eec99da authored by Dmitry.Vikulov's avatar Dmitry.Vikulov

Оптимизация ввода текста в шейп

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@53212 954022d7-b5bf-4e40-9824-e11837661b57
parent 73870feb
......@@ -2448,34 +2448,68 @@ prot["asc_getIndex"] = prot.asc_getIndex;
// Manager
//-----------------------------------------------------------------------------------
function ScrollGraphicObject(ws, type, delta) {
this.ws = ws;
this.type = type;
this.delta = delta; // + Down || - Up
function GraphicOption(ws, type, delta) {
var _this = this;
_this.ws = ws;
_this.type = type;
_this.delta = delta; // Scroll offset: + Down || - Up
_this.isScrollType = function() {
return ( (_this.type === c_oAscGraphicOption.ScrollVertical) || (_this.type === c_oAscGraphicOption.ScrollHorizontal) );
}
this.getUpdatedRange = function() {
_this.getUpdatedRange = function() {
var vr = this.ws.visibleRange.clone();
if ( this.delta === 0 )
var vr = _this.ws.visibleRange.clone();
if ( _this.isScrollType() && (_this.delta === 0) )
return vr;
if ( this.type === c_oAscScrollType.Vertical ) {
// Down
if ( this.delta > 0 )
vr.r1 = vr.r2 - this.delta;
// Up
else
vr.r2 = vr.r1 - this.delta;
}
else if ( this.type === c_oAscScrollType.Horizontal ) {
// Right
if ( this.delta > 0 )
vr.c1 = vr.c2 - this.delta;
// Left
else
vr.c2 = vr.c1 - this.delta;
switch (_this.type) {
case c_oAscGraphicOption.ScrollVertical: {
// Down
if ( _this.delta > 0 )
vr.r1 = vr.r2 - _this.delta;
// Up
else
vr.r2 = vr.r1 - _this.delta;
}
break;
case c_oAscGraphicOption.ScrollHorizontal: {
// Right
if ( _this.delta > 0 )
vr.c1 = vr.c2 - _this.delta;
// Left
else
vr.c2 = vr.c1 - _this.delta;
}
break;
case c_oAscGraphicOption.AddText: {
if ( _this.ws ) {
var controller = _this.ws.objectRender.controller;
var selectedObjects = controller.selectedObjects;
if ( selectedObjects.length === 1 ) {
var drawingObject = selectedObjects[0].drawingBase;
var checker = _this.ws.objectRender.getBoundsChecker(drawingObject);
var coords = _this.ws.objectRender.getBoundsCheckerCoords(checker);
if ( coords ) {
vr.c1 = coords.from.col;
vr.r1 = coords.from.row;
if ( !_this.ws.cols[coords.to.col + 1] )
_this.ws.expandColsOnScroll(true);
vr.c2 = coords.to.col + 1;
if ( !_this.ws.rows[coords.to.row + 1] )
_this.ws.expandRowsOnScroll(true);
vr.r2 = coords.to.row + 1;
}
}
}
}
break;
}
return vr;
}
}
......@@ -2551,7 +2585,7 @@ function DrawingObjects() {
var taskLen = aDrawTasks.length;
if ( taskLen ) {
var lastTask = aDrawTasks[taskLen - 1];
_this.showDrawingObjectsEx(lastTask.params.clearCanvas, lastTask.params.scrollType, lastTask.params.printOptions);
_this.showDrawingObjectsEx(lastTask.params.clearCanvas, lastTask.params.graphicOption, lastTask.params.printOptions);
aDrawTasks.splice(0, (taskLen - 1 > 0) ? taskLen - 1 : 1);
}
}
......@@ -3406,7 +3440,7 @@ function DrawingObjects() {
// Drawing objects
//-----------------------------------------------------------------------------------
_this.showDrawingObjects = function(clearCanvas, scrollType, printOptions) {
_this.showDrawingObjects = function(clearCanvas, graphicOption, printOptions) {
var currDate = new Date();
var currTime = currDate.getTime();
......@@ -3414,17 +3448,17 @@ function DrawingObjects() {
var lastTask = aDrawTasks[aDrawTasks.length - 1];
if ( lastTask.params.scrollType && scrollType && (lastTask.params.scrollType.type === scrollType.type) ) {
lastTask.params.scrollType.delta += scrollType.delta;
if ( lastTask.params.graphicOption && lastTask.params.graphicOption.isScrollType() && graphicOption && (lastTask.params.graphicOption.type === graphicOption.type) ) {
lastTask.params.graphicOption.delta += graphicOption.delta;
return;
}
if ( (currTime - lastTask.time < 40) )
return;
}
aDrawTasks.push({ time: currTime, params: { clearCanvas: clearCanvas, scrollType: scrollType, printOptions: printOptions} });
aDrawTasks.push({ time: currTime, params: { clearCanvas: clearCanvas, graphicOption: graphicOption, printOptions: printOptions} });
}
_this.showDrawingObjectsEx = function(clearCanvas, scrollType, printOptions) {
_this.showDrawingObjectsEx = function(clearCanvas, graphicOption, printOptions) {
/*********** Print Options ***************
printOptions : {
......@@ -3446,11 +3480,12 @@ function DrawingObjects() {
worksheet._drawGraphic();
// Clip
_this.clipGraphicsCanvas(shapeCtx, scrollType);
_this.clipGraphicsCanvas(shapeCtx, graphicOption);
// Area for update
if ( scrollType ) {
if ( graphicOption ) {
var updatedRect = { x: 0, y: 0, w: 0, h: 0 };
var updatedRange = scrollType.getUpdatedRange();
var updatedRange = graphicOption.getUpdatedRange();
var offsetX = worksheet.cols[worksheet.visibleRange.c1].left - worksheet.cellsLeft;
var offsetY = worksheet.rows[worksheet.visibleRange.r1].top - worksheet.cellsTop;
......@@ -3473,7 +3508,7 @@ function DrawingObjects() {
drawingObject.graphicObject.syncAscChart();
if ( !printOptions ) {
if ( !drawingObject.inVisibleArea(scrollType) )
if ( !drawingObject.inVisibleArea(graphicOption) )
continue;
}
......@@ -3674,13 +3709,13 @@ function DrawingObjects() {
return metrics;
}
_this.clipGraphicsCanvas = function(canvas, scrollType) {
_this.clipGraphicsCanvas = function(canvas, graphicOption) {
if ( canvas instanceof CGraphics ) {
var x, y, w, h;
if ( scrollType ) {
var updatedRange = scrollType.getUpdatedRange();
if ( graphicOption ) {
var updatedRange = graphicOption.getUpdatedRange();
var offsetX = worksheet.cols[worksheet.visibleRange.c1].left - worksheet.cellsLeft;
var offsetY = worksheet.rows[worksheet.visibleRange.r1].top - worksheet.cellsTop;
......
......@@ -216,9 +216,10 @@ var c_oAscSelectionType = {
RangeChartText : 9
};
var c_oAscScrollType = {
Vertical : 1,
Horizontal : 2
var c_oAscGraphicOption = {
ScrollVertical : 1,
ScrollHorizontal : 2,
AddText : 3
};
var c_oAscLegendMarkerType = {
......
......@@ -969,6 +969,7 @@ function handleNullStateCursorType(drawingObjectsController, drawingObjects, e,
function NullState(drawingObjectsController, drawingObjects)
{
var _this = this;
this.id = STATES_ID_NULL;
this.drawingObjectsController = drawingObjectsController;
this.drawingObjects = drawingObjects;
......@@ -1098,7 +1099,7 @@ function NullState(drawingObjectsController, drawingObjects)
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(true);
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
text_object.updateSelectionState(drawingObjects.drawingDocument);
drawingObjects.controller.changeCurrentState(new TextAddState(drawingObjects.controller, drawingObjects, text_object));
}
......@@ -1457,6 +1458,7 @@ function MoveInternalChartObjectState(drawingObjectsController, drawingObjects,
function ChartState(drawingObjectsController, drawingObjects, chart)
{
var _this = this;
this.id = STATES_ID_CHART;
this.drawingObjectsController = drawingObjectsController;
this.drawingObjects = drawingObjects;
......@@ -1501,7 +1503,7 @@ function ChartState(drawingObjectsController, drawingObjects, chart)
History.Create_NewPoint();
drawingObjects.controller.changeCurrentState(new ChartTextAdd(drawingObjects.controller, drawingObjects, chart, text_object));
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(true);
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.controller.updateSelectionState(drawingObjects.drawingDocument);
drawingObjects.OnUpdateOverlay();
}
......@@ -1674,6 +1676,7 @@ function ChartState(drawingObjectsController, drawingObjects, chart)
function ChartTextAdd(drawingObjectsController, drawingObjects, chart, textObject)
{
var _this = this;
this.id = STATES_ID_CHART_TEXT_ADD;
this.drawingObjectsController = drawingObjectsController;
this.drawingObjects = drawingObjects;
......@@ -1729,7 +1732,7 @@ function ChartTextAdd(drawingObjectsController, drawingObjects, chart, textObjec
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(true);
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
text_object.updateSelectionState(drawingObjects.drawingDocument);
}
};
......@@ -1918,6 +1921,7 @@ function ChartTextAdd(drawingObjectsController, drawingObjects, chart, textObjec
function TextAddState(drawingObjectsController, drawingObjects, textObject)
{
var _this = this;
this.id = STATES_ID_TEXT_ADD;
this.drawingObjectsController = drawingObjectsController;
this.drawingObjects = drawingObjects;
......@@ -1979,7 +1983,7 @@ function TextAddState(drawingObjectsController, drawingObjects, textObject)
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(true);
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
text_object.updateSelectionState(drawingObjects.drawingDocument);
}
};
......@@ -3126,6 +3130,7 @@ function GroupState(drawingObjectsController, drawingObjects, group)
function ChartGroupState(drawingObjectsController, drawingObjects, group, chart)
{
var _this = this;
this.id = STATES_ID_CHART_GROUP;
this.drawingObjectsController = drawingObjectsController;
this.drawingObjects = drawingObjects;
......@@ -3190,7 +3195,7 @@ function ChartGroupState(drawingObjectsController, drawingObjects, group, chart)
History.Create_NewPoint();
drawingObjects.controller.changeCurrentState(new ChartTextAddGroup(drawingObjects.controller, drawingObjects, group, chart, selected_title));
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(true);
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.controller.updateSelectionState(drawingObjects.drawingDocument);
drawingObjects.OnUpdateOverlay();
}
......
......@@ -5034,7 +5034,7 @@
this.cellCommentator.updateCommentPosition();
//ToDo this.drawDepCells();
this._drawGraphic();
this.objectRender.showDrawingObjects(false, new ScrollGraphicObject(this, c_oAscScrollType.Vertical, delta));
this.objectRender.showDrawingObjects(false, new GraphicOption(this, c_oAscGraphicOption.ScrollVertical, delta));
return this;
},
......@@ -5118,7 +5118,7 @@
this.cellCommentator.updateCommentPosition();
//ToDo this.drawDepCells();
this._drawGraphic();
this.objectRender.showDrawingObjects(false, new ScrollGraphicObject(this, c_oAscScrollType.Horizontal, delta));
this.objectRender.showDrawingObjects(false, new GraphicOption(this, c_oAscGraphicOption.ScrollHorizontal, delta));
return this;
},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment