Commit 1a3a5255 authored by Oleg.Korshul's avatar Oleg.Korshul

1) ПОЛНОСТЬЮ изменена отрисовка страниц. Теперь полсекунды (или сразу) будет...

1) ПОЛНОСТЬЮ изменена отрисовка страниц. Теперь полсекунды (или сразу) будет рисоваться старая. А не сразу белая. Разница заметна на зафризеных страницах.
2) включена клавиатура для зафризеных страниц

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@65332 954022d7-b5bf-4e40-9824-e11837661b57
parent cdce3f82
......@@ -1006,7 +1006,32 @@ function CDrawingPage()
this.bottom = 0;
this.cachedImage = null;
this.IsRecalculate = false;
this.RecalculateTime = -1;
}
CDrawingPage.prototype =
{
SetRepaint : function(cache_manager)
{
if (this.cachedImage != null && this.cachedImage.image != null)
{
this.IsRecalculate = true;
if (-1 == this.RecalculateTime)
this.RecalculateTime = new Date().getTime();
return;
}
this.UnLock(cache_manager);
},
UnLock : function(cache_manager)
{
cache_manager.UnLock(this.cachedImage);
this.cachedImage = null;
this.IsRecalculate = false;
this.RecalculateTime = -1;
}
};
function CPage()
{
......@@ -1849,11 +1874,7 @@ function CDrawingDocument()
if (!page)
return;
if (null != page.drawingPage.cachedImage)
{
this.m_oCacheManager.UnLock(page.drawingPage.cachedImage);
page.drawingPage.cachedImage = null;
}
page.drawingPage.SetRepaint(this.m_oCacheManager);
// перерисовать, если только страница видна на экране
if (index >= this.m_lDrawingFirst && index <= this.m_lDrawingEnd)
......@@ -1903,11 +1924,7 @@ function CDrawingDocument()
page.index = index;
if (null != page.drawingPage.cachedImage)
{
this.m_oCacheManager.UnLock(page.drawingPage.cachedImage);
page.drawingPage.cachedImage = null;
}
page.drawingPage.SetRepaint(this.m_oCacheManager);
// ������ ���� ��� �������� �� ������ - �� ����� ������� ���������
if (index >= this.m_lDrawingFirst && index <= this.m_lDrawingEnd)
......@@ -1931,11 +1948,7 @@ function CDrawingDocument()
for (var index = this.m_lCountCalculatePages; index < this.m_lPagesCount; index++)
{
var page = this.m_arrPages[index];
if (null != page.drawingPage.cachedImage)
{
this.m_oCacheManager.UnLock(page.drawingPage.cachedImage);
page.drawingPage.cachedImage = null;
}
page.drawingPage.SetRepaint(this.m_oCacheManager);
}
this.m_bIsBreakRecalculate = (isFull === true) ? false : true;
......@@ -2025,6 +2038,30 @@ function CDrawingDocument()
this.m_oWordControl.OnScroll();
}
this.CheckRecalculatePage = function(width, height, pageIndex)
{
var _drawingPage = this.m_arrPages[pageIndex].drawingPage;
var isUnlock = false;
if (_drawingPage.cachedImage != null && _drawingPage.cachedImage.image != null && (width != _drawingPage.cachedImage.image.width || height != _drawingPage.cachedImage.image.height))
isUnlock = true;
if (_drawingPage.IsRecalculate)
{
if (this.IsFreezePage(pageIndex))
{
if ((Math.abs(_drawingPage.RecalculateTime - (new Date().getTime())) > 500 /*0.5 sec*/))
isUnlock = true;
}
else
{
isUnlock = true;
}
}
if (isUnlock)
_drawingPage.UnLock(this.m_oCacheManager);
}
this.StartRenderingPage = function(pageIndex)
{
if (true === this.IsFreezePage(pageIndex))
......@@ -2062,6 +2099,7 @@ function CDrawingDocument()
}
}
page.drawingPage.UnLock(this.m_oCacheManager);
page.drawingPage.cachedImage = this.m_oCacheManager.Lock(w, h);
//var StartTime = new Date().getTime();
......@@ -2181,18 +2219,17 @@ function CDrawingDocument()
{
if (null != this.m_oDocumentRenderer)
this.m_oDocumentRenderer.stopRenderingPage(pageIndex);
if (null != this.m_arrPages[pageIndex].drawingPage.cachedImage)
{
this.m_oCacheManager.UnLock(this.m_arrPages[pageIndex].drawingPage.cachedImage);
this.m_arrPages[pageIndex].drawingPage.cachedImage = null;
}
this.m_arrPages[pageIndex].drawingPage.UnLock(this.m_oCacheManager);
}
this.ClearCachePages = function()
{
for (var i = 0; i < this.m_lPagesCount; i++)
{
this.StopRenderingPage(i);
var page = this.m_arrPages[i];
if (page)
page.drawingPage.SetRepaint(this.m_oCacheManager);
}
}
......
......@@ -2372,11 +2372,13 @@ function CEditorPage(api)
}
return;
}
/*
if (oWordControl.m_oDrawingDocument.IsFreezePage(oWordControl.m_oDrawingDocument.m_lCurrentPage))
{
e.preventDefault();
return;
}
*/
/*
if (oWordControl.m_oApi.isViewMode)
{
......@@ -2603,8 +2605,10 @@ function CEditorPage(api)
return;
}
/*
if (oWordControl.m_oDrawingDocument.IsFreezePage(oWordControl.m_oDrawingDocument.m_lCurrentPage))
return;
*/
check_KeyboardEvent(e);
......@@ -3422,25 +3426,26 @@ function CEditorPage(api)
this.m_oDrawingDocument.StopRenderingPage(i);
}
if (null == drawPage.cachedImage)
var __x = drawPage.left;
var __y = drawPage.top;
var __w = drawPage.right - __x;
var __h = drawPage.bottom - __y;
if (this.bIsRetinaSupport)
{
this.m_oDrawingDocument.StartRenderingPage(i);
__x <<= 1;
__y <<= 1;
__w <<= 1;
__h <<= 1;
}
if (!this.bIsRetinaSupport)
{
this.m_oDrawingDocument.m_arrPages[i].Draw(context, drawPage.left, drawPage.top, drawPage.right - drawPage.left, drawPage.bottom - drawPage.top);
//this.m_oBoundsController.CheckRect(drawPage.left, drawPage.top, drawPage.right - drawPage.left, drawPage.bottom - drawPage.top);
}
else
this.m_oDrawingDocument.CheckRecalculatePage(__w, __h, i);
if (null == drawPage.cachedImage)
{
var __x = drawPage.left << 1;
var __y = drawPage.top << 1;
var __w = (drawPage.right << 1) - __x;
var __h = (drawPage.bottom << 1) - __y;
this.m_oDrawingDocument.m_arrPages[i].Draw(context, __x, __y, __w, __h);
//this.m_oBoundsController.CheckRect(__x, __y, __w, __h);
this.m_oDrawingDocument.StartRenderingPage(i);
}
this.m_oDrawingDocument.m_arrPages[i].Draw(context, __x, __y, __w, __h);
//this.m_oBoundsController.CheckRect(__x, __y, __w, __h);
}
}
......
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