Commit d55c5b8e authored by Dmitry.Vikulov's avatar Dmitry.Vikulov

Доработана отрисовка графики от (0,0)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@49989 954022d7-b5bf-4e40-9824-e11837661b57
parent f3166334
...@@ -2337,7 +2337,7 @@ function DrawingObjects() { ...@@ -2337,7 +2337,7 @@ function DrawingObjects() {
var trackOverlay = null; var trackOverlay = null;
var autoShapeTrack = null; var autoShapeTrack = null;
var scrollOffset = { x: 0, y: 0 }; var scrollOffset = { x: 0, y: 0, x0: 0, y0: 0 };
var aObjects = null; var aObjects = null;
var aBoundsCheckers = []; var aBoundsCheckers = [];
...@@ -2491,8 +2491,12 @@ function DrawingObjects() { ...@@ -2491,8 +2491,12 @@ function DrawingObjects() {
var lvc = _t.worksheet.getLastVisibleCol(); var lvc = _t.worksheet.getLastVisibleCol();
var lvr = _t.worksheet.getLastVisibleRow(); var lvr = _t.worksheet.getLastVisibleRow();
if ( (fvr > _t.to.row + 1) || (lvr < _t.from.row - 1) || (fvc > _t.to.col + 1) || (lvc < _t.from.col - 1) ) var checker = _this.getBoundsChecker(_t);
var coords = _this.getBoundsCheckerCoords(checker);
if ( coords ) {
if ( (fvr > coords.r2 + 1) || (lvr < coords.r1 - 1) || (fvc > coords.c2 + 1) || (lvc < coords.c1 - 1) )
result = false; result = false;
}
return result; return result;
} }
...@@ -2771,7 +2775,6 @@ function DrawingObjects() { ...@@ -2771,7 +2775,6 @@ function DrawingObjects() {
} }
drawingObject.graphicObject.init(); drawingObject.graphicObject.init();
aObjects.push( drawingObject ); aObjects.push( drawingObject );
} }
if (drawingObject.graphicObject instanceof CShape) { if (drawingObject.graphicObject instanceof CShape) {
...@@ -3094,6 +3097,46 @@ function DrawingObjects() { ...@@ -3094,6 +3097,46 @@ function DrawingObjects() {
return null; return null;
} }
_this.getBoundsCheckerCoords = function(checker) {
if ( checker ) {
var coords = { c1: 0, r1: 0, c2: 0, r2: 0, min_x: 0, min_y: 0, max_x: 0, max_y: 0, w: 0, h: 0 };
coords.min_x = checker.Bounds.min_x;
coords.min_y = checker.Bounds.min_y;
coords.max_x = checker.Bounds.max_x;
coords.max_y = checker.Bounds.max_y;
coords.w = checker.Bounds.max_x - checker.Bounds.min_x;
coords.h = checker.Bounds.max_y - checker.Bounds.min_y;
// Top left
var foundRow = worksheet._findRowUnderCursor( mmToPt(checker.Bounds.min_y + pxToMm(scrollOffset.y)), true);
coords.r1 = foundRow ? foundRow.row : 0;
var foundCol = worksheet._findColUnderCursor( mmToPt(checker.Bounds.min_x + pxToMm(scrollOffset.x)), true);
coords.c1 = foundCol ? foundCol.col : 0;
// Right bottom
foundRow = worksheet._findRowUnderCursor( mmToPt(checker.Bounds.max_y + pxToMm(scrollOffset.y)), true);
while ( !foundRow ) {
worksheet.expandRowsOnScroll(true);
foundRow = worksheet._findRowUnderCursor( mmToPt(checker.Bounds.max_y + pxToMm(scrollOffset.y)), true);
}
coords.r2 = foundRow.row;
foundCol = worksheet._findColUnderCursor( mmToPt(checker.Bounds.max_x + pxToMm(scrollOffset.x)), true);
while ( !foundCol ) {
worksheet.expandColsOnScroll(true);
foundCol = worksheet._findColUnderCursor( mmToPt(checker.Bounds.max_x + pxToMm(scrollOffset.x)), true);
}
coords.c2 = foundCol.col;
return coords;
}
return null;
}
_this.clearDrawingObjects = function() { _this.clearDrawingObjects = function() {
// Чистим предыдущие области // Чистим предыдущие области
...@@ -3101,7 +3144,7 @@ function DrawingObjects() { ...@@ -3101,7 +3144,7 @@ function DrawingObjects() {
var _top = worksheet.getCellTop(worksheet.getFirstVisibleRow(), 3); var _top = worksheet.getCellTop(worksheet.getFirstVisibleRow(), 3);
var _left = worksheet.getCellLeft(worksheet.getFirstVisibleCol(), 3); var _left = worksheet.getCellLeft(worksheet.getFirstVisibleCol(), 3);
for (var i = 0; i < aBoundsCheckers.length; i++) { for (var i = 0; i < aBoundsCheckers.length; i++) {
restoreSheetArea(aBoundsCheckers[i]); _this.restoreSheetArea(aBoundsCheckers[i]);
if ( (_top >= aBoundsCheckers[i].Bounds.min_y) || (_left >= aBoundsCheckers[i].Bounds.min_x) ) if ( (_top >= aBoundsCheckers[i].Bounds.min_y) || (_left >= aBoundsCheckers[i].Bounds.min_x) )
bHeaders = true; bHeaders = true;
} }
...@@ -3112,7 +3155,7 @@ function DrawingObjects() { ...@@ -3112,7 +3155,7 @@ function DrawingObjects() {
if ( !aObjects[i].inVisibleArea() ) if ( !aObjects[i].inVisibleArea() )
continue; continue;
var boundsChecker = _this.getBoundsChecker(aObjects[i]); var boundsChecker = _this.getBoundsChecker(aObjects[i]);
restoreSheetArea(boundsChecker); _this.restoreSheetArea(boundsChecker);
aBoundsCheckers.push(boundsChecker); aBoundsCheckers.push(boundsChecker);
if ( (_top >= boundsChecker.Bounds.min_y) || (_left >= boundsChecker.Bounds.min_x) ) if ( (_top >= boundsChecker.Bounds.min_y) || (_left >= boundsChecker.Bounds.min_x) )
...@@ -3123,41 +3166,20 @@ function DrawingObjects() { ...@@ -3123,41 +3166,20 @@ function DrawingObjects() {
_this.drawWorksheetHeaders(true); _this.drawWorksheetHeaders(true);
} }
function restoreSheetArea(checker) { _this.restoreSheetArea = function(checker) {
var _w = checker.Bounds.max_x - checker.Bounds.min_x;
var _h = checker.Bounds.max_y - checker.Bounds.min_y;
//overlayCtx.clearRect( mmToPt(checker.Bounds.min_x + pxToMm(scrollOffset.x)), mmToPt(checker.Bounds.min_y + pxToMm(scrollOffset.y)), mmToPt(_w), mmToPt(_h) ); var coords = _this.getBoundsCheckerCoords(checker);
//drawingCtx.clearRect( mmToPt(checker.Bounds.min_x + pxToMm(scrollOffset.x)), mmToPt(checker.Bounds.min_y + pxToMm(scrollOffset.y)), mmToPt(_w), mmToPt(_h) ); if ( coords ) {
// Top left
var foundRow = worksheet._findRowUnderCursor( mmToPt(checker.Bounds.min_y + pxToMm(scrollOffset.y)), true);
var topRow = foundRow ? foundRow.row : 0;
var foundCol = worksheet._findColUnderCursor( mmToPt(checker.Bounds.min_x + pxToMm(scrollOffset.x)), true);
var leftCol = foundCol ? foundCol.col : 0;
// Right bottom overlayCtx.clearRect( mmToPt(coords.min_x + pxToMm(scrollOffset.x)), mmToPt(coords.min_y + pxToMm(scrollOffset.y)), mmToPt(coords.w), mmToPt(coords.h) );
foundRow = worksheet._findRowUnderCursor( mmToPt(checker.Bounds.max_y + pxToMm(scrollOffset.y)), true); drawingCtx.clearRect( mmToPt(coords.min_x + pxToMm(scrollOffset.x)) , mmToPt(coords.min_y + pxToMm(scrollOffset.y)), mmToPt(coords.w), mmToPt(coords.h) );
while ( !foundRow ) {
worksheet.expandRowsOnScroll(true);
foundRow = worksheet._findRowUnderCursor( mmToPt(checker.Bounds.max_y + pxToMm(scrollOffset.y)), true);
}
var bottomRow = foundRow.row;
foundCol = worksheet._findColUnderCursor( mmToPt(checker.Bounds.max_x + pxToMm(scrollOffset.x)), true); var r_ = asc_Range( coords.c1, coords.r1, coords.c2, coords.r2 );
while ( !foundCol ) {
worksheet.expandColsOnScroll(true);
foundCol = worksheet._findColUnderCursor( mmToPt(checker.Bounds.max_x + pxToMm(scrollOffset.x)), true);
}
var rightcol = foundCol.col;
var r_ = asc_Range( leftCol, topRow, rightcol, bottomRow );
worksheet._drawGrid( drawingCtx, r_); worksheet._drawGrid( drawingCtx, r_);
worksheet._drawCells(r_); worksheet._drawCells(r_);
worksheet._drawCellsBorders(undefined, r_); worksheet._drawCellsBorders(undefined, r_);
} }
}
_this.raiseLayerDrawingObjects = function() { _this.raiseLayerDrawingObjects = function() {
...@@ -3337,9 +3359,6 @@ function DrawingObjects() { ...@@ -3337,9 +3359,6 @@ function DrawingObjects() {
var fvr = worksheet.getFirstVisibleRow(); var fvr = worksheet.getFirstVisibleRow();
var fvc = worksheet.getFirstVisibleCol(); var fvc = worksheet.getFirstVisibleCol();
var top = worksheet.getCellTop(0, 3) + pxToMm(1);
var left = worksheet.getCellLeft(0, 3) + pxToMm(1);
function updateHeaders() { function updateHeaders() {
worksheet._drawColumnHeaders(); worksheet._drawColumnHeaders();
worksheet._drawRowHeaders(); worksheet._drawRowHeaders();
...@@ -3355,12 +3374,16 @@ function DrawingObjects() { ...@@ -3355,12 +3374,16 @@ function DrawingObjects() {
else { else {
var bRedraw = false; var bRedraw = false;
for (var i = 0; i < aObjects.length; i++) { for (var i = 0; i < aObjects.length; i++) {
var obj = aObjects[i];
if ( (obj.from.col < fvc) || (obj.from.row < fvr) ) { var checker = _this.getBoundsChecker(aObjects[i]);
var coords = _this.getBoundsCheckerCoords(checker);
if ( coords ) {
if ( (coords.c1 < fvc) || (coords.r1 < fvr) ) {
bRedraw = true; bRedraw = true;
break; break;
} }
} }
}
if ( bRedraw ) if ( bRedraw )
updateHeaders(); updateHeaders();
} }
...@@ -3544,8 +3567,6 @@ function DrawingObjects() { ...@@ -3544,8 +3567,6 @@ function DrawingObjects() {
} }
else if ( isObject(chart) && chart["binary"] ) { else if ( isObject(chart) && chart["binary"] ) {
//try {
History.TurnOff(); History.TurnOff();
var graphicObject = new CChartAsGroup(null, _this); var graphicObject = new CChartAsGroup(null, _this);
graphicObject.setChartBinary(chart["binary"]); graphicObject.setChartBinary(chart["binary"]);
...@@ -3650,11 +3671,6 @@ function DrawingObjects() { ...@@ -3650,11 +3671,6 @@ function DrawingObjects() {
} }
worksheet._updateCellsRange(graphicObject.chart.range.intervalObject.getBBox0()); worksheet._updateCellsRange(graphicObject.chart.range.intervalObject.getBBox0());
History.TurnOn(); History.TurnOn();
/*}
catch (e) {
e.message = "Error paste chart";
Exception(e);
}*/
} }
} }
...@@ -4258,6 +4274,8 @@ function DrawingObjects() { ...@@ -4258,6 +4274,8 @@ function DrawingObjects() {
scrollOffset.x -= x_px; scrollOffset.x -= x_px;
scrollOffset.y -= y_px; scrollOffset.y -= y_px;
scrollOffset.x0 -= x_px;
scrollOffset.y0 -= y_px;
shapeCtx.m_oCoordTransform.tx = scrollOffset.x; shapeCtx.m_oCoordTransform.tx = scrollOffset.x;
shapeCtx.m_oCoordTransform.ty = scrollOffset.y; shapeCtx.m_oCoordTransform.ty = scrollOffset.y;
......
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