Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sdkjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
sdkjs
Commits
24d5c604
Commit
24d5c604
authored
Dec 07, 2016
by
Oleg Korshul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
8a6f5f51
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1031 additions
and
1231 deletions
+1031
-1231
common/Scrolls/mobileTouchManagerBase.js
common/Scrolls/mobileTouchManagerBase.js
+971
-4
word/Drawing/mobileTouchManager.js
word/Drawing/mobileTouchManager.js
+60
-1227
No files found.
common/Scrolls/mobileTouchManagerBase.js
View file @
24d5c604
...
...
@@ -74,11 +74,26 @@
onTouchEnd : function() {}
*/
function
CMobileDelegateSimple
(
_
api
)
function
CMobileDelegateSimple
(
_
manager
)
{
this
.
Api
=
_api
;
this
.
Manager
=
_manager
;
this
.
Api
=
_manager
.
Api
;
}
CMobileDelegateSimple
.
prototype
.
Init
=
function
()
{
this
.
Manager
.
iScroll
.
manager
=
this
.
Manager
;
this
.
Manager
.
iScroll
.
on
(
'
scroll
'
,
function
()
{
this
.
ScrollTo
(
this
);
});
this
.
Manager
.
iScroll
.
on
(
'
scrollEnd
'
,
function
()
{
this
.
ScrollEnd
(
this
);
});
};
CMobileDelegateSimple
.
prototype
.
GetSelectionTransform
=
function
()
{
return
null
;
...
...
@@ -103,6 +118,9 @@
{
return
null
;
};
CMobileDelegateSimple
.
prototype
.
SetZoom
=
function
(
_value
)
{
};
CMobileDelegateSimple
.
prototype
.
GetObjectTrack
=
function
(
x
,
y
,
page
)
{
return
false
;
...
...
@@ -111,6 +129,38 @@
{
return
AscCommon
.
MobileTouchContextMenuType
.
None
;
};
CMobileDelegateEditor
.
prototype
.
GetContextMenuPosition
=
function
()
{
return
null
;
};
CMobileDelegateSimple
.
prototype
.
GetZoomFit
=
function
()
{
return
100
;
};
CMobileDelegateSimple
.
prototype
.
GetScrollerParent
=
function
()
{
return
null
;
};
CMobileDelegateSimple
.
prototype
.
GetScrollerSize
=
function
()
{
return
{
W
:
100
,
H
:
100
};
};
CMobileDelegateSimple
.
prototype
.
ScrollTo
=
function
(
_scroll
)
{
return
;
};
CMobileDelegateSimple
.
prototype
.
ScrollEnd
=
function
(
_scroll
)
{
return
;
};
CMobileDelegateSimple
.
prototype
.
GetSelectionRectsBounds
=
function
()
{
return
this
.
LogicDocument
.
Get_SelectionBounds
();
};
CMobileDelegateSimple
.
prototype
.
IsReader
=
function
()
{
return
false
;
};
/**
* @extends {CMobileDelegateSimple}
...
...
@@ -133,7 +183,7 @@
{
return
this
.
DrawingDocument
.
ConvertCoordsToCursor
(
x
,
y
,
page
);
};
CMobileDelegate
Simple
.
prototype
.
ConvertCoordsFromCursor
=
function
(
x
,
y
)
CMobileDelegate
Editor
.
prototype
.
ConvertCoordsFromCursor
=
function
(
x
,
y
)
{
return
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
x
,
y
);
};
...
...
@@ -158,6 +208,10 @@
{
return
this
.
HtmlPage
.
m_nZoomValue
;
};
CMobileDelegateEditor
.
prototype
.
SetZoom
=
function
(
_value
)
{
this
.
HtmlPage
.
m_oApi
.
zoom
(
_value
);
};
CMobileDelegateEditor
.
prototype
.
GetObjectTrack
=
function
(
x
,
y
,
page
)
{
return
this
.
LogicDocument
.
DrawingObjects
.
isPointInDrawingObjects3
(
x
,
y
,
page
);
...
...
@@ -177,6 +231,192 @@
return
_mode
;
};
CMobileDelegateEditor
.
prototype
.
GetContextMenuPosition
=
function
()
{
var
_posX
=
0
;
var
_posY
=
0
;
var
_page
=
0
;
var
_transform
=
null
;
var
tmpX
,
tmpY
,
tmpX2
,
tmpY2
;
var
_pos
=
null
;
var
_mode
=
0
;
var
_target
=
this
.
LogicDocument
.
Is_SelectionUse
();
if
(
_target
===
false
)
{
_posX
=
this
.
DrawingDocument
.
m_dTargetX
;
_posY
=
this
.
DrawingDocument
.
m_dTargetY
;
_page
=
this
.
DrawingDocument
.
m_lTargetPage
;
_transform
=
this
.
DrawingDocument
.
TextMatrix
;
if
(
_transform
)
{
tmpX
=
_transform
.
TransformPointX
(
_posX
,
_posY
);
tmpY
=
_transform
.
TransformPointY
(
_posX
,
_posY
);
}
else
{
tmpX
=
_posX
;
tmpY
=
_posY
;
}
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
tmpX
,
tmpY
,
_page
);
_posX
=
_pos
.
X
;
_posY
=
_pos
.
Y
;
_mode
=
1
;
}
var
_select
=
this
.
LogicDocument
.
Get_SelectionBounds
();
if
(
_select
)
{
var
_rect1
=
_select
.
Start
;
var
_rect2
=
_select
.
End
;
tmpX
=
_rect1
.
X
;
tmpY
=
_rect1
.
Y
;
tmpX2
=
_rect2
.
X
+
_rect2
.
W
;
tmpY2
=
_rect2
.
Y
+
_rect2
.
H
;
_transform
=
this
.
DrawingDocument
.
SelectionMatrix
;
if
(
_transform
)
{
_posX
=
_transform
.
TransformPointX
(
tmpX
,
tmpY
);
_posY
=
_transform
.
TransformPointY
(
tmpX
,
tmpY
);
tmpX
=
_posX
;
tmpY
=
_posY
;
_posX
=
_transform
.
TransformPointX
(
tmpX2
,
tmpY2
);
_posY
=
_transform
.
TransformPointY
(
tmpX2
,
tmpY2
);
tmpX2
=
_posX
;
tmpY2
=
_posY
;
}
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
tmpX
,
tmpY
,
_rect1
.
Page
);
_posX
=
_pos
.
X
;
_posY
=
_pos
.
Y
;
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
tmpX2
,
tmpY2
,
_rect2
.
Page
);
_posX
+=
_pos
.
X
;
_posX
=
_posX
>>
1
;
_mode
=
2
;
}
var
_object_bounds
=
this
.
LogicDocument
.
DrawingObjects
.
getSelectedObjectsBounds
();
if
((
0
==
_mode
)
&&
_object_bounds
)
{
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_object_bounds
.
minX
,
_object_bounds
.
minY
,
_object_bounds
.
pageIndex
);
_posX
=
_pos
.
X
;
_posY
=
_pos
.
Y
;
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_object_bounds
.
maxX
,
_object_bounds
.
maxY
,
_object_bounds
.
pageIndex
);
_posX
+=
_pos
.
X
;
_posX
=
_posX
>>
1
;
_mode
=
3
;
}
return
{
X
:
_posX
,
Y
:
_posY
,
Mode
:
_mode
};
};
CMobileDelegateEditor
.
prototype
.
GetZoomFit
=
function
()
{
var
Zoom
=
100
;
var
w
=
this
.
HtmlPage
.
m_oEditor
.
AbsolutePosition
.
R
-
this
.
HtmlPage
.
m_oEditor
.
AbsolutePosition
.
L
;
if
(
0
!=
this
.
HtmlPage
.
m_dDocumentPageWidth
)
{
Zoom
=
100
*
(
w
-
10
)
/
this
.
HtmlPage
.
m_dDocumentPageWidth
;
if
(
Zoom
<
5
)
Zoom
=
5
;
if
(
this
.
HtmlPage
.
m_oApi
.
isMobileVersion
)
{
var
_w
=
this
.
HtmlPage
.
m_oEditor
.
HtmlElement
.
width
;
if
(
this
.
HtmlPage
.
bIsRetinaSupport
)
{
_w
>>=
1
;
}
Zoom
=
100
*
_w
*
AscCommon
.
g_dKoef_pix_to_mm
/
this
.
HtmlPage
.
m_dDocumentPageWidth
;
}
}
return
(
Zoom
-
0.5
)
>>
0
;
};
CMobileDelegateEditor
.
prototype
.
GetScrollerParent
=
function
()
{
return
this
.
HtmlPage
.
m_oMainView
.
HtmlElement
;
};
CMobileDelegateEditor
.
prototype
.
GetScrollerSize
=
function
()
{
return
{
W
:
this
.
HtmlPage
.
m_dDocumentWidth
,
H
:
this
.
HtmlPage
.
m_dDocumentHeight
};
};
CMobileDelegateEditor
.
prototype
.
ScrollTo
=
function
(
_scroll
)
{
this
.
HtmlPage
.
NoneRepaintPages
=
(
true
===
_scroll
.
isAnimating
)
?
true
:
false
;
if
(
_scroll
.
directionLocked
==
"
v
"
)
{
this
.
HtmlPage
.
m_oScrollVerApi
.
scrollToY
(
-
_scroll
.
y
);
}
else
if
(
_scroll
.
directionLocked
==
"
h
"
)
{
this
.
HtmlPage
.
m_oScrollHorApi
.
scrollToX
(
-
_scroll
.
x
);
}
else
if
(
_scroll
.
directionLocked
==
"
n
"
)
{
this
.
HtmlPage
.
m_oScrollHorApi
.
scrollToX
(
-
_scroll
.
x
);
this
.
HtmlPage
.
m_oScrollVerApi
.
scrollToY
(
-
_scroll
.
y
);
}
};
CMobileDelegateEditor
.
prototype
.
ScrollEnd
=
function
(
_scroll
)
{
this
.
HtmlPage
.
NoneRepaintPages
=
(
true
===
_scroll
.
isAnimating
)
?
true
:
false
;
_scroll
.
manager
.
OnScrollAnimationEnd
();
this
.
HtmlPage
.
OnScroll
();
};
CMobileDelegateEditor
.
prototype
.
GetSelectionRectsBounds
=
function
()
{
return
this
.
LogicDocument
.
Get_SelectionBounds
();
};
CMobileDelegateEditor
.
prototype
.
IsReader
=
function
()
{
return
(
null
!=
this
.
DrawingDocument
.
m_oDocumentRenderer
);
};
CMobileDelegateEditor
.
prototype
.
Logic_GetNearestPos
=
function
(
x
,
y
,
page
)
{
return
this
.
LogicDocument
.
Get_NearestPos
(
page
,
x
,
y
);
};
CMobileDelegateEditor
.
prototype
.
Logic_OnMouseDown
=
function
(
e
,
x
,
y
,
page
)
{
return
this
.
LogicDocument
.
OnMouseDown
(
global_mouseEvent
,
x
,
y
,
page
);
};
CMobileDelegateEditor
.
prototype
.
Logic_OnMouseMove
=
function
()
{
return
this
.
LogicDocument
.
OnMouseMove
(
global_mouseEvent
,
x
,
y
,
page
);
};
CMobileDelegateEditor
.
prototype
.
Logic_OnMouseUp
=
function
()
{
return
this
.
LogicDocument
.
OnMouseUp
(
global_mouseEvent
,
x
,
y
,
page
);
};
CMobileDelegateEditor
.
prototype
.
Drawing_OnMouseDown
=
function
(
e
)
{
return
this
.
HtmlPage
.
onMouseDown
(
e
);
};
CMobileDelegateEditor
.
prototype
.
Drawing_OnMouseMove
=
function
(
e
)
{
return
this
.
HtmlPage
.
onMouseMove
(
e
);
};
CMobileDelegateEditor
.
prototype
.
Drawing_OnMouseUp
=
function
(
e
)
{
return
this
.
HtmlPage
.
onMouseUp
(
e
);
};
function
CMobileTouchManagerBase
(
_config
,
_delegate
)
{
...
...
@@ -448,7 +688,7 @@
}
else
{
var
pos
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
var
pos
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
if
(
pos
.
Page
==
_PageNum
)
{
var
_invert
=
global_MatrixTransformer
.
Invert
(
_Transform
);
...
...
@@ -575,6 +815,733 @@
return
(
AscCommon
.
MobileTouchMode
.
FlowObj
==
this
.
Mode
);
};
CMobileTouchManagerBase
.
prototype
.
CheckZoomCriticalValues
=
function
(
zoomMin
)
{
if
(
zoomMin
!==
undefined
)
{
this
.
ZoomValueMin
=
zoomMin
;
return
;
}
var
_new_value
=
this
.
delegate
.
GetZoomFit
();
this
.
ZoomValueMin
=
_new_value
;
if
(
this
.
ZoomValue
<
this
.
ZoomValueMin
)
{
this
.
ZoomValue
=
this
.
ZoomValueMin
;
this
.
delegate
.
SetZoom
(
this
.
ZoomValue
);
}
};
CMobileTouchManagerBase
.
prototype
.
Resize
=
function
()
{
if
(
this
.
iScroll
!=
null
)
{
var
_size
=
this
.
delegate
.
GetScrollerSize
();
this
.
iScroll
.
scroller
.
style
.
width
=
_size
.
W
+
"
px
"
;
this
.
iScroll
.
scroller
.
style
.
height
=
_size
.
H
+
"
px
"
;
this
.
iScroll
.
refresh
(
true
);
}
};
CMobileTouchManagerBase
.
prototype
.
IsWorkedPosition
=
function
()
{
if
(
this
.
IsTouching
)
return
true
;
if
(
this
.
iScroll
&&
this
.
iScroll
.
isAnimating
)
return
true
;
return
false
;
};
CMobileTouchManagerBase
.
prototype
.
Destroy
=
function
()
{
var
_scroller
=
document
.
getElementById
(
"
mobile_scroller_id
"
);
this
.
delegate
.
GetScrollerParent
().
removeChild
(
_scroller
);
if
(
this
.
iScroll
!=
null
)
this
.
iScroll
.
destroy
();
};
/* contect menu */
CMobileTouchManagerBase
.
prototype
.
SendShowContextMenu
=
function
()
{
if
(
-
1
!=
this
.
ContextMenuShowTimerId
)
{
clearTimeout
(
this
.
ContextMenuShowTimerId
);
}
var
that
=
this
;
this
.
ContextMenuShowTimerId
=
setTimeout
(
function
()
{
var
_pos
=
that
.
delegate
.
GetContextMenuPosition
();
that
.
Api
.
sendEvent
(
"
asc_onShowPopMenu
"
,
_pos
.
X
,
_pos
.
Y
,
(
_pos
.
Mode
>
1
)
?
true
:
false
);
},
500
);
};
CMobileTouchManagerBase
.
prototype
.
CheckContextMenuTouchEnd
=
function
(
isCheck
)
{
// isCheck: если пришли сюда после скролла или зума (или их анимации) - то не нужно проверять состояние редактора.
// Нужно проверять последнее сохраненной состояние
if
(
isCheck
)
{
var
_mode
=
this
.
delegate
.
GetContextMenuType
();
if
(
_mode
==
this
.
ContextMenuLastMode
)
{
this
.
ContextMenuLastModeCounter
++
;
this
.
ContextMenuLastModeCounter
&=
0x01
;
}
else
{
this
.
ContextMenuLastModeCounter
=
0
;
}
this
.
ContextMenuLastMode
=
_mode
;
}
if
(
this
.
ContextMenuLastMode
>
AscCommon
.
MobileTouchContextMenuType
.
None
&&
1
==
this
.
ContextMenuLastModeCounter
)
this
.
SendShowContextMenu
();
};
CMobileTouchManagerBase
.
prototype
.
ClearContextMenu
=
function
()
{
this
.
ContextMenuLastMode
=
AscCommon
.
MobileTouchContextMenuType
.
None
;
this
.
ContextMenuLastModeCounter
=
0
;
this
.
Api
.
sendEvent
(
"
asc_onHidePopMenu
"
);
};
CMobileTouchManagerBase
.
prototype
.
OnScrollAnimationEnd
=
function
()
{
if
(
this
.
Api
.
isViewMode
)
return
;
this
.
CheckContextMenuTouchEnd
(
false
);
};
/* select rects */
CMobileTouchManagerBase
.
prototype
.
CheckSelectRects
=
function
()
{
this
.
RectSelect1
=
null
;
this
.
RectSelect2
=
null
;
var
_select
=
this
.
delegate
.
GetSelectionRectsBounds
();
if
(
!
_select
)
return
;
var
_rect1
=
_select
.
Start
;
var
_rect2
=
_select
.
End
;
if
(
!
_rect1
||
!
_rect2
)
return
;
this
.
RectSelect1
=
new
AscCommon
.
_rect
();
this
.
RectSelect1
.
x
=
_rect1
.
X
;
this
.
RectSelect1
.
y
=
_rect1
.
Y
;
this
.
RectSelect1
.
w
=
_rect1
.
W
;
this
.
RectSelect1
.
h
=
_rect1
.
H
;
this
.
PageSelect1
=
_rect1
.
Page
;
this
.
RectSelect2
=
new
AscCommon
.
_rect
();
this
.
RectSelect2
.
x
=
_rect2
.
X
;
this
.
RectSelect2
.
y
=
_rect2
.
Y
;
this
.
RectSelect2
.
w
=
_rect2
.
W
;
this
.
RectSelect2
.
h
=
_rect2
.
H
;
this
.
PageSelect2
=
_rect2
.
Page
;
};
CMobileTouchManagerBase
.
prototype
.
CheckSelect
=
function
(
overlay
)
{
this
.
CheckSelectRects
();
if
(
null
==
this
.
RectSelect1
||
null
==
this
.
RectSelect2
)
return
;
var
_matrix
=
this
.
delegate
.
GetSelectionTransform
();
var
ctx
=
overlay
.
m_oContext
;
ctx
.
strokeStyle
=
"
#146FE1
"
;
ctx
.
fillStyle
=
"
#146FE1
"
;
if
(
!
_matrix
||
global_MatrixTransformer
.
IsIdentity
(
_matrix
))
{
var
pos1
=
this
.
delegate
.
ConvertCoordsToCursor
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
,
this
.
PageSelect1
);
var
pos2
=
this
.
delegate
.
ConvertCoordsToCursor
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
+
this
.
RectSelect1
.
h
,
this
.
PageSelect1
);
var
pos3
=
this
.
delegate
.
ConvertCoordsToCursor
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
,
this
.
PageSelect2
);
var
pos4
=
this
.
delegate
.
ConvertCoordsToCursor
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
,
this
.
PageSelect2
);
ctx
.
beginPath
();
ctx
.
moveTo
(
pos1
.
X
>>
0
,
pos1
.
Y
>>
0
);
ctx
.
lineTo
(
pos2
.
X
>>
0
,
pos2
.
Y
>>
0
);
ctx
.
moveTo
(
pos3
.
X
>>
0
,
pos3
.
Y
>>
0
);
ctx
.
lineTo
(
pos4
.
X
>>
0
,
pos4
.
Y
>>
0
);
ctx
.
lineWidth
=
2
;
ctx
.
stroke
();
ctx
.
beginPath
();
overlay
.
AddEllipse
(
pos1
.
X
,
pos1
.
Y
-
5
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
overlay
.
AddEllipse
(
pos4
.
X
,
pos4
.
Y
+
5
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
ctx
.
fill
();
ctx
.
beginPath
();
}
else
{
var
_xx11
=
_matrix
.
TransformPointX
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
);
var
_yy11
=
_matrix
.
TransformPointY
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
);
var
_xx12
=
_matrix
.
TransformPointX
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
+
this
.
RectSelect1
.
h
);
var
_yy12
=
_matrix
.
TransformPointY
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
+
this
.
RectSelect1
.
h
);
var
_xx21
=
_matrix
.
TransformPointX
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
);
var
_yy21
=
_matrix
.
TransformPointY
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
);
var
_xx22
=
_matrix
.
TransformPointX
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
);
var
_yy22
=
_matrix
.
TransformPointY
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
);
var
pos1
=
this
.
delegate
.
ConvertCoordsToCursor
(
_xx11
,
_yy11
,
this
.
PageSelect1
);
var
pos2
=
this
.
delegate
.
ConvertCoordsToCursor
(
_xx12
,
_yy12
,
this
.
PageSelect1
);
var
pos3
=
this
.
delegate
.
ConvertCoordsToCursor
(
_xx21
,
_yy21
,
this
.
PageSelect2
);
var
pos4
=
this
.
delegate
.
ConvertCoordsToCursor
(
_xx22
,
_yy22
,
this
.
PageSelect2
);
ctx
.
beginPath
();
ctx
.
moveTo
(
pos1
.
X
,
pos1
.
Y
);
ctx
.
lineTo
(
pos2
.
X
,
pos2
.
Y
);
ctx
.
moveTo
(
pos3
.
X
,
pos3
.
Y
);
ctx
.
lineTo
(
pos4
.
X
,
pos4
.
Y
);
ctx
.
lineWidth
=
2
;
ctx
.
stroke
();
ctx
.
beginPath
();
var
ex01
=
_matrix
.
TransformPointX
(
0
,
0
);
var
ey01
=
_matrix
.
TransformPointY
(
0
,
0
);
var
ex11
=
_matrix
.
TransformPointX
(
0
,
1
);
var
ey11
=
_matrix
.
TransformPointY
(
0
,
1
);
var
_len
=
Math
.
sqrt
((
ex11
-
ex01
)
*
(
ex11
-
ex01
)
+
(
ey11
-
ey01
)
*
(
ey11
-
ey01
));
if
(
_len
==
0
)
_len
=
0.01
;
var
ex
=
5
*
(
ex11
-
ex01
)
/
_len
;
var
ey
=
5
*
(
ey11
-
ey01
)
/
_len
;
var
_x1
=
(
pos1
.
X
-
ex
)
>>
0
;
var
_y1
=
(
pos1
.
Y
-
ey
)
>>
0
;
var
_x2
=
(
pos4
.
X
+
ex
)
>>
0
;
var
_y2
=
(
pos4
.
Y
+
ey
)
>>
0
;
overlay
.
AddEllipse
(
_x1
,
_y1
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
overlay
.
AddEllipse
(
_x2
,
_y2
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
ctx
.
fill
();
ctx
.
beginPath
();
}
};
CMobileTouchManagerBase
.
prototype
.
CheckTableRules
=
function
(
overlay
)
{
if
(
this
.
Api
.
isViewMode
||
!
this
.
TableTrackEnabled
)
return
;
var
HtmlPage
=
this
.
delegate
.
HtmlPage
;
var
DrawingDocument
=
this
.
delegate
.
DrawingDocument
;
var
horRuler
=
HtmlPage
.
m_oHorRuler
;
var
verRuler
=
HtmlPage
.
m_oVerRuler
;
var
_table_outline_dr
=
this
.
delegate
.
GetTableDrawing
();
var
_tableOutline
=
_table_outline_dr
.
TableOutline
;
if
(
horRuler
.
CurrentObjectType
!=
RULER_OBJECT_TYPE_TABLE
||
verRuler
.
CurrentObjectType
!=
RULER_OBJECT_TYPE_TABLE
||
!
_tableOutline
)
{
this
.
TableMovePoint
=
null
;
this
.
TableHorRulerPoints
=
null
;
this
.
TableVerRulerPoints
=
null
;
return
;
}
if
(
!
window
.
g_table_track_mobile_move
.
asc_complete
)
return
;
var
_table_markup
=
horRuler
.
m_oTableMarkup
;
if
(
_table_markup
.
Rows
.
length
==
0
)
return
;
this
.
HtmlPage
.
CheckShowOverlay
();
var
_epsRects
=
this
.
TableRulersRectOffset
;
var
_rectWidth
=
this
.
TableRulersRectSize
;
var
ctx
=
overlay
.
m_oContext
;
ctx
.
strokeStyle
=
"
#616161
"
;
ctx
.
lineWidth
=
1
;
var
_tableW
=
0
;
var
_cols
=
_table_markup
.
Cols
;
for
(
var
i
=
0
;
i
<
_cols
.
length
;
i
++
)
{
_tableW
+=
_cols
[
i
];
}
if
(
!
_table_outline_dr
.
TableMatrix
||
global_MatrixTransformer
.
IsIdentity
(
_table_outline_dr
.
TableMatrix
))
{
this
.
TableMovePoint
=
{
X
:
_tableOutline
.
X
,
Y
:
_tableOutline
.
Y
};
var
pos1
=
rawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
,
_tableOutline
.
Y
,
_tableOutline
.
PageNum
);
var
pos2
=
rawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
+
_tableW
,
_tableOutline
.
Y
,
_tableOutline
.
PageNum
);
ctx
.
beginPath
();
var
TableMoveRect_x
=
(
pos1
.
X
>>
0
)
+
0.5
-
(
_epsRects
+
_rectWidth
);
var
TableMoveRect_y
=
(
pos1
.
Y
>>
0
)
+
0.5
-
(
_epsRects
+
_rectWidth
);
overlay
.
CheckPoint
(
TableMoveRect_x
,
TableMoveRect_y
);
overlay
.
CheckPoint
(
TableMoveRect_x
+
_rectWidth
,
TableMoveRect_y
+
_rectWidth
);
ctx
.
drawImage
(
window
.
g_table_track_mobile_move
,
TableMoveRect_x
,
TableMoveRect_y
);
var
gradObj
=
ctx
.
createLinearGradient
((
pos1
.
X
>>
0
)
+
0.5
,
TableMoveRect_y
,
(
pos1
.
X
>>
0
)
+
0.5
,
TableMoveRect_y
+
_rectWidth
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRect
((
pos1
.
X
>>
0
)
+
0.5
,
TableMoveRect_y
,
(
pos2
.
X
-
pos1
.
X
)
>>
0
,
_rectWidth
,
4
);
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
_count
=
_table_markup
.
Rows
.
length
;
var
_y1
=
0
;
var
_y2
=
0
;
for
(
var
i
=
0
;
i
<
_count
;
i
++
)
{
if
(
i
==
0
)
_y1
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
+=
_table_markup
.
Rows
[
i
].
H
;
}
var
pos3
=
DrawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
,
_y1
,
DrawingDocument
.
m_lCurrentPage
);
var
pos4
=
DrawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
,
_y2
,
DrawingDocument
.
m_lCurrentPage
);
var
_ttX
=
(
pos1
.
X
>>
0
)
+
0.5
-
(
_epsRects
+
_rectWidth
);
gradObj
=
ctx
.
createLinearGradient
(
_ttX
,
(
pos3
.
Y
>>
0
)
+
0.5
,
_ttX
,
(
pos3
.
Y
>>
0
)
+
0.5
+
(
pos4
.
Y
-
pos3
.
Y
)
>>
0
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRect
((
pos1
.
X
>>
0
)
+
1.5
-
(
_epsRects
+
_rectWidth
),
(
pos3
.
Y
>>
0
)
+
0.5
,
_rectWidth
-
1
,
(
pos4
.
Y
-
pos3
.
Y
)
>>
0
,
4
);
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
dKoef
=
(
HtmlPage
.
m_nZoomValue
*
g_dKoef_mm_to_pix
/
100
);
var
xDst
=
DrawingDocument
.
m_arrPages
[
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
left
;
var
yDst
=
DrawingDocument
.
m_arrPages
[
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
top
;
var
_oldY
=
_table_markup
.
Rows
[
0
].
Y
+
_table_markup
.
Rows
[
0
].
H
;
this
.
TableVerRulerPoints
=
[];
var
_rectIndex
=
0
;
var
_x
=
(
pos1
.
X
-
_epsRects
-
_rectWidth
)
>>
0
;
ctx
.
fillStyle
=
"
#146FE1
"
;
for
(
var
i
=
1
;
i
<=
_count
;
i
++
)
{
var
_newPos
=
(
i
!=
_count
)
?
_table_markup
.
Rows
[
i
].
Y
:
_oldY
;
var
_p
=
{
Y
:
_oldY
,
H
:
(
_newPos
-
_oldY
)};
var
_y
=
DrawingDocument
.
ConvertCoordsToCursorWR
(
0
,
_oldY
,
_tableOutline
.
PageNum
);
ctx
.
beginPath
();
overlay
.
AddDiamond
(
_x
+
1.5
+
(
_rectWidth
>>
1
),
_y
.
Y
,
AscCommon
.
MOBILE_TABLE_RULER_DIAMOND
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableVerRulerPoints
[
_rectIndex
++
]
=
_p
;
if
(
i
!=
_count
)
_oldY
=
_table_markup
.
Rows
[
i
].
Y
+
_table_markup
.
Rows
[
i
].
H
;
}
this
.
TableHorRulerPoints
=
[];
_rectIndex
=
0
;
var
_col
=
_table_markup
.
X
;
for
(
var
i
=
1
;
i
<=
_cols
.
length
;
i
++
)
{
_col
+=
_cols
[
i
-
1
];
var
_x
=
_col
-
_table_markup
.
Margins
[
i
-
1
].
Right
;
var
_r
=
_col
+
((
i
==
_cols
.
length
)
?
0
:
_table_markup
.
Margins
[
i
].
Left
);
var
__c
=
((
xDst
+
dKoef
*
_col
)
>>
0
)
+
0.5
;
ctx
.
beginPath
();
overlay
.
AddDiamond
(
__c
,
TableMoveRect_y
+
_rectWidth
/
2
,
AscCommon
.
MOBILE_TABLE_RULER_DIAMOND
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableHorRulerPoints
[
_rectIndex
++
]
=
{
X
:
_x
,
W
:
_r
-
_x
,
C
:
_col
};
}
ctx
.
beginPath
();
if
(
this
.
Mode
==
AscCommon
.
MobileTouchMode
.
TableRuler
)
{
if
(
0
==
this
.
TableCurrentMoveDir
)
{
var
_pos
=
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableCurrentMoveValue
,
0
,
_table_outline_dr
.
CurrentPageIndex
);
overlay
.
VertLine
(
_pos
.
X
,
true
);
}
else
{
var
_pos
=
DrawingDocument
.
ConvertCoordsToCursorWR
(
0
,
this
.
TableCurrentMoveValue
,
_table_outline_dr
.
CurrentPageIndex
);
overlay
.
HorLine
(
_pos
.
Y
,
true
);
}
}
}
else
{
var
dKoef
=
(
HtmlPage
.
m_nZoomValue
*
g_dKoef_mm_to_pix
/
100
);
var
xDst
=
DrawingDocument
.
m_arrPages
[
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
left
;
var
yDst
=
DrawingDocument
.
m_arrPages
[
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
top
;
ctx
.
lineWidth
=
1
/
dKoef
;
if
(
overlay
.
IsRetina
)
dKoef
*=
2
;
var
_coord_transform
=
new
AscCommon
.
CMatrix
();
_coord_transform
.
sx
=
dKoef
;
_coord_transform
.
sy
=
dKoef
;
_coord_transform
.
tx
=
xDst
;
_coord_transform
.
ty
=
yDst
;
var
_diamond_size
=
AscCommon
.
MOBILE_TABLE_RULER_DIAMOND
;
if
(
overlay
.
IsRetina
)
{
_coord_transform
.
tx
*=
2
;
_coord_transform
.
ty
*=
2
;
_diamond_size
*=
2
;
}
ctx
.
save
();
_coord_transform
.
Multiply
(
_table_outline_dr
.
TableMatrix
,
AscCommon
.
MATRIX_ORDER_PREPEND
);
ctx
.
setTransform
(
_coord_transform
.
sx
,
_coord_transform
.
shy
,
_coord_transform
.
shx
,
_coord_transform
.
sy
,
_coord_transform
.
tx
,
_coord_transform
.
ty
);
this
.
TableMovePoint
=
{
X
:
_tableOutline
.
X
,
Y
:
_tableOutline
.
Y
};
ctx
.
beginPath
();
var
_rectW
=
_rectWidth
/
dKoef
;
var
_offset
=
(
_epsRects
+
_rectWidth
)
/
dKoef
;
if
(
overlay
.
IsRetina
)
{
_rectW
*=
2
;
_offset
*=
2
;
}
ctx
.
drawImage
(
window
.
g_table_track_mobile_move
,
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
Y
-
_offset
,
_rectW
,
_rectW
);
var
gradObj
=
ctx
.
createLinearGradient
(
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
-
_offset
,
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
-
_offset
+
_rectW
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRectCtx
(
ctx
,
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
-
_offset
,
_tableW
,
_rectW
,
5
/
dKoef
);
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
_count
=
_table_markup
.
Rows
.
length
;
var
_y1
=
0
;
var
_y2
=
0
;
for
(
var
i
=
0
;
i
<
_count
;
i
++
)
{
if
(
i
==
0
)
_y1
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
+=
_table_markup
.
Rows
[
i
].
H
;
}
gradObj
=
ctx
.
createLinearGradient
(
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
Y
,
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
X
-
_offset
+
_y2
-
_y1
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRectCtx
(
ctx
,
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
Y
,
_rectW
,
_y2
-
_y1
,
5
/
dKoef
);
overlay
.
CheckRectT
(
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
,
_tableW
,
_y2
-
_y1
,
_coord_transform
,
2
*
(
_epsRects
+
_rectWidth
));
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
_oldY
=
_table_markup
.
Rows
[
0
].
Y
+
_table_markup
.
Rows
[
0
].
H
;
_oldY
-=
_table_outline_dr
.
TableMatrix
.
ty
;
ctx
.
fillStyle
=
"
#146FE1
"
;
this
.
TableVerRulerPoints
=
[];
var
_rectIndex
=
0
;
var
_xx
=
this
.
TableMovePoint
.
X
-
_offset
;
for
(
var
i
=
1
;
i
<=
_count
;
i
++
)
{
var
_newPos
=
(
i
!=
_count
)
?
(
_table_markup
.
Rows
[
i
].
Y
-
_table_outline_dr
.
TableMatrix
.
ty
)
:
_oldY
;
var
_p
=
{
Y
:
_oldY
,
H
:
(
_newPos
-
_oldY
)};
var
___y
=
(
_p
.
Y
+
(
_p
.
H
/
2
));
ctx
.
beginPath
();
overlay
.
AddDiamond
(
_xx
+
_rectW
/
2
,
___y
,
_diamond_size
/
dKoef
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableVerRulerPoints
[
_rectIndex
++
]
=
_p
;
if
(
i
!=
_count
)
{
_oldY
=
_table_markup
.
Rows
[
i
].
Y
+
_table_markup
.
Rows
[
i
].
H
;
_oldY
-=
_table_outline_dr
.
TableMatrix
.
ty
;
}
}
this
.
TableHorRulerPoints
=
[];
_rectIndex
=
0
;
var
_col
=
this
.
TableMovePoint
.
X
;
for
(
var
i
=
1
;
i
<=
_cols
.
length
;
i
++
)
{
_col
+=
_cols
[
i
-
1
];
var
_x
=
_col
-
_table_markup
.
Margins
[
i
-
1
].
Right
;
var
_r
=
_col
+
((
i
==
_cols
.
length
)
?
0
:
_table_markup
.
Margins
[
i
].
Left
);
ctx
.
beginPath
();
overlay
.
AddDiamond
(
_col
,
this
.
TableMovePoint
.
Y
-
_offset
+
_rectW
/
2
,
_diamond_size
/
dKoef
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableHorRulerPoints
[
_rectIndex
++
]
=
{
X
:
_x
,
W
:
_r
-
_x
,
C
:
_col
};
}
ctx
.
restore
();
ctx
.
beginPath
();
if
(
this
.
Mode
==
AscCommon
.
MobileTouchMode
.
TableRuler
)
{
if
(
0
==
this
.
TableCurrentMoveDir
)
{
var
_pos
=
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableCurrentMoveValue
,
0
,
_table_outline_dr
.
CurrentPageIndex
,
_table_outline_dr
.
TableMatrix
);
overlay
.
VertLine
(
_pos
.
X
,
true
);
}
else
{
var
_pos
=
DrawingDocument
.
ConvertCoordsToCursorWR
(
0
,
this
.
TableCurrentMoveValue
,
_table_outline_dr
.
CurrentPageIndex
,
_table_outline_dr
.
TableMatrix
);
overlay
.
HorLine
(
_pos
.
Y
,
true
);
}
}
}
};
/* viewer methods */
CMobileTouchManagerBase
.
prototype
.
onTouchStart_renderer
=
function
(
e
)
{
AscCommon
.
check_MouseDownEvent
(
e
.
touches
?
e
.
touches
[
0
]
:
e
,
true
);
global_mouseEvent
.
LockMouse
();
this
.
MoveAfterDown
=
false
;
if
(
e
.
touches
&&
2
==
e
.
touches
.
length
)
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Zoom
;
}
switch
(
this
.
Mode
)
{
case
AscCommon
.
MobileTouchMode
.
None
:
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Scroll
;
this
.
DownPoint
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPointOriginal
.
X
=
global_mouseEvent
.
X
;
this
.
DownPointOriginal
.
Y
=
global_mouseEvent
.
Y
;
this
.
iScroll
.
_start
(
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
Scroll
:
{
// ничего не меняем, просто перемещаем точку
this
.
DownPoint
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPointOriginal
.
X
=
global_mouseEvent
.
X
;
this
.
DownPointOriginal
.
Y
=
global_mouseEvent
.
Y
;
this
.
iScroll
.
_start
(
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
Zoom
:
{
this
.
delegate
.
HtmlPage
.
NoneRepaintPages
=
true
;
var
_x1
=
(
e
.
touches
[
0
].
pageX
!==
undefined
)
?
e
.
touches
[
0
].
pageX
:
e
.
touches
[
0
].
clientX
;
var
_y1
=
(
e
.
touches
[
0
].
pageY
!==
undefined
)
?
e
.
touches
[
0
].
pageY
:
e
.
touches
[
0
].
clientY
;
var
_x2
=
(
e
.
touches
[
1
].
pageX
!==
undefined
)
?
e
.
touches
[
1
].
pageX
:
e
.
touches
[
1
].
clientX
;
var
_y2
=
(
e
.
touches
[
1
].
pageY
!==
undefined
)
?
e
.
touches
[
1
].
pageY
:
e
.
touches
[
1
].
clientY
;
this
.
ZoomDistance
=
Math
.
sqrt
((
_x1
-
_x2
)
*
(
_x1
-
_x2
)
+
(
_y1
-
_y2
)
*
(
_y1
-
_y2
));
this
.
ZoomValue
=
this
.
delegate
.
GetZoom
();
break
;
}
}
if
(
e
.
preventDefault
)
e
.
preventDefault
();
else
e
.
returnValue
=
false
;
};
CMobileTouchManagerBase
.
prototype
.
onTouchMove_renderer
=
function
(
e
)
{
AscCommon
.
check_MouseMoveEvent
(
e
.
touches
?
e
.
touches
[
0
]
:
e
);
if
(
!
this
.
MoveAfterDown
)
{
if
(
Math
.
abs
(
this
.
DownPointOriginal
.
X
-
global_mouseEvent
.
X
)
>
this
.
MoveMinDist
||
Math
.
abs
(
this
.
DownPointOriginal
.
Y
-
global_mouseEvent
.
Y
)
>
this
.
MoveMinDist
)
{
this
.
MoveAfterDown
=
true
;
}
}
switch
(
this
.
Mode
)
{
case
AscCommon
.
MobileTouchMode
.
Scroll
:
{
var
_offsetX
=
global_mouseEvent
.
X
-
this
.
DownPointOriginal
.
X
;
var
_offsetY
=
global_mouseEvent
.
Y
-
this
.
DownPointOriginal
.
Y
;
this
.
iScroll
.
_move
(
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
Zoom
:
{
if
(
2
!=
e
.
touches
.
length
)
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
return
;
}
var
_x1
=
(
e
.
touches
[
0
].
pageX
!==
undefined
)
?
e
.
touches
[
0
].
pageX
:
e
.
touches
[
0
].
clientX
;
var
_y1
=
(
e
.
touches
[
0
].
pageY
!==
undefined
)
?
e
.
touches
[
0
].
pageY
:
e
.
touches
[
0
].
clientY
;
var
_x2
=
(
e
.
touches
[
1
].
pageX
!==
undefined
)
?
e
.
touches
[
1
].
pageX
:
e
.
touches
[
1
].
clientX
;
var
_y2
=
(
e
.
touches
[
1
].
pageY
!==
undefined
)
?
e
.
touches
[
1
].
pageY
:
e
.
touches
[
1
].
clientY
;
var
zoomCurrentDist
=
Math
.
sqrt
((
_x1
-
_x2
)
*
(
_x1
-
_x2
)
+
(
_y1
-
_y2
)
*
(
_y1
-
_y2
));
if
(
zoomCurrentDist
==
0
)
zoomCurrentDist
=
1
;
var
_zoomFix
=
this
.
ZoomValue
/
100
;
var
_zoomCur
=
_zoomFix
*
(
zoomCurrentDist
/
this
.
ZoomDistance
);
_zoomCur
=
(
_zoomCur
*
100
)
>>
0
;
if
(
_zoomCur
<
this
.
ZoomValueMin
)
_zoomCur
=
this
.
ZoomValueMin
;
else
if
(
_zoomCur
>
this
.
ZoomValueMax
)
_zoomCur
=
this
.
ZoomValueMax
;
this
.
delegate
.
SetZoom
(
_zoomCur
);
break
;
}
default
:
break
;
}
if
(
e
.
preventDefault
)
e
.
preventDefault
();
else
e
.
returnValue
=
false
;
};
CMobileTouchManagerBase
.
prototype
.
onTouchEnd_renderer
=
function
(
e
)
{
AscCommon
.
check_MouseUpEvent
(
e
.
changedTouches
?
e
.
changedTouches
[
0
]
:
e
);
switch
(
this
.
Mode
)
{
case
AscCommon
.
MobileTouchMode
.
Scroll
:
{
this
.
iScroll
.
_end
(
e
);
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
if
(
!
this
.
MoveAfterDown
)
{
this
.
Api
.
sendEvent
(
"
asc_onTapEvent
"
,
e
);
}
break
;
}
case
AscCommon
.
MobileTouchMode
.
Zoom
:
{
// здесь нужно запускать отрисовку, если есть анимация зума
this
.
delegate
.
HtmlPage
.
NoneRepaintPdelegate
.
ages
=
false
;
this
.
delegate
.
HtmlPage
.
m_bIsFullRepaint
=
true
;
this
.
delegate
.
HtmlPage
.
OnScroll
();
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
break
;
}
default
:
break
;
}
if
(
e
.
preventDefault
)
e
.
preventDefault
();
else
e
.
returnValue
=
false
;
};
/* simple click */
CMobileTouchManagerBase
.
prototype
.
MoveCursorToPoint
=
function
(
e
)
{
AscCommon
.
check_MouseMoveEvent
(
e
);
var
pos
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
var
old_click_count
=
global_mouseEvent
.
ClickCount
;
global_mouseEvent
.
ClickCount
=
1
;
var
nearPos
=
this
.
delegate
.
Logic_GetNearestPos
(
pos
.
Page
,
pos
.
X
,
pos
.
Y
);
this
.
delegate
.
DrawingDocument
.
NeedScrollToTargetFlag
=
true
;
this
.
delegate
.
Logic_OnMouseDown
(
global_mouseEvent
,
nearPos
.
X
,
nearPos
.
Y
,
pos
.
Page
);
this
.
delegate
.
Logic_OnMouseUp
(
global_mouseEvent
,
nearPos
.
X
,
nearPos
.
Y
,
pos
.
Page
);
this
.
delegate
.
DrawingDocument
.
NeedScrollToTargetFlag
=
false
;
global_mouseEvent
.
ClickCount
=
old_click_count
;
};
//--------------------------------------------------------export----------------------------------------------------
AscCommon
.
CMobileTouchManagerBase
=
CMobileTouchManagerBase
;
AscCommon
.
CMobileDelegateEditor
=
CMobileDelegateEditor
;
})(
window
);
word/Drawing/mobileTouchManager.js
View file @
24d5c604
...
...
@@ -46,23 +46,19 @@
function
CMobileTouchManager
(
_config
)
{
CMobileTouchManager
.
superclass
.
constructor
.
call
(
this
,
_config
);
this
.
LogicDocument
=
null
;
this
.
DrawingDocument
=
null
;
this
.
HtmlPage
=
null
;
}
AscCommon
.
extendClass
(
CMobileTouchManager
,
AscCommon
.
CMobileTouchManagerBase
);
CMobileTouchManager
.
prototype
.
Init
=
function
(
ctrl
)
CMobileTouchManager
.
prototype
.
Init
=
function
(
_api
)
{
this
.
HtmlPage
=
ctrl
;
this
.
LogicDocument
=
ctrl
.
m_oLogicDocument
;
this
.
DrawingDocument
=
ctrl
.
m_oDrawingDocument
;
this
.
Api
=
this
.
HtmlPage
.
m_oApi
;
this
.
Api
=
_api
;
this
.
CreateScrollerDiv
(
this
.
HtmlPage
.
m_oMainView
.
HtmlElement
,
"
mobile_scroller_id
"
);
// создаем делегата. инициализация его - ПОСЛЕ создания iScroll
this
.
delegate
=
new
AscCommon
.
CMobileDelegateEditor
(
this
);
var
_element
=
this
.
delegate
.
GetScrollerParent
();
this
.
CreateScrollerDiv
(
_element
,
"
mobile_scroller_id
"
);
this
.
iScroll
=
new
window
.
IScroll
(
this
.
HtmlPage
.
m_oMainView
.
HtmlE
lement
,
{
this
.
iScroll
=
new
window
.
IScroll
(
_e
lement
,
{
scrollbars
:
true
,
mouseWheel
:
true
,
interactiveScrollbars
:
true
,
...
...
@@ -72,70 +68,18 @@
scroller_id
:
"
mobile_scroller_id
"
,
bounce
:
false
});
this
.
iScroll
.
manager
=
this
;
this
.
iScroll
.
on
(
'
scroll
'
,
function
()
{
this
.
manager
.
HtmlPage
.
NoneRepaintPages
=
(
true
===
this
.
isAnimating
)
?
true
:
false
;
if
(
this
.
directionLocked
==
"
v
"
)
{
this
.
manager
.
HtmlPage
.
m_oScrollVerApi
.
scrollToY
(
-
this
.
y
);
}
else
if
(
this
.
directionLocked
==
"
h
"
)
{
this
.
manager
.
HtmlPage
.
m_oScrollHorApi
.
scrollToX
(
-
this
.
x
);
}
else
if
(
this
.
directionLocked
==
"
n
"
)
{
this
.
manager
.
HtmlPage
.
m_oScrollHorApi
.
scrollToX
(
-
this
.
x
);
this
.
manager
.
HtmlPage
.
m_oScrollVerApi
.
scrollToY
(
-
this
.
y
);
}
});
this
.
iScroll
.
on
(
'
scrollEnd
'
,
function
()
{
this
.
manager
.
HtmlPage
.
NoneRepaintPages
=
(
true
===
this
.
isAnimating
)
?
true
:
false
;
this
.
manager
.
OnScrollAnimationEnd
();
this
.
manager
.
HtmlPage
.
OnScroll
();
});
this
.
delegate
.
Init
();
if
(
this
.
TableTrackEnabled
)
this
.
LoadMobileImages
();
};
CMobileTouchManager
.
prototype
.
MoveCursorToPoint
=
function
(
e
)
{
AscCommon
.
check_MouseMoveEvent
(
e
);
var
pos
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
var
old_click_count
=
global_mouseEvent
.
ClickCount
;
global_mouseEvent
.
ClickCount
=
1
;
var
nearPos
=
this
.
LogicDocument
.
Get_NearestPos
(
pos
.
Page
,
pos
.
X
,
pos
.
Y
);
this
.
DrawingDocument
.
NeedScrollToTargetFlag
=
true
;
this
.
LogicDocument
.
OnMouseDown
(
global_mouseEvent
,
nearPos
.
X
,
nearPos
.
Y
,
pos
.
Page
);
this
.
LogicDocument
.
OnMouseUp
(
global_mouseEvent
,
nearPos
.
X
,
nearPos
.
Y
,
pos
.
Page
);
this
.
DrawingDocument
.
NeedScrollToTargetFlag
=
false
;
global_mouseEvent
.
ClickCount
=
old_click_count
;
};
CMobileTouchManager
.
prototype
.
IsWorkedPosition
=
function
()
{
if
(
this
.
IsTouching
)
return
true
;
if
(
this
.
iScroll
&&
this
.
iScroll
.
isAnimating
)
return
true
;
return
false
;
};
CMobileTouchManager
.
prototype
.
onTouchStart
=
function
(
e
)
{
this
.
IsTouching
=
true
;
if
(
null
!=
this
.
DrawingDocument
.
m_oDocumentRenderer
)
if
(
this
.
delegate
.
IsReader
()
)
return
this
.
onTouchStart_renderer
(
e
);
global_mouseEvent
.
KoefPixToMM
=
5
;
...
...
@@ -151,308 +95,15 @@
this
.
TimeDown
=
new
Date
().
getTime
();
var
bIsKoefPixToMM
=
false
;
var
_matrix
=
this
.
DrawingDocument
.
SelectionMatrix
;
var
_matrix
=
this
.
delegate
.
GetSelectionTransform
()
;
if
(
_matrix
&&
global_MatrixTransformer
.
IsIdentity
(
_matrix
))
_matrix
=
null
;
// проверим на попадание в селект - это может произойти на любом mode
if
(
null
!=
this
.
RectSelect1
&&
null
!=
this
.
RectSelect2
)
if
(
!
this
.
CheckSelectTrack
())
{
var
pos1
=
null
;
var
pos4
=
null
;
if
(
!
_matrix
)
{
pos1
=
this
.
DrawingDocument
.
ConvertCoordsToCursor3
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
,
this
.
PageSelect1
);
pos4
=
this
.
DrawingDocument
.
ConvertCoordsToCursor3
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
,
this
.
PageSelect2
);
}
else
{
var
_xx1
=
_matrix
.
TransformPointX
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
);
var
_yy1
=
_matrix
.
TransformPointY
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
);
var
_xx2
=
_matrix
.
TransformPointX
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
);
var
_yy2
=
_matrix
.
TransformPointY
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
);
pos1
=
this
.
DrawingDocument
.
ConvertCoordsToCursor3
(
_xx1
,
_yy1
,
this
.
PageSelect1
);
pos4
=
this
.
DrawingDocument
.
ConvertCoordsToCursor3
(
_xx2
,
_yy2
,
this
.
PageSelect2
);
}
if
(
Math
.
abs
(
pos1
.
X
-
global_mouseEvent
.
X
)
<
this
.
TrackTargetEps
&&
Math
.
abs
(
pos1
.
Y
-
global_mouseEvent
.
Y
)
<
this
.
TrackTargetEps
)
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Select
;
this
.
DragSelect
=
1
;
}
else
if
(
Math
.
abs
(
pos4
.
X
-
global_mouseEvent
.
X
)
<
this
.
TrackTargetEps
&&
Math
.
abs
(
pos4
.
Y
-
global_mouseEvent
.
Y
)
<
this
.
TrackTargetEps
)
if
(
!
this
.
CheckTableTrack
())
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Select
;
this
.
DragSelect
=
2
;
}
}
else
{
var
_xOffset
=
this
.
HtmlPage
.
X
;
var
_yOffset
=
this
.
HtmlPage
.
Y
;
if
(
true
===
this
.
HtmlPage
.
m_bIsRuler
)
{
_xOffset
+=
(
5
*
g_dKoef_mm_to_pix
);
_yOffset
+=
(
7
*
g_dKoef_mm_to_pix
);
}
var
_eps
=
this
.
TrackTargetEps
;
var
bIsTable
=
false
;
var
_table_outline_dr
=
this
.
DrawingDocument
.
TableOutlineDr
;
if
(
this
.
TableMovePoint
!=
null
&&
_table_outline_dr
)
{
var
_Transform
=
_table_outline_dr
.
TableMatrix
;
var
_PageNum
=
_table_outline_dr
.
CurrentPageIndex
;
if
(
!
_Transform
||
global_MatrixTransformer
.
IsIdentity
(
_Transform
))
{
var
_x
=
global_mouseEvent
.
X
-
_xOffset
;
var
_y
=
global_mouseEvent
.
Y
-
_yOffset
;
var
posLT
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
,
_PageNum
);
var
_offset
=
this
.
TableRulersRectSize
+
this
.
TableRulersRectOffset
;
if
(
_x
>
(
posLT
.
X
-
_offset
-
_eps
)
&&
_x
<
(
posLT
.
X
-
this
.
TableRulersRectOffset
+
_eps
)
&&
_y
>
(
posLT
.
Y
-
_offset
-
_eps
)
&&
_y
<
(
posLT
.
Y
-
this
.
TableRulersRectOffset
+
_eps
))
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
TableMove
;
bIsTable
=
true
;
}
if
(
!
bIsTable
)
{
if
(
_y
>
(
posLT
.
Y
-
_offset
-
_eps
)
&&
_y
<
(
posLT
.
Y
-
this
.
TableRulersRectOffset
+
_eps
))
{
var
_len
=
this
.
TableHorRulerPoints
.
length
;
var
_indexF
=
-
1
;
var
_minF
=
1000000
;
for
(
var
i
=
0
;
i
<
_len
;
i
++
)
{
var
posM1
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableHorRulerPoints
[
i
].
C
,
this
.
TableMovePoint
.
Y
,
_PageNum
);
var
_dist
=
Math
.
abs
(
_x
-
posM1
.
X
);
if
(
_minF
>
_dist
)
{
_indexF
=
i
;
_minF
=
_dist
;
}
}
if
(
_minF
<
_eps
)
{
var
_p
=
this
.
TableHorRulerPoints
[
_indexF
];
this
.
TableCurrentMoveDir
=
0
;
this
.
TableCurrentMovePos
=
_indexF
;
this
.
TableCurrentMoveValue
=
_p
.
X
;
this
.
TableCurrentMoveValueOld
=
this
.
TableCurrentMoveValue
;
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
TableRuler
;
if
(
_indexF
==
0
)
{
this
.
TableCurrentMoveValueMin
=
this
.
TableMovePoint
.
X
;
}
else
{
this
.
TableCurrentMoveValueMin
=
this
.
TableHorRulerPoints
[
_indexF
-
1
].
X
+
this
.
TableHorRulerPoints
[
_indexF
-
1
].
W
;
}
if
(
_indexF
<
(
_len
-
1
))
{
this
.
TableCurrentMoveValueMax
=
this
.
TableHorRulerPoints
[
_indexF
+
1
].
X
;
}
else
{
this
.
TableCurrentMoveValueMax
=
null
;
}
bIsTable
=
true
;
}
}
if
(
!
bIsTable
&&
_x
>=
(
posLT
.
X
-
_offset
-
_eps
)
&&
_x
<=
(
posLT
.
X
-
this
.
TableRulersRectOffset
+
_eps
))
{
var
_len
=
this
.
TableVerRulerPoints
.
length
;
var
_indexF
=
-
1
;
var
_minF
=
1000000
;
for
(
var
i
=
0
;
i
<
_len
;
i
++
)
{
var
posM1
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableMovePoint
.
X
,
this
.
TableVerRulerPoints
[
i
].
Y
,
_PageNum
);
var
posM2
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableMovePoint
.
X
,
this
.
TableVerRulerPoints
[
i
].
Y
+
this
.
TableVerRulerPoints
[
i
].
H
,
_PageNum
);
if
(
_y
>=
(
posM1
.
Y
-
_eps
)
&&
_y
<=
(
posM2
.
Y
+
_eps
))
{
var
_dist
=
Math
.
abs
(
_y
-
((
posM1
.
Y
+
posM2
.
Y
)
/
2
));
if
(
_minF
>
_dist
)
{
_indexF
=
i
;
_minF
=
_dist
;
}
}
}
if
(
_indexF
!=
-
1
)
{
var
_p
=
this
.
TableVerRulerPoints
[
_indexF
];
this
.
TableCurrentMoveDir
=
1
;
this
.
TableCurrentMovePos
=
_indexF
;
this
.
TableCurrentMoveValue
=
_p
.
Y
;
this
.
TableCurrentMoveValueOld
=
this
.
TableCurrentMoveValue
;
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
TableRuler
;
if
(
_indexF
==
0
)
{
this
.
TableCurrentMoveValueMin
=
this
.
TableMovePoint
.
Y
;
}
else
{
this
.
TableCurrentMoveValueMin
=
this
.
TableVerRulerPoints
[
_indexF
-
1
].
Y
+
this
.
TableVerRulerPoints
[
_indexF
-
1
].
H
;
}
if
(
_indexF
<
(
_len
-
1
))
{
this
.
TableCurrentMoveValueMax
=
this
.
TableVerRulerPoints
[
_indexF
+
1
].
Y
;
}
else
{
this
.
TableCurrentMoveValueMax
=
null
;
}
bIsTable
=
true
;
}
}
}
}
else
{
var
pos
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
if
(
pos
.
Page
==
_PageNum
)
{
var
_invert
=
global_MatrixTransformer
.
Invert
(
_Transform
);
var
_posx
=
_invert
.
TransformPointX
(
pos
.
X
,
pos
.
Y
);
var
_posy
=
_invert
.
TransformPointY
(
pos
.
X
,
pos
.
Y
);
var
_koef
=
AscCommon
.
g_dKoef_pix_to_mm
*
100
/
this
.
HtmlPage
.
m_nZoomValue
;
var
_eps1
=
this
.
TrackTargetEps
*
_koef
;
var
_offset1
=
this
.
TableRulersRectOffset
*
_koef
;
var
_offset2
=
_offset1
+
this
.
TableRulersRectSize
*
_koef
;
if
((
_posx
>=
(
this
.
TableMovePoint
.
X
-
_offset2
-
_eps1
))
&&
(
_posx
<=
(
this
.
TableMovePoint
.
X
-
_offset1
+
_eps1
))
&&
(
_posy
>=
(
this
.
TableMovePoint
.
Y
-
_offset2
-
_eps1
))
&&
(
_posy
<=
(
this
.
TableMovePoint
.
Y
-
_offset1
+
_eps1
)))
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
TableMove
;
bIsTable
=
true
;
}
if
(
!
bIsTable
)
{
if
(
_posy
>
(
this
.
TableMovePoint
.
Y
-
_offset2
-
_eps1
)
&&
_posy
<
(
this
.
TableMovePoint
.
Y
-
_offset1
+
_eps1
))
{
var
_len
=
this
.
TableHorRulerPoints
.
length
;
for
(
var
i
=
0
;
i
<
_len
;
i
++
)
{
var
_p
=
this
.
TableHorRulerPoints
[
i
];
if
(
_posx
>
(
_p
.
X
-
_eps1
)
&&
_posx
<
(
_p
.
X
+
_p
.
W
+
_eps1
))
{
this
.
TableCurrentMoveDir
=
0
;
this
.
TableCurrentMovePos
=
i
;
this
.
TableCurrentMoveValue
=
this
.
TableHorRulerPoints
[
i
].
X
;
this
.
TableCurrentMoveValueOld
=
this
.
TableCurrentMoveValue
;
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
TableRuler
;
if
(
i
==
0
)
{
this
.
TableCurrentMoveValueMin
=
this
.
TableMovePoint
.
X
;
}
else
{
this
.
TableCurrentMoveValueMin
=
this
.
TableHorRulerPoints
[
i
-
1
].
X
+
this
.
TableHorRulerPoints
[
i
-
1
].
W
;
}
if
(
i
<
(
_len
-
1
))
{
this
.
TableCurrentMoveValueMax
=
this
.
TableHorRulerPoints
[
i
+
1
].
X
;
}
else
{
this
.
TableCurrentMoveValueMax
=
null
;
}
bIsTable
=
true
;
break
;
}
}
}
if
(
!
bIsTable
&&
_posx
>=
(
this
.
TableMovePoint
.
X
-
_offset2
-
_eps1
)
&&
_posx
<=
(
this
.
TableMovePoint
.
X
-
_offset1
+
_eps1
))
{
var
_len
=
this
.
TableVerRulerPoints
.
length
;
for
(
var
i
=
0
;
i
<
_len
;
i
++
)
{
var
_p
=
this
.
TableVerRulerPoints
[
i
];
if
(
_posy
>=
(
_p
.
Y
-
_eps1
)
&&
_posy
<=
(
_p
.
Y
+
_p
.
H
+
_eps1
))
{
this
.
TableCurrentMoveDir
=
1
;
this
.
TableCurrentMovePos
=
i
;
this
.
TableCurrentMoveValue
=
this
.
TableVerRulerPoints
[
i
].
Y
;
this
.
TableCurrentMoveValueOld
=
this
.
TableCurrentMoveValue
;
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
TableRuler
;
if
(
i
==
0
)
{
this
.
TableCurrentMoveValueMin
=
this
.
TableMovePoint
.
Y
;
}
else
{
this
.
TableCurrentMoveValueMin
=
this
.
TableVerRulerPoints
[
i
-
1
].
Y
+
this
.
TableVerRulerPoints
[
i
-
1
].
H
;
}
if
(
i
<
(
_len
-
1
))
{
this
.
TableCurrentMoveValueMax
=
this
.
TableVerRulerPoints
[
i
+
1
].
Y
;
}
else
{
this
.
TableCurrentMoveValueMax
=
null
;
}
bIsTable
=
true
;
break
;
}
}
}
}
}
}
}
if
(
!
bIsTable
)
{
var
pos
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
var
dKoef
=
(
100
*
AscCommon
.
g_dKoef_pix_to_mm
/
this
.
HtmlPage
.
m_nZoomValue
);
global_mouseEvent
.
KoefPixToMM
=
5
;
if
(
this
.
LogicDocument
.
DrawingObjects
.
isPointInDrawingObjects3
(
pos
.
X
,
pos
.
Y
,
pos
.
Page
))
{
bIsKoefPixToMM
=
true
;
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
FlowObj
;
}
else
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
}
global_mouseEvent
.
KoefPixToMM
=
1
;
bIsKoefPixToMM
=
this
.
CheckObjectTrack
();
}
}
...
...
@@ -466,7 +117,7 @@
case
AscCommon
.
MobileTouchMode
.
None
:
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Scroll
;
this
.
DownPoint
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPoint
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPointOriginal
.
X
=
global_mouseEvent
.
X
;
this
.
DownPointOriginal
.
Y
=
global_mouseEvent
.
Y
;
...
...
@@ -478,7 +129,7 @@
case
AscCommon
.
MobileTouchMode
.
Scroll
:
{
// ничего не меняем, просто перемещаем точку
this
.
DownPoint
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPoint
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPointOriginal
.
X
=
global_mouseEvent
.
X
;
this
.
DownPointOriginal
.
Y
=
global_mouseEvent
.
Y
;
...
...
@@ -494,25 +145,25 @@
var
_x2
=
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
;
var
_y2
=
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
/
2
;
this
.
LogicDocument
.
Selection_Remove
();
this
.
delegate
.
LogicDocument
.
Selection_Remove
();
if
(
1
==
this
.
DragSelect
)
{
global_mouseEvent
.
Button
=
0
;
if
(
!
_matrix
)
{
this
.
LogicDocument
.
OnMouseDown
(
global_mouseEvent
,
_x2
,
_y2
,
this
.
PageSelect2
);
this
.
delegate
.
Logic_
OnMouseDown
(
global_mouseEvent
,
_x2
,
_y2
,
this
.
PageSelect2
);
}
else
{
var
__X
=
_matrix
.
TransformPointX
(
_x2
,
_y2
);
var
__Y
=
_matrix
.
TransformPointY
(
_x2
,
_y2
);
this
.
LogicDocument
.
OnMouseDown
(
global_mouseEvent
,
__X
,
__Y
,
this
.
PageSelect2
);
this
.
delegate
.
Logic_
OnMouseDown
(
global_mouseEvent
,
__X
,
__Y
,
this
.
PageSelect2
);
}
var
pos1
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
LogicDocument
.
OnMouseMove
(
global_mouseEvent
,
pos1
.
X
,
pos1
.
Y
,
pos1
.
Page
);
var
pos1
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
delegate
.
Logic_
OnMouseMove
(
global_mouseEvent
,
pos1
.
X
,
pos1
.
Y
,
pos1
.
Page
);
}
else
if
(
2
==
this
.
DragSelect
)
{
...
...
@@ -520,18 +171,18 @@
if
(
!
_matrix
)
{
this
.
LogicDocument
.
OnMouseDown
(
global_mouseEvent
,
_x1
,
_y1
,
this
.
PageSelect1
);
this
.
delegate
.
Logic_
OnMouseDown
(
global_mouseEvent
,
_x1
,
_y1
,
this
.
PageSelect1
);
}
else
{
var
__X
=
_matrix
.
TransformPointX
(
_x1
,
_y1
);
var
__X
=
_matrix
.
TransformPointX
(
_x1
,
_y1
);
var
__Y
=
_matrix
.
TransformPointY
(
_x1
,
_y1
);
this
.
LogicDocument
.
OnMouseDown
(
global_mouseEvent
,
__X
,
__Y
,
this
.
PageSelect1
);
this
.
delegate
.
Logic_
OnMouseDown
(
global_mouseEvent
,
__X
,
__Y
,
this
.
PageSelect1
);
}
var
pos4
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
LogicDocument
.
OnMouseMove
(
global_mouseEvent
,
pos4
.
X
,
pos4
.
Y
,
pos4
.
Page
);
var
pos4
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
delegate
.
Logic_
OnMouseMove
(
global_mouseEvent
,
pos4
.
X
,
pos4
.
Y
,
pos4
.
Page
);
}
break
;
}
...
...
@@ -549,7 +200,7 @@
{
global_mouseEvent
.
KoefPixToMM
=
5
;
}
this
.
HtmlPage
.
o
nMouseDown
(
e
.
touches
?
e
.
touches
[
0
]
:
e
);
this
.
delegate
.
Drawing_O
nMouseDown
(
e
.
touches
?
e
.
touches
[
0
]
:
e
);
global_mouseEvent
.
KoefPixToMM
=
1
;
break
;
}
...
...
@@ -564,14 +215,14 @@
var
_y2
=
(
e
.
touches
[
1
].
pageY
!==
undefined
)
?
e
.
touches
[
1
].
pageY
:
e
.
touches
[
1
].
clientY
;
this
.
ZoomDistance
=
Math
.
sqrt
((
_x1
-
_x2
)
*
(
_x1
-
_x2
)
+
(
_y1
-
_y2
)
*
(
_y1
-
_y2
));
this
.
ZoomValue
=
this
.
HtmlPage
.
m_nZoomValue
;
this
.
ZoomValue
=
this
.
delegate
.
GetZoom
()
;
break
;
}
case
AscCommon
.
MobileTouchMode
.
Cursor
:
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Scroll
;
this
.
DownPoint
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPoint
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
TableMove
:
...
...
@@ -579,7 +230,7 @@
// так как был уже check, нужно уменьшить количество кликов
if
(
global_mouseEvent
.
ClickCount
>
0
)
global_mouseEvent
.
ClickCount
--
;
this
.
HtmlPage
.
o
nMouseDown
(
e
.
touches
?
e
.
touches
[
0
]
:
e
);
this
.
delegate
.
Drawing_O
nMouseDown
(
e
.
touches
?
e
.
touches
[
0
]
:
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
TableRuler
:
...
...
@@ -589,7 +240,7 @@
}
}
if
(
this
.
HtmlPage
.
m_o
Api
.
isViewMode
)
if
(
this
.
Api
.
isViewMode
)
{
if
(
e
.
preventDefault
)
e
.
preventDefault
();
...
...
@@ -600,7 +251,7 @@
};
CMobileTouchManager
.
prototype
.
onTouchMove
=
function
(
e
)
{
if
(
null
!=
this
.
DrawingDocument
.
m_oDocumentRenderer
)
if
(
null
!=
this
.
delegate
.
IsReader
()
)
return
this
.
onTouchMove_renderer
(
e
);
if
(
this
.
Mode
!=
AscCommon
.
MobileTouchMode
.
FlowObj
&&
this
.
Mode
!=
AscCommon
.
MobileTouchMode
.
TableMove
)
...
...
@@ -708,7 +359,7 @@
else
if
(
_zoomCur
>
this
.
ZoomValueMax
)
_zoomCur
=
this
.
ZoomValueMax
;
this
.
HtmlPage
.
m_oApi
.
z
oom
(
_zoomCur
);
this
.
delegate
.
SetZ
oom
(
_zoomCur
);
AscCommon
.
stopEvent
(
e
);
break
;
}
...
...
@@ -800,7 +451,7 @@
{
this
.
IsTouching
=
false
;
if
(
null
!=
this
.
DrawingDocument
.
m_oDocumentRenderer
)
if
(
null
!=
this
.
delegate
.
IsReader
()
)
return
this
.
onTouchEnd_renderer
(
e
);
if
(
this
.
Mode
!=
AscCommon
.
MobileTouchMode
.
FlowObj
&&
this
.
Mode
!=
AscCommon
.
MobileTouchMode
.
TableMove
)
...
...
@@ -856,9 +507,9 @@
case
AscCommon
.
MobileTouchMode
.
Zoom
:
{
// здесь нужно запускать отрисовку, если есть анимация зума
this
.
HtmlPage
.
NoneRepaintPages
=
false
;
this
.
HtmlPage
.
m_bIsFullRepaint
=
true
;
this
.
HtmlPage
.
OnScroll
();
this
.
delegate
.
HtmlPage
.
NoneRepaintPages
=
false
;
this
.
delegate
.
HtmlPage
.
m_bIsFullRepaint
=
true
;
this
.
delegate
.
HtmlPage
.
OnScroll
();
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
isCheckContextMenuMode
=
false
;
...
...
@@ -872,7 +523,7 @@
case
AscCommon
.
MobileTouchMode
.
FlowObj
:
{
// TODO:
this
.
HtmlPage
.
o
nMouseUp
(
e
.
changedTouches
?
e
.
changedTouches
[
0
]
:
e
);
this
.
delegate
.
Drawing_O
nMouseUp
(
e
.
changedTouches
?
e
.
changedTouches
[
0
]
:
e
);
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
break
;
}
...
...
@@ -881,37 +532,40 @@
// ничего не нужно делать
this
.
DragSelect
=
0
;
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
var
pos
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
LogicDocument
.
OnMouseUp
(
global_mouseEvent
,
pos
.
X
,
pos
.
Y
,
pos
.
Page
);
var
pos
=
this
.
delegate
.
ConvertCoordsFromCursor
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
delegate
.
Logic_
OnMouseUp
(
global_mouseEvent
,
pos
.
X
,
pos
.
Y
,
pos
.
Page
);
AscCommon
.
stopEvent
(
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
TableMove
:
{
this
.
HtmlPage
.
o
nMouseUp
(
e
.
changedTouches
?
e
.
changedTouches
[
0
]
:
e
);
this
.
delegate
.
Drawing_O
nMouseUp
(
e
.
changedTouches
?
e
.
changedTouches
[
0
]
:
e
);
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
break
;
}
case
AscCommon
.
MobileTouchMode
.
TableRuler
:
{
this
.
HtmlPage
.
StartUpdateOverlay
();
var
HtmlPage
=
this
.
delegate
.
HtmlPage
;
var
DrawingDocument
=
this
.
delegate
.
DrawingDocument
;
HtmlPage
.
StartUpdateOverlay
();
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
var
_xOffset
=
this
.
HtmlPage
.
X
;
var
_yOffset
=
this
.
HtmlPage
.
Y
;
var
_xOffset
=
HtmlPage
.
X
;
var
_yOffset
=
HtmlPage
.
Y
;
if
(
true
===
this
.
HtmlPage
.
m_bIsRuler
)
if
(
true
===
HtmlPage
.
m_bIsRuler
)
{
_xOffset
+=
(
5
*
g_dKoef_mm_to_pix
);
_yOffset
+=
(
7
*
g_dKoef_mm_to_pix
);
}
var
pos
=
this
.
DrawingDocument
.
ConvertCoordsFromCursorPage
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
,
this
.
DrawingDocument
.
TableOutlineDr
.
CurrentPageIndex
);
var
pos
=
DrawingDocument
.
ConvertCoordsFromCursorPage
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
,
DrawingDocument
.
TableOutlineDr
.
CurrentPageIndex
);
var
_Transform
=
null
;
if
(
this
.
DrawingDocument
.
TableOutlineDr
)
_Transform
=
this
.
DrawingDocument
.
TableOutlineDr
.
TableMatrix
;
if
(
DrawingDocument
.
TableOutlineDr
)
_Transform
=
DrawingDocument
.
TableOutlineDr
.
TableMatrix
;
if
(
_Transform
&&
!
global_MatrixTransformer
.
IsIdentity
(
_Transform
))
{
...
...
@@ -940,15 +594,15 @@
this
.
TableCurrentMoveValue
=
this
.
TableCurrentMoveValueMax
;
}
var
_markup
=
this
.
HtmlPage
.
m_oHorRuler
.
m_oTableMarkup
;
var
_markup
=
HtmlPage
.
m_oHorRuler
.
m_oTableMarkup
;
_markup
.
Cols
[
this
.
TableCurrentMovePos
]
+=
(
this
.
TableCurrentMoveValue
-
this
.
TableCurrentMoveValueOld
);
_markup
.
Cols
[
this
.
TableCurrentMovePos
]
=
Math
.
max
(
_markup
.
Cols
[
this
.
TableCurrentMovePos
],
1
);
if
(
false
===
this
.
HtmlPage
.
m_oLogicDocument
.
Document_Is_SelectionLocked
(
AscCommon
.
changestype_Table_Properties
)
)
if
(
false
===
HtmlPage
.
m_oLogicDocument
.
Document_Is_SelectionLocked
(
AscCommon
.
changestype_Table_Properties
)
)
{
this
.
HtmlPage
.
m_oLogicDocument
.
Create_NewHistoryPoint
(
AscDFH
.
historydescription_Document_SetTableMarkup_Hor
);
HtmlPage
.
m_oLogicDocument
.
Create_NewHistoryPoint
(
AscDFH
.
historydescription_Document_SetTableMarkup_Hor
);
_markup
.
Table
.
Update_TableMarkupFromRuler
(
_markup
,
true
,
this
.
TableCurrentMovePos
+
1
);
this
.
HtmlPage
.
m_oLogicDocument
.
Document_UpdateInterfaceState
();
HtmlPage
.
m_oLogicDocument
.
Document_UpdateInterfaceState
();
}
}
else
...
...
@@ -966,19 +620,19 @@
this
.
TableCurrentMoveValue
=
this
.
TableCurrentMoveValueMax
;
}
var
_markup
=
this
.
HtmlPage
.
m_oHorRuler
.
m_oTableMarkup
;
var
_markup
=
HtmlPage
.
m_oHorRuler
.
m_oTableMarkup
;
_markup
.
Rows
[
this
.
TableCurrentMovePos
].
H
+=
(
this
.
TableCurrentMoveValue
-
this
.
TableCurrentMoveValueOld
);
if
(
false
===
this
.
HtmlPage
.
m_oLogicDocument
.
Document_Is_SelectionLocked
(
AscCommon
.
changestype_Table_Properties
)
)
{
this
.
HtmlPage
.
m_oLogicDocument
.
Create_NewHistoryPoint
(
AscDFH
.
historydescription_Document_SetTableMarkup_Hor
);
HtmlPage
.
m_oLogicDocument
.
Create_NewHistoryPoint
(
AscDFH
.
historydescription_Document_SetTableMarkup_Hor
);
_markup
.
Table
.
Update_TableMarkupFromRuler
(
_markup
,
false
,
this
.
TableCurrentMovePos
+
1
);
this
.
HtmlPage
.
m_oLogicDocument
.
Document_UpdateInterfaceState
();
HtmlPage
.
m_oLogicDocument
.
Document_UpdateInterfaceState
();
}
}
this
.
HtmlPage
.
OnUpdateOverlay
();
this
.
HtmlPage
.
EndUpdateOverlay
();
HtmlPage
.
OnUpdateOverlay
();
HtmlPage
.
EndUpdateOverlay
();
break
;
}
...
...
@@ -986,7 +640,7 @@
break
;
}
if
(
this
.
HtmlPage
.
m_o
Api
.
isViewMode
)
if
(
this
.
Api
.
isViewMode
)
{
if
(
e
.
preventDefault
)
e
.
preventDefault
();
...
...
@@ -999,827 +653,6 @@
this
.
CheckContextMenuTouchEnd
(
isCheckContextMenuMode
);
};
CMobileTouchManager
.
prototype
.
onTouchStart_renderer
=
function
(
e
)
{
AscCommon
.
check_MouseDownEvent
(
e
.
touches
?
e
.
touches
[
0
]
:
e
,
true
);
global_mouseEvent
.
LockMouse
();
this
.
MoveAfterDown
=
false
;
if
(
e
.
touches
&&
2
==
e
.
touches
.
length
)
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Zoom
;
}
switch
(
this
.
Mode
)
{
case
AscCommon
.
MobileTouchMode
.
None
:
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
Scroll
;
this
.
DownPoint
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPointOriginal
.
X
=
global_mouseEvent
.
X
;
this
.
DownPointOriginal
.
Y
=
global_mouseEvent
.
Y
;
this
.
iScroll
.
_start
(
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
Scroll
:
{
// ничего не меняем, просто перемещаем точку
this
.
DownPoint
=
this
.
DrawingDocument
.
ConvertCoordsFromCursor2
(
global_mouseEvent
.
X
,
global_mouseEvent
.
Y
);
this
.
DownPointOriginal
.
X
=
global_mouseEvent
.
X
;
this
.
DownPointOriginal
.
Y
=
global_mouseEvent
.
Y
;
this
.
iScroll
.
_start
(
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
Zoom
:
{
this
.
HtmlPage
.
NoneRepaintPages
=
true
;
var
_x1
=
(
e
.
touches
[
0
].
pageX
!==
undefined
)
?
e
.
touches
[
0
].
pageX
:
e
.
touches
[
0
].
clientX
;
var
_y1
=
(
e
.
touches
[
0
].
pageY
!==
undefined
)
?
e
.
touches
[
0
].
pageY
:
e
.
touches
[
0
].
clientY
;
var
_x2
=
(
e
.
touches
[
1
].
pageX
!==
undefined
)
?
e
.
touches
[
1
].
pageX
:
e
.
touches
[
1
].
clientX
;
var
_y2
=
(
e
.
touches
[
1
].
pageY
!==
undefined
)
?
e
.
touches
[
1
].
pageY
:
e
.
touches
[
1
].
clientY
;
this
.
ZoomDistance
=
Math
.
sqrt
((
_x1
-
_x2
)
*
(
_x1
-
_x2
)
+
(
_y1
-
_y2
)
*
(
_y1
-
_y2
));
this
.
ZoomValue
=
this
.
HtmlPage
.
m_nZoomValue
;
break
;
}
}
if
(
e
.
preventDefault
)
e
.
preventDefault
();
else
e
.
returnValue
=
false
;
};
CMobileTouchManager
.
prototype
.
onTouchMove_renderer
=
function
(
e
)
{
AscCommon
.
check_MouseMoveEvent
(
e
.
touches
?
e
.
touches
[
0
]
:
e
);
if
(
!
this
.
MoveAfterDown
)
{
if
(
Math
.
abs
(
this
.
DownPointOriginal
.
X
-
global_mouseEvent
.
X
)
>
this
.
MoveMinDist
||
Math
.
abs
(
this
.
DownPointOriginal
.
Y
-
global_mouseEvent
.
Y
)
>
this
.
MoveMinDist
)
{
this
.
MoveAfterDown
=
true
;
}
}
switch
(
this
.
Mode
)
{
case
AscCommon
.
MobileTouchMode
.
Scroll
:
{
var
_offsetX
=
global_mouseEvent
.
X
-
this
.
DownPointOriginal
.
X
;
var
_offsetY
=
global_mouseEvent
.
Y
-
this
.
DownPointOriginal
.
Y
;
this
.
iScroll
.
_move
(
e
);
break
;
}
case
AscCommon
.
MobileTouchMode
.
Zoom
:
{
if
(
2
!=
e
.
touches
.
length
)
{
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
return
;
}
var
_x1
=
(
e
.
touches
[
0
].
pageX
!==
undefined
)
?
e
.
touches
[
0
].
pageX
:
e
.
touches
[
0
].
clientX
;
var
_y1
=
(
e
.
touches
[
0
].
pageY
!==
undefined
)
?
e
.
touches
[
0
].
pageY
:
e
.
touches
[
0
].
clientY
;
var
_x2
=
(
e
.
touches
[
1
].
pageX
!==
undefined
)
?
e
.
touches
[
1
].
pageX
:
e
.
touches
[
1
].
clientX
;
var
_y2
=
(
e
.
touches
[
1
].
pageY
!==
undefined
)
?
e
.
touches
[
1
].
pageY
:
e
.
touches
[
1
].
clientY
;
var
zoomCurrentDist
=
Math
.
sqrt
((
_x1
-
_x2
)
*
(
_x1
-
_x2
)
+
(
_y1
-
_y2
)
*
(
_y1
-
_y2
));
if
(
zoomCurrentDist
==
0
)
zoomCurrentDist
=
1
;
var
_zoomFix
=
this
.
ZoomValue
/
100
;
var
_zoomCur
=
_zoomFix
*
(
zoomCurrentDist
/
this
.
ZoomDistance
);
_zoomCur
=
(
_zoomCur
*
100
)
>>
0
;
if
(
_zoomCur
<
this
.
ZoomValueMin
)
_zoomCur
=
this
.
ZoomValueMin
;
else
if
(
_zoomCur
>
this
.
ZoomValueMax
)
_zoomCur
=
this
.
ZoomValueMax
;
this
.
HtmlPage
.
m_oApi
.
zoom
(
_zoomCur
);
break
;
}
default
:
break
;
}
if
(
e
.
preventDefault
)
e
.
preventDefault
();
else
e
.
returnValue
=
false
;
};
CMobileTouchManager
.
prototype
.
onTouchEnd_renderer
=
function
(
e
)
{
AscCommon
.
check_MouseUpEvent
(
e
.
changedTouches
?
e
.
changedTouches
[
0
]
:
e
);
switch
(
this
.
Mode
)
{
case
AscCommon
.
MobileTouchMode
.
Scroll
:
{
this
.
iScroll
.
_end
(
e
);
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
if
(
!
this
.
MoveAfterDown
)
{
this
.
HtmlPage
.
m_oApi
.
sendEvent
(
"
asc_onTapEvent
"
,
e
);
}
break
;
}
case
AscCommon
.
MobileTouchMode
.
Zoom
:
{
// здесь нужно запускать отрисовку, если есть анимация зума
this
.
HtmlPage
.
NoneRepaintPages
=
false
;
this
.
HtmlPage
.
m_bIsFullRepaint
=
true
;
this
.
HtmlPage
.
OnScroll
();
this
.
Mode
=
AscCommon
.
MobileTouchMode
.
None
;
break
;
}
default
:
break
;
}
if
(
e
.
preventDefault
)
e
.
preventDefault
();
else
e
.
returnValue
=
false
;
};
CMobileTouchManager
.
prototype
.
CheckZoomCriticalValues
=
function
(
zoomMin
)
{
if
(
zoomMin
!==
undefined
)
{
this
.
ZoomValueMin
=
zoomMin
;
return
;
}
var
w
=
this
.
HtmlPage
.
m_oEditor
.
AbsolutePosition
.
R
-
this
.
HtmlPage
.
m_oEditor
.
AbsolutePosition
.
L
;
var
Zoom
=
100
;
if
(
0
!=
this
.
HtmlPage
.
m_dDocumentPageWidth
)
{
Zoom
=
100
*
(
w
-
10
)
/
this
.
HtmlPage
.
m_dDocumentPageWidth
;
if
(
Zoom
<
5
)
Zoom
=
5
;
if
(
this
.
HtmlPage
.
m_oApi
.
isMobileVersion
)
{
var
_w
=
this
.
HtmlPage
.
m_oEditor
.
HtmlElement
.
width
;
if
(
this
.
HtmlPage
.
bIsRetinaSupport
)
{
_w
>>=
1
;
}
Zoom
=
100
*
_w
*
AscCommon
.
g_dKoef_pix_to_mm
/
this
.
HtmlPage
.
m_dDocumentPageWidth
;
}
}
var
_new_value
=
(
Zoom
-
0.5
)
>>
0
;
this
.
ZoomValueMin
=
_new_value
;
if
(
this
.
ZoomValue
<
this
.
ZoomValueMin
)
{
this
.
ZoomValue
=
this
.
ZoomValueMin
;
this
.
HtmlPage
.
m_oApi
.
zoom
(
this
.
ZoomValue
);
}
};
CMobileTouchManager
.
prototype
.
Resize
=
function
()
{
if
(
this
.
iScroll
!=
null
)
{
this
.
iScroll
.
scroller
.
style
.
width
=
this
.
HtmlPage
.
m_dDocumentWidth
+
"
px
"
;
this
.
iScroll
.
scroller
.
style
.
height
=
this
.
HtmlPage
.
m_dDocumentHeight
+
"
px
"
;
this
.
iScroll
.
refresh
(
true
);
}
};
CMobileTouchManager
.
prototype
.
SendShowContextMenu
=
function
()
{
if
(
-
1
!=
this
.
ContextMenuShowTimerId
)
{
clearTimeout
(
this
.
ContextMenuShowTimerId
);
}
var
that
=
this
;
this
.
ContextMenuShowTimerId
=
setTimeout
(
function
()
{
var
_pos
=
that
.
GetContextMenuPosition
();
that
.
HtmlPage
.
m_oApi
.
sendEvent
(
"
asc_onShowPopMenu
"
,
_pos
.
X
,
_pos
.
Y
,
(
_pos
.
Mode
>
1
)
?
true
:
false
);
},
500
);
};
CMobileTouchManager
.
prototype
.
GetContextMenuPosition
=
function
()
{
var
_posX
=
0
;
var
_posY
=
0
;
var
_page
=
0
;
var
_transform
=
null
;
var
tmpX
,
tmpY
,
tmpX2
,
tmpY2
;
var
_pos
=
null
;
var
_mode
=
0
;
var
_target
=
this
.
LogicDocument
.
Is_SelectionUse
();
if
(
_target
===
false
)
{
_posX
=
this
.
DrawingDocument
.
m_dTargetX
;
_posY
=
this
.
DrawingDocument
.
m_dTargetY
;
_page
=
this
.
DrawingDocument
.
m_lTargetPage
;
_transform
=
this
.
DrawingDocument
.
TextMatrix
;
if
(
_transform
)
{
tmpX
=
_transform
.
TransformPointX
(
_posX
,
_posY
);
tmpY
=
_transform
.
TransformPointY
(
_posX
,
_posY
);
}
else
{
tmpX
=
_posX
;
tmpY
=
_posY
;
}
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
tmpX
,
tmpY
,
_page
);
_posX
=
_pos
.
X
;
_posY
=
_pos
.
Y
;
_mode
=
1
;
}
var
_select
=
this
.
LogicDocument
.
Get_SelectionBounds
();
if
(
_select
)
{
var
_rect1
=
_select
.
Start
;
var
_rect2
=
_select
.
End
;
tmpX
=
_rect1
.
X
;
tmpY
=
_rect1
.
Y
;
tmpX2
=
_rect2
.
X
+
_rect2
.
W
;
tmpY2
=
_rect2
.
Y
+
_rect2
.
H
;
_transform
=
this
.
DrawingDocument
.
SelectionMatrix
;
if
(
_transform
)
{
_posX
=
_transform
.
TransformPointX
(
tmpX
,
tmpY
);
_posY
=
_transform
.
TransformPointY
(
tmpX
,
tmpY
);
tmpX
=
_posX
;
tmpY
=
_posY
;
_posX
=
_transform
.
TransformPointX
(
tmpX2
,
tmpY2
);
_posY
=
_transform
.
TransformPointY
(
tmpX2
,
tmpY2
);
tmpX2
=
_posX
;
tmpY2
=
_posY
;
}
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
tmpX
,
tmpY
,
_rect1
.
Page
);
_posX
=
_pos
.
X
;
_posY
=
_pos
.
Y
;
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
tmpX2
,
tmpY2
,
_rect2
.
Page
);
_posX
+=
_pos
.
X
;
_posX
=
_posX
>>
1
;
_mode
=
2
;
}
var
_object_bounds
=
this
.
LogicDocument
.
DrawingObjects
.
getSelectedObjectsBounds
();
if
((
0
==
_mode
)
&&
_object_bounds
)
{
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_object_bounds
.
minX
,
_object_bounds
.
minY
,
_object_bounds
.
pageIndex
);
_posX
=
_pos
.
X
;
_posY
=
_pos
.
Y
;
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_object_bounds
.
maxX
,
_object_bounds
.
maxY
,
_object_bounds
.
pageIndex
);
_posX
+=
_pos
.
X
;
_posX
=
_posX
>>
1
;
_mode
=
3
;
}
return
{
X
:
_posX
,
Y
:
_posY
,
Mode
:
_mode
};
};
CMobileTouchManager
.
prototype
.
GetContextMenuType
=
function
()
{
var
_mode
=
AscCommon
.
MobileTouchContextMenuType
.
None
;
if
(
!
this
.
LogicDocument
.
Is_SelectionUse
())
_mode
=
AscCommon
.
MobileTouchContextMenuType
.
Target
;
if
(
this
.
LogicDocument
.
Get_SelectionBounds
())
_mode
=
AscCommon
.
MobileTouchContextMenuType
.
Select
;
if
(
_mode
==
0
&&
this
.
LogicDocument
.
DrawingObjects
.
getSelectedObjectsBounds
())
_mode
=
AscCommon
.
MobileTouchContextMenuType
.
Object
;
return
_mode
;
};
CMobileTouchManager
.
prototype
.
CheckContextMenuTouchEnd
=
function
(
isCheck
)
{
// isCheck: если пришли сюда после скролла или зума (или их анимации) - то не нужно проверять состояние редактора.
// Нужно проверять последнее сохраненной состояние
if
(
isCheck
)
{
var
_mode
=
this
.
GetContextMenuType
();
if
(
_mode
==
this
.
ContextMenuLastMode
)
{
this
.
ContextMenuLastModeCounter
++
;
this
.
ContextMenuLastModeCounter
&=
0x01
;
}
else
{
this
.
ContextMenuLastModeCounter
=
0
;
}
this
.
ContextMenuLastMode
=
_mode
;
}
if
(
this
.
ContextMenuLastMode
>
AscCommon
.
MobileTouchContextMenuType
.
None
&&
1
==
this
.
ContextMenuLastModeCounter
)
this
.
SendShowContextMenu
();
};
CMobileTouchManager
.
prototype
.
ClearContextMenu
=
function
()
{
this
.
ContextMenuLastMode
=
AscCommon
.
MobileTouchContextMenuType
.
None
;
this
.
ContextMenuLastModeCounter
=
0
;
this
.
HtmlPage
.
m_oApi
.
sendEvent
(
"
asc_onHidePopMenu
"
);
};
CMobileTouchManager
.
prototype
.
OnScrollAnimationEnd
=
function
()
{
if
(
this
.
HtmlPage
.
m_oApi
.
isViewMode
)
return
;
this
.
CheckContextMenuTouchEnd
(
false
);
};
CMobileTouchManager
.
prototype
.
CheckSelectRects
=
function
()
{
this
.
RectSelect1
=
null
;
this
.
RectSelect2
=
null
;
if
(
!
this
.
LogicDocument
)
return
;
var
_select
=
this
.
LogicDocument
.
Get_SelectionBounds
();
if
(
!
_select
)
return
;
var
_rect1
=
_select
.
Start
;
var
_rect2
=
_select
.
End
;
if
(
!
_rect1
||
!
_rect2
)
return
;
this
.
RectSelect1
=
new
AscCommon
.
_rect
();
this
.
RectSelect1
.
x
=
_rect1
.
X
;
this
.
RectSelect1
.
y
=
_rect1
.
Y
;
this
.
RectSelect1
.
w
=
_rect1
.
W
;
this
.
RectSelect1
.
h
=
_rect1
.
H
;
this
.
PageSelect1
=
_rect1
.
Page
;
this
.
RectSelect2
=
new
AscCommon
.
_rect
();
this
.
RectSelect2
.
x
=
_rect2
.
X
;
this
.
RectSelect2
.
y
=
_rect2
.
Y
;
this
.
RectSelect2
.
w
=
_rect2
.
W
;
this
.
RectSelect2
.
h
=
_rect2
.
H
;
this
.
PageSelect2
=
_rect2
.
Page
;
};
CMobileTouchManager
.
prototype
.
CheckSelect
=
function
(
overlay
)
{
this
.
CheckSelectRects
();
if
(
null
==
this
.
RectSelect1
||
null
==
this
.
RectSelect2
)
return
;
var
_matrix
=
this
.
DrawingDocument
.
SelectionMatrix
;
var
ctx
=
overlay
.
m_oContext
;
ctx
.
strokeStyle
=
"
#146FE1
"
;
ctx
.
fillStyle
=
"
#146FE1
"
;
if
(
!
_matrix
||
global_MatrixTransformer
.
IsIdentity
(
_matrix
))
{
var
pos1
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
,
this
.
PageSelect1
);
var
pos2
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
+
this
.
RectSelect1
.
h
,
this
.
PageSelect1
);
var
pos3
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
,
this
.
PageSelect2
);
var
pos4
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
,
this
.
PageSelect2
);
ctx
.
beginPath
();
ctx
.
moveTo
(
pos1
.
X
>>
0
,
pos1
.
Y
>>
0
);
ctx
.
lineTo
(
pos2
.
X
>>
0
,
pos2
.
Y
>>
0
);
ctx
.
moveTo
(
pos3
.
X
>>
0
,
pos3
.
Y
>>
0
);
ctx
.
lineTo
(
pos4
.
X
>>
0
,
pos4
.
Y
>>
0
);
ctx
.
lineWidth
=
2
;
ctx
.
stroke
();
ctx
.
beginPath
();
overlay
.
AddEllipse
(
pos1
.
X
,
pos1
.
Y
-
5
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
overlay
.
AddEllipse
(
pos4
.
X
,
pos4
.
Y
+
5
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
ctx
.
fill
();
ctx
.
beginPath
();
}
else
{
var
_xx11
=
_matrix
.
TransformPointX
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
);
var
_yy11
=
_matrix
.
TransformPointY
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
);
var
_xx12
=
_matrix
.
TransformPointX
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
+
this
.
RectSelect1
.
h
);
var
_yy12
=
_matrix
.
TransformPointY
(
this
.
RectSelect1
.
x
,
this
.
RectSelect1
.
y
+
this
.
RectSelect1
.
h
);
var
_xx21
=
_matrix
.
TransformPointX
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
);
var
_yy21
=
_matrix
.
TransformPointY
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
);
var
_xx22
=
_matrix
.
TransformPointX
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
);
var
_yy22
=
_matrix
.
TransformPointY
(
this
.
RectSelect2
.
x
+
this
.
RectSelect2
.
w
,
this
.
RectSelect2
.
y
+
this
.
RectSelect2
.
h
);
var
pos1
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_xx11
,
_yy11
,
this
.
PageSelect1
);
var
pos2
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_xx12
,
_yy12
,
this
.
PageSelect1
);
var
pos3
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_xx21
,
_yy21
,
this
.
PageSelect2
);
var
pos4
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_xx22
,
_yy22
,
this
.
PageSelect2
);
ctx
.
beginPath
();
ctx
.
moveTo
(
pos1
.
X
,
pos1
.
Y
);
ctx
.
lineTo
(
pos2
.
X
,
pos2
.
Y
);
ctx
.
moveTo
(
pos3
.
X
,
pos3
.
Y
);
ctx
.
lineTo
(
pos4
.
X
,
pos4
.
Y
);
ctx
.
lineWidth
=
2
;
ctx
.
stroke
();
ctx
.
beginPath
();
var
ex01
=
_matrix
.
TransformPointX
(
0
,
0
);
var
ey01
=
_matrix
.
TransformPointY
(
0
,
0
);
var
ex11
=
_matrix
.
TransformPointX
(
0
,
1
);
var
ey11
=
_matrix
.
TransformPointY
(
0
,
1
);
var
_len
=
Math
.
sqrt
((
ex11
-
ex01
)
*
(
ex11
-
ex01
)
+
(
ey11
-
ey01
)
*
(
ey11
-
ey01
));
if
(
_len
==
0
)
_len
=
0.01
;
var
ex
=
5
*
(
ex11
-
ex01
)
/
_len
;
var
ey
=
5
*
(
ey11
-
ey01
)
/
_len
;
var
_x1
=
(
pos1
.
X
-
ex
)
>>
0
;
var
_y1
=
(
pos1
.
Y
-
ey
)
>>
0
;
var
_x2
=
(
pos4
.
X
+
ex
)
>>
0
;
var
_y2
=
(
pos4
.
Y
+
ey
)
>>
0
;
overlay
.
AddEllipse
(
_x1
,
_y1
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
overlay
.
AddEllipse
(
_x2
,
_y2
,
AscCommon
.
MOBILE_SELECT_TRACK_ROUND
/
2
);
ctx
.
fill
();
ctx
.
beginPath
();
}
};
CMobileTouchManager
.
prototype
.
CheckTableRules
=
function
(
overlay
)
{
if
(
this
.
HtmlPage
.
m_oApi
.
isViewMode
)
return
;
var
horRuler
=
this
.
HtmlPage
.
m_oHorRuler
;
var
verRuler
=
this
.
HtmlPage
.
m_oVerRuler
;
var
_table_outline_dr
=
this
.
DrawingDocument
.
TableOutlineDr
;
var
_tableOutline
=
_table_outline_dr
.
TableOutline
;
if
(
horRuler
.
CurrentObjectType
!=
RULER_OBJECT_TYPE_TABLE
||
verRuler
.
CurrentObjectType
!=
RULER_OBJECT_TYPE_TABLE
||
!
_tableOutline
)
{
this
.
TableMovePoint
=
null
;
this
.
TableHorRulerPoints
=
null
;
this
.
TableVerRulerPoints
=
null
;
return
;
}
if
(
!
window
.
g_table_track_mobile_move
.
asc_complete
)
return
;
var
_table_markup
=
horRuler
.
m_oTableMarkup
;
if
(
_table_markup
.
Rows
.
length
==
0
)
return
;
this
.
HtmlPage
.
CheckShowOverlay
();
var
_epsRects
=
this
.
TableRulersRectOffset
;
var
_rectWidth
=
this
.
TableRulersRectSize
;
var
ctx
=
overlay
.
m_oContext
;
ctx
.
strokeStyle
=
"
#616161
"
;
ctx
.
lineWidth
=
1
;
var
_tableW
=
0
;
var
_cols
=
_table_markup
.
Cols
;
for
(
var
i
=
0
;
i
<
_cols
.
length
;
i
++
)
{
_tableW
+=
_cols
[
i
];
}
if
(
!
_table_outline_dr
.
TableMatrix
||
global_MatrixTransformer
.
IsIdentity
(
_table_outline_dr
.
TableMatrix
))
{
this
.
TableMovePoint
=
{
X
:
_tableOutline
.
X
,
Y
:
_tableOutline
.
Y
};
var
pos1
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
,
_tableOutline
.
Y
,
_tableOutline
.
PageNum
);
var
pos2
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
+
_tableW
,
_tableOutline
.
Y
,
_tableOutline
.
PageNum
);
ctx
.
beginPath
();
var
TableMoveRect_x
=
(
pos1
.
X
>>
0
)
+
0.5
-
(
_epsRects
+
_rectWidth
);
var
TableMoveRect_y
=
(
pos1
.
Y
>>
0
)
+
0.5
-
(
_epsRects
+
_rectWidth
);
overlay
.
CheckPoint
(
TableMoveRect_x
,
TableMoveRect_y
);
overlay
.
CheckPoint
(
TableMoveRect_x
+
_rectWidth
,
TableMoveRect_y
+
_rectWidth
);
ctx
.
drawImage
(
window
.
g_table_track_mobile_move
,
TableMoveRect_x
,
TableMoveRect_y
);
var
gradObj
=
ctx
.
createLinearGradient
((
pos1
.
X
>>
0
)
+
0.5
,
TableMoveRect_y
,
(
pos1
.
X
>>
0
)
+
0.5
,
TableMoveRect_y
+
_rectWidth
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRect
((
pos1
.
X
>>
0
)
+
0.5
,
TableMoveRect_y
,
(
pos2
.
X
-
pos1
.
X
)
>>
0
,
_rectWidth
,
4
);
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
_count
=
_table_markup
.
Rows
.
length
;
var
_y1
=
0
;
var
_y2
=
0
;
for
(
var
i
=
0
;
i
<
_count
;
i
++
)
{
if
(
i
==
0
)
_y1
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
+=
_table_markup
.
Rows
[
i
].
H
;
}
var
pos3
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
,
_y1
,
this
.
DrawingDocument
.
m_lCurrentPage
);
var
pos4
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
_tableOutline
.
X
,
_y2
,
this
.
DrawingDocument
.
m_lCurrentPage
);
var
_ttX
=
(
pos1
.
X
>>
0
)
+
0.5
-
(
_epsRects
+
_rectWidth
);
gradObj
=
ctx
.
createLinearGradient
(
_ttX
,
(
pos3
.
Y
>>
0
)
+
0.5
,
_ttX
,
(
pos3
.
Y
>>
0
)
+
0.5
+
(
pos4
.
Y
-
pos3
.
Y
)
>>
0
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRect
((
pos1
.
X
>>
0
)
+
1.5
-
(
_epsRects
+
_rectWidth
),
(
pos3
.
Y
>>
0
)
+
0.5
,
_rectWidth
-
1
,
(
pos4
.
Y
-
pos3
.
Y
)
>>
0
,
4
);
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
dKoef
=
(
this
.
HtmlPage
.
m_nZoomValue
*
g_dKoef_mm_to_pix
/
100
);
var
xDst
=
this
.
DrawingDocument
.
m_arrPages
[
this
.
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
left
;
var
yDst
=
this
.
DrawingDocument
.
m_arrPages
[
this
.
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
top
;
var
_oldY
=
_table_markup
.
Rows
[
0
].
Y
+
_table_markup
.
Rows
[
0
].
H
;
this
.
TableVerRulerPoints
=
[];
var
_rectIndex
=
0
;
var
_x
=
(
pos1
.
X
-
_epsRects
-
_rectWidth
)
>>
0
;
ctx
.
fillStyle
=
"
#146FE1
"
;
for
(
var
i
=
1
;
i
<=
_count
;
i
++
)
{
var
_newPos
=
(
i
!=
_count
)
?
_table_markup
.
Rows
[
i
].
Y
:
_oldY
;
var
_p
=
{
Y
:
_oldY
,
H
:
(
_newPos
-
_oldY
)};
var
_y
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
0
,
_oldY
,
_tableOutline
.
PageNum
);
ctx
.
beginPath
();
overlay
.
AddDiamond
(
_x
+
1.5
+
(
_rectWidth
>>
1
),
_y
.
Y
,
AscCommon
.
MOBILE_TABLE_RULER_DIAMOND
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableVerRulerPoints
[
_rectIndex
++
]
=
_p
;
if
(
i
!=
_count
)
_oldY
=
_table_markup
.
Rows
[
i
].
Y
+
_table_markup
.
Rows
[
i
].
H
;
}
this
.
TableHorRulerPoints
=
[];
_rectIndex
=
0
;
var
_col
=
_table_markup
.
X
;
for
(
var
i
=
1
;
i
<=
_cols
.
length
;
i
++
)
{
_col
+=
_cols
[
i
-
1
];
var
_x
=
_col
-
_table_markup
.
Margins
[
i
-
1
].
Right
;
var
_r
=
_col
+
((
i
==
_cols
.
length
)
?
0
:
_table_markup
.
Margins
[
i
].
Left
);
var
__c
=
((
xDst
+
dKoef
*
_col
)
>>
0
)
+
0.5
;
ctx
.
beginPath
();
overlay
.
AddDiamond
(
__c
,
TableMoveRect_y
+
_rectWidth
/
2
,
AscCommon
.
MOBILE_TABLE_RULER_DIAMOND
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableHorRulerPoints
[
_rectIndex
++
]
=
{
X
:
_x
,
W
:
_r
-
_x
,
C
:
_col
};
}
ctx
.
beginPath
();
if
(
this
.
Mode
==
AscCommon
.
MobileTouchMode
.
TableRuler
)
{
if
(
0
==
this
.
TableCurrentMoveDir
)
{
var
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableCurrentMoveValue
,
0
,
_table_outline_dr
.
CurrentPageIndex
);
overlay
.
VertLine
(
_pos
.
X
,
true
);
}
else
{
var
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
0
,
this
.
TableCurrentMoveValue
,
_table_outline_dr
.
CurrentPageIndex
);
overlay
.
HorLine
(
_pos
.
Y
,
true
);
}
}
}
else
{
var
dKoef
=
(
this
.
HtmlPage
.
m_nZoomValue
*
g_dKoef_mm_to_pix
/
100
);
var
xDst
=
this
.
DrawingDocument
.
m_arrPages
[
this
.
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
left
;
var
yDst
=
this
.
DrawingDocument
.
m_arrPages
[
this
.
DrawingDocument
.
m_lCurrentPage
].
drawingPage
.
top
;
ctx
.
lineWidth
=
1
/
dKoef
;
if
(
overlay
.
IsRetina
)
dKoef
*=
2
;
var
_coord_transform
=
new
AscCommon
.
CMatrix
();
_coord_transform
.
sx
=
dKoef
;
_coord_transform
.
sy
=
dKoef
;
_coord_transform
.
tx
=
xDst
;
_coord_transform
.
ty
=
yDst
;
var
_diamond_size
=
AscCommon
.
MOBILE_TABLE_RULER_DIAMOND
;
if
(
overlay
.
IsRetina
)
{
_coord_transform
.
tx
*=
2
;
_coord_transform
.
ty
*=
2
;
_diamond_size
*=
2
;
}
ctx
.
save
();
_coord_transform
.
Multiply
(
_table_outline_dr
.
TableMatrix
,
AscCommon
.
MATRIX_ORDER_PREPEND
);
ctx
.
setTransform
(
_coord_transform
.
sx
,
_coord_transform
.
shy
,
_coord_transform
.
shx
,
_coord_transform
.
sy
,
_coord_transform
.
tx
,
_coord_transform
.
ty
);
this
.
TableMovePoint
=
{
X
:
_tableOutline
.
X
,
Y
:
_tableOutline
.
Y
};
ctx
.
beginPath
();
var
_rectW
=
_rectWidth
/
dKoef
;
var
_offset
=
(
_epsRects
+
_rectWidth
)
/
dKoef
;
if
(
overlay
.
IsRetina
)
{
_rectW
*=
2
;
_offset
*=
2
;
}
ctx
.
drawImage
(
window
.
g_table_track_mobile_move
,
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
Y
-
_offset
,
_rectW
,
_rectW
);
var
gradObj
=
ctx
.
createLinearGradient
(
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
-
_offset
,
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
-
_offset
+
_rectW
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRectCtx
(
ctx
,
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
-
_offset
,
_tableW
,
_rectW
,
5
/
dKoef
);
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
_count
=
_table_markup
.
Rows
.
length
;
var
_y1
=
0
;
var
_y2
=
0
;
for
(
var
i
=
0
;
i
<
_count
;
i
++
)
{
if
(
i
==
0
)
_y1
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
=
_table_markup
.
Rows
[
i
].
Y
;
_y2
+=
_table_markup
.
Rows
[
i
].
H
;
}
gradObj
=
ctx
.
createLinearGradient
(
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
Y
,
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
X
-
_offset
+
_y2
-
_y1
);
gradObj
.
addColorStop
(
0
,
"
#f1f1f1
"
);
gradObj
.
addColorStop
(
1
,
"
#dfdfdf
"
);
ctx
.
fillStyle
=
gradObj
;
overlay
.
AddRoundRectCtx
(
ctx
,
this
.
TableMovePoint
.
X
-
_offset
,
this
.
TableMovePoint
.
Y
,
_rectW
,
_y2
-
_y1
,
5
/
dKoef
);
overlay
.
CheckRectT
(
this
.
TableMovePoint
.
X
,
this
.
TableMovePoint
.
Y
,
_tableW
,
_y2
-
_y1
,
_coord_transform
,
2
*
(
_epsRects
+
_rectWidth
));
ctx
.
fill
();
ctx
.
stroke
();
ctx
.
beginPath
();
var
_oldY
=
_table_markup
.
Rows
[
0
].
Y
+
_table_markup
.
Rows
[
0
].
H
;
_oldY
-=
_table_outline_dr
.
TableMatrix
.
ty
;
ctx
.
fillStyle
=
"
#146FE1
"
;
this
.
TableVerRulerPoints
=
[];
var
_rectIndex
=
0
;
var
_xx
=
this
.
TableMovePoint
.
X
-
_offset
;
for
(
var
i
=
1
;
i
<=
_count
;
i
++
)
{
var
_newPos
=
(
i
!=
_count
)
?
(
_table_markup
.
Rows
[
i
].
Y
-
_table_outline_dr
.
TableMatrix
.
ty
)
:
_oldY
;
var
_p
=
{
Y
:
_oldY
,
H
:
(
_newPos
-
_oldY
)};
var
___y
=
(
_p
.
Y
+
(
_p
.
H
/
2
));
ctx
.
beginPath
();
overlay
.
AddDiamond
(
_xx
+
_rectW
/
2
,
___y
,
_diamond_size
/
dKoef
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableVerRulerPoints
[
_rectIndex
++
]
=
_p
;
if
(
i
!=
_count
)
{
_oldY
=
_table_markup
.
Rows
[
i
].
Y
+
_table_markup
.
Rows
[
i
].
H
;
_oldY
-=
_table_outline_dr
.
TableMatrix
.
ty
;
}
}
this
.
TableHorRulerPoints
=
[];
_rectIndex
=
0
;
var
_col
=
this
.
TableMovePoint
.
X
;
for
(
var
i
=
1
;
i
<=
_cols
.
length
;
i
++
)
{
_col
+=
_cols
[
i
-
1
];
var
_x
=
_col
-
_table_markup
.
Margins
[
i
-
1
].
Right
;
var
_r
=
_col
+
((
i
==
_cols
.
length
)
?
0
:
_table_markup
.
Margins
[
i
].
Left
);
ctx
.
beginPath
();
overlay
.
AddDiamond
(
_col
,
this
.
TableMovePoint
.
Y
-
_offset
+
_rectW
/
2
,
_diamond_size
/
dKoef
);
ctx
.
fill
();
ctx
.
beginPath
();
this
.
TableHorRulerPoints
[
_rectIndex
++
]
=
{
X
:
_x
,
W
:
_r
-
_x
,
C
:
_col
};
}
ctx
.
restore
();
ctx
.
beginPath
();
if
(
this
.
Mode
==
AscCommon
.
MobileTouchMode
.
TableRuler
)
{
if
(
0
==
this
.
TableCurrentMoveDir
)
{
var
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
this
.
TableCurrentMoveValue
,
0
,
_table_outline_dr
.
CurrentPageIndex
,
_table_outline_dr
.
TableMatrix
);
overlay
.
VertLine
(
_pos
.
X
,
true
);
}
else
{
var
_pos
=
this
.
DrawingDocument
.
ConvertCoordsToCursorWR
(
0
,
this
.
TableCurrentMoveValue
,
_table_outline_dr
.
CurrentPageIndex
,
_table_outline_dr
.
TableMatrix
);
overlay
.
HorLine
(
_pos
.
Y
,
true
);
}
}
}
};
CMobileTouchManager
.
prototype
.
Destroy
=
function
()
{
var
_scroller
=
document
.
getElementById
(
"
mobile_scroller_id
"
);
this
.
HtmlPage
.
m_oMainView
.
HtmlElement
.
removeChild
(
_scroller
);
if
(
this
.
iScroll
!=
null
)
this
.
iScroll
.
destroy
();
};
function
CReaderTouchManager
()
{
this
.
HtmlPage
=
null
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment