Commit 345b30fd authored by Oleg.Korshul's avatar Oleg.Korshul

поиск в пдф по новой схеме

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@51389 954022d7-b5bf-4e40-9824-e11837661b57
parent b728f4ca
......@@ -2107,6 +2107,10 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
this.IsFocus = isEnabled;
},
asc_searchEnabled: function(bIsEnabled)
{
},
asc_findText: function (text, scanByRows, scanForward, isMatchCase, isWholeCell) {
var d = this.wb.findCellText({text: text, scanByRows: scanByRows, scanForward: scanForward,
isMatchCase: isMatchCase, isWholeCell: isWholeCell, isNotSelect: false});
......@@ -3335,6 +3339,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
prot["asc_getZoom"] = prot.asc_getZoom;
prot["asc_setZoom"] = prot.asc_setZoom;
prot["asc_enableKeyEvents"] = prot.asc_enableKeyEvents;
prot["asc_searchEnabled"] = prot.asc_searchEnabled;
prot["asc_findText"] = prot.asc_findText;
prot["asc_replaceText"] = prot.asc_replaceText;
prot["asc_findCell"] = prot.asc_findCell;
......
......@@ -116,6 +116,7 @@ prop:startSearchText
prop:goToNextSearchResult
prop:gotoSearchResultText
prop:stopSearchText
prop:asc_searchEnabled
prop:findText
prop:asc_findText
prop:sync_SearchFoundCallback
......@@ -1259,6 +1260,7 @@ asc_docs_api.prototype['startSearchText'] = asc_docs_api.prototype.startSearchTe
asc_docs_api.prototype['goToNextSearchResult'] = asc_docs_api.prototype.goToNextSearchResult;
asc_docs_api.prototype['gotoSearchResultText'] = asc_docs_api.prototype.gotoSearchResultText;
asc_docs_api.prototype['stopSearchText'] = asc_docs_api.prototype.stopSearchText;
asc_docs_api.prototype['asc_searchEnabled'] = asc_docs_api.prototype.asc_searchEnabled;
asc_docs_api.prototype['findText'] = asc_docs_api.prototype.findText;
asc_docs_api.prototype['asc_findText'] = asc_docs_api.prototype.asc_findText;
asc_docs_api.prototype['sync_SearchFoundCallback'] = asc_docs_api.prototype.sync_SearchFoundCallback;
......
......@@ -1584,6 +1584,10 @@ asc_docs_api.prototype.findText = function(text, scanForward){
return this.WordControl.m_oLogicDocument.findText(text, scanForward);
}
asc_docs_api.prototype.asc_searchEnabled = function(bIsEnabled)
{
// пустой метод
}
asc_docs_api.prototype.asc_findText = function(text, isNext, isMatchCase)
{
......
......@@ -277,6 +277,7 @@ prop:GetActiveHeader
prop:gotoHeader
prop:sync_ChangeActiveHeaderCallback
prop:sync_ReturnHeadersCallback
prop:asc_searchEnabled
prop:asc_findText
prop:asc_replaceText
prop:asc_selectSearchingResults
......@@ -1359,6 +1360,7 @@ asc_docs_api.prototype['GetActiveHeader'] = asc_docs_api.prototype.GetActiveHead
asc_docs_api.prototype['gotoHeader'] = asc_docs_api.prototype.gotoHeader;
asc_docs_api.prototype['sync_ChangeActiveHeaderCallback'] = asc_docs_api.prototype.sync_ChangeActiveHeaderCallback;
asc_docs_api.prototype['sync_ReturnHeadersCallback'] = asc_docs_api.prototype.sync_ReturnHeadersCallback;
asc_docs_api.prototype['asc_searchEnabled'] = asc_docs_api.prototype.asc_searchEnabled;
asc_docs_api.prototype['asc_findText'] = asc_docs_api.prototype.asc_findText;
asc_docs_api.prototype['asc_replaceText'] = asc_docs_api.prototype.asc_replaceText;
asc_docs_api.prototype['asc_selectSearchingResults'] = asc_docs_api.prototype.asc_selectSearchingResults;
......
......@@ -1182,6 +1182,78 @@ function CPage()
}
}
this.DrawSearch2 = function(overlay, xDst, yDst, wDst, hDst, _searching)
{
var dKoefX = wDst / this.width_mm;
var dKoefY = hDst / this.height_mm;
var ctx = overlay.m_oContext;
for (var i = 0; i < _searching.length; i++)
{
var _find_count = _searching[i].length;
for (var j = 0; j < _find_count; j++)
{
var place = _searching[i][j];
if (!place.Transform)
{
if (undefined === place.Ex)
{
var _x = ((xDst + dKoefX * place.X) >> 0) - 0.5;
var _y = ((yDst + dKoefY * place.Y) >> 0) - 0.5;
var _w = ((dKoefX * place.W) >> 0) + 1;
var _h = ((dKoefY * place.H) >> 0) + 1;
if (_x < overlay.min_x)
overlay.min_x = _x;
if ((_x + _w) > overlay.max_x)
overlay.max_x = _x + _w;
if (_y < overlay.min_y)
overlay.min_y = _y;
if ((_y + _h) > overlay.max_y)
overlay.max_y = _y + _h;
ctx.rect(_x,_y,_w,_h);
}
else
{
var _x1 = (xDst + dKoefX * place.X) >> 0;
var _y1 = (yDst + dKoefY * place.Y) >> 0;
var x2 = place.X + place.W * place.Ex;
var y2 = place.Y + place.W * place.Ey;
var _x2 = (xDst + dKoefX * x2) >> 0;
var _y2 = (yDst + dKoefY * y2) >> 0;
var x3 = x2 - place.H * place.Ey;
var y3 = y2 + place.H * place.Ex;
var _x3 = (xDst + dKoefX * x3) >> 0;
var _y3 = (yDst + dKoefY * y3) >> 0;
var x4 = place.X - place.H * place.Ey;
var y4 = place.Y + place.H * place.Ex;
var _x4 = (xDst + dKoefX * x4) >> 0;
var _y4 = (yDst + dKoefY * y4) >> 0;
overlay.CheckPoint(_x1, _y1);
overlay.CheckPoint(_x2, _y2);
overlay.CheckPoint(_x3, _y3);
overlay.CheckPoint(_x4, _y4);
ctx.moveTo(_x1, _y1);
ctx.lineTo(_x2, _y2);
ctx.lineTo(_x3, _y3);
ctx.lineTo(_x4, _y4);
ctx.lineTo(_x1, _y1);
}
}
}
}
}
this.drawInHdrFtr = function(overlay, xDst, yDst, wDst, hDst, dKoefX, dKoefY, arr)
{
var _c = arr.length;
......@@ -1314,143 +1386,15 @@ function CPage()
return true;
}
this.DrawSearchCur1 = function(overlay, xDst, yDst, wDst, hDst, place)
this.DrawSearchCur = function(overlay, xDst, yDst, wDst, hDst, places)
{
var dKoefX = wDst / this.width_mm;
var dKoefY = hDst / this.height_mm;
var ctx = overlay.m_oContext;
if (!place.Transform)
{
if (undefined === place.Ex)
{
var _x = ((xDst + dKoefX * place.X) >> 0) - 0.5;
var _y = ((yDst + dKoefY * place.Y) >> 0) - 0.5;
var _w = ((dKoefX * place.W) >> 0) + 1;
var _h = ((dKoefY * place.H) >> 0) + 1;
if (_x < overlay.min_x)
overlay.min_x = _x;
if ((_x + _w) > overlay.max_x)
overlay.max_x = _x + _w;
if (_y < overlay.min_y)
overlay.min_y = _y;
if ((_y + _h) > overlay.max_y)
overlay.max_y = _y + _h;
ctx.rect(_x,_y,_w,_h);
}
else
{
var _x1 = (xDst + dKoefX * place.X) >> 0;
var _y1 = (yDst + dKoefY * place.Y) >> 0;
var x2 = place.X + place.W * place.Ex;
var y2 = place.Y + place.W * place.Ey;
var _x2 = (xDst + dKoefX * x2) >> 0;
var _y2 = (yDst + dKoefY * y2) >> 0;
var x3 = x2 - place.H * place.Ey;
var y3 = y2 + place.H * place.Ex;
var _x3 = (xDst + dKoefX * x3) >> 0;
var _y3 = (yDst + dKoefY * y3) >> 0;
var x4 = place.X - place.H * place.Ey;
var y4 = place.Y + place.H * place.Ex;
var _x4 = (xDst + dKoefX * x4) >> 0;
var _y4 = (yDst + dKoefY * y4) >> 0;
overlay.CheckPoint(_x1, _y1);
overlay.CheckPoint(_x2, _y2);
overlay.CheckPoint(_x3, _y3);
overlay.CheckPoint(_x4, _y4);
ctx.moveTo(_x1, _y1);
ctx.lineTo(_x2, _y2);
ctx.lineTo(_x3, _y3);
ctx.lineTo(_x4, _y4);
ctx.lineTo(_x1, _y1);
}
}
else
{
var _tr = place.Transform;
if (undefined === place.Ex)
{
var _x1 = xDst + dKoefX * _tr.TransformPointX(place.X, place.Y);
var _y1 = yDst + dKoefY * _tr.TransformPointY(place.X, place.Y);
var _x2 = xDst + dKoefX * _tr.TransformPointX(place.X + place.W, place.Y);
var _y2 = yDst + dKoefY * _tr.TransformPointY(place.X + place.W, place.Y);
var _x3 = xDst + dKoefX * _tr.TransformPointX(place.X + place.W, place.Y + place.H);
var _y3 = yDst + dKoefY * _tr.TransformPointY(place.X + place.W, place.Y + place.H);
var _x4 = xDst + dKoefX * _tr.TransformPointX(place.X, place.Y + place.H);
var _y4 = yDst + dKoefY * _tr.TransformPointY(place.X, place.Y + place.H);
overlay.CheckPoint(_x1, _y1);
overlay.CheckPoint(_x2, _y2);
overlay.CheckPoint(_x3, _y3);
overlay.CheckPoint(_x4, _y4);
ctx.moveTo(_x1, _y1);
ctx.lineTo(_x2, _y2);
ctx.lineTo(_x3, _y3);
ctx.lineTo(_x4, _y4);
ctx.lineTo(_x1, _y1);
}
else
{
var x2 = place.X + place.W * place.Ex;
var y2 = place.Y + place.W * place.Ey;
var x3 = x2 - place.H * place.Ey;
var y3 = y2 + place.H * place.Ex;
var x4 = place.X - place.H * place.Ey;
var y4 = place.Y + place.H * place.Ex;
var _x1 = xDst + dKoefX * _tr.TransformPointX(place.X, place.Y);
var _y1 = yDst + dKoefY * _tr.TransformPointY(place.X, place.Y);
var _x2 = xDst + dKoefX * _tr.TransformPointX(x2, y2);
var _y2 = yDst + dKoefY * _tr.TransformPointY(x2, y2);
var _x3 = xDst + dKoefX * _tr.TransformPointX(x3, y3);
var _y3 = yDst + dKoefY * _tr.TransformPointY(x3, y3);
var _x4 = xDst + dKoefX * _tr.TransformPointX(x4, y4);
var _y4 = yDst + dKoefY * _tr.TransformPointY(x4, y4);
overlay.CheckPoint(_x1, _y1);
overlay.CheckPoint(_x2, _y2);
overlay.CheckPoint(_x3, _y3);
overlay.CheckPoint(_x4, _y4);
ctx.moveTo(_x1, _y1);
ctx.lineTo(_x2, _y2);
ctx.lineTo(_x3, _y3);
ctx.lineTo(_x4, _y4);
ctx.lineTo(_x1, _y1);
}
}
}
this.DrawSearchCur = function(overlay, xDst, yDst, wDst, hDst, navi)
{
var dKoefX = wDst / this.width_mm;
var dKoefY = hDst / this.height_mm;
var places = navi.Place;
var len = places.length;
var ctx = overlay.m_oContext;
ctx.globalAlpha = 0.2;
ctx.fillStyle = "rgba(51,102,204,255)";
for (var i = 0; i < len; i++)
......@@ -1510,7 +1454,7 @@ function CPage()
}
ctx.fill();
ctx.globalAlpha = 1.0;
ctx.beginPath();
}
this.DrawTableOutline = function(overlay, xDst, yDst, wDst, hDst, table_outline_dr)
......@@ -3016,12 +2960,6 @@ function CDrawingDocument()
}
this.CheckTargetDraw(x, y);
if (this.m_bIsSearching && null != this.CurrentSearchNavi)
{
this.CurrentSearchNavi = null;
this.m_oWordControl.OnUpdateOverlay();
}
}
this.UpdateTarget2 = function(x, y, pageIndex)
{
......@@ -3208,12 +3146,6 @@ function CDrawingDocument()
oThis.TargetHtmlElement.style.top = pos.Y + "px";
this.m_oWordControl.CheckTextBoxInputPos();
if (this.m_bIsSearching && null != this.CurrentSearchNavi)
{
this.CurrentSearchNavi = null;
oWordControl.OnUpdateOverlay();
}
}
this.SetTargetSize = function(size)
......@@ -3601,7 +3533,6 @@ function CDrawingDocument()
this.m_oWordControl.m_oOverlayApi.Clear();
this.m_bIsSearching = false;
this.CurrentSearchNavi = null;
}
this.AddPageSearch = function(findText, rects, type)
{
......@@ -3765,7 +3696,6 @@ function CDrawingDocument()
if (this.m_bIsSelection)
this.m_oWordControl.OnUpdateOverlay();
this.m_bIsSearching = true;
this.CurrentSearchNavi = null;
}
this.EndSearch = function(bIsChange)
{
......
......@@ -1038,72 +1038,13 @@ function CEditorPage(api)
{
var naviG = this.m_oDrawingDocument.CurrentSearchNavi;
var navi = naviG.Place[0];
var navi = naviG[0];
var x = navi.X;
var y = navi.Y;
var type = (naviG.Type & 0xFF);
var PageNum = navi.PageNum;
switch (type)
{
case search_HdrFtr_All:
{
PageNum = this.m_oDrawingDocument.m_lCurrentPage;
break;
}
case search_HdrFtr_All_no_First:
{
var curPage = this.m_oDrawingDocument.m_lCurrentPage;
if (curPage == 0)
curPage = 1;
PageNum = curPage;
break;
}
case search_HdrFtr_First:
{
PageNum = 0;
break;
}
case search_HdrFtr_Even:
{
var curPage = this.m_oDrawingDocument.m_lCurrentPage;
if ((curPage & 1) == 0)
{
if (curPage == 0)
curPage = 1;
else
curPage -= 1;
}
PageNum = curPage;
break;
}
case search_HdrFtr_Odd:
{
var curPage = this.m_oDrawingDocument.m_lCurrentPage;
if ((curPage & 1) == 1)
curPage -= 1;
PageNum = curPage;
break;
}
case search_HdrFtr_Odd_no_First:
{
var curPage = this.m_oDrawingDocument.m_lCurrentPage;
if ((curPage & 1) == 1)
curPage -= 1;
if (curPage == 0)
curPage = 2;
PageNum = curPage;
break;
}
default:
break;
}
if (navi.Transform)
{
var xx = navi.Transform.TransformPointX(x, y);
......@@ -1113,10 +1054,6 @@ function CEditorPage(api)
y = yy;
}
this.m_oDrawingDocument.CurrentSearchNavi.PageNum = PageNum;
if (PageNum < 0 || PageNum >= this.m_oDrawingDocument.m_lCountCalculatePages)
return;
var rectSize = (navi.H * this.m_nZoomValue * g_dKoef_mm_to_pix / 100);
var pos = this.m_oDrawingDocument.ConvertCoordsToCursor2(x, y, PageNum);
......@@ -2757,53 +2694,6 @@ function CEditorPage(api)
ctx.fill();
ctx.beginPath();
ctx.globalAlpha = 1.0;
if (null != drDoc.CurrentSearchNavi)
{
ctx.globalAlpha = 0.2;
ctx.fillStyle = "rgba(51,102,204,255)";
var places = drDoc.CurrentSearchNavi.Place;
switch ((drDoc.CurrentSearchNavi.Type & 0xFF))
{
case search_HdrFtr_All:
case search_HdrFtr_All_no_First:
case search_HdrFtr_First:
case search_HdrFtr_Even:
case search_HdrFtr_Odd:
case search_HdrFtr_Odd_no_First:
{
var _page_num = drDoc.CurrentSearchNavi.PageNum;
for (var i = 0; i < places.length; i++)
{
var place = places[i];
if (drDoc.m_lDrawingFirst <= _page_num && _page_num <= drDoc.m_lDrawingEnd)
{
var drawPage = drDoc.m_arrPages[_page_num].drawingPage;
drDoc.m_arrPages[place.PageNum].DrawSearchCur1(overlay, drawPage.left, drawPage.top, drawPage.right - drawPage.left, drawPage.bottom - drawPage.top, place);
}
}
break;
}
default:
{
for (var i = 0; i < places.length; i++)
{
var place = places[i];
if (drDoc.m_lDrawingFirst <= place.PageNum && place.PageNum <= drDoc.m_lDrawingEnd)
{
var drawPage = drDoc.m_arrPages[place.PageNum].drawingPage;
drDoc.m_arrPages[place.PageNum].DrawSearchCur1(overlay, drawPage.left, drawPage.top, drawPage.right - drawPage.left, drawPage.bottom - drawPage.top, place);
}
}
break;
}
}
ctx.fill();
ctx.globalAlpha = 1.0;
}
}
if (null == drDoc.m_oDocumentRenderer)
......@@ -2885,6 +2775,44 @@ function CEditorPage(api)
}
else
{
ctx.globalAlpha = 0.2;
if (drDoc.m_oDocumentRenderer.SearchResults.IsSearch)
{
this.m_oOverlayApi.Show();
if (drDoc.m_oDocumentRenderer.SearchResults.Show)
{
ctx.globalAlpha = 0.5;
ctx.fillStyle = "rgba(255,200,0,1)";
ctx.beginPath();
for (var i = drDoc.m_lDrawingFirst; i <= drDoc.m_lDrawingEnd; i++)
{
var _searching = drDoc.m_oDocumentRenderer.SearchResults.Pages[i];
if (0 != _searching.length)
{
var drawPage = drDoc.m_arrPages[i].drawingPage;
drDoc.m_arrPages[i].DrawSearch2(overlay, drawPage.left, drawPage.top, drawPage.right - drawPage.left, drawPage.bottom - drawPage.top, _searching);
}
}
ctx.fill();
ctx.globalAlpha = 0.2;
}
ctx.beginPath();
if (drDoc.CurrentSearchNavi)
{
var _pageNum = drDoc.CurrentSearchNavi[0].PageNum;
ctx.fillStyle = "rgba(51,102,204,255)";
if (_pageNum >= drDoc.m_lDrawingFirst && _pageNum <= drDoc.m_lDrawingEnd)
{
var drawPage = drDoc.m_arrPages[_pageNum].drawingPage;
drDoc.m_arrPages[_pageNum].DrawSearchCur(overlay, drawPage.left, drawPage.top, drawPage.right - drawPage.left, drawPage.bottom - drawPage.top, drDoc.CurrentSearchNavi);
}
}
}
ctx.fillStyle = "rgba(51,102,204,255)";
ctx.beginPath();
......@@ -2894,7 +2822,6 @@ function CEditorPage(api)
drDoc.m_oDocumentRenderer.DrawSelection(i, overlay, drawPage.left, drawPage.top, drawPage.right - drawPage.left, drawPage.bottom - drawPage.top);
}
ctx.globalAlpha = 0.2;
ctx.fill();
ctx.beginPath();
ctx.globalAlpha = 1.0;
......
This diff is collapsed.
......@@ -2961,8 +2961,23 @@ asc_docs_api.prototype.sync_ReturnHeadersCallback = function (headers){
}
*/
asc_docs_api.prototype.asc_searchEnabled = function(bIsEnabled)
{
if (null != this.WordControl.m_oDrawingDocument.m_oDocumentRenderer)
{
this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.SearchResults.IsSearch = false;
this.WordControl.OnUpdateOverlay();
}
}
asc_docs_api.prototype.asc_findText = function(text, isNext, isMatchCase)
{
if (null != this.WordControl.m_oDrawingDocument.m_oDocumentRenderer)
{
this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.findText(text, isMatchCase, isNext);
return this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.SearchResults.Count;
}
var SearchEngine = editor.WordControl.m_oLogicDocument.Search( text, { MatchCase : isMatchCase } );
var Id = this.WordControl.m_oLogicDocument.Search_GetId( isNext );
......@@ -2975,7 +2990,10 @@ asc_docs_api.prototype.asc_findText = function(text, isNext, isMatchCase)
asc_docs_api.prototype.asc_replaceText = function(text, replaceWith, isReplaceAll, isMatchCase)
{
editor.WordControl.m_oLogicDocument.Search( text, { MatchCase : isMatchCase } );
if (null == this.WordControl.m_oLogicDocument)
return;
this.WordControl.m_oLogicDocument.Search( text, { MatchCase : isMatchCase } );
if ( true === isReplaceAll )
this.WordControl.m_oLogicDocument.Search_Replace(replaceWith, true, -1);
......@@ -3000,11 +3018,21 @@ asc_docs_api.prototype.asc_replaceText = function(text, replaceWith, isReplaceAl
asc_docs_api.prototype.asc_selectSearchingResults = function(bShow)
{
if (null != this.WordControl.m_oDrawingDocument.m_oDocumentRenderer)
{
this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.SearchResults.Show = bShow;
this.WordControl.OnUpdateOverlay();
return;
}
this.WordControl.m_oLogicDocument.Search_Set_Selection(bShow);
}
asc_docs_api.prototype.asc_isSelectSearchingResults = function()
{
if (null != this.WordControl.m_oDrawingDocument.m_oDocumentRenderer)
{
return this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.SearchResults.Show;
}
return this.WordControl.m_oLogicDocument.Search_Get_Selection();
}
......
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