Commit 91ecd1a8 authored by Alexander.Trofimov's avatar Alexander.Trofimov

pageOptions -> pageSetup

parent 68664c45
......@@ -1637,8 +1637,8 @@
var maxRows = this.model.getRowsCount();
var lastC = -1, lastR = -1;
var activeRange = printOnlySelection ? this.activeRange : null;
var bFitToWidth = pageOptions.asc_getFitToWidth();
var bFitToHeight = pageOptions.asc_getFitToHeight();
var bFitToWidth = false;
var bFitToHeight = false;
if (null === activeRange) {
range = new asc_Range(0, 0, maxCols, maxRows);
......@@ -1687,226 +1687,228 @@
if (pageSetup instanceof asc_CPageSetup) {
pageWidth = pageSetup.asc_getWidth();
pageHeight = pageSetup.asc_getHeight();
pageOrientation = pageSetup.asc_getOrientation();
}
var pageLeftField, pageRightField, pageTopField, pageBottomField;
if (pageMargins instanceof asc_CPageMargins) {
pageLeftField = pageMargins.asc_getLeft();
pageRightField = pageMargins.asc_getRight();
pageTopField = pageMargins.asc_getTop();
pageBottomField = pageMargins.asc_getBottom();
}
if (null == pageGridLines) {
pageGridLines = c_oAscPrintDefaultSettings.PageGridLines;
}
if (null == pageHeadings) {
pageHeadings = c_oAscPrintDefaultSettings.PageHeadings;
}
if (null == pageWidth) {
pageWidth = c_oAscPrintDefaultSettings.PageWidth;
}
if (null == pageHeight) {
pageHeight = c_oAscPrintDefaultSettings.PageHeight;
}
if (null == pageOrientation) {
pageOrientation = c_oAscPrintDefaultSettings.PageOrientation;
}
if (null == pageLeftField) {
pageLeftField = c_oAscPrintDefaultSettings.PageLeftField;
}
if (null == pageRightField) {
pageRightField = c_oAscPrintDefaultSettings.PageRightField;
}
if (null == pageTopField) {
pageTopField = c_oAscPrintDefaultSettings.PageTopField;
}
if (null == pageBottomField) {
pageBottomField = c_oAscPrintDefaultSettings.PageBottomField;
}
if (c_oAscPageOrientation.PageLandscape === pageOrientation) {
var tmp = pageWidth;
pageWidth = pageHeight;
pageHeight = tmp;
}
var arrResult = [];
if (0 === maxCols || 0 === maxRows) {
// Ничего нет, возвращаем пустой массив
return null;
} else {
var pageWidthWithFields = pageWidth - pageLeftField - pageRightField;
var pageHeightWithFields = pageHeight - pageTopField - pageBottomField;
var leftFieldInPt = pageLeftField / vector_koef;
var topFieldInPt = pageTopField / vector_koef;
var rightFieldInPt = pageRightField / vector_koef;
var bottomFieldInPt = pageBottomField / vector_koef;
if (pageHeadings) {
// Рисуем заголовки, нужно чуть сдвинуться
leftFieldInPt += this.cellsLeft;
topFieldInPt += this.cellsTop;
}
var pageWidthWithFieldsHeadings = (pageWidth - pageRightField) / vector_koef - leftFieldInPt;
var pageHeightWithFieldsHeadings = (pageHeight - pageBottomField) / vector_koef - topFieldInPt;
var currentColIndex = (null !== activeRange) ? activeRange.c1 : 0;
var currentWidth = 0;
var currentRowIndex = (null !== activeRange) ? activeRange.r1 : 0;
var currentHeight = 0;
var isCalcColumnsWidth = true;
var bIsAddOffset = false;
var nCountOffset = 0;
while (true) {
if (currentColIndex === maxCols && currentRowIndex === maxRows) {
break;
}
var newPagePrint = new asc_CPagePrint();
var colIndex = currentColIndex, rowIndex = currentRowIndex;
newPagePrint.indexWorksheet = indexWorksheet;
newPagePrint.pageWidth = pageWidth;
newPagePrint.pageHeight = pageHeight;
newPagePrint.pageClipRectLeft = pageLeftField / vector_koef;
newPagePrint.pageClipRectTop = pageTopField / vector_koef;
newPagePrint.pageClipRectWidth = pageWidthWithFields / vector_koef;
newPagePrint.pageClipRectHeight = pageHeightWithFields / vector_koef;
newPagePrint.leftFieldInPt = leftFieldInPt;
newPagePrint.topFieldInPt = topFieldInPt;
newPagePrint.rightFieldInPt = rightFieldInPt;
newPagePrint.bottomFieldInPt = bottomFieldInPt;
for (rowIndex = currentRowIndex; rowIndex < maxRows; ++rowIndex) {
var currentRowHeight = this.rows[rowIndex].height;
if (!bFitToHeight && currentHeight + currentRowHeight > pageHeightWithFieldsHeadings) {
// Закончили рисовать страницу
break;
}
if (isCalcColumnsWidth) {
for (colIndex = currentColIndex; colIndex < maxCols; ++colIndex) {
var currentColWidth = this.cols[colIndex].width;
if (bIsAddOffset) {
newPagePrint.startOffset = ++nCountOffset;
newPagePrint.startOffsetPt = (pageWidthWithFieldsHeadings * newPagePrint.startOffset);
currentColWidth -= newPagePrint.startOffsetPt;
}
if (!bFitToWidth && currentWidth + currentColWidth > pageWidthWithFieldsHeadings &&
colIndex !== currentColIndex) {
break;
}
currentWidth += currentColWidth;
if (!bFitToWidth && currentWidth > pageWidthWithFieldsHeadings &&
colIndex === currentColIndex) {
// Смещаем в селедующий раз ячейку
bIsAddOffset = true;
++colIndex;
break;
} else {
bIsAddOffset = false;
}
}
isCalcColumnsWidth = false;
if (pageHeadings) {
currentWidth += this.cellsLeft;
}
if (bFitToWidth) {
newPagePrint.pageClipRectWidth = Math.max(currentWidth, newPagePrint.pageClipRectWidth);
newPagePrint.pageWidth =
newPagePrint.pageClipRectWidth * vector_koef + (pageLeftField + pageRightField);
} else {
newPagePrint.pageClipRectWidth = Math.min(currentWidth, newPagePrint.pageClipRectWidth);
}
}
currentHeight += currentRowHeight;
currentWidth = 0;
}
if (bFitToHeight) {
newPagePrint.pageClipRectHeight = Math.max(currentHeight, newPagePrint.pageClipRectHeight);
newPagePrint.pageHeight =
newPagePrint.pageClipRectHeight * vector_koef + (pageTopField + pageBottomField);
}
// Нужно будет пересчитывать колонки
isCalcColumnsWidth = true;
// Рисуем сетку
if (pageGridLines) {
newPagePrint.pageGridLines = true;
}
if (pageHeadings) {
// Нужно отрисовать заголовки
newPagePrint.pageHeadings = true;
}
newPagePrint.pageRange = new asc_Range(currentColIndex, currentRowIndex, colIndex - 1, rowIndex - 1);
if (bIsAddOffset) {
// Мы еще не дорисовали колонку
colIndex -= 1;
} else {
nCountOffset = 0;
}
if (colIndex < maxCols) {
// Мы еще не все колонки отрисовали
currentColIndex = colIndex;
currentHeight = 0;
} else {
// Мы дорисовали все колонки, нужна новая строка и стартовая колонка
currentColIndex = (null !== activeRange) ? activeRange.c1 : 0;
currentRowIndex = rowIndex;
currentHeight = 0;
}
if (rowIndex === maxRows) {
// Мы вышли, т.к. дошли до конца отрисовки по строкам
if (colIndex < maxCols) {
currentColIndex = colIndex;
currentHeight = 0;
} else {
// Мы дошли до конца отрисовки
currentColIndex = colIndex;
currentRowIndex = rowIndex;
}
}
arrResult.push(newPagePrint);
}
}
return arrResult;
};
WorksheetView.prototype.drawForPrint = function ( drawingCtx, printPagesData ) {
pageOrientation = pageSetup.asc_getOrientation();
bFitToWidth = pageSetup.asc_getFitToWidth();
bFitToHeight = pageSetup.asc_getFitToHeight();
}
var pageLeftField, pageRightField, pageTopField, pageBottomField;
if (pageMargins instanceof asc_CPageMargins) {
pageLeftField = pageMargins.asc_getLeft();
pageRightField = pageMargins.asc_getRight();
pageTopField = pageMargins.asc_getTop();
pageBottomField = pageMargins.asc_getBottom();
}
if (null == pageGridLines) {
pageGridLines = c_oAscPrintDefaultSettings.PageGridLines;
}
if (null == pageHeadings) {
pageHeadings = c_oAscPrintDefaultSettings.PageHeadings;
}
if (null == pageWidth) {
pageWidth = c_oAscPrintDefaultSettings.PageWidth;
}
if (null == pageHeight) {
pageHeight = c_oAscPrintDefaultSettings.PageHeight;
}
if (null == pageOrientation) {
pageOrientation = c_oAscPrintDefaultSettings.PageOrientation;
}
if (null == pageLeftField) {
pageLeftField = c_oAscPrintDefaultSettings.PageLeftField;
}
if (null == pageRightField) {
pageRightField = c_oAscPrintDefaultSettings.PageRightField;
}
if (null == pageTopField) {
pageTopField = c_oAscPrintDefaultSettings.PageTopField;
}
if (null == pageBottomField) {
pageBottomField = c_oAscPrintDefaultSettings.PageBottomField;
}
if (c_oAscPageOrientation.PageLandscape === pageOrientation) {
var tmp = pageWidth;
pageWidth = pageHeight;
pageHeight = tmp;
}
var arrResult = [];
if (0 === maxCols || 0 === maxRows) {
// Ничего нет, возвращаем пустой массив
return null;
} else {
var pageWidthWithFields = pageWidth - pageLeftField - pageRightField;
var pageHeightWithFields = pageHeight - pageTopField - pageBottomField;
var leftFieldInPt = pageLeftField / vector_koef;
var topFieldInPt = pageTopField / vector_koef;
var rightFieldInPt = pageRightField / vector_koef;
var bottomFieldInPt = pageBottomField / vector_koef;
if (pageHeadings) {
// Рисуем заголовки, нужно чуть сдвинуться
leftFieldInPt += this.cellsLeft;
topFieldInPt += this.cellsTop;
}
var pageWidthWithFieldsHeadings = (pageWidth - pageRightField) / vector_koef - leftFieldInPt;
var pageHeightWithFieldsHeadings = (pageHeight - pageBottomField) / vector_koef - topFieldInPt;
var currentColIndex = (null !== activeRange) ? activeRange.c1 : 0;
var currentWidth = 0;
var currentRowIndex = (null !== activeRange) ? activeRange.r1 : 0;
var currentHeight = 0;
var isCalcColumnsWidth = true;
var bIsAddOffset = false;
var nCountOffset = 0;
while (true) {
if (currentColIndex === maxCols && currentRowIndex === maxRows) {
break;
}
var newPagePrint = new asc_CPagePrint();
var colIndex = currentColIndex, rowIndex = currentRowIndex;
newPagePrint.indexWorksheet = indexWorksheet;
newPagePrint.pageWidth = pageWidth;
newPagePrint.pageHeight = pageHeight;
newPagePrint.pageClipRectLeft = pageLeftField / vector_koef;
newPagePrint.pageClipRectTop = pageTopField / vector_koef;
newPagePrint.pageClipRectWidth = pageWidthWithFields / vector_koef;
newPagePrint.pageClipRectHeight = pageHeightWithFields / vector_koef;
newPagePrint.leftFieldInPt = leftFieldInPt;
newPagePrint.topFieldInPt = topFieldInPt;
newPagePrint.rightFieldInPt = rightFieldInPt;
newPagePrint.bottomFieldInPt = bottomFieldInPt;
for (rowIndex = currentRowIndex; rowIndex < maxRows; ++rowIndex) {
var currentRowHeight = this.rows[rowIndex].height;
if (!bFitToHeight && currentHeight + currentRowHeight > pageHeightWithFieldsHeadings) {
// Закончили рисовать страницу
break;
}
if (isCalcColumnsWidth) {
for (colIndex = currentColIndex; colIndex < maxCols; ++colIndex) {
var currentColWidth = this.cols[colIndex].width;
if (bIsAddOffset) {
newPagePrint.startOffset = ++nCountOffset;
newPagePrint.startOffsetPt = (pageWidthWithFieldsHeadings * newPagePrint.startOffset);
currentColWidth -= newPagePrint.startOffsetPt;
}
if (!bFitToWidth && currentWidth + currentColWidth > pageWidthWithFieldsHeadings &&
colIndex !== currentColIndex) {
break;
}
currentWidth += currentColWidth;
if (!bFitToWidth && currentWidth > pageWidthWithFieldsHeadings &&
colIndex === currentColIndex) {
// Смещаем в селедующий раз ячейку
bIsAddOffset = true;
++colIndex;
break;
} else {
bIsAddOffset = false;
}
}
isCalcColumnsWidth = false;
if (pageHeadings) {
currentWidth += this.cellsLeft;
}
if (bFitToWidth) {
newPagePrint.pageClipRectWidth = Math.max(currentWidth, newPagePrint.pageClipRectWidth);
newPagePrint.pageWidth =
newPagePrint.pageClipRectWidth * vector_koef + (pageLeftField + pageRightField);
} else {
newPagePrint.pageClipRectWidth = Math.min(currentWidth, newPagePrint.pageClipRectWidth);
}
}
currentHeight += currentRowHeight;
currentWidth = 0;
}
if (bFitToHeight) {
newPagePrint.pageClipRectHeight = Math.max(currentHeight, newPagePrint.pageClipRectHeight);
newPagePrint.pageHeight =
newPagePrint.pageClipRectHeight * vector_koef + (pageTopField + pageBottomField);
}
// Нужно будет пересчитывать колонки
isCalcColumnsWidth = true;
// Рисуем сетку
if (pageGridLines) {
newPagePrint.pageGridLines = true;
}
if (pageHeadings) {
// Нужно отрисовать заголовки
newPagePrint.pageHeadings = true;
}
newPagePrint.pageRange = new asc_Range(currentColIndex, currentRowIndex, colIndex - 1, rowIndex - 1);
if (bIsAddOffset) {
// Мы еще не дорисовали колонку
colIndex -= 1;
} else {
nCountOffset = 0;
}
if (colIndex < maxCols) {
// Мы еще не все колонки отрисовали
currentColIndex = colIndex;
currentHeight = 0;
} else {
// Мы дорисовали все колонки, нужна новая строка и стартовая колонка
currentColIndex = (null !== activeRange) ? activeRange.c1 : 0;
currentRowIndex = rowIndex;
currentHeight = 0;
}
if (rowIndex === maxRows) {
// Мы вышли, т.к. дошли до конца отрисовки по строкам
if (colIndex < maxCols) {
currentColIndex = colIndex;
currentHeight = 0;
} else {
// Мы дошли до конца отрисовки
currentColIndex = colIndex;
currentRowIndex = rowIndex;
}
}
arrResult.push(newPagePrint);
}
}
return arrResult;
};
WorksheetView.prototype.drawForPrint = function(drawingCtx, printPagesData) {
var isAppBridge = (undefined != window['appBridge']);
if ( null === printPagesData ) {
if (null === printPagesData) {
// Напечатаем пустую страницу
drawingCtx.BeginPage( c_oAscPrintDefaultSettings.PageWidth, c_oAscPrintDefaultSettings.PageHeight );
drawingCtx.BeginPage(c_oAscPrintDefaultSettings.PageWidth, c_oAscPrintDefaultSettings.PageHeight);
drawingCtx.EndPage();
}
else {
drawingCtx.BeginPage( printPagesData.pageWidth, printPagesData.pageHeight );
drawingCtx.AddClipRect( printPagesData.pageClipRectLeft, printPagesData.pageClipRectTop, printPagesData.pageClipRectWidth, printPagesData.pageClipRectHeight );
} else {
drawingCtx.BeginPage(printPagesData.pageWidth, printPagesData.pageHeight);
drawingCtx.AddClipRect(printPagesData.pageClipRectLeft, printPagesData.pageClipRectTop,
printPagesData.pageClipRectWidth, printPagesData.pageClipRectHeight);
if ( isAppBridge ) {
if (isAppBridge) {
window['appBridge']['dummyCommandUpdate']();
}
......@@ -1919,43 +1921,46 @@
// Сменим visibleRange для прохождения проверок отрисовки
this.visibleRange = range;
if ( isAppBridge ) {
if (isAppBridge) {
window['appBridge']['dummyCommandUpdate']();
}
// Нужно отрисовать заголовки
if ( printPagesData.pageHeadings ) {
this._drawColumnHeaders( drawingCtx, range.c1, range.c2, /*style*/ undefined, offsetX, printPagesData.topFieldInPt - this.cellsTop );
this._drawRowHeaders( drawingCtx, range.r1, range.r2, /*style*/ undefined, printPagesData.leftFieldInPt - this.cellsLeft, offsetY );
if (printPagesData.pageHeadings) {
this._drawColumnHeaders(drawingCtx, range.c1, range.c2, /*style*/ undefined, offsetX,
printPagesData.topFieldInPt - this.cellsTop);
this._drawRowHeaders(drawingCtx, range.r1, range.r2, /*style*/ undefined,
printPagesData.leftFieldInPt - this.cellsLeft, offsetY);
}
if ( isAppBridge ) {
if (isAppBridge) {
window['appBridge']['dummyCommandUpdate']();
}
// Рисуем сетку
if ( printPagesData.pageGridLines ) {
this._drawGrid( drawingCtx, range, offsetX, offsetY, printPagesData.pageWidth / vector_koef, printPagesData.pageHeight / vector_koef );
if (printPagesData.pageGridLines) {
this._drawGrid(drawingCtx, range, offsetX, offsetY, printPagesData.pageWidth / vector_koef,
printPagesData.pageHeight / vector_koef);
}
if ( isAppBridge ) {
if (isAppBridge) {
window['appBridge']['dummyCommandUpdate']();
}
// Отрисовываем ячейки и бордеры
this._drawCellsAndBorders( drawingCtx, range, offsetX, offsetY );
this._drawCellsAndBorders(drawingCtx, range, offsetX, offsetY);
if ( isAppBridge ) {
if (isAppBridge) {
window['appBridge']['dummyCommandUpdate']();
}
var drawingPrintOptions = {
ctx: drawingCtx, printPagesData: printPagesData
};
this.objectRender.showDrawingObjectsEx( false, null, drawingPrintOptions );
this.objectRender.showDrawingObjectsEx(false, null, drawingPrintOptions);
this.visibleRange = tmpVisibleRange;
if ( isAppBridge ) {
if (isAppBridge) {
window['appBridge']['dummyCommandUpdate']();
}
......
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