2015-04-28 14:59:00 +00:00
|
|
|
|
/*
|
|
|
|
|
* (c) Copyright Ascensio System SIA 2010-2015
|
|
|
|
|
*
|
|
|
|
|
* This program is a free software product. You can redistribute it and/or
|
|
|
|
|
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
|
|
|
|
* version 3 as published by the Free Software Foundation. In accordance with
|
|
|
|
|
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
|
|
|
|
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
|
|
|
|
* of any third-party rights.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
|
|
|
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
|
|
|
|
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
|
|
|
|
*
|
|
|
|
|
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
|
|
|
|
* EU, LV-1021.
|
|
|
|
|
*
|
|
|
|
|
* The interactive user interfaces in modified source and object code versions
|
|
|
|
|
* of the Program must display Appropriate Legal Notices, as required under
|
|
|
|
|
* Section 5 of the GNU AGPL version 3.
|
|
|
|
|
*
|
|
|
|
|
* Pursuant to Section 7(b) of the License you must retain the original Product
|
|
|
|
|
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
|
|
|
|
* grant you any rights under trademark law for use of our trademarks.
|
|
|
|
|
*
|
|
|
|
|
* All the Product's GUI elements, including illustrations and icon sets, as
|
|
|
|
|
* well as technical writing content are licensed under the terms of the
|
|
|
|
|
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
|
|
|
|
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
"use strict";
|
|
|
|
|
var g_fontManager = new CFontManager();
|
|
|
|
|
g_fontManager.Initialize(true);
|
|
|
|
|
var TRACK_CIRCLE_RADIUS = 5;
|
|
|
|
|
var TRACK_RECT_SIZE2 = 4;
|
|
|
|
|
var TRACK_RECT_SIZE = 8;
|
|
|
|
|
var TRACK_DISTANCE_ROTATE = 25;
|
|
|
|
|
var TRACK_ADJUSTMENT_SIZE = 10;
|
|
|
|
|
var FOCUS_OBJECT_THUMBNAILS = 0;
|
|
|
|
|
var FOCUS_OBJECT_MAIN = 1;
|
|
|
|
|
var FOCUS_OBJECT_NOTES = 2;
|
|
|
|
|
var COMMENT_WIDTH = 18;
|
|
|
|
|
var COMMENT_HEIGHT = 16;
|
|
|
|
|
function CTableMarkup(Table) {
|
|
|
|
|
this.Internal = {
|
|
|
|
|
RowIndex: 0,
|
|
|
|
|
CellIndex: 0,
|
|
|
|
|
PageNum: 0
|
|
|
|
|
};
|
|
|
|
|
this.Table = Table;
|
|
|
|
|
this.X = 0;
|
|
|
|
|
this.Cols = [];
|
|
|
|
|
this.Margins = [];
|
|
|
|
|
this.Rows = [];
|
|
|
|
|
this.CurCol = 0;
|
|
|
|
|
this.CurRow = 0;
|
|
|
|
|
this.TransformX = 0;
|
|
|
|
|
this.TransformY = 0;
|
|
|
|
|
}
|
|
|
|
|
CTableMarkup.prototype = {
|
|
|
|
|
CreateDublicate: function () {
|
|
|
|
|
var obj = new CTableMarkup(this.Table);
|
|
|
|
|
obj.Internal = {
|
|
|
|
|
RowIndex: this.Internal.RowIndex,
|
|
|
|
|
CellIndex: this.Internal.CellIndex,
|
|
|
|
|
PageNum: this.Internal.PageNum
|
|
|
|
|
};
|
|
|
|
|
obj.X = this.X;
|
|
|
|
|
var len = this.Cols.length;
|
|
|
|
|
for (var i = 0; i < len; i++) {
|
|
|
|
|
obj.Cols[i] = this.Cols[i];
|
|
|
|
|
}
|
|
|
|
|
len = this.Margins.length;
|
|
|
|
|
for (var i = 0; i < len; i++) {
|
|
|
|
|
obj.Margins[i] = {
|
|
|
|
|
Left: this.Margins[i].Left,
|
|
|
|
|
Right: this.Margins[i].Right
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
len = this.Rows.length;
|
|
|
|
|
for (var i = 0; i < len; i++) {
|
|
|
|
|
obj.Rows[i] = {
|
|
|
|
|
Y: this.Rows[i].Y,
|
|
|
|
|
H: this.Rows[i].H
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
obj.CurRow = this.CurRow;
|
|
|
|
|
obj.CurCol = this.CurCol;
|
|
|
|
|
return obj;
|
|
|
|
|
},
|
|
|
|
|
CorrectFrom: function () {
|
|
|
|
|
this.X += this.TransformX;
|
|
|
|
|
var _len = this.Rows.length;
|
|
|
|
|
for (var i = 0; i < _len; i++) {
|
|
|
|
|
this.Rows[i].Y += this.TransformY;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
CorrectTo: function () {
|
|
|
|
|
this.X -= this.TransformX;
|
|
|
|
|
var _len = this.Rows.length;
|
|
|
|
|
for (var i = 0; i < _len; i++) {
|
|
|
|
|
this.Rows[i].Y -= this.TransformY;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
Get_X: function () {
|
|
|
|
|
return this.X;
|
|
|
|
|
},
|
|
|
|
|
Get_Y: function () {
|
|
|
|
|
var _Y = 0;
|
|
|
|
|
if (this.Rows.length > 0) {
|
|
|
|
|
_Y = this.Rows[0].Y;
|
|
|
|
|
}
|
|
|
|
|
return _Y;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
function CTableOutline(Table, PageNum, X, Y, W, H) {
|
|
|
|
|
this.Table = Table;
|
|
|
|
|
this.PageNum = PageNum;
|
|
|
|
|
this.X = X;
|
|
|
|
|
this.Y = Y;
|
|
|
|
|
this.W = W;
|
|
|
|
|
this.H = H;
|
|
|
|
|
}
|
|
|
|
|
function CTextMeasurer() {
|
|
|
|
|
this.m_oManager = new CFontManager();
|
|
|
|
|
this.m_oFont = null;
|
|
|
|
|
this.m_oTextPr = null;
|
|
|
|
|
this.m_oGrFonts = new CGrRFonts();
|
|
|
|
|
this.m_oLastFont = new CFontSetup();
|
|
|
|
|
this.LastFontOriginInfo = {
|
|
|
|
|
Name: "",
|
|
|
|
|
Replace: null
|
|
|
|
|
};
|
|
|
|
|
this.Init = function () {
|
|
|
|
|
this.m_oManager.Initialize();
|
|
|
|
|
};
|
|
|
|
|
this.SetFont = function (font) {
|
|
|
|
|
if (!font) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.m_oFont = font;
|
|
|
|
|
var bItalic = true === font.Italic;
|
|
|
|
|
var bBold = true === font.Bold;
|
|
|
|
|
var oFontStyle = FontStyle.FontStyleRegular;
|
|
|
|
|
if (!bItalic && bBold) {
|
|
|
|
|
oFontStyle = FontStyle.FontStyleBold;
|
|
|
|
|
} else {
|
|
|
|
|
if (bItalic && !bBold) {
|
|
|
|
|
oFontStyle = FontStyle.FontStyleItalic;
|
|
|
|
|
} else {
|
|
|
|
|
if (bItalic && bBold) {
|
|
|
|
|
oFontStyle = FontStyle.FontStyleBoldItalic;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var _lastSetUp = this.m_oLastFont;
|
|
|
|
|
if (_lastSetUp.SetUpName != font.FontFamily.Name || _lastSetUp.SetUpSize != font.FontSize || _lastSetUp.SetUpStyle != oFontStyle) {
|
|
|
|
|
_lastSetUp.SetUpName = font.FontFamily.Name;
|
|
|
|
|
_lastSetUp.SetUpSize = font.FontSize;
|
|
|
|
|
_lastSetUp.SetUpStyle = oFontStyle;
|
|
|
|
|
g_fontApplication.LoadFont(_lastSetUp.SetUpName, window.g_font_loader, this.m_oManager, _lastSetUp.SetUpSize, _lastSetUp.SetUpStyle, 72, 72, undefined, this.LastFontOriginInfo);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.SetTextPr = function (textPr, theme) {
|
|
|
|
|
this.m_oTextPr = textPr;
|
|
|
|
|
if (theme) {
|
|
|
|
|
this.m_oGrFonts.checkFromTheme(theme.themeElements.fontScheme, this.m_oTextPr.RFonts);
|
|
|
|
|
} else {
|
|
|
|
|
this.m_oGrFonts = this.m_oTextPr.RFonts;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.SetFontSlot = function (slot, fontSizeKoef) {
|
|
|
|
|
var _rfonts = this.m_oGrFonts;
|
|
|
|
|
var _lastFont = this.m_oLastFont;
|
|
|
|
|
switch (slot) {
|
|
|
|
|
case fontslot_ASCII:
|
|
|
|
|
_lastFont.Name = _rfonts.Ascii.Name;
|
|
|
|
|
_lastFont.Index = _rfonts.Ascii.Index;
|
|
|
|
|
_lastFont.Size = this.m_oTextPr.FontSize;
|
|
|
|
|
_lastFont.Bold = this.m_oTextPr.Bold;
|
|
|
|
|
_lastFont.Italic = this.m_oTextPr.Italic;
|
|
|
|
|
break;
|
|
|
|
|
case fontslot_CS:
|
|
|
|
|
_lastFont.Name = _rfonts.CS.Name;
|
|
|
|
|
_lastFont.Index = _rfonts.CS.Index;
|
|
|
|
|
_lastFont.Size = this.m_oTextPr.FontSizeCS;
|
|
|
|
|
_lastFont.Bold = this.m_oTextPr.BoldCS;
|
|
|
|
|
_lastFont.Italic = this.m_oTextPr.ItalicCS;
|
|
|
|
|
break;
|
|
|
|
|
case fontslot_EastAsia:
|
|
|
|
|
_lastFont.Name = _rfonts.EastAsia.Name;
|
|
|
|
|
_lastFont.Index = _rfonts.EastAsia.Index;
|
|
|
|
|
_lastFont.Size = this.m_oTextPr.FontSize;
|
|
|
|
|
_lastFont.Bold = this.m_oTextPr.Bold;
|
|
|
|
|
_lastFont.Italic = this.m_oTextPr.Italic;
|
|
|
|
|
break;
|
|
|
|
|
case fontslot_HAnsi:
|
|
|
|
|
default:
|
|
|
|
|
_lastFont.Name = _rfonts.HAnsi.Name;
|
|
|
|
|
_lastFont.Index = _rfonts.HAnsi.Index;
|
|
|
|
|
_lastFont.Size = this.m_oTextPr.FontSize;
|
|
|
|
|
_lastFont.Bold = this.m_oTextPr.Bold;
|
|
|
|
|
_lastFont.Italic = this.m_oTextPr.Italic;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (undefined !== fontSizeKoef) {
|
|
|
|
|
_lastFont.Size *= fontSizeKoef;
|
|
|
|
|
}
|
|
|
|
|
var _style = 0;
|
|
|
|
|
if (_lastFont.Italic) {
|
|
|
|
|
_style += 2;
|
|
|
|
|
}
|
|
|
|
|
if (_lastFont.Bold) {
|
|
|
|
|
_style += 1;
|
|
|
|
|
}
|
|
|
|
|
if (_lastFont.Name != _lastFont.SetUpName || _lastFont.Size != _lastFont.SetUpSize || _style != _lastFont.SetUpStyle) {
|
|
|
|
|
_lastFont.SetUpName = _lastFont.Name;
|
|
|
|
|
_lastFont.SetUpSize = _lastFont.Size;
|
|
|
|
|
_lastFont.SetUpStyle = _style;
|
|
|
|
|
g_fontApplication.LoadFont(_lastFont.SetUpName, window.g_font_loader, this.m_oManager, _lastFont.SetUpSize, _lastFont.SetUpStyle, 72, 72, undefined, this.LastFontOriginInfo);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.GetTextPr = function () {
|
|
|
|
|
return this.m_oTextPr;
|
|
|
|
|
};
|
|
|
|
|
this.GetFont = function () {
|
|
|
|
|
return this.m_oFont;
|
|
|
|
|
};
|
|
|
|
|
this.Measure = function (text) {
|
|
|
|
|
var Width = 0;
|
|
|
|
|
var Height = 0;
|
|
|
|
|
var _code = text.charCodeAt(0);
|
|
|
|
|
if (null != this.LastFontOriginInfo.Replace) {
|
|
|
|
|
_code = g_fontApplication.GetReplaceGlyph(_code, this.LastFontOriginInfo.Replace);
|
|
|
|
|
}
|
|
|
|
|
var Temp = this.m_oManager.MeasureChar(_code);
|
|
|
|
|
Width = Temp.fAdvanceX * 25.4 / 72;
|
|
|
|
|
Height = 0;
|
|
|
|
|
return {
|
|
|
|
|
Width: Width,
|
|
|
|
|
Height: Height
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.Measure2 = function (text) {
|
|
|
|
|
var Width = 0;
|
|
|
|
|
var _code = text.charCodeAt(0);
|
|
|
|
|
if (null != this.LastFontOriginInfo.Replace) {
|
|
|
|
|
_code = g_fontApplication.GetReplaceGlyph(_code, this.LastFontOriginInfo.Replace);
|
|
|
|
|
}
|
|
|
|
|
var Temp = this.m_oManager.MeasureChar(_code, true);
|
|
|
|
|
Width = Temp.fAdvanceX * 25.4 / 72;
|
|
|
|
|
if (Temp.oBBox.rasterDistances == null) {
|
|
|
|
|
return {
|
|
|
|
|
Width: Width,
|
|
|
|
|
Ascent: (Temp.oBBox.fMaxY * 25.4 / 72),
|
|
|
|
|
Height: ((Temp.oBBox.fMaxY - Temp.oBBox.fMinY) * 25.4 / 72),
|
|
|
|
|
WidthG: ((Temp.oBBox.fMaxX - Temp.oBBox.fMinX) * 25.4 / 72),
|
|
|
|
|
rasterOffsetX: 0,
|
|
|
|
|
rasterOffsetY: 0
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
Width: Width,
|
|
|
|
|
Ascent: (Temp.oBBox.fMaxY * 25.4 / 72),
|
|
|
|
|
Height: ((Temp.oBBox.fMaxY - Temp.oBBox.fMinY) * 25.4 / 72),
|
|
|
|
|
WidthG: ((Temp.oBBox.fMaxX - Temp.oBBox.fMinX) * 25.4 / 72),
|
|
|
|
|
rasterOffsetX: Temp.oBBox.rasterDistances.dist_l * 25.4 / 72,
|
|
|
|
|
rasterOffsetY: Temp.oBBox.rasterDistances.dist_t * 25.4 / 72
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.MeasureCode = function (lUnicode) {
|
|
|
|
|
var Width = 0;
|
|
|
|
|
var Height = 0;
|
|
|
|
|
if (null != this.LastFontOriginInfo.Replace) {
|
|
|
|
|
lUnicode = g_fontApplication.GetReplaceGlyph(lUnicode, this.LastFontOriginInfo.Replace);
|
|
|
|
|
}
|
|
|
|
|
var Temp = this.m_oManager.MeasureChar(lUnicode);
|
|
|
|
|
Width = Temp.fAdvanceX * 25.4 / 72;
|
|
|
|
|
Height = ((Temp.oBBox.fMaxY - Temp.oBBox.fMinY) * 25.4 / 72);
|
|
|
|
|
return {
|
|
|
|
|
Width: Width,
|
|
|
|
|
Height: Height,
|
|
|
|
|
Ascent: (Temp.oBBox.fMaxY * 25.4 / 72)
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.Measure2Code = function (lUnicode) {
|
|
|
|
|
var Width = 0;
|
|
|
|
|
if (null != this.LastFontOriginInfo.Replace) {
|
|
|
|
|
lUnicode = g_fontApplication.GetReplaceGlyph(lUnicode, this.LastFontOriginInfo.Replace);
|
|
|
|
|
}
|
|
|
|
|
var Temp = this.m_oManager.MeasureChar(lUnicode, true);
|
|
|
|
|
Width = Temp.fAdvanceX * 25.4 / 72;
|
|
|
|
|
if (Temp.oBBox.rasterDistances == null) {
|
|
|
|
|
return {
|
|
|
|
|
Width: Width,
|
|
|
|
|
Ascent: (Temp.oBBox.fMaxY * 25.4 / 72),
|
|
|
|
|
Height: ((Temp.oBBox.fMaxY - Temp.oBBox.fMinY) * 25.4 / 72),
|
|
|
|
|
WidthG: ((Temp.oBBox.fMaxX - Temp.oBBox.fMinX) * 25.4 / 72),
|
|
|
|
|
rasterOffsetX: 0,
|
|
|
|
|
rasterOffsetY: 0
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
Width: Width,
|
|
|
|
|
Ascent: (Temp.oBBox.fMaxY * 25.4 / 72),
|
|
|
|
|
Height: ((Temp.oBBox.fMaxY - Temp.oBBox.fMinY) * 25.4 / 72),
|
|
|
|
|
WidthG: ((Temp.oBBox.fMaxX - Temp.oBBox.fMinX) * 25.4 / 72),
|
|
|
|
|
rasterOffsetX: (Temp.oBBox.rasterDistances.dist_l + Temp.oBBox.fMinX) * 25.4 / 72,
|
|
|
|
|
rasterOffsetY: Temp.oBBox.rasterDistances.dist_t * 25.4 / 72
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.GetAscender = function () {
|
|
|
|
|
var UnitsPerEm = this.m_oManager.m_lUnits_Per_Em;
|
|
|
|
|
var Ascender = this.m_oManager.m_lAscender;
|
|
|
|
|
return Ascender * this.m_oLastFont.SetUpSize / UnitsPerEm * g_dKoef_pt_to_mm;
|
|
|
|
|
};
|
|
|
|
|
this.GetDescender = function () {
|
|
|
|
|
var UnitsPerEm = this.m_oManager.m_lUnits_Per_Em;
|
|
|
|
|
var Descender = this.m_oManager.m_lDescender;
|
|
|
|
|
return Descender * this.m_oLastFont.SetUpSize / UnitsPerEm * g_dKoef_pt_to_mm;
|
|
|
|
|
};
|
|
|
|
|
this.GetHeight = function () {
|
|
|
|
|
var UnitsPerEm = this.m_oManager.m_lUnits_Per_Em;
|
|
|
|
|
var Height = this.m_oManager.m_lLineHeight;
|
|
|
|
|
return Height * this.m_oLastFont.SetUpSize / UnitsPerEm * g_dKoef_pt_to_mm;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
var g_oTextMeasurer = new CTextMeasurer();
|
|
|
|
|
g_oTextMeasurer.Init();
|
|
|
|
|
function CTableOutlineDr() {
|
|
|
|
|
var image_64 = "u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u//6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/4+Pj/+7u7v/9vb2//b29v/39/f/9/f3//f39/83aMT/9/f3//f39//39/f/9/f3//f39/+Pj4//u7u7//Ly8v/y8vL/8vLy//Pz8/83aMT/N2jE/zdoxP/z8/P/8/Pz//Pz8//z8/P/j4+P/7u7u//u7u7/7u7u/+7u7v/u7u7/7u7u/zdoxP/u7u7/7u7u/+7u7v/u7u7/7u7u/4+Pj/+7u7v/6Ojo/+jo6P83aMT/6enp/+np6f83aMT/6enp/+np6f83aMT/6enp/+np6f+Pj4//u7u7/+Pj4/83aMT/N2jE/zdoxP83aMT/N2jE/zdoxP83aMT/N2jE/zdoxP/k5OT/j4+P/7u7u//o6Oj/6Ojo/zdoxP/o6Oj/6Ojo/zdoxP/o6Oj/6Ojo/zdoxP/o6Oj/6Ojo/4+Pj/+7u7v/7e3t/+3t7f/t7e3/7e3t/+3t7f83aMT/7e3t/+zs7P/s7Oz/7Ozs/+zs7P+Pj4//u7u7//Ly8v/y8vL/8vLy//Ly8v83aMT/N2jE/zdoxP/x8fH/8fHx//Hx8f/x8fH/j4+P/7u7u//19fX/9fX1//X19f/19fX/9fX1/zdoxP/19fX/9fX1//X19f/19fX/9fX1/4+Pj/+7u7v/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//j4+P+Pj4//u7u7/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/w==";
|
|
|
|
|
this.image = document.createElement("canvas");
|
|
|
|
|
this.image.width = 13;
|
|
|
|
|
this.image.height = 13;
|
|
|
|
|
var ctx = this.image.getContext("2d");
|
|
|
|
|
var _data = ctx.createImageData(13, 13);
|
|
|
|
|
DecodeBase64(_data, image_64);
|
|
|
|
|
ctx.putImageData(_data, 0, 0);
|
|
|
|
|
_data = null;
|
|
|
|
|
image_64 = null;
|
|
|
|
|
this.TableOutline = null;
|
|
|
|
|
this.Counter = 0;
|
|
|
|
|
this.bIsNoTable = true;
|
|
|
|
|
this.bIsTracked = false;
|
|
|
|
|
this.CurPos = null;
|
|
|
|
|
this.TrackTablePos = 0;
|
|
|
|
|
this.TrackOffsetX = 0;
|
|
|
|
|
this.TrackOffsetY = 0;
|
|
|
|
|
this.InlinePos = null;
|
|
|
|
|
this.IsChangeSmall = true;
|
|
|
|
|
this.ChangeSmallPoint = null;
|
|
|
|
|
this.checkMouseDown = function (pos, word_control) {
|
|
|
|
|
if (null == this.TableOutline) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
var _table_track = this.TableOutline;
|
|
|
|
|
var _d = 13 * g_dKoef_pix_to_mm * 100 / word_control.m_nZoomValue;
|
|
|
|
|
this.IsChangeSmall = true;
|
|
|
|
|
this.ChangeSmallPoint = pos;
|
|
|
|
|
switch (this.TrackTablePos) {
|
|
|
|
|
case 1:
|
|
|
|
|
var _x = _table_track.X + _table_track.W;
|
|
|
|
|
var _b = _table_track.Y;
|
|
|
|
|
var _y = _b - _d;
|
|
|
|
|
var _r = _x + _d;
|
|
|
|
|
if ((pos.X > _x) && (pos.X < _r) && (pos.Y > _y) && (pos.Y < _b)) {
|
|
|
|
|
this.TrackOffsetX = pos.X - _x;
|
|
|
|
|
this.TrackOffsetY = pos.Y - _b;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
case 2:
|
|
|
|
|
var _x = _table_track.X + _table_track.W;
|
|
|
|
|
var _y = _table_track.Y + _table_track.H;
|
|
|
|
|
var _r = _x + _d;
|
|
|
|
|
var _b = _y + _d;
|
|
|
|
|
if ((pos.X > _x) && (pos.X < _r) && (pos.Y > _y) && (pos.Y < _b)) {
|
|
|
|
|
this.TrackOffsetX = pos.X - _x;
|
|
|
|
|
this.TrackOffsetY = pos.Y - _y;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
case 3:
|
|
|
|
|
var _r = _table_track.X;
|
|
|
|
|
var _x = _r - _d;
|
|
|
|
|
var _y = _table_track.Y + _table_track.H;
|
|
|
|
|
var _b = _y + _d;
|
|
|
|
|
if ((pos.X > _x) && (pos.X < _r) && (pos.Y > _y) && (pos.Y < _b)) {
|
|
|
|
|
this.TrackOffsetX = pos.X - _r;
|
|
|
|
|
this.TrackOffsetY = pos.Y - _y;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
case 0:
|
|
|
|
|
default:
|
|
|
|
|
var _r = _table_track.X;
|
|
|
|
|
var _b = _table_track.Y;
|
|
|
|
|
var _x = _r - _d;
|
|
|
|
|
var _y = _b - _d;
|
|
|
|
|
if ((pos.X > _x) && (pos.X < _r) && (pos.Y > _y) && (pos.Y < _b)) {
|
|
|
|
|
this.TrackOffsetX = pos.X - _r;
|
|
|
|
|
this.TrackOffsetY = pos.Y - _b;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.checkMouseUp = function (X, Y, word_control) {
|
|
|
|
|
this.bIsTracked = false;
|
|
|
|
|
if (null == this.TableOutline || (true === this.IsChangeSmall) || word_control.m_oApi.isViewMode) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
var _d = 13 * g_dKoef_pix_to_mm * 100 / word_control.m_nZoomValue;
|
|
|
|
|
var _outline = this.TableOutline;
|
|
|
|
|
var _table = _outline.Table;
|
|
|
|
|
if (!_table.Is_Inline()) {
|
|
|
|
|
word_control.m_oLogicDocument.Create_NewHistoryPoint(historydescription_Presentation_TableMoveFromRulers);
|
|
|
|
|
switch (this.TrackTablePos) {
|
|
|
|
|
case 1:
|
|
|
|
|
var _w_pix = this.TableOutline.W * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
var pos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X - _w_pix, Y);
|
|
|
|
|
_table.Move(pos.X - this.TrackOffsetX, pos.Y - this.TrackOffsetY, pos.Page);
|
|
|
|
|
_outline.X = pos.X - this.TrackOffsetX;
|
|
|
|
|
_outline.Y = pos.Y - this.TrackOffsetY;
|
|
|
|
|
_outline.PageNum = pos.Page;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
var _w_pix = this.TableOutline.W * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
var _h_pix = this.TableOutline.H * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
var pos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X - _w_pix, Y - _h_pix);
|
|
|
|
|
_table.Move(pos.X - this.TrackOffsetX, pos.Y - this.TrackOffsetY, pos.Page);
|
|
|
|
|
_outline.X = pos.X - this.TrackOffsetX;
|
|
|
|
|
_outline.Y = pos.Y - this.TrackOffsetY;
|
|
|
|
|
_outline.PageNum = pos.Page;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
var _h_pix = this.TableOutline.H * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
var pos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X, Y - _h_pix);
|
|
|
|
|
_table.Move(pos.X - this.TrackOffsetX, pos.Y - this.TrackOffsetY, pos.Page);
|
|
|
|
|
_outline.X = pos.X - this.TrackOffsetX;
|
|
|
|
|
_outline.Y = pos.Y - this.TrackOffsetY;
|
|
|
|
|
_outline.PageNum = pos.Page;
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
default:
|
|
|
|
|
var pos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X, Y);
|
|
|
|
|
_table.Move(pos.X - this.TrackOffsetX, pos.Y - this.TrackOffsetY, pos.Page);
|
|
|
|
|
_outline.X = pos.X - this.TrackOffsetX;
|
|
|
|
|
_outline.Y = pos.Y - this.TrackOffsetY;
|
|
|
|
|
_outline.PageNum = pos.Page;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (null != this.InlinePos) {
|
|
|
|
|
word_control.m_oLogicDocument.Create_NewHistoryPoint(historydescription_Presentation_TableMoveFromRulersInline);
|
|
|
|
|
_table.Move(this.InlinePos.X, this.InlinePos.Y, this.InlinePos.Page);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_table.Cursor_MoveToStartPos();
|
|
|
|
|
_table.Document_SetThisElementCurrent();
|
|
|
|
|
};
|
|
|
|
|
this.checkMouseMove = function (X, Y, word_control) {
|
|
|
|
|
if (null == this.TableOutline) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (true === this.IsChangeSmall) {
|
|
|
|
|
var _pos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X, Y);
|
|
|
|
|
var _dist = 15 * g_dKoef_pix_to_mm * 100 / word_control.m_nZoomValue;
|
|
|
|
|
if ((Math.abs(_pos.X - this.ChangeSmallPoint.X) < _dist) && (Math.abs(_pos.Y - this.ChangeSmallPoint.Y) < _dist) && (_pos.Page == this.ChangeSmallPoint.Page)) {
|
|
|
|
|
this.CurPos = {
|
|
|
|
|
X: this.ChangeSmallPoint.X,
|
|
|
|
|
Y: this.ChangeSmallPoint.Y,
|
|
|
|
|
Page: this.ChangeSmallPoint.Page
|
|
|
|
|
};
|
|
|
|
|
switch (this.TrackTablePos) {
|
|
|
|
|
case 1:
|
|
|
|
|
this.CurPos.X -= this.TableOutline.W;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
this.CurPos.X -= this.TableOutline.W;
|
|
|
|
|
this.CurPos.Y -= this.TableOutline.H;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
this.CurPos.Y -= this.TableOutline.H;
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
this.CurPos.X -= this.TrackOffsetX;
|
|
|
|
|
this.CurPos.Y -= this.TrackOffsetY;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.IsChangeSmall = false;
|
|
|
|
|
this.TableOutline.Table.Selection_Remove();
|
|
|
|
|
editor.WordControl.m_oLogicDocument.Document_UpdateSelectionState();
|
|
|
|
|
}
|
|
|
|
|
var _d = 13 * g_dKoef_pix_to_mm * 100 / word_control.m_nZoomValue;
|
|
|
|
|
switch (this.TrackTablePos) {
|
|
|
|
|
case 1:
|
|
|
|
|
var _w_pix = this.TableOutline.W * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
this.CurPos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X - _w_pix, Y);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
var _w_pix = this.TableOutline.W * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
var _h_pix = this.TableOutline.H * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
this.CurPos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X - _w_pix, Y - _h_pix);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
var _h_pix = this.TableOutline.H * g_dKoef_mm_to_pix * word_control.m_nZoomValue / 100;
|
|
|
|
|
this.CurPos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X, Y - _h_pix);
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
default:
|
|
|
|
|
this.CurPos = word_control.m_oDrawingDocument.ConvertCoordsFromCursor2(X, Y);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
this.CurPos.X -= this.TrackOffsetX;
|
|
|
|
|
this.CurPos.Y -= this.TrackOffsetY;
|
|
|
|
|
};
|
|
|
|
|
this.CheckStartTrack = function (word_control) {
|
|
|
|
|
var pos = word_control.m_oDrawingDocument.ConvertCoordsToCursor(this.TableOutline.X, this.TableOutline.Y, this.TableOutline.PageNum, true);
|
|
|
|
|
var _x0 = word_control.m_oEditor.AbsolutePosition.L;
|
|
|
|
|
var _y0 = word_control.m_oEditor.AbsolutePosition.T;
|
|
|
|
|
if (pos.X < _x0 && pos.Y < _y0) {
|
|
|
|
|
this.TrackTablePos = 2;
|
|
|
|
|
} else {
|
|
|
|
|
if (pos.X < _x0) {
|
|
|
|
|
this.TrackTablePos = 1;
|
|
|
|
|
} else {
|
|
|
|
|
if (pos.Y < _y0) {
|
|
|
|
|
this.TrackTablePos = 3;
|
|
|
|
|
} else {
|
|
|
|
|
this.TrackTablePos = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
function CCacheImage() {
|
|
|
|
|
this.image = null;
|
|
|
|
|
this.image_locked = 0;
|
|
|
|
|
this.image_unusedCount = 0;
|
|
|
|
|
}
|
|
|
|
|
function CCacheManager() {
|
|
|
|
|
this.arrayImages = [];
|
|
|
|
|
this.arrayCount = 0;
|
|
|
|
|
this.countValidImage = 1;
|
|
|
|
|
this.CheckImagesForNeed = function () {
|
|
|
|
|
for (var i = 0; i < this.arrayCount; ++i) {
|
|
|
|
|
if ((this.arrayImages[i].image_locked == 0) && (this.arrayImages[i].image_unusedCount >= this.countValidImage)) {
|
|
|
|
|
delete this.arrayImages[i].image;
|
|
|
|
|
this.arrayImages.splice(i, 1);
|
|
|
|
|
--i;
|
|
|
|
|
--this.arrayCount;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.UnLock = function (_cache_image) {
|
|
|
|
|
if (null == _cache_image) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
_cache_image.image_locked = 0;
|
|
|
|
|
_cache_image.image_unusedCount = 0;
|
|
|
|
|
};
|
|
|
|
|
this.Lock = function (_w, _h) {
|
|
|
|
|
for (var i = 0; i < this.arrayCount; ++i) {
|
|
|
|
|
if (this.arrayImages[i].image_locked) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
var _wI = this.arrayImages[i].image.width;
|
|
|
|
|
var _hI = this.arrayImages[i].image.height;
|
|
|
|
|
if ((_wI == _w) && (_hI == _h)) {
|
|
|
|
|
this.arrayImages[i].image_locked = 1;
|
|
|
|
|
this.arrayImages[i].image_unusedCount = 0;
|
|
|
|
|
this.arrayImages[i].image.ctx.globalAlpha = 1;
|
|
|
|
|
this.arrayImages[i].image.ctx.fillStyle = "#B0B0B0";
|
|
|
|
|
this.arrayImages[i].image.ctx.fillRect(0, 0, _w, _h);
|
|
|
|
|
return this.arrayImages[i];
|
|
|
|
|
}
|
|
|
|
|
this.arrayImages[i].image_unusedCount++;
|
|
|
|
|
}
|
|
|
|
|
this.CheckImagesForNeed();
|
|
|
|
|
var index = this.arrayCount;
|
|
|
|
|
this.arrayCount++;
|
|
|
|
|
this.arrayImages[index] = new CCacheImage();
|
|
|
|
|
this.arrayImages[index].image = document.createElement("canvas");
|
|
|
|
|
this.arrayImages[index].image.width = _w;
|
|
|
|
|
this.arrayImages[index].image.height = _h;
|
|
|
|
|
this.arrayImages[index].image.ctx = this.arrayImages[index].image.getContext("2d");
|
|
|
|
|
this.arrayImages[index].image.ctx.globalAlpha = 1;
|
|
|
|
|
this.arrayImages[index].image.ctx.fillStyle = "#B0B0B0";
|
|
|
|
|
this.arrayImages[index].image.ctx.fillRect(0, 0, _w, _h);
|
|
|
|
|
this.arrayImages[index].image_locked = 1;
|
|
|
|
|
this.arrayImages[index].image_unusedCount = 0;
|
|
|
|
|
return this.arrayImages[index];
|
|
|
|
|
};
|
|
|
|
|
this.Clear = function () {
|
|
|
|
|
for (var i = 0; i < this.arrayCount; ++i) {
|
|
|
|
|
delete this.arrayImages[i].image;
|
|
|
|
|
this.arrayImages.splice(i, 1);
|
|
|
|
|
--i;
|
|
|
|
|
--this.arrayCount;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
function _rect() {
|
|
|
|
|
this.x = 0;
|
|
|
|
|
this.y = 0;
|
|
|
|
|
this.w = 0;
|
|
|
|
|
this.h = 0;
|
|
|
|
|
}
|
|
|
|
|
function CDrawingPage() {
|
|
|
|
|
this.left = 0;
|
|
|
|
|
this.top = 0;
|
|
|
|
|
this.right = 0;
|
|
|
|
|
this.bottom = 0;
|
|
|
|
|
this.cachedImage = null;
|
|
|
|
|
}
|
|
|
|
|
function CDrawingDocument() {
|
|
|
|
|
this.IsLockObjectsEnable = false;
|
|
|
|
|
this.m_oWordControl = null;
|
|
|
|
|
this.m_oLogicDocument = null;
|
|
|
|
|
this.SlidesCount = 0;
|
|
|
|
|
this.IsEmptyPresentation = false;
|
|
|
|
|
this.SlideCurrent = -1;
|
|
|
|
|
this.SlideCurrectRect = new CDrawingPage();
|
|
|
|
|
this.m_oCacheManager = new CCacheManager();
|
|
|
|
|
this.m_lTimerTargetId = -1;
|
|
|
|
|
this.m_dTargetX = -1;
|
|
|
|
|
this.m_dTargetY = -1;
|
|
|
|
|
this.m_dTargetSize = 1;
|
|
|
|
|
this.TargetHtmlElement = null;
|
|
|
|
|
this.TargetHtmlElementLeft = 0;
|
|
|
|
|
this.TargetHtmlElementTop = 0;
|
|
|
|
|
this.m_bIsSelection = false;
|
|
|
|
|
this.m_bIsSearching = false;
|
|
|
|
|
this.CurrentSearchNavi = null;
|
|
|
|
|
this.m_lTimerUpdateTargetID = -1;
|
|
|
|
|
this.m_tempX = 0;
|
|
|
|
|
this.m_tempY = 0;
|
|
|
|
|
this.m_tempPageIndex = 0;
|
|
|
|
|
var oThis = this;
|
|
|
|
|
this.m_sLockedCursorType = "";
|
|
|
|
|
this.TableOutlineDr = new CTableOutlineDr();
|
|
|
|
|
this.HorVerAnchors = [];
|
|
|
|
|
this.m_lCurrentRendererPage = -1;
|
|
|
|
|
this.m_oDocRenderer = null;
|
|
|
|
|
this.m_bOldShowMarks = false;
|
|
|
|
|
this.UpdateTargetFromPaint = false;
|
|
|
|
|
this.NeedTarget = true;
|
|
|
|
|
this.TextMatrix = null;
|
|
|
|
|
this.TargetShowFlag = false;
|
|
|
|
|
this.TargetShowNeedFlag = false;
|
|
|
|
|
this.CanvasHit = document.createElement("canvas");
|
|
|
|
|
this.CanvasHit.width = 10;
|
|
|
|
|
this.CanvasHit.height = 10;
|
|
|
|
|
this.CanvasHitContext = this.CanvasHit.getContext("2d");
|
|
|
|
|
this.TargetCursorColor = {
|
|
|
|
|
R: 0,
|
|
|
|
|
G: 0,
|
|
|
|
|
B: 0
|
|
|
|
|
};
|
|
|
|
|
this.TableStylesLastLook = null;
|
|
|
|
|
this.GuiControlColorsMap = null;
|
|
|
|
|
this.IsSendStandartColors = false;
|
|
|
|
|
this.GuiCanvasFillTextureParentId = "";
|
|
|
|
|
this.GuiCanvasFillTexture = null;
|
|
|
|
|
this.GuiCanvasFillTextureCtx = null;
|
|
|
|
|
this.LastDrawingUrl = "";
|
|
|
|
|
this.GuiCanvasFillTextureParentIdSlide = "";
|
|
|
|
|
this.GuiCanvasFillTextureSlide = null;
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide = null;
|
|
|
|
|
this.LastDrawingUrlSlide = "";
|
|
|
|
|
this.AutoShapesTrack = null;
|
|
|
|
|
this.TransitionSlide = new CTransitionAnimation(null);
|
|
|
|
|
this.GetTargetStyle = function () {
|
|
|
|
|
return "rgb(" + this.TargetCursorColor.R + "," + this.TargetCursorColor.G + "," + this.TargetCursorColor.B + ")";
|
|
|
|
|
};
|
|
|
|
|
this.Start_CollaborationEditing = function () {
|
|
|
|
|
this.IsLockObjectsEnable = true;
|
|
|
|
|
this.m_oWordControl.OnRePaintAttack();
|
|
|
|
|
};
|
|
|
|
|
this.IsMobileVersion = function () {
|
|
|
|
|
if (this.m_oWordControl.MobileTouchManager) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoordsToAnotherPage = function (x, y) {
|
|
|
|
|
return {
|
|
|
|
|
X: x,
|
|
|
|
|
Y: y
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.SetCursorType = function (sType, Data) {
|
|
|
|
|
if ("" == this.m_sLockedCursorType) {
|
|
|
|
|
if (this.m_oWordControl.m_oApi.isPaintFormat && (("default" == sType) || ("text" == sType))) {
|
|
|
|
|
this.m_oWordControl.m_oMainContent.HtmlElement.style.cursor = kCurFormatPainterWord;
|
|
|
|
|
} else {
|
|
|
|
|
this.m_oWordControl.m_oMainContent.HtmlElement.style.cursor = sType;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.m_oWordControl.m_oMainContent.HtmlElement.style.cursor = this.m_sLockedCursorType;
|
|
|
|
|
}
|
|
|
|
|
if ("undefined" === typeof(Data) || null === Data) {
|
|
|
|
|
Data = new CMouseMoveData();
|
|
|
|
|
}
|
|
|
|
|
editor.sync_MouseMoveCallback(Data);
|
|
|
|
|
};
|
|
|
|
|
this.LockCursorType = function (sType) {
|
|
|
|
|
this.m_sLockedCursorType = sType;
|
|
|
|
|
this.m_oWordControl.m_oMainContent.HtmlElement.style.cursor = this.m_sLockedCursorType;
|
|
|
|
|
};
|
|
|
|
|
this.LockCursorTypeCur = function () {
|
|
|
|
|
this.m_sLockedCursorType = this.m_oWordControl.m_oMainContent.HtmlElement.style.cursor;
|
|
|
|
|
};
|
|
|
|
|
this.UnlockCursorType = function () {
|
|
|
|
|
this.m_sLockedCursorType = "";
|
|
|
|
|
};
|
|
|
|
|
this.OnStartRecalculate = function (pageCount) {};
|
|
|
|
|
this.SetTargetColor = function (r, g, b) {
|
|
|
|
|
this.TargetCursorColor.R = r;
|
|
|
|
|
this.TargetCursorColor.G = g;
|
|
|
|
|
this.TargetCursorColor.B = b;
|
|
|
|
|
};
|
|
|
|
|
this.StartTrackTable = function () {};
|
|
|
|
|
this.OnRecalculatePage = function (index, pageObject) {
|
|
|
|
|
editor.asc_fireCallback("asc_onDocumentChanged");
|
|
|
|
|
if (true === this.m_bIsSearching) {
|
|
|
|
|
this.SearchClear();
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
this.SendChangeDocumentToApi(true);
|
|
|
|
|
}
|
|
|
|
|
var thpages = this.m_oWordControl.Thumbnails.m_arrPages;
|
|
|
|
|
if (thpages.length > index) {
|
|
|
|
|
thpages[index].IsRecalc = true;
|
|
|
|
|
}
|
|
|
|
|
if (index == this.SlideCurrent) {
|
|
|
|
|
this.m_oWordControl.Thumbnails.LockMainObjType = true;
|
|
|
|
|
this.m_oWordControl.SlideDrawer.CheckSlide(this.SlideCurrent);
|
|
|
|
|
this.m_oWordControl.CalculateDocumentSize(false);
|
|
|
|
|
this.m_oWordControl.OnScroll();
|
|
|
|
|
this.m_oWordControl.Thumbnails.LockMainObjType = false;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.OnEndRecalculate = function () {
|
|
|
|
|
this.m_oWordControl.Thumbnails.LockMainObjType = true;
|
|
|
|
|
this.SlidesCount = this.m_oLogicDocument.Slides.length;
|
|
|
|
|
this.m_oWordControl.CalculateDocumentSize();
|
|
|
|
|
this.m_oWordControl.m_oApi.sync_countPagesCallback(this.SlidesCount);
|
|
|
|
|
this.m_oWordControl.Thumbnails.LockMainObjType = false;
|
|
|
|
|
};
|
|
|
|
|
this.ChangePageAttack = function (pageIndex) {
|
|
|
|
|
if (pageIndex != this.SlideCurrent) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.StopRenderingPage(pageIndex);
|
|
|
|
|
this.m_oWordControl.OnScroll();
|
|
|
|
|
};
|
|
|
|
|
this.RenderDocument = function (Renderer) {
|
|
|
|
|
for (var i = 0; i < this.SlidesCount; i++) {
|
|
|
|
|
Renderer.BeginPage(this.m_oLogicDocument.Width, this.m_oLogicDocument.Height);
|
|
|
|
|
this.m_oLogicDocument.DrawPage(i, Renderer);
|
|
|
|
|
Renderer.EndPage();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.ToRenderer = function () {
|
|
|
|
|
var Renderer = new CDocumentRenderer();
|
|
|
|
|
Renderer.IsNoDrawingEmptyPlaceholder = true;
|
|
|
|
|
Renderer.VectorMemoryForPrint = new CMemory();
|
|
|
|
|
var old_marks = this.m_oWordControl.m_oApi.ShowParaMarks;
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = false;
|
|
|
|
|
this.RenderDocument(Renderer);
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = old_marks;
|
|
|
|
|
var ret = Renderer.Memory.GetBase64Memory();
|
|
|
|
|
return ret;
|
|
|
|
|
};
|
|
|
|
|
this.ToRenderer2 = function () {
|
|
|
|
|
var Renderer = new CDocumentRenderer();
|
|
|
|
|
var old_marks = this.m_oWordControl.m_oApi.ShowParaMarks;
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = false;
|
|
|
|
|
var ret = "";
|
|
|
|
|
for (var i = 0; i < this.SlidesCount; i++) {
|
|
|
|
|
Renderer.BeginPage(this.m_oLogicDocument.Width, this.m_oLogicDocument.Height);
|
|
|
|
|
this.m_oLogicDocument.DrawPage(i, Renderer);
|
|
|
|
|
Renderer.EndPage();
|
|
|
|
|
ret += Renderer.Memory.GetBase64Memory();
|
|
|
|
|
Renderer.Memory.Seek(0);
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = old_marks;
|
|
|
|
|
return ret;
|
|
|
|
|
};
|
|
|
|
|
this.isComleteRenderer = function () {
|
|
|
|
|
if (this.m_lCurrentRendererPage >= this.SlidesCount) {
|
|
|
|
|
this.m_lCurrentRendererPage = -1;
|
|
|
|
|
this.m_oDocRenderer = null;
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = this.m_bOldShowMarks;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.isComleteRenderer2 = function () {
|
|
|
|
|
var start = Math.max(this.m_lCurrentRendererPage, 0);
|
|
|
|
|
var end = Math.min(start + 50, this.SlidesCount - 1);
|
|
|
|
|
if ((end + 1) >= this.SlidesCount) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.ToRendererPart = function () {
|
|
|
|
|
var pagescount = this.SlidesCount;
|
|
|
|
|
if (-1 == this.m_lCurrentRendererPage) {
|
|
|
|
|
this.m_oDocRenderer = new CDocumentRenderer();
|
|
|
|
|
this.m_oDocRenderer.VectorMemoryForPrint = new CMemory();
|
|
|
|
|
this.m_lCurrentRendererPage = 0;
|
|
|
|
|
this.m_bOldShowMarks = this.m_oWordControl.m_oApi.ShowParaMarks;
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = false;
|
|
|
|
|
this.m_oDocRenderer.IsNoDrawingEmptyPlaceholder = true;
|
|
|
|
|
}
|
|
|
|
|
var start = this.m_lCurrentRendererPage;
|
|
|
|
|
var end = Math.min(this.m_lCurrentRendererPage + 50, pagescount - 1);
|
|
|
|
|
var renderer = this.m_oDocRenderer;
|
|
|
|
|
renderer.Memory.Seek(0);
|
|
|
|
|
renderer.VectorMemoryForPrint.ClearNoAttack();
|
|
|
|
|
for (var i = start; i <= end; i++) {
|
|
|
|
|
renderer.BeginPage(this.m_oLogicDocument.Width, this.m_oLogicDocument.Height);
|
|
|
|
|
this.m_oLogicDocument.DrawPage(i, renderer);
|
|
|
|
|
renderer.EndPage();
|
|
|
|
|
}
|
|
|
|
|
if (end == -1) {
|
|
|
|
|
renderer.BeginPage(this.m_oLogicDocument.Width, this.m_oLogicDocument.Height);
|
|
|
|
|
renderer.EndPage();
|
|
|
|
|
}
|
|
|
|
|
this.m_lCurrentRendererPage = end + 1;
|
|
|
|
|
if (this.m_lCurrentRendererPage >= pagescount) {
|
|
|
|
|
this.m_lCurrentRendererPage = -1;
|
|
|
|
|
this.m_oDocRenderer = null;
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = this.m_bOldShowMarks;
|
|
|
|
|
}
|
|
|
|
|
return renderer.Memory.GetBase64Memory();
|
|
|
|
|
};
|
|
|
|
|
this.SendChangeDocumentToApi = function (bIsAttack) {
|
|
|
|
|
if (bIsAttack || !this.m_bIsSendApiDocChanged) {
|
|
|
|
|
this.m_bIsSendApiDocChanged = true;
|
|
|
|
|
this.m_oWordControl.m_oApi.isDocumentModify = true;
|
|
|
|
|
this.m_oWordControl.m_oApi.asc_fireCallback("asc_onDocumentChanged");
|
|
|
|
|
this.m_oWordControl.m_oApi.asc_fireCallback("asc_onDocumentModifiedChanged");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.InitGuiCanvasTextProps = function (div_id) {
|
|
|
|
|
var _div_elem = document.getElementById(div_id);
|
|
|
|
|
if (null != this.GuiCanvasTextProps) {
|
|
|
|
|
var elem = _div_elem.getElementsByTagName("canvas");
|
|
|
|
|
if (elem.length == 0) {
|
|
|
|
|
_div_elem.appendChild(this.GuiCanvasTextProps);
|
|
|
|
|
} else {
|
|
|
|
|
var _width = parseInt(_div_elem.offsetWidth);
|
|
|
|
|
var _height = parseInt(_div_elem.offsetHeight);
|
|
|
|
|
if (0 == _width) {
|
|
|
|
|
_width = 300;
|
|
|
|
|
}
|
|
|
|
|
if (0 == _height) {
|
|
|
|
|
_height = 80;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiCanvasTextProps.width != _width || this.GuiCanvasTextProps.height != _height) {
|
|
|
|
|
this.GuiCanvasTextProps.width = _width;
|
|
|
|
|
this.GuiCanvasTextProps.height = _height;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.GuiCanvasTextProps = document.createElement("canvas");
|
|
|
|
|
this.GuiCanvasTextProps.style = "position:absolute;left:0;top:0;";
|
|
|
|
|
this.GuiCanvasTextProps.id = this.GuiCanvasTextPropsId;
|
|
|
|
|
var _width = parseInt(_div_elem.offsetWidth);
|
|
|
|
|
var _height = parseInt(_div_elem.offsetHeight);
|
|
|
|
|
if (0 == _width) {
|
|
|
|
|
_width = 300;
|
|
|
|
|
}
|
|
|
|
|
if (0 == _height) {
|
|
|
|
|
_height = 80;
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasTextProps.width = _width;
|
|
|
|
|
this.GuiCanvasTextProps.height = _height;
|
|
|
|
|
_div_elem.appendChild(this.GuiCanvasTextProps);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.DrawGuiCanvasTextProps = function (props) {
|
|
|
|
|
var bIsChange = false;
|
|
|
|
|
if (null == this.GuiLastTextProps) {
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
this.GuiLastTextProps = new CParagraphProp();
|
|
|
|
|
this.GuiLastTextProps.Subscript = props.Subscript;
|
|
|
|
|
this.GuiLastTextProps.Superscript = props.Superscript;
|
|
|
|
|
this.GuiLastTextProps.SmallCaps = props.SmallCaps;
|
|
|
|
|
this.GuiLastTextProps.AllCaps = props.AllCaps;
|
|
|
|
|
this.GuiLastTextProps.Strikeout = props.Strikeout;
|
|
|
|
|
this.GuiLastTextProps.DStrikeout = props.DStrikeout;
|
|
|
|
|
this.GuiLastTextProps.TextSpacing = props.TextSpacing;
|
|
|
|
|
this.GuiLastTextProps.Position = props.Position;
|
|
|
|
|
} else {
|
|
|
|
|
if (this.GuiLastTextProps.Subscript != props.Subscript) {
|
|
|
|
|
this.GuiLastTextProps.Subscript = props.Subscript;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiLastTextProps.Superscript != props.Superscript) {
|
|
|
|
|
this.GuiLastTextProps.Superscript = props.Superscript;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiLastTextProps.SmallCaps != props.SmallCaps) {
|
|
|
|
|
this.GuiLastTextProps.SmallCaps = props.SmallCaps;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiLastTextProps.AllCaps != props.AllCaps) {
|
|
|
|
|
this.GuiLastTextProps.AllCaps = props.AllCaps;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiLastTextProps.Strikeout != props.Strikeout) {
|
|
|
|
|
this.GuiLastTextProps.Strikeout = props.Strikeout;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiLastTextProps.DStrikeout != props.DStrikeout) {
|
|
|
|
|
this.GuiLastTextProps.DStrikeout = props.DStrikeout;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiLastTextProps.TextSpacing != props.TextSpacing) {
|
|
|
|
|
this.GuiLastTextProps.TextSpacing = props.TextSpacing;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiLastTextProps.Position != props.Position) {
|
|
|
|
|
this.GuiLastTextProps.Position = props.Position;
|
|
|
|
|
bIsChange = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (undefined !== this.GuiLastTextProps.Position && isNaN(this.GuiLastTextProps.Position)) {
|
|
|
|
|
this.GuiLastTextProps.Position = undefined;
|
|
|
|
|
}
|
|
|
|
|
if (undefined !== this.GuiLastTextProps.TextSpacing && isNaN(this.GuiLastTextProps.TextSpacing)) {
|
|
|
|
|
this.GuiLastTextProps.TextSpacing = undefined;
|
|
|
|
|
}
|
|
|
|
|
if (!bIsChange) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
History.TurnOff();
|
|
|
|
|
var _oldTurn = editor.isViewMode;
|
|
|
|
|
editor.isViewMode = true;
|
|
|
|
|
var docContent = new CDocumentContent(this.m_oWordControl.m_oLogicDocument, this.m_oWordControl.m_oDrawingDocument, 0, 0, 1000, 1000, false, false, true);
|
|
|
|
|
var par = docContent.Content[0];
|
|
|
|
|
par.Cursor_MoveToStartPos();
|
|
|
|
|
par.Set_Pr(new CParaPr());
|
|
|
|
|
var _textPr = new CTextPr();
|
|
|
|
|
_textPr.FontFamily = {
|
|
|
|
|
Name: "Arial",
|
|
|
|
|
Index: -1
|
|
|
|
|
};
|
|
|
|
|
_textPr.Strikeout = this.GuiLastTextProps.Strikeout;
|
|
|
|
|
if (true === this.GuiLastTextProps.Subscript) {
|
|
|
|
|
_textPr.VertAlign = vertalign_SubScript;
|
|
|
|
|
} else {
|
|
|
|
|
if (true === this.GuiLastTextProps.Superscript) {
|
|
|
|
|
_textPr.VertAlign = vertalign_SuperScript;
|
|
|
|
|
} else {
|
|
|
|
|
_textPr.VertAlign = vertalign_Baseline;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_textPr.DStrikeout = this.GuiLastTextProps.DStrikeout;
|
|
|
|
|
_textPr.Caps = this.GuiLastTextProps.AllCaps;
|
|
|
|
|
_textPr.SmallCaps = this.GuiLastTextProps.SmallCaps;
|
|
|
|
|
_textPr.Spacing = this.GuiLastTextProps.TextSpacing;
|
|
|
|
|
_textPr.Position = this.GuiLastTextProps.Position;
|
|
|
|
|
var parRun = new ParaRun(par);
|
|
|
|
|
var Pos = 0;
|
|
|
|
|
parRun.Set_Pr(_textPr);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("H"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("e"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("l"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("l"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("o"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaSpace(1), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("W"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("o"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("r"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("l"), false);
|
|
|
|
|
parRun.Add_ToContent(Pos++, new ParaText("d"), false);
|
|
|
|
|
par.Add_ToContent(0, parRun);
|
|
|
|
|
docContent.Recalculate_Page(0, true);
|
|
|
|
|
var baseLineOffset = par.Lines[0].Y;
|
|
|
|
|
var _bounds = par.Get_PageBounds(0);
|
|
|
|
|
var ctx = this.GuiCanvasTextProps.getContext("2d");
|
|
|
|
|
var _wPx = this.GuiCanvasTextProps.width;
|
|
|
|
|
var _hPx = this.GuiCanvasTextProps.height;
|
|
|
|
|
var _wMm = _wPx * g_dKoef_pix_to_mm;
|
|
|
|
|
var _hMm = _hPx * g_dKoef_pix_to_mm;
|
|
|
|
|
ctx.fillStyle = "#FFFFFF";
|
|
|
|
|
ctx.fillRect(0, 0, _wPx, _hPx);
|
|
|
|
|
var _pxBoundsW = par.Lines[0].Ranges[0].W * g_dKoef_mm_to_pix;
|
|
|
|
|
var _pxBoundsH = (_bounds.Bottom - _bounds.Top) * g_dKoef_mm_to_pix;
|
|
|
|
|
if (this.GuiLastTextProps.Position !== undefined && this.GuiLastTextProps.Position != null && this.GuiLastTextProps.Position != 0) {}
|
|
|
|
|
if (_pxBoundsH < _hPx && _pxBoundsW < _wPx) {
|
|
|
|
|
var _lineY = (((_hPx + _pxBoundsH) / 2) >> 0) + 0.5;
|
|
|
|
|
var _lineW = (((_wPx - _pxBoundsW) / 4) >> 0);
|
|
|
|
|
ctx.strokeStyle = "#000000";
|
|
|
|
|
ctx.lineWidth = 1;
|
|
|
|
|
ctx.beginPath();
|
|
|
|
|
ctx.moveTo(0, _lineY);
|
|
|
|
|
ctx.lineTo(_lineW, _lineY);
|
|
|
|
|
ctx.moveTo(_wPx - _lineW, _lineY);
|
|
|
|
|
ctx.lineTo(_wPx, _lineY);
|
|
|
|
|
ctx.stroke();
|
|
|
|
|
ctx.beginPath();
|
|
|
|
|
}
|
|
|
|
|
var _yOffset = (((_hPx + _pxBoundsH) / 2) - baseLineOffset * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
var _xOffset = ((_wPx - _pxBoundsW) / 2) >> 0;
|
|
|
|
|
var graphics = new CGraphics();
|
|
|
|
|
graphics.init(ctx, _wPx, _hPx, _wMm, _hMm);
|
|
|
|
|
graphics.m_oFontManager = g_fontManager;
|
|
|
|
|
graphics.m_oCoordTransform.tx = _xOffset;
|
|
|
|
|
graphics.m_oCoordTransform.ty = _yOffset;
|
|
|
|
|
graphics.transform(1, 0, 0, 1, 0, 0);
|
|
|
|
|
var old_marks = this.m_oWordControl.m_oApi.ShowParaMarks;
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = false;
|
|
|
|
|
par.Draw(0, graphics);
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = old_marks;
|
|
|
|
|
History.TurnOn();
|
|
|
|
|
editor.isViewMode = _oldTurn;
|
|
|
|
|
};
|
|
|
|
|
this.DrawSearch = function (overlay) {
|
|
|
|
|
var xDst = this.SlideCurrectRect.left;
|
|
|
|
|
var yDst = this.SlideCurrectRect.top;
|
|
|
|
|
var wDst = this.SlideCurrectRect.right - this.SlideCurrectRect.left;
|
|
|
|
|
var hDst = this.SlideCurrectRect.bottom - this.SlideCurrectRect.top;
|
|
|
|
|
var dKoefX = wDst / this.m_oLogicDocument.Width;
|
|
|
|
|
var dKoefY = hDst / this.m_oLogicDocument.Height;
|
|
|
|
|
var ctx = overlay.m_oContext;
|
|
|
|
|
var searchingArray = this.m_oLogicDocument.Slides[this.SlideCurrent].searchingArray;
|
|
|
|
|
for (var i = 0; i < searchingArray.length; i++) {
|
|
|
|
|
var place = searchingArray[i];
|
|
|
|
|
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.DrawSearchCur = function (overlay, place) {
|
|
|
|
|
var xDst = this.SlideCurrectRect.left;
|
|
|
|
|
var yDst = this.SlideCurrectRect.top;
|
|
|
|
|
var wDst = this.SlideCurrectRect.right - this.SlideCurrectRect.left;
|
|
|
|
|
var hDst = this.SlideCurrectRect.bottom - this.SlideCurrectRect.top;
|
|
|
|
|
var dKoefX = wDst / this.m_oLogicDocument.Width;
|
|
|
|
|
var dKoefY = hDst / this.m_oLogicDocument.Height;
|
|
|
|
|
var ctx = overlay.m_oContext;
|
|
|
|
|
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.StopRenderingPage = function (pageIndex) {
|
|
|
|
|
return;
|
|
|
|
|
};
|
|
|
|
|
this.ClearCachePages = function () {
|
|
|
|
|
if (this.m_oWordControl.bInit_word_control && 0 <= this.SlideCurrent) {
|
|
|
|
|
this.m_oWordControl.SlideDrawer.CheckSlide(this.SlideCurrent);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.FirePaint = function () {
|
|
|
|
|
this.m_oWordControl.Thumbnails.LockMainObjType = true;
|
|
|
|
|
this.m_oWordControl.SlideDrawer.CheckSlide(this.SlideCurrent);
|
|
|
|
|
this.m_oWordControl.CalculateDocumentSize(false);
|
|
|
|
|
this.m_oWordControl.OnScroll();
|
|
|
|
|
this.m_oWordControl.Thumbnails.LockMainObjType = false;
|
|
|
|
|
};
|
|
|
|
|
this.StartTrackAutoshape = function () {
|
|
|
|
|
this.m_oWordControl.ShowOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.EndTrackAutoShape = function () {
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoordsFromCursor2 = function (x, y) {
|
|
|
|
|
var _word_control = this.m_oWordControl;
|
|
|
|
|
var _x = x - _word_control.X - (_word_control.m_oMainContent.AbsolutePosition.L + _word_control.m_oMainView.AbsolutePosition.L) * g_dKoef_mm_to_pix;
|
|
|
|
|
var _y = y - _word_control.Y - (_word_control.m_oMainContent.AbsolutePosition.T + _word_control.m_oMainView.AbsolutePosition.T) * g_dKoef_mm_to_pix;
|
|
|
|
|
var dKoef = (100 * g_dKoef_pix_to_mm / this.m_oWordControl.m_nZoomValue);
|
|
|
|
|
var Pos = {
|
|
|
|
|
X: 0,
|
|
|
|
|
Y: 0,
|
|
|
|
|
Page: this.SlideCurrent
|
|
|
|
|
};
|
|
|
|
|
if (this.SlideCurrent != -1) {
|
|
|
|
|
var rect = this.SlideCurrectRect;
|
|
|
|
|
var x_mm = (_x - rect.left) * dKoef;
|
|
|
|
|
var y_mm = (_y - rect.top) * dKoef;
|
|
|
|
|
Pos.X = x_mm;
|
|
|
|
|
Pos.Y = y_mm;
|
|
|
|
|
}
|
|
|
|
|
return Pos;
|
|
|
|
|
};
|
|
|
|
|
this.IsCursorInTableCur = function (x, y, page) {
|
|
|
|
|
var _table = this.TableOutlineDr.TableOutline;
|
|
|
|
|
if (_table == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (page != _table.PageNum) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
var _dist = this.TableOutlineDr.image.width * g_dKoef_pix_to_mm;
|
|
|
|
|
_dist *= (100 / this.m_oWordControl.m_nZoomValue);
|
|
|
|
|
var _x = _table.X;
|
|
|
|
|
var _y = _table.Y;
|
|
|
|
|
var _r = _x + _table.W;
|
|
|
|
|
var _b = _y + _table.H;
|
|
|
|
|
if ((x > (_x - _dist)) && (x < _r) && (y > (_y - _dist)) && (y < _b)) {
|
|
|
|
|
if ((x < _x) || (y < _y)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoordsToCursorWR = function (x, y, pageIndex, transform) {
|
|
|
|
|
var _word_control = this.m_oWordControl;
|
|
|
|
|
var dKoef = (this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100);
|
|
|
|
|
var __x = x;
|
|
|
|
|
var __y = y;
|
|
|
|
|
if (transform) {
|
|
|
|
|
__x = transform.TransformPointX(x, y);
|
|
|
|
|
__y = transform.TransformPointY(x, y);
|
|
|
|
|
}
|
|
|
|
|
var x_pix = (this.SlideCurrectRect.left + __x * dKoef + _word_control.m_oMainContent.AbsolutePosition.L * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
var y_pix = (this.SlideCurrectRect.top + __y * dKoef + _word_control.m_oMainContent.AbsolutePosition.T * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
return {
|
|
|
|
|
X: x_pix,
|
|
|
|
|
Y: y_pix,
|
|
|
|
|
Error: false
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoordsToCursorWR_2 = function (x, y) {
|
|
|
|
|
var _word_control = this.m_oWordControl;
|
|
|
|
|
var dKoef = (this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100);
|
|
|
|
|
var x_pix = (this.SlideCurrectRect.left + x * dKoef + _word_control.m_oMainContent.AbsolutePosition.L * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
var y_pix = (this.SlideCurrectRect.top + y * dKoef + _word_control.m_oMainContent.AbsolutePosition.T * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
x_pix += _word_control.X;
|
|
|
|
|
y_pix += _word_control.Y;
|
|
|
|
|
return {
|
|
|
|
|
X: x_pix,
|
|
|
|
|
Y: y_pix,
|
|
|
|
|
Error: false
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoordsToCursorWR_Comment = function (x, y) {
|
|
|
|
|
var _word_control = this.m_oWordControl;
|
|
|
|
|
var dKoef = (this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100);
|
|
|
|
|
var x_pix = (this.SlideCurrectRect.left + x * dKoef + _word_control.m_oMainView.AbsolutePosition.L * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
var y_pix = (this.SlideCurrectRect.top + y * dKoef + _word_control.m_oMainView.AbsolutePosition.T * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
x_pix += COMMENT_WIDTH;
|
|
|
|
|
y_pix += ((COMMENT_HEIGHT / 3) >> 0);
|
|
|
|
|
return {
|
|
|
|
|
X: x_pix,
|
|
|
|
|
Y: y_pix,
|
|
|
|
|
Error: false
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoordsToCursor = function (x, y) {
|
|
|
|
|
var _word_control = this.m_oWordControl;
|
|
|
|
|
var dKoef = (this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100);
|
|
|
|
|
var x_pix = (this.SlideCurrectRect.left + x * dKoef) >> 0;
|
|
|
|
|
var y_pix = (this.SlideCurrectRect.top + y * dKoef) >> 0;
|
|
|
|
|
return {
|
|
|
|
|
X: x_pix,
|
|
|
|
|
Y: y_pix,
|
|
|
|
|
Error: false
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.TargetStart = function () {
|
|
|
|
|
if (this.m_lTimerTargetId != -1) {
|
|
|
|
|
clearInterval(this.m_lTimerTargetId);
|
|
|
|
|
}
|
|
|
|
|
this.m_lTimerTargetId = setInterval(oThis.DrawTarget, 500);
|
|
|
|
|
};
|
|
|
|
|
this.TargetEnd = function () {
|
|
|
|
|
if (!this.TargetShowFlag) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.TargetShowFlag = false;
|
|
|
|
|
this.TargetShowNeedFlag = false;
|
|
|
|
|
clearInterval(this.m_lTimerTargetId);
|
|
|
|
|
this.m_lTimerTargetId = -1;
|
|
|
|
|
this.TargetHtmlElement.style.display = "none";
|
|
|
|
|
this.m_oWordControl.DisableTextEATextboxAttack();
|
|
|
|
|
};
|
|
|
|
|
this.UpdateTargetNoAttack = function () {
|
|
|
|
|
if (null == this.m_oWordControl) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.CheckTargetDraw(this.m_dTargetX, this.m_dTargetY);
|
|
|
|
|
};
|
|
|
|
|
this.CheckTargetDraw = function (x, y) {
|
|
|
|
|
var _oldW = this.TargetHtmlElement.width;
|
|
|
|
|
var _oldH = this.TargetHtmlElement.height;
|
|
|
|
|
var _newW = 2;
|
|
|
|
|
var _newH = (this.m_dTargetSize * this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100) >> 0;
|
|
|
|
|
if (null != this.TextMatrix && !global_MatrixTransformer.IsIdentity2(this.TextMatrix)) {
|
|
|
|
|
var _x1 = this.TextMatrix.TransformPointX(x, y);
|
|
|
|
|
var _y1 = this.TextMatrix.TransformPointY(x, y);
|
|
|
|
|
var _x2 = this.TextMatrix.TransformPointX(x, y + this.m_dTargetSize);
|
|
|
|
|
var _y2 = this.TextMatrix.TransformPointY(x, y + this.m_dTargetSize);
|
|
|
|
|
var pos1 = this.ConvertCoordsToCursor(_x1, _y1);
|
|
|
|
|
var pos2 = this.ConvertCoordsToCursor(_x2, _y2);
|
|
|
|
|
_newW = (Math.abs(pos1.X - pos2.X) >> 0) + 1;
|
|
|
|
|
_newH = (Math.abs(pos1.Y - pos2.Y) >> 0) + 1;
|
|
|
|
|
if (2 > _newW) {
|
|
|
|
|
_newW = 2;
|
|
|
|
|
}
|
|
|
|
|
if (2 > _newH) {
|
|
|
|
|
_newH = 2;
|
|
|
|
|
}
|
|
|
|
|
if (_oldW == _newW && _oldH == _newH) {
|
|
|
|
|
if (_newW != 2 && _newH != 2) {
|
|
|
|
|
this.TargetHtmlElement.width = _newW;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.TargetHtmlElement.style.width = _newW + "px";
|
|
|
|
|
this.TargetHtmlElement.style.height = _newH + "px";
|
|
|
|
|
this.TargetHtmlElement.width = _newW;
|
|
|
|
|
this.TargetHtmlElement.height = _newH;
|
|
|
|
|
}
|
|
|
|
|
var ctx = this.TargetHtmlElement.getContext("2d");
|
|
|
|
|
if (_newW == 2 || _newH == 2) {
|
|
|
|
|
ctx.fillStyle = this.GetTargetStyle();
|
|
|
|
|
ctx.fillRect(0, 0, _newW, _newH);
|
|
|
|
|
} else {
|
|
|
|
|
ctx.beginPath();
|
|
|
|
|
ctx.strokeStyle = this.GetTargetStyle();
|
|
|
|
|
ctx.lineWidth = 2;
|
|
|
|
|
if (((pos1.X - pos2.X) * (pos1.Y - pos2.Y)) >= 0) {
|
|
|
|
|
ctx.moveTo(0, 0);
|
|
|
|
|
ctx.lineTo(_newW, _newH);
|
|
|
|
|
} else {
|
|
|
|
|
ctx.moveTo(0, _newH);
|
|
|
|
|
ctx.lineTo(_newW, 0);
|
|
|
|
|
}
|
|
|
|
|
ctx.stroke();
|
|
|
|
|
}
|
|
|
|
|
this.TargetHtmlElementLeft = Math.min(pos1.X, pos2.X) >> 0;
|
|
|
|
|
this.TargetHtmlElementTop = Math.min(pos1.Y, pos2.Y) >> 0;
|
|
|
|
|
this.TargetHtmlElement.style.left = this.TargetHtmlElementLeft + "px";
|
|
|
|
|
this.TargetHtmlElement.style.top = this.TargetHtmlElementTop + "px";
|
|
|
|
|
} else {
|
|
|
|
|
if (_oldW == _newW && _oldH == _newH) {
|
|
|
|
|
this.TargetHtmlElement.width = _newW;
|
|
|
|
|
} else {
|
|
|
|
|
this.TargetHtmlElement.style.width = _newW + "px";
|
|
|
|
|
this.TargetHtmlElement.style.height = _newH + "px";
|
|
|
|
|
this.TargetHtmlElement.width = _newW;
|
|
|
|
|
this.TargetHtmlElement.height = _newH;
|
|
|
|
|
}
|
|
|
|
|
var ctx = this.TargetHtmlElement.getContext("2d");
|
|
|
|
|
ctx.fillStyle = this.GetTargetStyle();
|
|
|
|
|
ctx.fillRect(0, 0, _newW, _newH);
|
|
|
|
|
if (null != this.TextMatrix) {
|
|
|
|
|
x += this.TextMatrix.tx;
|
|
|
|
|
y += this.TextMatrix.ty;
|
|
|
|
|
}
|
|
|
|
|
var pos = this.ConvertCoordsToCursor(x, y);
|
|
|
|
|
this.TargetHtmlElementLeft = pos.X >> 0;
|
|
|
|
|
this.TargetHtmlElementTop = pos.Y >> 0;
|
|
|
|
|
this.TargetHtmlElement.style.left = this.TargetHtmlElementLeft + "px";
|
|
|
|
|
this.TargetHtmlElement.style.top = this.TargetHtmlElementTop + "px";
|
|
|
|
|
this.m_oWordControl.CheckTextBoxInputPos();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.UpdateTarget = function (x, y, pageIndex) {
|
|
|
|
|
if (pageIndex != this.SlideCurrent) {
|
|
|
|
|
this.m_oWordControl.GoToPage(pageIndex);
|
|
|
|
|
}
|
|
|
|
|
if (this.UpdateTargetFromPaint === false) {
|
|
|
|
|
this.UpdateTargetCheck = true;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var targetSize = Number(this.m_dTargetSize * this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100);
|
|
|
|
|
var pos = null;
|
|
|
|
|
var __x = x;
|
|
|
|
|
var __y = y;
|
|
|
|
|
if (!this.TextMatrix) {
|
|
|
|
|
pos = this.ConvertCoordsToCursor(x, y);
|
|
|
|
|
} else {
|
|
|
|
|
__x = this.TextMatrix.TransformPointX(x, y);
|
|
|
|
|
__y = this.TextMatrix.TransformPointY(x, y);
|
|
|
|
|
pos = this.ConvertCoordsToCursor(__x, __y);
|
|
|
|
|
}
|
|
|
|
|
var _ww = this.m_oWordControl.m_oEditor.HtmlElement.width;
|
|
|
|
|
var _hh = this.m_oWordControl.m_oEditor.HtmlElement.height;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
_ww >>= 1;
|
|
|
|
|
_hh >>= 1;
|
|
|
|
|
}
|
|
|
|
|
var boxX = 0;
|
|
|
|
|
var boxY = 0;
|
|
|
|
|
var boxR = _ww - 2;
|
|
|
|
|
var boxB = _hh - targetSize;
|
|
|
|
|
var nValueScrollHor = 0;
|
|
|
|
|
if (pos.X < boxX) {
|
|
|
|
|
nValueScrollHor = (this.m_oWordControl.m_dScrollX + pos.X - boxX) >> 0;
|
|
|
|
|
}
|
|
|
|
|
if (pos.X > boxR) {
|
|
|
|
|
nValueScrollHor = (this.m_oWordControl.m_dScrollX + pos.X - boxR) >> 0;
|
|
|
|
|
}
|
|
|
|
|
var nValueScrollVer = 0;
|
|
|
|
|
if (pos.Y < boxY) {
|
|
|
|
|
nValueScrollVer = (this.m_oWordControl.m_dScrollY + pos.Y - boxY) >> 0;
|
|
|
|
|
}
|
|
|
|
|
if (pos.Y > boxB) {
|
|
|
|
|
nValueScrollVer = (this.m_oWordControl.m_dScrollY + pos.Y - boxB) >> 0;
|
|
|
|
|
}
|
|
|
|
|
this.m_dTargetX = x;
|
|
|
|
|
this.m_dTargetY = y;
|
|
|
|
|
var isNeedScroll = false;
|
|
|
|
|
if (0 != nValueScrollHor) {
|
|
|
|
|
isNeedScroll = true;
|
|
|
|
|
this.m_oWordControl.m_bIsUpdateTargetNoAttack = true;
|
|
|
|
|
if (nValueScrollHor > this.m_oWordControl.m_dScrollX_max) {
|
|
|
|
|
nValueScrollHor = this.m_oWordControl.m_dScrollX_max;
|
|
|
|
|
}
|
|
|
|
|
if (0 > nValueScrollHor) {
|
|
|
|
|
nValueScrollHor = 0;
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oScrollHorApi.scrollToX(nValueScrollHor, false);
|
|
|
|
|
}
|
|
|
|
|
if (0 != nValueScrollVer) {
|
|
|
|
|
isNeedScroll = true;
|
|
|
|
|
this.m_oWordControl.m_bIsUpdateTargetNoAttack = true;
|
|
|
|
|
if (nValueScrollVer > this.m_oWordControl.SlideScrollMAX) {
|
|
|
|
|
nValueScrollVer = this.m_oWordControl.SlideScrollMAX - 1;
|
|
|
|
|
}
|
|
|
|
|
if (this.m_oWordControl.SlideScrollMIN > nValueScrollVer) {
|
|
|
|
|
nValueScrollVer = this.m_oWordControl.SlideScrollMIN;
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oScrollVerApi.scrollToY(nValueScrollVer, false);
|
|
|
|
|
}
|
|
|
|
|
if (true == isNeedScroll) {
|
|
|
|
|
this.m_oWordControl.m_bIsUpdateTargetNoAttack = true;
|
|
|
|
|
this.m_oWordControl.OnScroll();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.CheckTargetDraw(x, y);
|
|
|
|
|
};
|
|
|
|
|
this.SetTargetSize = function (size) {
|
|
|
|
|
this.m_dTargetSize = size;
|
|
|
|
|
};
|
|
|
|
|
this.DrawTarget = function () {
|
|
|
|
|
if ("block" != oThis.TargetHtmlElement.style.display && oThis.NeedTarget && !oThis.TransitionSlide.IsPlaying()) {
|
|
|
|
|
oThis.TargetHtmlElement.style.display = "block";
|
|
|
|
|
} else {
|
|
|
|
|
oThis.TargetHtmlElement.style.display = "none";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.TargetShow = function () {
|
|
|
|
|
this.TargetShowNeedFlag = true;
|
|
|
|
|
};
|
|
|
|
|
this.CheckTargetShow = function () {
|
|
|
|
|
if (this.TargetShowFlag && this.TargetShowNeedFlag) {
|
|
|
|
|
this.TargetHtmlElement.style.display = "block";
|
|
|
|
|
this.TargetShowNeedFlag = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!this.TargetShowNeedFlag) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.TargetShowNeedFlag = false;
|
|
|
|
|
if (-1 == this.m_lTimerTargetId) {
|
|
|
|
|
this.TargetStart();
|
|
|
|
|
}
|
|
|
|
|
if (oThis.NeedTarget) {
|
|
|
|
|
this.TargetHtmlElement.style.display = "block";
|
|
|
|
|
}
|
|
|
|
|
this.TargetShowFlag = true;
|
|
|
|
|
};
|
|
|
|
|
this.SetCurrentPage = function (PageIndex) {
|
|
|
|
|
if (PageIndex >= this.SlidesCount) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.SlideCurrent == PageIndex) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.SlideCurrent = PageIndex;
|
|
|
|
|
this.m_oWordControl.SetCurrentPage();
|
|
|
|
|
};
|
|
|
|
|
this.SelectEnabled = function (bIsEnabled) {
|
|
|
|
|
this.m_bIsSelection = bIsEnabled;
|
|
|
|
|
if (false === this.m_bIsSelection) {
|
|
|
|
|
this.SelectClear();
|
|
|
|
|
this.m_oWordControl.CheckUnShowOverlay();
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.m_oContext.globalAlpha = 1;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.SelectClear = function () {
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.SearchClear = function () {
|
|
|
|
|
for (var i = 0; i < this.SlidesCount; i++) {
|
|
|
|
|
this.Slide.searchingArray.splice(0, this.Slide.searchingArray.length);
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.Clear();
|
|
|
|
|
this.m_bIsSearching = false;
|
|
|
|
|
this.CurrentSearchNavi = null;
|
|
|
|
|
};
|
|
|
|
|
this.AddPageSearch = function (findText, rects) {
|
|
|
|
|
var _len = rects.length;
|
|
|
|
|
if (_len == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.m_oWordControl.m_oOverlay.HtmlElement.style.display == "none") {
|
|
|
|
|
this.m_oWordControl.ShowOverlay();
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.m_oContext.globalAlpha = 0.2;
|
|
|
|
|
}
|
|
|
|
|
var navigator = {
|
|
|
|
|
Page: rects[0].PageNum,
|
|
|
|
|
Place: rects.slice(0, _len)
|
|
|
|
|
};
|
|
|
|
|
var _find = {
|
|
|
|
|
text: findText,
|
|
|
|
|
navigator: navigator
|
|
|
|
|
};
|
|
|
|
|
this.m_oWordControl.m_oApi.sync_SearchFoundCallback(_find);
|
|
|
|
|
var is_update = false;
|
|
|
|
|
var _pages = this.m_oLogicDocument.Slides;
|
|
|
|
|
for (var i = 0; i < _len; i++) {
|
|
|
|
|
var r = rects[i];
|
|
|
|
|
_pages[r.PageNum].searchingArray[_pages[r.PageNum].searchingArray.length] = r;
|
|
|
|
|
if (r.PageNum >= this.m_lDrawingFirst && r.PageNum <= this.m_lDrawingEnd) {
|
|
|
|
|
is_update = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (is_update) {
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.StartSearch = function () {
|
|
|
|
|
this.SearchClear();
|
|
|
|
|
if (this.m_bIsSelection) {
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
}
|
|
|
|
|
this.m_bIsSearching = true;
|
|
|
|
|
this.CurrentSearchNavi = null;
|
|
|
|
|
};
|
|
|
|
|
this.EndSearch = function (bIsChange) {
|
|
|
|
|
if (bIsChange) {
|
|
|
|
|
this.SearchClear();
|
|
|
|
|
this.m_bIsSearching = false;
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
} else {
|
|
|
|
|
this.m_bIsSearching = true;
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oApi.sync_SearchEndCallback();
|
|
|
|
|
};
|
|
|
|
|
this.AddPageSelection = function (pageIndex, x, y, width, height) {
|
|
|
|
|
if (pageIndex < 0 || pageIndex != this.SlideCurrent || Math.abs(width) < 0.001 || Math.abs(height) < 0.001) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var xDst = this.SlideCurrectRect.left;
|
|
|
|
|
var yDst = this.SlideCurrectRect.top;
|
|
|
|
|
var wDst = this.SlideCurrectRect.right - this.SlideCurrectRect.left;
|
|
|
|
|
var hDst = this.SlideCurrectRect.bottom - this.SlideCurrectRect.top;
|
|
|
|
|
var dKoefX = wDst / this.m_oLogicDocument.Width;
|
|
|
|
|
var dKoefY = hDst / this.m_oLogicDocument.Height;
|
|
|
|
|
var overlay = this.m_oWordControl.m_oOverlayApi;
|
|
|
|
|
if (null == this.TextMatrix || global_MatrixTransformer.IsIdentity(this.TextMatrix)) {
|
|
|
|
|
var _x = ((xDst + dKoefX * x + 0.5) >> 0) - 0.5;
|
|
|
|
|
var _y = ((yDst + dKoefY * y + 0.5) >> 0) - 0.5;
|
|
|
|
|
var _r = ((xDst + dKoefX * (x + width) + 0.5) >> 0) - 0.5;
|
|
|
|
|
var _b = ((yDst + dKoefY * (y + height) + 0.5) >> 0) - 0.5;
|
|
|
|
|
if (_x < overlay.min_x) {
|
|
|
|
|
overlay.min_x = _x;
|
|
|
|
|
}
|
|
|
|
|
if (_r > overlay.max_x) {
|
|
|
|
|
overlay.max_x = _r;
|
|
|
|
|
}
|
|
|
|
|
if (_y < overlay.min_y) {
|
|
|
|
|
overlay.min_y = _y;
|
|
|
|
|
}
|
|
|
|
|
if (_b > overlay.max_y) {
|
|
|
|
|
overlay.max_y = _b;
|
|
|
|
|
}
|
|
|
|
|
overlay.m_oContext.rect(_x, _y, _r - _x + 1, _b - _y + 1);
|
|
|
|
|
} else {
|
|
|
|
|
var _x1 = this.TextMatrix.TransformPointX(x, y);
|
|
|
|
|
var _y1 = this.TextMatrix.TransformPointY(x, y);
|
|
|
|
|
var _x2 = this.TextMatrix.TransformPointX(x + width, y);
|
|
|
|
|
var _y2 = this.TextMatrix.TransformPointY(x + width, y);
|
|
|
|
|
var _x3 = this.TextMatrix.TransformPointX(x + width, y + height);
|
|
|
|
|
var _y3 = this.TextMatrix.TransformPointY(x + width, y + height);
|
|
|
|
|
var _x4 = this.TextMatrix.TransformPointX(x, y + height);
|
|
|
|
|
var _y4 = this.TextMatrix.TransformPointY(x, y + height);
|
|
|
|
|
var x1 = xDst + dKoefX * _x1;
|
|
|
|
|
var y1 = yDst + dKoefY * _y1;
|
|
|
|
|
var x2 = xDst + dKoefX * _x2;
|
|
|
|
|
var y2 = yDst + dKoefY * _y2;
|
|
|
|
|
var x3 = xDst + dKoefX * _x3;
|
|
|
|
|
var y3 = yDst + dKoefY * _y3;
|
|
|
|
|
var x4 = xDst + dKoefX * _x4;
|
|
|
|
|
var y4 = yDst + dKoefY * _y4;
|
|
|
|
|
if (global_MatrixTransformer.IsIdentity2(this.TextMatrix)) {
|
|
|
|
|
x1 = (x1 >> 0) + 0.5;
|
|
|
|
|
y1 = (y1 >> 0) + 0.5;
|
|
|
|
|
x2 = (x2 >> 0) + 0.5;
|
|
|
|
|
y2 = (y2 >> 0) + 0.5;
|
|
|
|
|
x3 = (x3 >> 0) + 0.5;
|
|
|
|
|
y3 = (y3 >> 0) + 0.5;
|
|
|
|
|
x4 = (x4 >> 0) + 0.5;
|
|
|
|
|
y4 = (y4 >> 0) + 0.5;
|
|
|
|
|
}
|
|
|
|
|
overlay.CheckPoint(x1, y1);
|
|
|
|
|
overlay.CheckPoint(x2, y2);
|
|
|
|
|
overlay.CheckPoint(x3, y3);
|
|
|
|
|
overlay.CheckPoint(x4, y4);
|
|
|
|
|
var ctx = overlay.m_oContext;
|
|
|
|
|
ctx.moveTo(x1, y1);
|
|
|
|
|
ctx.lineTo(x2, y2);
|
|
|
|
|
ctx.lineTo(x3, y3);
|
|
|
|
|
ctx.lineTo(x4, y4);
|
|
|
|
|
ctx.closePath();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.SelectShow = function () {
|
|
|
|
|
this.m_oWordControl.OnUpdateOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.Set_RulerState_Table = function (markup, transform) {
|
|
|
|
|
var hor_ruler = this.m_oWordControl.m_oHorRuler;
|
|
|
|
|
var ver_ruler = this.m_oWordControl.m_oVerRuler;
|
|
|
|
|
hor_ruler.CurrentObjectType = RULER_OBJECT_TYPE_TABLE;
|
|
|
|
|
hor_ruler.m_oTableMarkup = markup.CreateDublicate();
|
|
|
|
|
hor_ruler.CalculateMargins();
|
|
|
|
|
ver_ruler.CurrentObjectType = RULER_OBJECT_TYPE_TABLE;
|
|
|
|
|
ver_ruler.m_oTableMarkup = markup.CreateDublicate();
|
|
|
|
|
if (transform) {
|
|
|
|
|
hor_ruler.m_oTableMarkup.TransformX = transform.tx;
|
|
|
|
|
hor_ruler.m_oTableMarkup.TransformY = transform.ty;
|
|
|
|
|
ver_ruler.m_oTableMarkup.TransformX = transform.tx;
|
|
|
|
|
ver_ruler.m_oTableMarkup.TransformY = transform.ty;
|
|
|
|
|
hor_ruler.m_oTableMarkup.CorrectFrom();
|
|
|
|
|
ver_ruler.m_oTableMarkup.CorrectFrom();
|
|
|
|
|
}
|
|
|
|
|
hor_ruler.CalculateMargins();
|
|
|
|
|
if (0 <= this.SlideCurrent && this.SlideCurrent < this.SlidesCount) {
|
|
|
|
|
this.m_oWordControl.CreateBackgroundHorRuler();
|
|
|
|
|
this.m_oWordControl.CreateBackgroundVerRuler();
|
|
|
|
|
}
|
|
|
|
|
if (!this.m_oWordControl.IsEnabledRulerMarkers) {
|
|
|
|
|
this.m_oWordControl.EnableRulerMarkers();
|
|
|
|
|
} else {
|
|
|
|
|
this.m_oWordControl.UpdateHorRuler();
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.UpdateVerRuler();
|
|
|
|
|
};
|
|
|
|
|
this.Set_RulerState_Paragraph = function (obj, margins) {
|
|
|
|
|
if (!this.m_oWordControl.m_bIsRuler) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var hor_ruler = this.m_oWordControl.m_oHorRuler;
|
|
|
|
|
var ver_ruler = this.m_oWordControl.m_oVerRuler;
|
|
|
|
|
hor_ruler.CurrentObjectType = RULER_OBJECT_TYPE_PARAGRAPH;
|
|
|
|
|
hor_ruler.m_oTableMarkup = null;
|
|
|
|
|
ver_ruler.CurrentObjectType = RULER_OBJECT_TYPE_PARAGRAPH;
|
|
|
|
|
ver_ruler.m_oTableMarkup = null;
|
|
|
|
|
if (-1 != this.SlideCurrent) {
|
|
|
|
|
this.m_oWordControl.CreateBackgroundHorRuler(margins);
|
|
|
|
|
this.m_oWordControl.CreateBackgroundVerRuler(margins);
|
|
|
|
|
}
|
|
|
|
|
if (!this.m_oWordControl.IsEnabledRulerMarkers && margins !== undefined) {
|
|
|
|
|
this.m_oWordControl.EnableRulerMarkers();
|
|
|
|
|
} else {
|
|
|
|
|
if (this.m_oWordControl.IsEnabledRulerMarkers && margins === undefined) {
|
|
|
|
|
this.m_oWordControl.DisableRulerMarkers();
|
|
|
|
|
} else {
|
|
|
|
|
this.m_oWordControl.UpdateHorRuler();
|
|
|
|
|
this.m_oWordControl.UpdateVerRuler();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.Set_RulerState_HdrFtr = function (bHeader, Y0, Y1) {
|
|
|
|
|
var hor_ruler = this.m_oWordControl.m_oHorRuler;
|
|
|
|
|
var ver_ruler = this.m_oWordControl.m_oVerRuler;
|
|
|
|
|
hor_ruler.CurrentObjectType = RULER_OBJECT_TYPE_PARAGRAPH;
|
|
|
|
|
hor_ruler.m_oTableMarkup = null;
|
|
|
|
|
ver_ruler.CurrentObjectType = (true === bHeader) ? RULER_OBJECT_TYPE_HEADER : RULER_OBJECT_TYPE_FOOTER;
|
|
|
|
|
ver_ruler.header_top = Y0;
|
|
|
|
|
ver_ruler.header_bottom = Y1;
|
|
|
|
|
ver_ruler.m_oTableMarkup = null;
|
|
|
|
|
if (-1 != this.m_lCurrentPage) {
|
|
|
|
|
this.m_oWordControl.CreateBackgroundHorRuler();
|
|
|
|
|
this.m_oWordControl.CreateBackgroundVerRuler();
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.UpdateHorRuler();
|
|
|
|
|
this.m_oWordControl.UpdateVerRuler();
|
|
|
|
|
};
|
|
|
|
|
this.Update_ParaTab = function (Default_Tab, ParaTabs) {
|
|
|
|
|
var hor_ruler = this.m_oWordControl.m_oHorRuler;
|
|
|
|
|
var __tabs = ParaTabs.Tabs;
|
|
|
|
|
if (undefined === __tabs) {
|
|
|
|
|
__tabs = ParaTabs;
|
|
|
|
|
}
|
|
|
|
|
var _len = __tabs.length;
|
|
|
|
|
if ((Default_Tab == hor_ruler.m_dDefaultTab) && (hor_ruler.m_arrTabs.length == _len) && (_len == 0)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
hor_ruler.m_dDefaultTab = Default_Tab;
|
|
|
|
|
hor_ruler.m_arrTabs = [];
|
|
|
|
|
var _ar = hor_ruler.m_arrTabs;
|
|
|
|
|
for (var i = 0; i < _len; i++) {
|
|
|
|
|
if (__tabs[i].Value == tab_Left) {
|
|
|
|
|
_ar[i] = new CTab(__tabs[i].Pos, g_tabtype_left);
|
|
|
|
|
} else {
|
|
|
|
|
if (__tabs[i].Value == tab_Center) {
|
|
|
|
|
_ar[i] = new CTab(__tabs[i].Pos, g_tabtype_center);
|
|
|
|
|
} else {
|
|
|
|
|
if (__tabs[i].Value == tab_Right) {
|
|
|
|
|
_ar[i] = new CTab(__tabs[i].Pos, g_tabtype_right);
|
|
|
|
|
} else {
|
|
|
|
|
_ar[i] = new CTab(__tabs[i].Pos, g_tabtype_left);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
hor_ruler.CorrectTabs();
|
|
|
|
|
this.m_oWordControl.UpdateHorRuler();
|
|
|
|
|
};
|
|
|
|
|
this.UpdateTableRuler = function (isCols, index, position) {
|
|
|
|
|
var dKoef_mm_to_pix = g_dKoef_mm_to_pix * this.m_oWordControl.m_nZoomValue / 100;
|
|
|
|
|
if (false === isCols) {
|
|
|
|
|
var markup = this.m_oWordControl.m_oVerRuler.m_oTableMarkup;
|
|
|
|
|
if (markup == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
position += markup.TransformY;
|
|
|
|
|
if (0 == index) {
|
|
|
|
|
var delta = position - markup.Rows[0].Y;
|
|
|
|
|
markup.Rows[0].Y = position;
|
|
|
|
|
markup.Rows[0].H -= delta;
|
|
|
|
|
} else {
|
|
|
|
|
var delta = (markup.Rows[index - 1].Y + markup.Rows[index - 1].H) - position;
|
|
|
|
|
markup.Rows[index - 1].H -= delta;
|
|
|
|
|
if (index != markup.Rows.length) {
|
|
|
|
|
markup.Rows[index].Y -= delta;
|
|
|
|
|
markup.Rows[index].H += delta;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ("none" == this.m_oWordControl.m_oOverlay.HtmlElement.style.display) {
|
|
|
|
|
this.m_oWordControl.ShowOverlay();
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.UpdateVerRulerBack();
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.HorLine(this.SlideCurrectRect.top + position * dKoef_mm_to_pix);
|
|
|
|
|
} else {
|
|
|
|
|
var markup = this.m_oWordControl.m_oHorRuler.m_oTableMarkup;
|
|
|
|
|
if (markup == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
position += markup.TransformX;
|
|
|
|
|
if (0 == index) {
|
|
|
|
|
markup.X = position;
|
|
|
|
|
} else {
|
|
|
|
|
var _start = markup.X;
|
|
|
|
|
for (var i = 0; i < (index - 1); i++) {
|
|
|
|
|
_start += markup.Cols[i];
|
|
|
|
|
}
|
|
|
|
|
var _old = markup.Cols[index - 1];
|
|
|
|
|
markup.Cols[index - 1] = position - _start;
|
|
|
|
|
if (index != markup.Cols.length) {
|
|
|
|
|
markup.Cols[index] += (_old - markup.Cols[index - 1]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ("none" == this.m_oWordControl.m_oOverlay.HtmlElement.style.display) {
|
|
|
|
|
this.m_oWordControl.ShowOverlay();
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.UpdateHorRulerBack();
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.VertLine(this.SlideCurrectRect.left + position * dKoef_mm_to_pix);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.GetDotsPerMM = function (value) {
|
|
|
|
|
return value * this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100;
|
|
|
|
|
};
|
|
|
|
|
this.GetMMPerDot = function (value) {
|
|
|
|
|
return value / this.GetDotsPerMM(1);
|
|
|
|
|
};
|
|
|
|
|
this.GetVisibleMMHeight = function () {
|
|
|
|
|
var pixHeigth = this.m_oWordControl.m_oEditor.HtmlElement.height;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
pixHeigth >>= 1;
|
|
|
|
|
}
|
|
|
|
|
var pixBetweenPages = 20 * (this.m_lDrawingEnd - this.m_lDrawingFirst);
|
|
|
|
|
return (pixHeigth - pixBetweenPages) * g_dKoef_pix_to_mm * 100 / this.m_oWordControl.m_nZoomValue;
|
|
|
|
|
};
|
|
|
|
|
this.CheckFontCache = function () {
|
|
|
|
|
var map_used = this.m_oWordControl.m_oLogicDocument.Document_CreateFontMap();
|
|
|
|
|
var _measure_map = g_oTextMeasurer.m_oManager.m_oFontsCache.Fonts;
|
|
|
|
|
var _drawing_map = g_fontManager.m_oFontsCache.Fonts;
|
|
|
|
|
var map_keys = {};
|
|
|
|
|
var api = this.m_oWordControl.m_oApi;
|
|
|
|
|
for (var i in map_used) {
|
|
|
|
|
var key = GenerateMapId(api, map_used[i].Name, map_used[i].Style, map_used[i].Size);
|
|
|
|
|
map_keys[key] = true;
|
|
|
|
|
}
|
|
|
|
|
for (var i in _measure_map) {
|
|
|
|
|
if (map_keys[i] == undefined) {
|
|
|
|
|
delete _measure_map[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (var i in _drawing_map) {
|
|
|
|
|
if (map_keys[i] == undefined) {
|
|
|
|
|
if (null != _drawing_map[i]) {
|
|
|
|
|
_drawing_map[i].Destroy();
|
|
|
|
|
}
|
|
|
|
|
delete _drawing_map[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.CheckFontNeeds = function () {
|
|
|
|
|
var map_keys = this.m_oWordControl.m_oLogicDocument.Document_Get_AllFontNames();
|
|
|
|
|
var dstfonts = [];
|
|
|
|
|
for (var i in map_keys) {
|
|
|
|
|
dstfonts[dstfonts.length] = new CFont(i, 0, "", 0, null);
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.Fonts = dstfonts;
|
|
|
|
|
return;
|
|
|
|
|
};
|
|
|
|
|
this.CorrectRulerPosition = function (pos) {
|
|
|
|
|
if (global_keyboardEvent.AltKey) {
|
|
|
|
|
return pos;
|
|
|
|
|
}
|
|
|
|
|
return ((pos / 2.5 + 0.5) >> 0) * 2.5;
|
|
|
|
|
};
|
|
|
|
|
this.DrawTrack = function (type, matrix, left, top, width, height, isLine, canRotate, isNoMove) {
|
|
|
|
|
this.AutoShapesTrack.DrawTrack(type, matrix, left, top, width, height, isLine, canRotate, isNoMove);
|
|
|
|
|
};
|
|
|
|
|
this.LockSlide = function (slideNum) {
|
|
|
|
|
var _th_manager = this.m_oWordControl.Thumbnails;
|
|
|
|
|
if (slideNum >= 0 && slideNum < _th_manager.m_arrPages.length) {
|
|
|
|
|
_th_manager.m_arrPages[slideNum].IsLocked = true;
|
|
|
|
|
}
|
|
|
|
|
_th_manager.OnUpdateOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.UnLockSlide = function (slideNum) {
|
|
|
|
|
var _th_manager = this.m_oWordControl.Thumbnails;
|
|
|
|
|
if (slideNum >= 0 && slideNum < _th_manager.m_arrPages.length) {
|
|
|
|
|
_th_manager.m_arrPages[slideNum].IsLocked = false;
|
|
|
|
|
}
|
|
|
|
|
_th_manager.OnUpdateOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.DrawTrackSelectShapes = function (x, y, w, h) {
|
|
|
|
|
this.AutoShapesTrack.DrawTrackSelectShapes(x, y, w, h);
|
|
|
|
|
};
|
|
|
|
|
this.DrawAdjustment = function (matrix, x, y) {
|
|
|
|
|
this.AutoShapesTrack.DrawAdjustment(matrix, x, y);
|
|
|
|
|
};
|
|
|
|
|
this.UpdateTargetTransform = function (matrix) {
|
|
|
|
|
this.TextMatrix = matrix;
|
|
|
|
|
};
|
|
|
|
|
this.UpdateThumbnailsAttack = function () {
|
|
|
|
|
this.m_oWordControl.Thumbnails.RecalculateAll();
|
|
|
|
|
};
|
|
|
|
|
this.CheckGuiControlColors = function (bIsAttack) {
|
|
|
|
|
var _slide = null;
|
|
|
|
|
var _layout = null;
|
|
|
|
|
var _master = null;
|
|
|
|
|
if (-1 != this.SlideCurrent) {
|
|
|
|
|
_slide = this.m_oWordControl.m_oLogicDocument.Slides[this.SlideCurrent];
|
|
|
|
|
_layout = _slide.Layout;
|
|
|
|
|
_master = _layout.Master;
|
|
|
|
|
} else {
|
|
|
|
|
if ((0 < this.m_oWordControl.m_oLogicDocument.slideMasters.length) && (0 < this.m_oWordControl.m_oLogicDocument.slideMasters[0].sldLayoutLst.length)) {
|
|
|
|
|
_layout = this.m_oWordControl.m_oLogicDocument.slideMasters[0].sldLayoutLst[0];
|
|
|
|
|
_master = this.m_oWordControl.m_oLogicDocument.slideMasters[0];
|
|
|
|
|
} else {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var arr_colors = new Array(10);
|
|
|
|
|
var _theme = _master.Theme;
|
|
|
|
|
var rgba = {
|
|
|
|
|
R: 0,
|
|
|
|
|
G: 0,
|
|
|
|
|
B: 0,
|
|
|
|
|
A: 255
|
|
|
|
|
};
|
|
|
|
|
var array_colors_types = [6, 15, 7, 16, 0, 1, 2, 3, 4, 5];
|
|
|
|
|
var _count = array_colors_types.length;
|
|
|
|
|
var color = new CUniColor();
|
|
|
|
|
color.color = new CSchemeColor();
|
|
|
|
|
for (var i = 0; i < _count; ++i) {
|
|
|
|
|
color.color.id = array_colors_types[i];
|
|
|
|
|
color.Calculate(_theme, _slide, _layout, _master, rgba);
|
|
|
|
|
var _rgba = color.RGBA;
|
|
|
|
|
arr_colors[i] = new CColor(_rgba.R, _rgba.G, _rgba.B);
|
|
|
|
|
}
|
|
|
|
|
var bIsSend = false;
|
|
|
|
|
if (this.GuiControlColorsMap != null) {
|
|
|
|
|
for (var i = 0; i < _count; ++i) {
|
|
|
|
|
var _color1 = this.GuiControlColorsMap[i];
|
|
|
|
|
var _color2 = arr_colors[i];
|
|
|
|
|
if ((_color1.r != _color2.r) || (_color1.g != _color2.g) || (_color1.b != _color2.b)) {
|
|
|
|
|
bIsSend = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.GuiControlColorsMap = new Array(_count);
|
|
|
|
|
bIsSend = true;
|
|
|
|
|
}
|
|
|
|
|
if (bIsSend || (bIsAttack === true)) {
|
|
|
|
|
for (var i = 0; i < _count; ++i) {
|
|
|
|
|
this.GuiControlColorsMap[i] = arr_colors[i];
|
|
|
|
|
}
|
|
|
|
|
this.SendControlColors(bIsAttack);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.SendControlColors = function (bIsAttack) {
|
|
|
|
|
var standart_colors = null;
|
|
|
|
|
if (!this.IsSendStandartColors || (bIsAttack === true)) {
|
|
|
|
|
var _c_s = g_oStandartColors.length;
|
|
|
|
|
standart_colors = new Array(_c_s);
|
|
|
|
|
for (var i = 0; i < _c_s; ++i) {
|
|
|
|
|
standart_colors[i] = new CColor(g_oStandartColors[i]["R"], g_oStandartColors[i]["G"], g_oStandartColors[i]["B"]);
|
|
|
|
|
}
|
|
|
|
|
this.IsSendStandartColors = true;
|
|
|
|
|
}
|
|
|
|
|
var _count = this.GuiControlColorsMap.length;
|
|
|
|
|
var _ret_array = new Array(_count * 6);
|
|
|
|
|
var _cur_index = 0;
|
|
|
|
|
for (var i = 0; i < _count; ++i) {
|
|
|
|
|
var _color_src = this.GuiControlColorsMap[i];
|
|
|
|
|
_ret_array[_cur_index] = new CColor(_color_src.r, _color_src.g, _color_src.b);
|
|
|
|
|
_cur_index++;
|
|
|
|
|
var _count_mods = 5;
|
|
|
|
|
for (var j = 0; j < _count_mods; ++j) {
|
|
|
|
|
var dst_mods = new CColorModifiers();
|
|
|
|
|
dst_mods.Mods = _create_mods(GetDefaultMods(_color_src.r, _color_src.g, _color_src.b, j + 1, 0));
|
|
|
|
|
var _rgba = {
|
|
|
|
|
R: _color_src.r,
|
|
|
|
|
G: _color_src.g,
|
|
|
|
|
B: _color_src.b,
|
|
|
|
|
A: 255
|
|
|
|
|
};
|
|
|
|
|
dst_mods.Apply(_rgba);
|
|
|
|
|
_ret_array[_cur_index] = new CColor(_rgba.R, _rgba.G, _rgba.B);
|
|
|
|
|
_cur_index++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oApi.sync_SendThemeColors(_ret_array, standart_colors);
|
|
|
|
|
};
|
|
|
|
|
this.SendThemeColorScheme = function () {
|
|
|
|
|
var infos = [];
|
|
|
|
|
var _index = 0;
|
|
|
|
|
var _c = null;
|
|
|
|
|
var _count_defaults = g_oUserColorScheme.length;
|
|
|
|
|
for (var i = 0; i < _count_defaults; ++i) {
|
|
|
|
|
var _obj = g_oUserColorScheme[i];
|
|
|
|
|
infos[_index] = new CAscColorScheme();
|
|
|
|
|
infos[_index].Name = _obj["name"];
|
|
|
|
|
_c = _obj["dk1"];
|
|
|
|
|
infos[_index].Colors[0] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["lt1"];
|
|
|
|
|
infos[_index].Colors[1] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["dk2"];
|
|
|
|
|
infos[_index].Colors[2] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["lt2"];
|
|
|
|
|
infos[_index].Colors[3] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["accent1"];
|
|
|
|
|
infos[_index].Colors[4] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["accent2"];
|
|
|
|
|
infos[_index].Colors[5] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["accent3"];
|
|
|
|
|
infos[_index].Colors[6] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["accent4"];
|
|
|
|
|
infos[_index].Colors[7] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["accent5"];
|
|
|
|
|
infos[_index].Colors[8] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["accent6"];
|
|
|
|
|
infos[_index].Colors[9] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["hlink"];
|
|
|
|
|
infos[_index].Colors[10] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
_c = _obj["folHlink"];
|
|
|
|
|
infos[_index].Colors[11] = new CColor(_c["R"], _c["G"], _c["B"]);
|
|
|
|
|
++_index;
|
|
|
|
|
}
|
|
|
|
|
var _theme = this.m_oWordControl.MasterLayouts.Theme;
|
|
|
|
|
var _extra = _theme.extraClrSchemeLst;
|
|
|
|
|
var _count = _extra.length;
|
|
|
|
|
var _rgba = {
|
|
|
|
|
R: 0,
|
|
|
|
|
G: 0,
|
|
|
|
|
B: 0,
|
|
|
|
|
A: 255
|
|
|
|
|
};
|
|
|
|
|
for (var i = 0; i < _count; ++i) {
|
|
|
|
|
var _scheme = _extra[i].clrScheme;
|
|
|
|
|
infos[_index] = new CAscColorScheme();
|
|
|
|
|
infos[_index].Name = _scheme.name;
|
|
|
|
|
_scheme.colors[8].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[8].RGBA;
|
|
|
|
|
infos[_index].Colors[0] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[12].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[12].RGBA;
|
|
|
|
|
infos[_index].Colors[1] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[9].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[9].RGBA;
|
|
|
|
|
infos[_index].Colors[2] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[13].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[13].RGBA;
|
|
|
|
|
infos[_index].Colors[3] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[0].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[0].RGBA;
|
|
|
|
|
infos[_index].Colors[4] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[1].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[1].RGBA;
|
|
|
|
|
infos[_index].Colors[5] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[2].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[2].RGBA;
|
|
|
|
|
infos[_index].Colors[6] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[3].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[3].RGBA;
|
|
|
|
|
infos[_index].Colors[7] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[4].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[4].RGBA;
|
|
|
|
|
infos[_index].Colors[8] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[5].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[5].RGBA;
|
|
|
|
|
infos[_index].Colors[9] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[11].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[11].RGBA;
|
|
|
|
|
infos[_index].Colors[10] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_scheme.colors[10].Calculate(_theme, null, null, null, _rgba);
|
|
|
|
|
_c = _scheme.colors[10].RGBA;
|
|
|
|
|
infos[_index].Colors[11] = new CColor(_c.R, _c.G, _c.B);
|
|
|
|
|
_index++;
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oApi.sync_SendThemeColorSchemes(infos);
|
|
|
|
|
};
|
|
|
|
|
this.DrawImageTextureFillShape = function (url) {
|
|
|
|
|
if (this.GuiCanvasFillTexture == null) {
|
|
|
|
|
this.InitGuiCanvasShape(this.GuiCanvasFillTextureParentId);
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiCanvasFillTexture == null || this.GuiCanvasFillTextureCtx == null || url == this.LastDrawingUrl) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.LastDrawingUrl = url;
|
|
|
|
|
var _width = this.GuiCanvasFillTexture.width;
|
|
|
|
|
var _height = this.GuiCanvasFillTexture.height;
|
|
|
|
|
this.GuiCanvasFillTextureCtx.clearRect(0, 0, _width, _height);
|
|
|
|
|
if (null == this.LastDrawingUrl) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var _img = this.m_oWordControl.m_oApi.ImageLoader.map_image_index[_getFullImageSrc(this.LastDrawingUrl)];
|
|
|
|
|
if (_img != undefined && _img.Image != null && _img.Status != ImageLoadStatus.Loading) {
|
|
|
|
|
var _x = 0;
|
|
|
|
|
var _y = 0;
|
|
|
|
|
var _w = Math.max(_img.Image.width, 1);
|
|
|
|
|
var _h = Math.max(_img.Image.height, 1);
|
|
|
|
|
var dAspect1 = _width / _height;
|
|
|
|
|
var dAspect2 = _w / _h;
|
|
|
|
|
_w = _width;
|
|
|
|
|
_h = _height;
|
|
|
|
|
if (dAspect1 >= dAspect2) {
|
|
|
|
|
_w = dAspect2 * _height;
|
|
|
|
|
_x = (_width - _w) / 2;
|
|
|
|
|
} else {
|
|
|
|
|
_h = _w / dAspect2;
|
|
|
|
|
_y = (_height - _h) / 2;
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTextureCtx.drawImage(_img.Image, _x, _y, _w, _h);
|
|
|
|
|
} else {
|
|
|
|
|
this.GuiCanvasFillTextureCtx.lineWidth = 1;
|
|
|
|
|
this.GuiCanvasFillTextureCtx.beginPath();
|
|
|
|
|
this.GuiCanvasFillTextureCtx.moveTo(0, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.lineTo(_width, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.moveTo(_width, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.lineTo(0, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.strokeStyle = "#FF0000";
|
|
|
|
|
this.GuiCanvasFillTextureCtx.stroke();
|
|
|
|
|
this.GuiCanvasFillTextureCtx.beginPath();
|
|
|
|
|
this.GuiCanvasFillTextureCtx.moveTo(0, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.lineTo(_width, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.lineTo(_width, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.lineTo(0, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtx.closePath();
|
|
|
|
|
this.GuiCanvasFillTextureCtx.strokeStyle = "#000000";
|
|
|
|
|
this.GuiCanvasFillTextureCtx.stroke();
|
|
|
|
|
this.GuiCanvasFillTextureCtx.beginPath();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.DrawImageTextureFillSlide = function (url) {
|
|
|
|
|
if (this.GuiCanvasFillTextureSlide == null) {
|
|
|
|
|
this.InitGuiCanvasSlide(this.GuiCanvasFillTextureParentIdSlide);
|
|
|
|
|
}
|
|
|
|
|
if (this.GuiCanvasFillTextureSlide == null || this.GuiCanvasFillTextureCtxSlide == null || url == this.LastDrawingUrlSlide) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.LastDrawingUrlSlide = url;
|
|
|
|
|
var _width = this.GuiCanvasFillTextureSlide.width;
|
|
|
|
|
var _height = this.GuiCanvasFillTextureSlide.height;
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.clearRect(0, 0, _width, _height);
|
|
|
|
|
if (null == this.LastDrawingUrlSlide) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var _img = this.m_oWordControl.m_oApi.ImageLoader.map_image_index[_getFullImageSrc(this.LastDrawingUrlSlide)];
|
|
|
|
|
if (_img != undefined && _img.Image != null && _img.Status != ImageLoadStatus.Loading) {
|
|
|
|
|
var _x = 0;
|
|
|
|
|
var _y = 0;
|
|
|
|
|
var _w = Math.max(_img.Image.width, 1);
|
|
|
|
|
var _h = Math.max(_img.Image.height, 1);
|
|
|
|
|
var dAspect1 = _width / _height;
|
|
|
|
|
var dAspect2 = _w / _h;
|
|
|
|
|
_w = _width;
|
|
|
|
|
_h = _height;
|
|
|
|
|
if (dAspect1 >= dAspect2) {
|
|
|
|
|
_w = dAspect2 * _height;
|
|
|
|
|
_x = (_width - _w) / 2;
|
|
|
|
|
} else {
|
|
|
|
|
_h = _w / dAspect2;
|
|
|
|
|
_y = (_height - _h) / 2;
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.drawImage(_img.Image, _x, _y, _w, _h);
|
|
|
|
|
} else {
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.lineWidth = 1;
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.beginPath();
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.moveTo(0, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.lineTo(_width, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.moveTo(_width, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.lineTo(0, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.strokeStyle = "#FF0000";
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.stroke();
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.beginPath();
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.moveTo(0, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.lineTo(_width, 0);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.lineTo(_width, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.lineTo(0, _height);
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.closePath();
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.strokeStyle = "#000000";
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.stroke();
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide.beginPath();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.InitGuiCanvasShape = function (div_id) {
|
|
|
|
|
if (null != this.GuiCanvasFillTexture) {
|
|
|
|
|
var _div_elem = document.getElementById(this.GuiCanvasFillTextureParentId);
|
|
|
|
|
if (!_div_elem) {
|
|
|
|
|
_div_elem.removeChild(this.GuiCanvasFillTexture);
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTexture = null;
|
|
|
|
|
this.GuiCanvasFillTextureCtx = null;
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTextureParentId = div_id;
|
|
|
|
|
var _div_elem = document.getElementById(this.GuiCanvasFillTextureParentId);
|
|
|
|
|
if (!_div_elem) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTexture = document.createElement("canvas");
|
|
|
|
|
this.GuiCanvasFillTexture.width = parseInt(_div_elem.style.width);
|
|
|
|
|
this.GuiCanvasFillTexture.height = parseInt(_div_elem.style.height);
|
|
|
|
|
this.LastDrawingUrl = "";
|
|
|
|
|
this.GuiCanvasFillTextureCtx = this.GuiCanvasFillTexture.getContext("2d");
|
|
|
|
|
_div_elem.appendChild(this.GuiCanvasFillTexture);
|
|
|
|
|
};
|
|
|
|
|
this.InitGuiCanvasSlide = function (div_id) {
|
|
|
|
|
if (null != this.GuiCanvasFillTextureSlide) {
|
|
|
|
|
var _div_elem = document.getElementById(this.GuiCanvasFillTextureParentIdSlide);
|
|
|
|
|
if (!_div_elem) {
|
|
|
|
|
_div_elem.removeChild(this.GuiCanvasFillTextureSlide);
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTextureSlide = null;
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide = null;
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTextureParentIdSlide = div_id;
|
|
|
|
|
var _div_elem = document.getElementById(this.GuiCanvasFillTextureParentIdSlide);
|
|
|
|
|
if (!_div_elem) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.GuiCanvasFillTextureSlide = document.createElement("canvas");
|
|
|
|
|
this.GuiCanvasFillTextureSlide.width = parseInt(_div_elem.style.width);
|
|
|
|
|
this.GuiCanvasFillTextureSlide.height = parseInt(_div_elem.style.height);
|
|
|
|
|
this.LastDrawingUrlSlide = "";
|
|
|
|
|
this.GuiCanvasFillTextureCtxSlide = this.GuiCanvasFillTextureSlide.getContext("2d");
|
|
|
|
|
_div_elem.appendChild(this.GuiCanvasFillTextureSlide);
|
|
|
|
|
};
|
|
|
|
|
this.CheckTableStyles = function () {
|
|
|
|
|
if (!this.m_oWordControl.m_oApi.asc_checkNeedCallback("asc_onInitTableTemplates")) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var logicDoc = this.m_oWordControl.m_oLogicDocument;
|
|
|
|
|
var _dst_styles = [];
|
|
|
|
|
var _pageW = 297;
|
|
|
|
|
var _pageH = 210;
|
|
|
|
|
var _canvas = document.createElement("canvas");
|
|
|
|
|
_canvas.width = TABLE_STYLE_WIDTH_PIX;
|
|
|
|
|
_canvas.height = TABLE_STYLE_HEIGHT_PIX;
|
|
|
|
|
var ctx = _canvas.getContext("2d");
|
|
|
|
|
for (var i = 0; i < logicDoc.TablesForInterface.length; i++) {
|
|
|
|
|
ctx.fillStyle = "#FFFFFF";
|
|
|
|
|
ctx.fillRect(0, 0, _canvas.width, _canvas.height);
|
|
|
|
|
var graphics = new CGraphics();
|
|
|
|
|
graphics.init(ctx, _canvas.width, _canvas.height, _pageW, _pageH);
|
|
|
|
|
graphics.m_oFontManager = g_fontManager;
|
|
|
|
|
graphics.transform(1, 0, 0, 1, 0, 0);
|
|
|
|
|
logicDoc.TablesForInterface[i].graphicObject.Draw(0, graphics);
|
|
|
|
|
var _styleD = new CAscTableStyle();
|
|
|
|
|
_styleD.Type = 0;
|
|
|
|
|
_styleD.Image = _canvas.toDataURL("image/png");
|
|
|
|
|
_styleD.Id = logicDoc.TablesForInterface[i].graphicObject.TableStyle;
|
|
|
|
|
_dst_styles.push(_styleD);
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oApi.sync_InitEditorTableStyles(_dst_styles);
|
|
|
|
|
};
|
|
|
|
|
this.OnSelectEnd = function () {};
|
|
|
|
|
this.GetCommentWidth = function (type) {
|
|
|
|
|
var _index = 0;
|
|
|
|
|
if ((type & 2) == 2) {
|
|
|
|
|
_index = 2;
|
|
|
|
|
}
|
|
|
|
|
if ((type & 1) == 1) {
|
|
|
|
|
_index += 1;
|
|
|
|
|
}
|
|
|
|
|
return g_comment_image_offsets[_index][2] * g_dKoef_pix_to_mm * 100 / this.m_oWordControl.m_nZoomValue;
|
|
|
|
|
};
|
|
|
|
|
this.GetCommentHeight = function (type) {
|
|
|
|
|
var _index = 0;
|
|
|
|
|
if ((type & 2) == 2) {
|
|
|
|
|
_index = 2;
|
|
|
|
|
}
|
|
|
|
|
if ((type & 1) == 1) {
|
|
|
|
|
_index += 1;
|
|
|
|
|
}
|
|
|
|
|
return g_comment_image_offsets[_index][3] * g_dKoef_pix_to_mm * 100 / this.m_oWordControl.m_nZoomValue;
|
|
|
|
|
};
|
|
|
|
|
this.DrawVerAnchor = function (pageNum, xPos, bIsFromDrawings) {
|
|
|
|
|
if (undefined === bIsFromDrawings) {
|
|
|
|
|
if (this.m_oWordControl.m_oApi.ShowSnapLines) {
|
|
|
|
|
this.HorVerAnchors.push({
|
|
|
|
|
Type: 0,
|
|
|
|
|
Pos: xPos
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var _pos = this.ConvertCoordsToCursor(xPos, 0);
|
|
|
|
|
if (_pos.Error === false) {
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.DashLineColor = "#FF0000";
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.VertLine2(_pos.X);
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.DashLineColor = "#000000";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.DrawHorAnchor = function (pageNum, yPos, bIsFromDrawings) {
|
|
|
|
|
if (undefined === bIsFromDrawings) {
|
|
|
|
|
if (this.m_oWordControl.m_oApi.ShowSnapLines) {
|
|
|
|
|
this.HorVerAnchors.push({
|
|
|
|
|
Type: 1,
|
|
|
|
|
Pos: yPos
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var _pos = this.ConvertCoordsToCursor(0, yPos);
|
|
|
|
|
if (_pos.Error === false) {
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.DashLineColor = "#FF0000";
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.HorLine2(_pos.Y);
|
|
|
|
|
this.m_oWordControl.m_oOverlayApi.DashLineColor = "#000000";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.DrawHorVerAnchor = function () {
|
|
|
|
|
for (var i = 0; i < this.HorVerAnchors.length; i++) {
|
|
|
|
|
var _anchor = this.HorVerAnchors[i];
|
|
|
|
|
if (_anchor.Type == 0) {
|
|
|
|
|
this.DrawVerAnchor(0, _anchor.Pos, true);
|
|
|
|
|
} else {
|
|
|
|
|
this.DrawHorAnchor(0, _anchor.Pos, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.HorVerAnchors.splice(0, this.HorVerAnchors.length);
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
function CThPage() {
|
|
|
|
|
this.PageIndex = -1;
|
|
|
|
|
this.left = 0;
|
|
|
|
|
this.top = 0;
|
|
|
|
|
this.right = 0;
|
|
|
|
|
this.bottom = 0;
|
|
|
|
|
this.IsRecalc = false;
|
|
|
|
|
this.cachedImage = null;
|
|
|
|
|
this.IsSelected = false;
|
|
|
|
|
this.IsFocused = false;
|
|
|
|
|
this.IsLocked = false;
|
|
|
|
|
this.Draw = function (context, xDst, yDst, wDst, hDst, contextW, contextH) {
|
|
|
|
|
if (wDst <= 0 || hDst <= 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (null != this.cachedImage) {
|
|
|
|
|
context.drawImage(this.cachedImage.image, xDst, yDst, wDst, hDst);
|
|
|
|
|
} else {
|
|
|
|
|
context.fillStyle = "#FFFFFF";
|
|
|
|
|
context.fillRect(xDst, yDst, wDst, hDst);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
function CThumbnailsManager() {
|
|
|
|
|
this.m_oFontManager = new CFontManager();
|
|
|
|
|
this.m_bIsScrollVisible = true;
|
|
|
|
|
this.DigitWidths = [];
|
|
|
|
|
this.backgroundColor = "#B0B0B0";
|
|
|
|
|
this.overColor = "#D3D3D3";
|
|
|
|
|
this.selectColor = "#FFD86B";
|
|
|
|
|
this.selectoverColor = "#FFE065";
|
|
|
|
|
this.SlideWidth = 297;
|
|
|
|
|
this.SlideHeight = 210;
|
|
|
|
|
this.SlidesCount = 0;
|
|
|
|
|
this.m_dScrollY = 0;
|
|
|
|
|
this.m_dScrollY_max = 0;
|
|
|
|
|
this.m_bIsVisible = false;
|
|
|
|
|
this.m_nCurrentPage = -1;
|
|
|
|
|
this.m_bIsUpdate = false;
|
|
|
|
|
this.m_arrPages = [];
|
|
|
|
|
this.m_lDrawingFirst = -1;
|
|
|
|
|
this.m_lDrawingEnd = -1;
|
|
|
|
|
this.const_offset_x = 0;
|
|
|
|
|
this.const_offset_y = 0;
|
|
|
|
|
this.const_offset_r = 4;
|
|
|
|
|
this.const_offset_b = 0;
|
|
|
|
|
this.const_border_w = 4;
|
|
|
|
|
this.bIsEmptyDrawed = false;
|
|
|
|
|
this.m_oCacheManager = new CCacheManager();
|
|
|
|
|
this.FocusObjType = FOCUS_OBJECT_MAIN;
|
|
|
|
|
this.LockMainObjType = false;
|
|
|
|
|
this.SelectPageEnabled = true;
|
|
|
|
|
this.IsMouseDownTrack = false;
|
|
|
|
|
this.IsMouseDownTrackSimple = true;
|
|
|
|
|
this.MouseDownTrackPage = -1;
|
|
|
|
|
this.MouseDownTrackX = -1;
|
|
|
|
|
this.MouseDownTrackY = -1;
|
|
|
|
|
this.MouseDownTrackPosition = 0;
|
|
|
|
|
this.MouseTrackCommonImage = null;
|
|
|
|
|
this.MouseThumbnailsAnimateScrollTopTimer = -1;
|
|
|
|
|
this.MouseThumbnailsAnimateScrollBottomTimer = -1;
|
|
|
|
|
this.m_oWordControl = null;
|
|
|
|
|
var oThis = this;
|
|
|
|
|
this.initEvents = function () {
|
|
|
|
|
var control = this.m_oWordControl.m_oThumbnails.HtmlElement;
|
|
|
|
|
control.onmousedown = this.onMouseDown;
|
|
|
|
|
control.onmousemove = this.onMouseMove;
|
|
|
|
|
control.onmouseup = this.onMouseUp;
|
|
|
|
|
control.onmouseout = this.onMouseLeave;
|
|
|
|
|
control.onmousewheel = this.onMouseWhell;
|
|
|
|
|
if (control.addEventListener) {
|
|
|
|
|
control.addEventListener("DOMMouseScroll", this.onMouseWhell, false);
|
|
|
|
|
}
|
|
|
|
|
this.initEvents2MobileAdvances();
|
|
|
|
|
};
|
|
|
|
|
this.initEvents2MobileAdvances = function () {
|
|
|
|
|
var control = this.m_oWordControl.m_oThumbnails.HtmlElement;
|
|
|
|
|
control["ontouchstart"] = function (e) {
|
|
|
|
|
oThis.onMouseDown(e.touches[0]);
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
control["ontouchmove"] = function (e) {
|
|
|
|
|
oThis.onMouseMove(e.touches[0]);
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
control["ontouchend"] = function (e) {
|
|
|
|
|
oThis.onMouseUp(e.changedTouches[0]);
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoords = function (x, y, isPage, isFixed) {
|
|
|
|
|
var Pos = {
|
|
|
|
|
X: x,
|
|
|
|
|
Y: y
|
|
|
|
|
};
|
|
|
|
|
Pos.X -= this.m_oWordControl.X;
|
|
|
|
|
Pos.Y -= this.m_oWordControl.Y;
|
|
|
|
|
if (isFixed && isPage) {
|
|
|
|
|
Pos.Page = -1;
|
|
|
|
|
var pages_count = this.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
var drawRect = this.m_arrPages[i];
|
|
|
|
|
if (Pos.Y >= drawRect.top && Pos.Y <= drawRect.bottom) {
|
|
|
|
|
Pos.Page = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (isPage) {
|
|
|
|
|
Pos.Page = 0;
|
|
|
|
|
var pages_count = this.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
var drawRect = this.m_arrPages[i];
|
|
|
|
|
if (Pos.Y >= drawRect.top && Pos.Y <= drawRect.bottom) {
|
|
|
|
|
Pos.Page = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (i == (pages_count - 1) && Pos.Y > drawRect.bottom) {
|
|
|
|
|
Pos.Page = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (Pos.Page >= pages_count) {
|
|
|
|
|
Pos.Page = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return Pos;
|
|
|
|
|
};
|
|
|
|
|
this.ConvertCoords2 = function (x, y) {
|
|
|
|
|
var Pos = {
|
|
|
|
|
X: x,
|
|
|
|
|
Y: y
|
|
|
|
|
};
|
|
|
|
|
Pos.X -= this.m_oWordControl.X;
|
|
|
|
|
Pos.Y -= this.m_oWordControl.Y;
|
|
|
|
|
var _abs_pos = this.m_oWordControl.m_oThumbnails.AbsolutePosition;
|
|
|
|
|
var _controlW = (_abs_pos.R - _abs_pos.L) * g_dKoef_mm_to_pix;
|
|
|
|
|
var _controlH = (_abs_pos.B - _abs_pos.T) * g_dKoef_mm_to_pix;
|
|
|
|
|
if (Pos.X < 0 || Pos.X > _controlW || Pos.Y < 0 || Pos.Y > _controlH) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
var pages_count = this.m_arrPages.length;
|
|
|
|
|
if (0 == pages_count) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
var _min = Math.abs(Pos.Y - this.m_arrPages[0].top);
|
|
|
|
|
var _MinPositionPage = 0;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
var _min1 = Math.abs(Pos.Y - this.m_arrPages[i].top);
|
|
|
|
|
var _min2 = Math.abs(Pos.Y - this.m_arrPages[i].bottom);
|
|
|
|
|
if (_min1 < _min) {
|
|
|
|
|
_min = _min1;
|
|
|
|
|
_MinPositionPage = i;
|
|
|
|
|
}
|
|
|
|
|
if (_min2 < _min) {
|
|
|
|
|
_min = _min2;
|
|
|
|
|
_MinPositionPage = i + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return _MinPositionPage;
|
|
|
|
|
};
|
|
|
|
|
this.onMouseDown = function (e) {
|
|
|
|
|
if (e.preventDefault) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
} else {
|
|
|
|
|
e.returnValue = false;
|
|
|
|
|
}
|
|
|
|
|
var control = oThis.m_oWordControl.m_oThumbnails.HtmlElement;
|
|
|
|
|
if (global_mouseEvent.IsLocked == true && global_mouseEvent.Sender != control) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
check_MouseDownEvent(e);
|
|
|
|
|
global_mouseEvent.LockMouse();
|
|
|
|
|
if (global_mouseEvent.Sender != control) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (global_mouseEvent.Button == undefined) {
|
|
|
|
|
global_mouseEvent.Button = 0;
|
|
|
|
|
}
|
|
|
|
|
oThis.SetFocusElement(FOCUS_OBJECT_THUMBNAILS);
|
|
|
|
|
var pos = oThis.ConvertCoords(global_mouseEvent.X, global_mouseEvent.Y, true, true);
|
|
|
|
|
if (pos.Page == -1) {
|
|
|
|
|
if (global_mouseEvent.Button == 2) {
|
|
|
|
|
var _data = new CContextMenuData();
|
|
|
|
|
_data.Type = c_oAscContextMenuTypes.Thumbnails;
|
|
|
|
|
_data.X_abs = global_mouseEvent.X - ((oThis.m_oWordControl.m_oThumbnails.AbsolutePosition.L * g_dKoef_mm_to_pix) >> 0) - oThis.m_oWordControl.X;
|
|
|
|
|
_data.Y_abs = global_mouseEvent.Y - ((oThis.m_oWordControl.m_oThumbnails.AbsolutePosition.T * g_dKoef_mm_to_pix) >> 0) - oThis.m_oWordControl.Y;
|
|
|
|
|
_data.IsSlideSelect = false;
|
|
|
|
|
oThis.m_oWordControl.m_oApi.sync_ContextMenuCallback(_data);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (oThis.m_arrPages[pos.Page].IsSelected === true) {
|
|
|
|
|
oThis.m_arrPages[pos.Page].IsSelected = false;
|
|
|
|
|
var arr = oThis.GetSelectedArray();
|
|
|
|
|
if (0 == arr.length) {
|
|
|
|
|
oThis.m_arrPages[pos.Page].IsSelected = true;
|
|
|
|
|
oThis.ShowPage(pos.Page);
|
|
|
|
|
} else {
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
oThis.SelectPageEnabled = false;
|
|
|
|
|
oThis.m_oWordControl.GoToPage(arr[0]);
|
|
|
|
|
oThis.SelectPageEnabled = true;
|
|
|
|
|
oThis.ShowPage(arr[0]);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
oThis.m_arrPages[pos.Page].IsSelected = true;
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
oThis.SelectPageEnabled = false;
|
|
|
|
|
oThis.m_oWordControl.GoToPage(pos.Page);
|
|
|
|
|
oThis.SelectPageEnabled = true;
|
|
|
|
|
oThis.ShowPage(pos.Page);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (global_keyboardEvent.ShiftKey) {
|
|
|
|
|
var pages_count = oThis.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
oThis.m_arrPages[i].IsSelected = false;
|
|
|
|
|
}
|
|
|
|
|
var _max = pos.Page;
|
|
|
|
|
var _min = oThis.m_oWordControl.m_oDrawingDocument.SlideCurrent;
|
|
|
|
|
if (_min > _max) {
|
|
|
|
|
var _temp = _max;
|
|
|
|
|
_max = _min;
|
|
|
|
|
_min = _temp;
|
|
|
|
|
}
|
|
|
|
|
for (var i = _min; i <= _max; i++) {
|
|
|
|
|
oThis.m_arrPages[i].IsSelected = true;
|
|
|
|
|
}
|
|
|
|
|
oThis.ShowPage(pos.Page);
|
|
|
|
|
} else {
|
|
|
|
|
if (0 == global_mouseEvent.Button || 2 == global_mouseEvent.Button) {
|
|
|
|
|
if (0 == global_mouseEvent.Button) {
|
|
|
|
|
oThis.IsMouseDownTrack = true;
|
|
|
|
|
oThis.IsMouseDownTrackSimple = true;
|
|
|
|
|
oThis.MouseDownTrackPage = pos.Page;
|
|
|
|
|
oThis.MouseDownTrackX = global_mouseEvent.X;
|
|
|
|
|
oThis.MouseDownTrackY = global_mouseEvent.Y;
|
|
|
|
|
}
|
|
|
|
|
if (oThis.m_arrPages[pos.Page].IsSelected) {
|
|
|
|
|
oThis.SelectPageEnabled = false;
|
|
|
|
|
oThis.m_oWordControl.GoToPage(pos.Page);
|
|
|
|
|
oThis.SelectPageEnabled = true;
|
|
|
|
|
if (global_mouseEvent.Button == 2 && !global_keyboardEvent.CtrlKey) {
|
|
|
|
|
var _data = new CContextMenuData();
|
|
|
|
|
_data.Type = c_oAscContextMenuTypes.Thumbnails;
|
|
|
|
|
_data.X_abs = global_mouseEvent.X - ((oThis.m_oWordControl.m_oThumbnails.AbsolutePosition.L * g_dKoef_mm_to_pix) >> 0) - oThis.m_oWordControl.X;
|
|
|
|
|
_data.Y_abs = global_mouseEvent.Y - ((oThis.m_oWordControl.m_oThumbnails.AbsolutePosition.T * g_dKoef_mm_to_pix) >> 0) - oThis.m_oWordControl.Y;
|
|
|
|
|
oThis.m_oWordControl.m_oApi.sync_ContextMenuCallback(_data);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
var pages_count = oThis.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
oThis.m_arrPages[i].IsSelected = false;
|
|
|
|
|
}
|
|
|
|
|
oThis.m_arrPages[pos.Page].IsSelected = true;
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
oThis.SelectPageEnabled = false;
|
|
|
|
|
oThis.m_oWordControl.GoToPage(pos.Page);
|
|
|
|
|
oThis.SelectPageEnabled = true;
|
|
|
|
|
oThis.ShowPage(pos.Page);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (global_mouseEvent.Button == 2 && !global_keyboardEvent.CtrlKey) {
|
|
|
|
|
var _data = new CContextMenuData();
|
|
|
|
|
_data.Type = c_oAscContextMenuTypes.Thumbnails;
|
|
|
|
|
_data.X_abs = global_mouseEvent.X - ((oThis.m_oWordControl.m_oThumbnails.AbsolutePosition.L * g_dKoef_mm_to_pix) >> 0) - oThis.m_oWordControl.X;
|
|
|
|
|
_data.Y_abs = global_mouseEvent.Y - ((oThis.m_oWordControl.m_oThumbnails.AbsolutePosition.T * g_dKoef_mm_to_pix) >> 0) - oThis.m_oWordControl.Y;
|
|
|
|
|
oThis.m_oWordControl.m_oApi.sync_ContextMenuCallback(_data);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.ShowPage = function (pageNum) {
|
|
|
|
|
var y1 = this.m_arrPages[pageNum].top - this.const_border_w;
|
|
|
|
|
var y2 = this.m_arrPages[pageNum].bottom + this.const_border_w;
|
|
|
|
|
if (y1 < 0) {
|
|
|
|
|
var _sizeH = y2 - y1;
|
|
|
|
|
this.m_oWordControl.m_oScrollThumbApi.scrollToY(pageNum * _sizeH + (pageNum + 1) * this.const_border_w);
|
|
|
|
|
} else {
|
|
|
|
|
if (y2 > this.m_oWordControl.m_oThumbnails.HtmlElement.height) {
|
|
|
|
|
this.m_oWordControl.m_oScrollThumbApi.scrollByY(y2 - this.m_oWordControl.m_oThumbnails.HtmlElement.height);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.SelectPage = function (pageNum) {
|
|
|
|
|
if (!this.SelectPageEnabled) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var pages_count = this.m_arrPages.length;
|
|
|
|
|
if (pageNum >= 0 && pageNum < pages_count) {
|
|
|
|
|
var bIsUpdate = false;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
if (this.m_arrPages[i].IsSelected === true && i != pageNum) {
|
|
|
|
|
bIsUpdate = true;
|
|
|
|
|
}
|
|
|
|
|
this.m_arrPages[i].IsSelected = false;
|
|
|
|
|
}
|
|
|
|
|
if (this.m_arrPages[pageNum].IsSelected === false) {
|
|
|
|
|
bIsUpdate = true;
|
|
|
|
|
}
|
|
|
|
|
this.m_arrPages[pageNum].IsSelected = true;
|
|
|
|
|
this.m_bIsUpdate = bIsUpdate;
|
|
|
|
|
if (bIsUpdate && this.m_oWordControl.m_oScrollThumbApi != null) {
|
|
|
|
|
var y1 = this.m_arrPages[pageNum].top - this.const_border_w;
|
|
|
|
|
var y2 = this.m_arrPages[pageNum].bottom + this.const_border_w;
|
|
|
|
|
if (y1 < 0) {
|
|
|
|
|
var _sizeH = y2 - y1;
|
|
|
|
|
this.m_oWordControl.m_oScrollThumbApi.scrollToY(pageNum * _sizeH + (pageNum + 1) * this.const_border_w);
|
|
|
|
|
} else {
|
|
|
|
|
if (y2 > this.m_oWordControl.m_oThumbnails.HtmlElement.height) {
|
|
|
|
|
this.m_oWordControl.m_oScrollThumbApi.scrollByY(y2 - this.m_oWordControl.m_oThumbnails.HtmlElement.height);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.ClearCacheAttack = function () {
|
|
|
|
|
var pages_count = this.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
this.m_arrPages[i].IsRecalc = true;
|
|
|
|
|
}
|
|
|
|
|
this.m_bIsUpdate = true;
|
|
|
|
|
};
|
|
|
|
|
this.RecalculateAll = function () {
|
|
|
|
|
this.SlideWidth = this.m_oWordControl.m_oLogicDocument.Width;
|
|
|
|
|
this.SlideHeight = this.m_oWordControl.m_oLogicDocument.Height;
|
|
|
|
|
this.SlidesCount = this.m_oWordControl.m_oDrawingDocument.SlidesCount;
|
|
|
|
|
this.CheckSizes();
|
|
|
|
|
this.ClearCacheAttack();
|
|
|
|
|
};
|
|
|
|
|
this.onMouseMove = function (e) {
|
|
|
|
|
var control = oThis.m_oWordControl.m_oThumbnails.HtmlElement;
|
|
|
|
|
if (global_mouseEvent.IsLocked == true && global_mouseEvent.Sender != control) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
check_MouseMoveEvent(e);
|
|
|
|
|
if (global_mouseEvent.Sender != control) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (oThis.IsMouseDownTrack) {
|
|
|
|
|
if (oThis.IsMouseDownTrackSimple) {
|
|
|
|
|
if (Math.abs(oThis.MouseDownTrackX - global_mouseEvent.X) > 10 || Math.abs(oThis.MouseDownTrackY - global_mouseEvent.Y) > 10) {
|
|
|
|
|
oThis.IsMouseDownTrackSimple = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!oThis.IsMouseDownTrackSimple) {
|
|
|
|
|
oThis.MouseDownTrackPosition = oThis.ConvertCoords2(global_mouseEvent.X, global_mouseEvent.Y);
|
|
|
|
|
}
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
if (oThis.m_bIsScrollVisible) {
|
|
|
|
|
var _Y = global_mouseEvent.Y - oThis.m_oWordControl.Y;
|
|
|
|
|
var _abs_pos = oThis.m_oWordControl.m_oThumbnails.AbsolutePosition;
|
|
|
|
|
var _YMax = (_abs_pos.B - _abs_pos.T) * g_dKoef_mm_to_pix;
|
|
|
|
|
var _check_type = -1;
|
|
|
|
|
if (_Y < 30) {
|
|
|
|
|
_check_type = 0;
|
|
|
|
|
} else {
|
|
|
|
|
if (_Y >= (_YMax - 30)) {
|
|
|
|
|
_check_type = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
oThis.CheckNeedAnimateScrolls(_check_type);
|
|
|
|
|
}
|
|
|
|
|
if (!oThis.IsMouseDownTrackSimple) {
|
|
|
|
|
var cursor_dragged = "default";
|
|
|
|
|
if (AscBrowser.isWebkit) {
|
|
|
|
|
cursor_dragged = "-webkit-grabbing";
|
|
|
|
|
} else {
|
|
|
|
|
if (AscBrowser.isMozilla) {
|
|
|
|
|
cursor_dragged = "-moz-grabbing";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
oThis.m_oWordControl.m_oThumbnails.HtmlElement.style.cursor = cursor_dragged;
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var pos = oThis.ConvertCoords(global_mouseEvent.X, global_mouseEvent.Y, true, true);
|
|
|
|
|
var _is_old_focused = false;
|
|
|
|
|
var pages_count = oThis.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
if (oThis.m_arrPages[i].IsFocused) {
|
|
|
|
|
_is_old_focused = true;
|
|
|
|
|
oThis.m_arrPages[i].IsFocused = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var cursor_moved = "default";
|
|
|
|
|
if (pos.Page != -1) {
|
|
|
|
|
oThis.m_arrPages[pos.Page].IsFocused = true;
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
cursor_moved = "pointer";
|
|
|
|
|
} else {
|
|
|
|
|
if (_is_old_focused) {
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
oThis.m_oWordControl.m_oThumbnails.HtmlElement.style.cursor = cursor_moved;
|
|
|
|
|
};
|
|
|
|
|
this.CheckNeedAnimateScrolls = function (type) {
|
|
|
|
|
if (type == -1) {
|
|
|
|
|
if (this.MouseThumbnailsAnimateScrollTopTimer != -1) {
|
|
|
|
|
clearInterval(this.MouseThumbnailsAnimateScrollTopTimer);
|
|
|
|
|
this.MouseThumbnailsAnimateScrollTopTimer = -1;
|
|
|
|
|
}
|
|
|
|
|
if (this.MouseThumbnailsAnimateScrollBottomTimer != -1) {
|
|
|
|
|
clearInterval(this.MouseThumbnailsAnimateScrollBottomTimer);
|
|
|
|
|
this.MouseThumbnailsAnimateScrollBottomTimer = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (type == 0) {
|
|
|
|
|
if (this.MouseThumbnailsAnimateScrollBottomTimer != -1) {
|
|
|
|
|
clearInterval(this.MouseThumbnailsAnimateScrollBottomTimer);
|
|
|
|
|
this.MouseThumbnailsAnimateScrollBottomTimer = -1;
|
|
|
|
|
}
|
|
|
|
|
if (-1 == this.MouseThumbnailsAnimateScrollTopTimer) {
|
|
|
|
|
this.MouseThumbnailsAnimateScrollTopTimer = setInterval(this.OnScrollTrackTop, 50);
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (type == 1) {
|
|
|
|
|
if (this.MouseThumbnailsAnimateScrollTopTimer != -1) {
|
|
|
|
|
clearInterval(this.MouseThumbnailsAnimateScrollTopTimer);
|
|
|
|
|
this.MouseThumbnailsAnimateScrollTopTimer = -1;
|
|
|
|
|
}
|
|
|
|
|
if (-1 == this.MouseThumbnailsAnimateScrollBottomTimer) {
|
|
|
|
|
this.MouseThumbnailsAnimateScrollBottomTimer = setInterval(this.OnScrollTrackBottom, 50);
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.OnScrollTrackTop = function () {
|
|
|
|
|
oThis.m_oWordControl.m_oScrollThumbApi.scrollByY(-45);
|
|
|
|
|
};
|
|
|
|
|
this.OnScrollTrackBottom = function () {
|
|
|
|
|
oThis.m_oWordControl.m_oScrollThumbApi.scrollByY(45);
|
|
|
|
|
};
|
|
|
|
|
this.onMouseUp = function (e) {
|
|
|
|
|
check_MouseUpEvent(e);
|
|
|
|
|
global_mouseEvent.UnLockMouse();
|
|
|
|
|
var control = oThis.m_oWordControl.m_oThumbnails.HtmlElement;
|
|
|
|
|
if (global_mouseEvent.Sender != control) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
oThis.CheckNeedAnimateScrolls(-1);
|
|
|
|
|
if (!oThis.IsMouseDownTrack) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (oThis.IsMouseDownTrackSimple) {
|
|
|
|
|
if (Math.abs(oThis.MouseDownTrackX - global_mouseEvent.X) > 10 || Math.abs(oThis.MouseDownTrackY - global_mouseEvent.Y) > 10) {
|
|
|
|
|
oThis.IsMouseDownTrackSimple = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (oThis.IsMouseDownTrackSimple) {
|
|
|
|
|
var pages_count = oThis.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
oThis.m_arrPages[i].IsSelected = false;
|
|
|
|
|
}
|
|
|
|
|
oThis.m_arrPages[oThis.MouseDownTrackPage].IsSelected = true;
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
} else {
|
|
|
|
|
oThis.MouseDownTrackPosition = oThis.ConvertCoords2(global_mouseEvent.X, global_mouseEvent.Y);
|
|
|
|
|
if (-1 != oThis.MouseDownTrackPosition) {
|
|
|
|
|
var _array = oThis.GetSelectedArray();
|
|
|
|
|
oThis.m_oWordControl.m_oLogicDocument.shiftSlides(oThis.MouseDownTrackPosition, _array);
|
|
|
|
|
oThis.ClearCacheAttack();
|
|
|
|
|
}
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
}
|
|
|
|
|
oThis.IsMouseDownTrack = false;
|
|
|
|
|
oThis.IsMouseDownTrackSimple = true;
|
|
|
|
|
oThis.MouseDownTrackPage = -1;
|
|
|
|
|
oThis.MouseDownTrackX = -1;
|
|
|
|
|
oThis.MouseDownTrackY = -1;
|
|
|
|
|
oThis.MouseDownTrackPosition = -1;
|
|
|
|
|
};
|
|
|
|
|
this.onMouseLeave = function (e) {
|
|
|
|
|
var pages_count = oThis.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
oThis.m_arrPages[i].IsFocused = false;
|
|
|
|
|
}
|
|
|
|
|
oThis.OnUpdateOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.onMouseWhell = function (e) {
|
|
|
|
|
if (false === this.m_bIsScrollVisible || !oThis.m_oWordControl.m_oScrollThumbApi) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var delta = 0;
|
|
|
|
|
if (undefined != e.wheelDelta && e.wheelDelta != 0) {
|
|
|
|
|
delta = -45 * e.wheelDelta / 120;
|
|
|
|
|
} else {
|
|
|
|
|
if (undefined != e.detail && e.detail != 0) {
|
|
|
|
|
delta = 45 * e.detail / 3;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
delta >>= 0;
|
|
|
|
|
oThis.m_oWordControl.m_oScrollThumbApi.scrollBy(0, delta, false);
|
|
|
|
|
if (e.preventDefault) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
} else {
|
|
|
|
|
e.returnValue = false;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
this.SetFont = function (font) {
|
|
|
|
|
if (-1 == font.FontFamily.Index) {
|
|
|
|
|
font.FontFamily.Index = window.g_map_font_index[font.FontFamily.Name];
|
|
|
|
|
}
|
|
|
|
|
if (font.FontFamily.Index == undefined || font.FontFamily.Index == -1) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var bItalic = true === font.Italic;
|
|
|
|
|
var bBold = true === font.Bold;
|
|
|
|
|
var oFontStyle = FontStyle.FontStyleRegular;
|
|
|
|
|
if (!bItalic && bBold) {
|
|
|
|
|
oFontStyle = FontStyle.FontStyleBold;
|
|
|
|
|
} else {
|
|
|
|
|
if (bItalic && !bBold) {
|
|
|
|
|
oFontStyle = FontStyle.FontStyleItalic;
|
|
|
|
|
} else {
|
|
|
|
|
if (bItalic && bBold) {
|
|
|
|
|
oFontStyle = FontStyle.FontStyleBoldItalic;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
g_fontApplication.LoadFont(font.FontFamily.Name, window.g_font_loader, this.m_oFontManager, font.FontSize, oFontStyle, 96, 96);
|
|
|
|
|
};
|
|
|
|
|
this.Init = function () {
|
|
|
|
|
this.m_oFontManager.Initialize(true);
|
|
|
|
|
this.m_oFontManager.SetHintsProps(true, true);
|
|
|
|
|
var font = {
|
|
|
|
|
FontFamily: {
|
|
|
|
|
Name: "Arial",
|
|
|
|
|
Index: -1
|
|
|
|
|
},
|
|
|
|
|
Italic: false,
|
|
|
|
|
Bold: false,
|
|
|
|
|
FontSize: 10
|
|
|
|
|
};
|
|
|
|
|
this.SetFont(font);
|
|
|
|
|
for (var i = 0; i < 10; i++) {
|
|
|
|
|
var _meas = this.m_oFontManager.MeasureChar(("" + i).charCodeAt(0));
|
|
|
|
|
if (_meas) {
|
|
|
|
|
this.DigitWidths[i] = _meas.fAdvanceX * 25.4 / 96;
|
|
|
|
|
} else {
|
|
|
|
|
this.DigitWidths[i] = 10;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (GlobalSkin.Name == "flat") {
|
|
|
|
|
this.const_offset_y = 17;
|
|
|
|
|
this.const_offset_b = this.const_offset_y;
|
|
|
|
|
this.const_offset_r = 8;
|
|
|
|
|
this.const_border_w = 7;
|
|
|
|
|
}
|
|
|
|
|
this.MouseTrackCommonImage = document.createElement("canvas");
|
|
|
|
|
var _im_w = 9;
|
|
|
|
|
var _im_h = 9;
|
|
|
|
|
this.MouseTrackCommonImage.width = _im_w;
|
|
|
|
|
this.MouseTrackCommonImage.height = _im_h;
|
|
|
|
|
var _ctx = this.MouseTrackCommonImage.getContext("2d");
|
|
|
|
|
var _data = _ctx.createImageData(_im_w, _im_h);
|
|
|
|
|
var _pixels = _data.data;
|
|
|
|
|
var _ind = 0;
|
|
|
|
|
for (var j = 0; j < _im_h; ++j) {
|
|
|
|
|
var _off1 = (j > (_im_w >> 1)) ? (_im_w - j - 1) : j;
|
|
|
|
|
var _off2 = _im_w - _off1 - 1;
|
|
|
|
|
for (var r = 0; r < _im_w; ++r) {
|
|
|
|
|
if (r <= _off1 || r >= _off2) {
|
|
|
|
|
_pixels[_ind++] = 183;
|
|
|
|
|
_pixels[_ind++] = 183;
|
|
|
|
|
_pixels[_ind++] = 183;
|
|
|
|
|
_pixels[_ind++] = 255;
|
|
|
|
|
} else {
|
|
|
|
|
_pixels[_ind + 3] = 0;
|
|
|
|
|
_ind += 4;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_ctx.putImageData(_data, 0, 0);
|
|
|
|
|
};
|
|
|
|
|
this.CheckSizes = function () {
|
|
|
|
|
var word_control = this.m_oWordControl;
|
|
|
|
|
var __w = word_control.m_oThumbnailsContainer.AbsolutePosition.R - word_control.m_oThumbnailsContainer.AbsolutePosition.L;
|
|
|
|
|
var __h = word_control.m_oThumbnailsContainer.AbsolutePosition.B - word_control.m_oThumbnailsContainer.AbsolutePosition.T;
|
|
|
|
|
var nWidthSlide = (__w * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
if (__w < 1 || __h < 0) {
|
|
|
|
|
this.m_bIsVisible = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.m_bIsVisible = true;
|
|
|
|
|
nWidthSlide -= this.const_offset_r;
|
|
|
|
|
var _tmpDig = 0;
|
|
|
|
|
if (this.DigitWidths.length > 5) {
|
|
|
|
|
_tmpDig = this.DigitWidths[5];
|
|
|
|
|
}
|
|
|
|
|
this.const_offset_x = (_tmpDig * g_dKoef_mm_to_pix * (("") + (this.SlidesCount + 1)).length) >> 0;
|
|
|
|
|
if (this.const_offset_x < 25) {
|
|
|
|
|
this.const_offset_x = 25;
|
|
|
|
|
}
|
|
|
|
|
nWidthSlide -= this.const_offset_x;
|
|
|
|
|
var nHeightSlide = (nWidthSlide * this.SlideHeight / this.SlideWidth) >> 0;
|
|
|
|
|
var nHeightPix = this.const_offset_y + this.const_offset_y + nHeightSlide * this.SlidesCount;
|
|
|
|
|
if (this.SlidesCount > 0) {
|
|
|
|
|
nHeightPix += (this.SlidesCount - 1) * 3 * this.const_border_w;
|
|
|
|
|
}
|
|
|
|
|
var dPosition = 0;
|
|
|
|
|
if (this.m_dScrollY_max != 0) {
|
|
|
|
|
dPosition = this.m_dScrollY / this.m_dScrollY_max;
|
|
|
|
|
}
|
|
|
|
|
var heightThumbs = (__h * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
if (nHeightPix < heightThumbs) {
|
|
|
|
|
if (this.m_bIsScrollVisible && GlobalSkin.ThumbnailScrollWidthNullIfNoScrolling) {
|
|
|
|
|
word_control.m_oThumbnails.Bounds.R = 0;
|
|
|
|
|
word_control.m_oThumbnailsBack.Bounds.R = 0;
|
|
|
|
|
word_control.m_oThumbnails_scroll.Bounds.AbsW = 0;
|
|
|
|
|
word_control.m_oThumbnailsContainer.Resize(__w, __h);
|
|
|
|
|
} else {
|
|
|
|
|
word_control.m_oThumbnails_scroll.HtmlElement.style.display = "none";
|
|
|
|
|
}
|
|
|
|
|
this.m_bIsScrollVisible = false;
|
|
|
|
|
this.m_dScrollY = 0;
|
|
|
|
|
} else {
|
|
|
|
|
if (!this.m_bIsScrollVisible) {
|
|
|
|
|
if (GlobalSkin.ThumbnailScrollWidthNullIfNoScrolling) {
|
|
|
|
|
word_control.m_oThumbnailsBack.Bounds.R = word_control.ScrollWidthPx * g_dKoef_pix_to_mm;
|
|
|
|
|
word_control.m_oThumbnails.Bounds.R = word_control.ScrollWidthPx * g_dKoef_pix_to_mm;
|
|
|
|
|
var _width_mm_scroll = (GlobalSkin.Name == "flat") ? 10 : word_control.ScrollWidthPx;
|
|
|
|
|
word_control.m_oThumbnails_scroll.Bounds.AbsW = _width_mm_scroll * g_dKoef_pix_to_mm;
|
|
|
|
|
} else {
|
|
|
|
|
word_control.m_oThumbnails_scroll.HtmlElement.style.display = "block";
|
|
|
|
|
}
|
|
|
|
|
word_control.m_oThumbnailsContainer.Resize(__w, __h);
|
|
|
|
|
}
|
|
|
|
|
this.m_bIsScrollVisible = true;
|
|
|
|
|
__w = word_control.m_oThumbnails.AbsolutePosition.R - word_control.m_oThumbnails.AbsolutePosition.L;
|
|
|
|
|
__h = word_control.m_oThumbnails.AbsolutePosition.B - word_control.m_oThumbnails.AbsolutePosition.T;
|
|
|
|
|
nWidthSlide = (__w * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
nWidthSlide -= (this.const_offset_x + this.const_offset_r);
|
|
|
|
|
var nHeightSlide = (nWidthSlide * this.SlideHeight / this.SlideWidth) >> 0;
|
|
|
|
|
var nHeightPix = this.const_offset_y + this.const_offset_y + nHeightSlide * this.SlidesCount;
|
|
|
|
|
if (this.SlidesCount > 0) {
|
|
|
|
|
nHeightPix += (this.SlidesCount - 1) * 3 * this.const_border_w;
|
|
|
|
|
}
|
|
|
|
|
var settings = {
|
|
|
|
|
showArrows: false,
|
|
|
|
|
animateScroll: false,
|
|
|
|
|
screenW: word_control.m_oThumbnails.HtmlElement.width,
|
|
|
|
|
screenH: word_control.m_oThumbnails.HtmlElement.height,
|
|
|
|
|
cornerRadius: 1,
|
|
|
|
|
slimScroll: true,
|
|
|
|
|
scrollBackgroundColor: GlobalSkin.BackgroundColorThumbnails,
|
|
|
|
|
scrollBackgroundColorHover: GlobalSkin.BackgroundColorThumbnails,
|
|
|
|
|
scrollBackgroundColorActive: GlobalSkin.BackgroundColorThumbnails
|
|
|
|
|
};
|
|
|
|
|
document.getElementById("panel_right_scroll_thmbnl").style.height = parseInt(nHeightPix) + "px";
|
|
|
|
|
if (word_control.m_oScrollThumb_) {
|
|
|
|
|
word_control.m_oScrollThumb_.Repos(settings);
|
|
|
|
|
word_control.m_oScrollThumb_.isHorizontalScroll = false;
|
|
|
|
|
} else {
|
|
|
|
|
word_control.m_oScrollThumb_ = new ScrollObject("id_vertical_scroll_thmbnl", settings);
|
|
|
|
|
word_control.m_oScrollThumb_.bind("scrollvertical", function (evt) {
|
|
|
|
|
oThis.verticalScroll(this, evt.scrollD, evt.maxScrollY);
|
|
|
|
|
});
|
|
|
|
|
word_control.m_oScrollThumbApi = word_control.m_oScrollThumb_;
|
|
|
|
|
word_control.m_oScrollThumb_.isHorizontalScroll = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (this.m_bIsScrollVisible) {
|
|
|
|
|
var lPosition = (dPosition * word_control.m_oScrollThumbApi.getMaxScrolledY()) >> 0;
|
|
|
|
|
word_control.m_oScrollThumbApi.scrollToY(lPosition);
|
|
|
|
|
}
|
|
|
|
|
this.CalculatePlaces();
|
|
|
|
|
this.m_bIsUpdate = true;
|
|
|
|
|
};
|
|
|
|
|
this.verticalScroll = function (sender, scrollPositionY, maxY, isAtTop, isAtBottom) {
|
|
|
|
|
if (false === this.m_oWordControl.m_oApi.bInit_word_control || false === this.m_bIsScrollVisible) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.m_dScrollY = Math.max(0, Math.min(scrollPositionY, maxY));
|
|
|
|
|
this.m_dScrollY_max = maxY;
|
|
|
|
|
this.CalculatePlaces();
|
|
|
|
|
this.m_bIsUpdate = true;
|
|
|
|
|
this.SetFocusElement(FOCUS_OBJECT_THUMBNAILS);
|
|
|
|
|
};
|
|
|
|
|
this.CalculatePlaces = function () {
|
|
|
|
|
if (!this.m_bIsVisible) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var word_control = this.m_oWordControl;
|
|
|
|
|
var canvas = word_control.m_oThumbnails.HtmlElement;
|
|
|
|
|
if (null == canvas) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var _width = canvas.width;
|
|
|
|
|
var _height = canvas.height;
|
|
|
|
|
var bIsFoundFirst = false;
|
|
|
|
|
var bIsFoundEnd = false;
|
|
|
|
|
var lCurrentTopInDoc = (this.m_dScrollY) >> 0;
|
|
|
|
|
var __w = word_control.m_oThumbnails.AbsolutePosition.R - word_control.m_oThumbnails.AbsolutePosition.L;
|
|
|
|
|
var __h = word_control.m_oThumbnails.AbsolutePosition.B - word_control.m_oThumbnails.AbsolutePosition.T;
|
|
|
|
|
var nWidthSlide = (__w * g_dKoef_mm_to_pix) >> 0;
|
|
|
|
|
nWidthSlide -= (this.const_offset_x + this.const_offset_r);
|
|
|
|
|
var nHeightSlide = (nWidthSlide * this.SlideHeight / this.SlideWidth) >> 0;
|
|
|
|
|
var lStart = this.const_offset_y;
|
|
|
|
|
for (var i = 0; i < this.SlidesCount; i++) {
|
|
|
|
|
if (i >= this.m_arrPages.length) {
|
|
|
|
|
this.m_arrPages[i] = new CThPage();
|
|
|
|
|
}
|
|
|
|
|
if (false === bIsFoundFirst) {
|
|
|
|
|
if ((lStart + nHeightSlide) > lCurrentTopInDoc) {
|
|
|
|
|
this.m_lDrawingFirst = i;
|
|
|
|
|
bIsFoundFirst = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var drawRect = this.m_arrPages[i];
|
|
|
|
|
drawRect.left = this.const_offset_x;
|
|
|
|
|
drawRect.top = lStart - lCurrentTopInDoc;
|
|
|
|
|
drawRect.right = drawRect.left + nWidthSlide;
|
|
|
|
|
drawRect.bottom = drawRect.top + nHeightSlide;
|
|
|
|
|
drawRect.pageIndex = i;
|
|
|
|
|
if (false === bIsFoundEnd) {
|
|
|
|
|
if (drawRect.top > _height) {
|
|
|
|
|
this.m_lDrawingEnd = i - 1;
|
|
|
|
|
bIsFoundEnd = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
lStart += (nHeightSlide + 3 * this.const_border_w);
|
|
|
|
|
}
|
|
|
|
|
if (this.m_arrPages.length > this.SlidesCount) {
|
|
|
|
|
this.m_arrPages.splice(this.SlidesCount, this.m_arrPages.length - this.SlidesCount);
|
|
|
|
|
}
|
|
|
|
|
if (false === bIsFoundEnd) {
|
|
|
|
|
this.m_lDrawingEnd = this.SlidesCount - 1;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.OnPaint = function () {
|
|
|
|
|
if (!this.m_bIsVisible) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var word_control = this.m_oWordControl;
|
|
|
|
|
var canvas = word_control.m_oThumbnails.HtmlElement;
|
|
|
|
|
if (null == canvas) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var context = canvas.getContext("2d");
|
|
|
|
|
var _width = canvas.width;
|
|
|
|
|
var _height = canvas.height;
|
|
|
|
|
context.clearRect(0, 0, _width, _height);
|
|
|
|
|
var _digit_distance = this.const_offset_x * g_dKoef_pix_to_mm;
|
|
|
|
|
for (var i = 0; i < this.SlidesCount; i++) {
|
|
|
|
|
var page = this.m_arrPages[i];
|
|
|
|
|
if (i < this.m_lDrawingFirst || i > this.m_lDrawingEnd) {
|
|
|
|
|
this.m_oCacheManager.UnLock(page.cachedImage);
|
|
|
|
|
page.cachedImage = null;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
var g = new CGraphics();
|
|
|
|
|
g.init(context, _width, _height, _width * g_dKoef_pix_to_mm, _height * g_dKoef_pix_to_mm);
|
|
|
|
|
g.m_oFontManager = this.m_oFontManager;
|
|
|
|
|
g.transform(1, 0, 0, 1, 0, 0);
|
|
|
|
|
var font = {
|
|
|
|
|
FontFamily: {
|
|
|
|
|
Name: "Arial",
|
|
|
|
|
Index: -1
|
|
|
|
|
},
|
|
|
|
|
Italic: false,
|
|
|
|
|
Bold: false,
|
|
|
|
|
FontSize: 10
|
|
|
|
|
};
|
|
|
|
|
g.SetFont(font);
|
|
|
|
|
var DrawNumSlide = i + 1;
|
|
|
|
|
var num_slide_text_width = 0;
|
|
|
|
|
while (DrawNumSlide != 0) {
|
|
|
|
|
var _last_dig = DrawNumSlide % 10;
|
|
|
|
|
num_slide_text_width += this.DigitWidths[_last_dig];
|
|
|
|
|
DrawNumSlide = (DrawNumSlide / 10) >> 0;
|
|
|
|
|
}
|
|
|
|
|
page.Draw(context, page.left, page.top, page.right - page.left, page.bottom - page.top);
|
|
|
|
|
if (!page.IsLocked) {
|
|
|
|
|
if (i == this.m_oWordControl.m_oDrawingDocument.SlideCurrent || !page.IsSelected) {
|
|
|
|
|
g.b_color1(0, 0, 0, 255);
|
|
|
|
|
} else {
|
|
|
|
|
g.b_color1(191, 191, 191, 255);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
g.b_color1(211, 79, 79, 255);
|
|
|
|
|
}
|
|
|
|
|
g.t("" + (i + 1), (_digit_distance - num_slide_text_width) / 2, (page.top * g_dKoef_pix_to_mm + 3));
|
|
|
|
|
}
|
|
|
|
|
this.OnUpdateOverlay();
|
|
|
|
|
};
|
|
|
|
|
this.OnUpdateOverlay = function () {
|
|
|
|
|
if (!this.m_bIsVisible) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var canvas = this.m_oWordControl.m_oThumbnailsBack.HtmlElement;
|
|
|
|
|
if (null == canvas) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var context = canvas.getContext("2d");
|
|
|
|
|
var _width = canvas.width;
|
|
|
|
|
var _height = canvas.height;
|
|
|
|
|
context.fillStyle = GlobalSkin.BackgroundColorThumbnails;
|
|
|
|
|
context.fillRect(0, 0, _width, _height);
|
|
|
|
|
var _style_select = "#848484";
|
|
|
|
|
var _style_focus = "#CFCFCF";
|
|
|
|
|
var _style_select_focus = "#848484";
|
|
|
|
|
context.fillStyle = _style_select;
|
|
|
|
|
var _border = this.const_border_w;
|
|
|
|
|
for (var i = 0; i < this.SlidesCount; i++) {
|
|
|
|
|
var page = this.m_arrPages[i];
|
|
|
|
|
if (page.IsLocked) {
|
|
|
|
|
var _lock_focus = "#D34F4F";
|
|
|
|
|
var _lock_color = "#D34F4F";
|
|
|
|
|
if (page.IsFocused) {
|
|
|
|
|
this.FocusRectFlat(_lock_focus, context, page.left, page.top, page.right, page.bottom);
|
|
|
|
|
} else {
|
|
|
|
|
this.FocusRectFlat(_lock_color, context, page.left, page.top, page.right, page.bottom);
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (page.IsSelected && page.IsFocused) {
|
|
|
|
|
this.FocusRectFlat(_style_select_focus, context, page.left, page.top, page.right, page.bottom);
|
|
|
|
|
} else {
|
|
|
|
|
if (page.IsSelected) {
|
|
|
|
|
this.FocusRectFlat(_style_select, context, page.left, page.top, page.right, page.bottom);
|
|
|
|
|
} else {
|
|
|
|
|
if (page.IsFocused) {
|
|
|
|
|
this.FocusRectFlat(_style_focus, context, page.left, page.top, page.right, page.bottom);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (this.IsMouseDownTrack && !this.IsMouseDownTrackSimple && -1 != this.MouseDownTrackPosition) {
|
|
|
|
|
context.strokeStyle = "#DEDEDE";
|
|
|
|
|
var y = (0.5 * this.const_offset_y) >> 0;
|
|
|
|
|
if (this.MouseDownTrackPosition != 0) {
|
|
|
|
|
y = (this.m_arrPages[this.MouseDownTrackPosition - 1].bottom + 1.5 * this.const_border_w) >> 0;
|
|
|
|
|
}
|
|
|
|
|
var _left_pos = 0;
|
|
|
|
|
var _right_pos = _width;
|
|
|
|
|
if (this.m_arrPages.length > 0) {
|
|
|
|
|
_left_pos = this.m_arrPages[0].left + 4;
|
|
|
|
|
_right_pos = this.m_arrPages[0].right - 4;
|
|
|
|
|
}
|
|
|
|
|
context.lineWidth = 3;
|
|
|
|
|
context.beginPath();
|
|
|
|
|
context.moveTo(_left_pos, y + 0.5);
|
|
|
|
|
context.lineTo(_right_pos, y + 0.5);
|
|
|
|
|
context.stroke();
|
|
|
|
|
context.beginPath();
|
|
|
|
|
if (null != this.MouseTrackCommonImage) {
|
|
|
|
|
context.drawImage(this.MouseTrackCommonImage, 0, 0, (this.MouseTrackCommonImage.width + 1) >> 1, this.MouseTrackCommonImage.height, _left_pos - this.MouseTrackCommonImage.width, y - (this.MouseTrackCommonImage.height >> 1), (this.MouseTrackCommonImage.width + 1) >> 1, this.MouseTrackCommonImage.height);
|
|
|
|
|
context.drawImage(this.MouseTrackCommonImage, this.MouseTrackCommonImage.width >> 1, 0, (this.MouseTrackCommonImage.width + 1) >> 1, this.MouseTrackCommonImage.height, _right_pos + (this.MouseTrackCommonImage.width >> 1), y - (this.MouseTrackCommonImage.height >> 1), (this.MouseTrackCommonImage.width + 1) >> 1, this.MouseTrackCommonImage.height);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.FocusRectDraw = function (ctx, x, y, r, b) {
|
|
|
|
|
ctx.rect(x - this.const_border_w, y, r - x + this.const_border_w, b - y);
|
|
|
|
|
};
|
|
|
|
|
this.FocusRectFlat = function (_color, ctx, x, y, r, b) {
|
|
|
|
|
ctx.beginPath();
|
|
|
|
|
ctx.strokeStyle = _color;
|
|
|
|
|
ctx.lineWidth = 2;
|
|
|
|
|
ctx.rect(x - 2, y - 2, r - x + 4, b - y + 4);
|
|
|
|
|
ctx.stroke();
|
|
|
|
|
ctx.beginPath();
|
|
|
|
|
if (true) {
|
|
|
|
|
ctx.lineWidth = 1;
|
|
|
|
|
ctx.strokeStyle = "#FFFFFF";
|
|
|
|
|
ctx.rect(x - 0.5, y - 0.5, r - x + 1, b - y + 1);
|
|
|
|
|
ctx.stroke();
|
|
|
|
|
ctx.beginPath();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.onCheckUpdate = function () {
|
|
|
|
|
if (!this.m_bIsVisible || 0 == this.DigitWidths.length) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.m_oWordControl.m_oApi.isSaveFonts_Images) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.m_lDrawingFirst == -1 || this.m_lDrawingEnd == -1) {
|
|
|
|
|
if (this.m_oWordControl.m_oDrawingDocument.IsEmptyPresentation) {
|
|
|
|
|
if (!this.bIsEmptyDrawed) {
|
|
|
|
|
this.bIsEmptyDrawed = true;
|
|
|
|
|
this.OnPaint();
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.bIsEmptyDrawed = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.bIsEmptyDrawed = false;
|
|
|
|
|
if (!this.m_bIsUpdate) {
|
|
|
|
|
for (var i = this.m_lDrawingFirst; i <= this.m_lDrawingEnd; i++) {
|
|
|
|
|
var page = this.m_arrPages[i];
|
|
|
|
|
if (null == page.cachedImage || page.IsRecalc) {
|
|
|
|
|
this.m_bIsUpdate = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if ((page.cachedImage.image.width != (page.right - page.left)) || (page.cachedImage.image.height != (page.bottom - page.top))) {
|
|
|
|
|
this.m_bIsUpdate = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!this.m_bIsUpdate) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
for (var i = this.m_lDrawingFirst; i <= this.m_lDrawingEnd; i++) {
|
|
|
|
|
var page = this.m_arrPages[i];
|
|
|
|
|
var w = page.right - page.left;
|
|
|
|
|
var h = page.bottom - page.top;
|
|
|
|
|
if (null != page.cachedImage) {
|
|
|
|
|
if ((page.cachedImage.image.width != w) || (page.cachedImage.image.height != h) || page.IsRecalc) {
|
|
|
|
|
this.m_oCacheManager.UnLock(page.cachedImage);
|
|
|
|
|
page.cachedImage = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (null == page.cachedImage) {
|
|
|
|
|
page.cachedImage = this.m_oCacheManager.Lock(w, h);
|
|
|
|
|
var g = new CGraphics();
|
|
|
|
|
g.IsNoDrawingEmptyPlaceholder = true;
|
|
|
|
|
g.IsThumbnail = true;
|
|
|
|
|
g.init(page.cachedImage.image.ctx, w, h, this.SlideWidth, this.SlideHeight);
|
|
|
|
|
g.m_oFontManager = this.m_oFontManager;
|
|
|
|
|
g.transform(1, 0, 0, 1, 0, 0);
|
|
|
|
|
var bIsShowPars = this.m_oWordControl.m_oApi.ShowParaMarks;
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = false;
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.DrawPage(i, g);
|
|
|
|
|
this.m_oWordControl.m_oApi.ShowParaMarks = bIsShowPars;
|
|
|
|
|
page.IsRecalc = false;
|
|
|
|
|
this.m_bIsUpdate = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.OnPaint();
|
|
|
|
|
this.m_bIsUpdate = false;
|
|
|
|
|
};
|
|
|
|
|
this.SetFocusElement = function (type) {
|
|
|
|
|
switch (type) {
|
|
|
|
|
case FOCUS_OBJECT_MAIN:
|
|
|
|
|
this.FocusObjType = FOCUS_OBJECT_MAIN;
|
|
|
|
|
break;
|
|
|
|
|
case FOCUS_OBJECT_THUMBNAILS:
|
|
|
|
|
if (this.LockMainObjType) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.FocusObjType = FOCUS_OBJECT_THUMBNAILS;
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.resetStateCurSlide(true);
|
|
|
|
|
break;
|
|
|
|
|
case FOCUS_OBJECT_NOTES:
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.GetSelectedSlidesRange = function () {
|
|
|
|
|
var _min = this.m_oWordControl.m_oDrawingDocument.SlideCurrent;
|
|
|
|
|
var _max = _min;
|
|
|
|
|
var pages_count = this.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
if (this.m_arrPages[i].IsSelected) {
|
|
|
|
|
if (i < _min) {
|
|
|
|
|
_min = i;
|
|
|
|
|
}
|
|
|
|
|
if (i > _max) {
|
|
|
|
|
_max = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
Min: _min,
|
|
|
|
|
Max: _max
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
this.GetSelectedArray = function () {
|
|
|
|
|
var _array = [];
|
|
|
|
|
var pages_count = this.m_arrPages.length;
|
|
|
|
|
for (var i = 0; i < pages_count; i++) {
|
|
|
|
|
if (this.m_arrPages[i].IsSelected) {
|
|
|
|
|
_array[_array.length] = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return _array;
|
|
|
|
|
};
|
|
|
|
|
this.CorrectShiftSelect = function (isTop, isEnd) {
|
|
|
|
|
var drDoc = this.m_oWordControl.m_oDrawingDocument;
|
|
|
|
|
var slidesCount = drDoc.SlidesCount;
|
|
|
|
|
var min_max = this.GetSelectedSlidesRange();
|
|
|
|
|
var _page = this.m_oWordControl.m_oDrawingDocument.SlideCurrent;
|
|
|
|
|
if (isEnd) {
|
|
|
|
|
_page = isTop ? 0 : slidesCount - 1;
|
|
|
|
|
} else {
|
|
|
|
|
if (isTop) {
|
|
|
|
|
if (min_max.Min != _page) {
|
|
|
|
|
_page = min_max.Min - 1;
|
|
|
|
|
if (_page < 0) {
|
|
|
|
|
_page = 0;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
_page = min_max.Max - 1;
|
|
|
|
|
if (_page < 0) {
|
|
|
|
|
_page = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (min_max.Min != _page) {
|
|
|
|
|
_page = min_max.Min + 1;
|
|
|
|
|
if (_page >= slidesCount) {
|
|
|
|
|
_page = slidesCount - 1;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
_page = min_max.Max + 1;
|
|
|
|
|
if (_page >= slidesCount) {
|
|
|
|
|
_page = slidesCount - 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var _max = _page;
|
|
|
|
|
var _min = this.m_oWordControl.m_oDrawingDocument.SlideCurrent;
|
|
|
|
|
if (_min > _max) {
|
|
|
|
|
var _temp = _max;
|
|
|
|
|
_max = _min;
|
|
|
|
|
_min = _temp;
|
|
|
|
|
}
|
|
|
|
|
for (var i = 0; i < _min; i++) {
|
|
|
|
|
this.m_arrPages[i].IsSelected = false;
|
|
|
|
|
}
|
|
|
|
|
for (var i = _min; i <= _max; i++) {
|
|
|
|
|
this.m_arrPages[i].IsSelected = true;
|
|
|
|
|
}
|
|
|
|
|
for (var i = _max + 1; i < slidesCount; i++) {
|
|
|
|
|
this.m_arrPages[i].IsSelected = false;
|
|
|
|
|
}
|
|
|
|
|
this.OnUpdateOverlay();
|
|
|
|
|
this.ShowPage(_page);
|
|
|
|
|
};
|
|
|
|
|
this.onKeyDown = function (e) {
|
|
|
|
|
var control = oThis.m_oWordControl.m_oThumbnails.HtmlElement;
|
|
|
|
|
if (global_mouseEvent.IsLocked == true && global_mouseEvent.Sender == control) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
check_KeyboardEvent(e);
|
|
|
|
|
switch (global_keyboardEvent.KeyCode) {
|
|
|
|
|
case 13:
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
var _selected_thumbnails = this.GetSelectedArray();
|
|
|
|
|
if (_selected_thumbnails.length > 0) {
|
|
|
|
|
var _last_selected_slide_num = _selected_thumbnails[_selected_thumbnails.length - 1];
|
|
|
|
|
this.m_oWordControl.GoToPage(_last_selected_slide_num);
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.addNextSlide();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 46:
|
|
|
|
|
case 8:
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
var _delete_array = this.GetSelectedArray();
|
|
|
|
|
if (!this.m_oWordControl.m_oApi.IsSupportEmptyPresentation) {
|
|
|
|
|
if (_delete_array.length == this.m_oWordControl.m_oDrawingDocument.SlidesCount) {
|
|
|
|
|
_delete_array.splice(0, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (_delete_array.length != 0) {
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.deleteSlides(_delete_array);
|
|
|
|
|
}
|
|
|
|
|
if (0 == this.m_oWordControl.m_oLogicDocument.Slides.length) {
|
|
|
|
|
this.m_bIsUpdate = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 34:
|
|
|
|
|
case 40:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey && global_keyboardEvent.ShiftKey) {
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
var _presentation = this.m_oWordControl.m_oLogicDocument;
|
|
|
|
|
History.Create_NewPoint(historydescription_Presentation_MoveSlidesToEnd);
|
|
|
|
|
var _selection_array = this.GetSelectedArray();
|
|
|
|
|
_presentation.moveSlides(_selection_array, _presentation.Slides.length);
|
|
|
|
|
_presentation.Recalculate();
|
|
|
|
|
_presentation.Document_UpdateInterfaceState();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
_presentation = this.m_oWordControl.m_oLogicDocument;
|
|
|
|
|
var _selected_array = this.GetSelectedArray();
|
|
|
|
|
var can_move = false,
|
|
|
|
|
first_index;
|
|
|
|
|
for (var i = _selected_array.length - 1; i > -1; i--) {
|
|
|
|
|
if (i === _selected_array.length - 1) {
|
|
|
|
|
if (_selected_array[i] < _presentation.Slides.length - 1) {
|
|
|
|
|
can_move = true;
|
|
|
|
|
first_index = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (Math.abs(_selected_array[i] - _selected_array[i + 1]) > 1) {
|
|
|
|
|
can_move = true;
|
|
|
|
|
first_index = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (can_move) {
|
|
|
|
|
History.Create_NewPoint(historydescription_Presentation_MoveSlidesNextPos);
|
|
|
|
|
for (var i = first_index; i > -1; --i) {
|
|
|
|
|
_presentation.moveSlides([_selected_array[i]], _selected_array[i] + 2);
|
|
|
|
|
}
|
|
|
|
|
_presentation.Recalculate();
|
|
|
|
|
_presentation.Document_UpdateInterfaceState();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var drDoc = this.m_oWordControl.m_oDrawingDocument;
|
|
|
|
|
var slidesCount = drDoc.SlidesCount;
|
|
|
|
|
if (!global_keyboardEvent.ShiftKey) {
|
|
|
|
|
if (drDoc.SlideCurrent < (slidesCount - 1)) {
|
|
|
|
|
this.m_oWordControl.GoToPage(drDoc.SlideCurrent + 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (drDoc.SlidesCount > 0) {
|
|
|
|
|
this.m_oWordControl.GoToPage(drDoc.SlidesCount - 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.CorrectShiftSelect(false, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 36:
|
|
|
|
|
var drDoc = this.m_oWordControl.m_oDrawingDocument;
|
|
|
|
|
if (!global_keyboardEvent.ShiftKey) {
|
|
|
|
|
if (drDoc.SlideCurrent > 0) {
|
|
|
|
|
this.m_oWordControl.GoToPage(0);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.CorrectShiftSelect(true, true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 35:
|
|
|
|
|
var drDoc = this.m_oWordControl.m_oDrawingDocument;
|
|
|
|
|
var slidesCount = drDoc.SlidesCount;
|
|
|
|
|
if (!global_keyboardEvent.ShiftKey) {
|
|
|
|
|
if (drDoc.SlideCurrent != (slidesCount - 1)) {
|
|
|
|
|
this.m_oWordControl.GoToPage(slidesCount - 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.CorrectShiftSelect(false, true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 65:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
var drDoc = this.m_oWordControl.m_oDrawingDocument;
|
|
|
|
|
var slidesCount = drDoc.SlidesCount;
|
|
|
|
|
for (var i = 0; i < slidesCount; i++) {
|
|
|
|
|
this.m_arrPages[i].IsSelected = true;
|
|
|
|
|
}
|
|
|
|
|
this.OnUpdateOverlay();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 89:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 90:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 88:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
var doc = editor.WordControl.m_oLogicDocument;
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === true || doc.Document_Is_SelectionLocked(changestype_RemoveSlide) === false) {
|
|
|
|
|
Editor_Copy(editor, this.m_oWordControl.m_oLogicDocument.viewMode === false);
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 86:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (!window.GlobalPasteFlag) {
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
if (!window.USER_AGENT_SAFARI_MACOS) {
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.Create_NewHistoryPoint(historydescription_Presentation_PasteOnThumbnails);
|
|
|
|
|
window.GlobalPasteFlag = true;
|
|
|
|
|
editor.waitSave = true;
|
|
|
|
|
Editor_Paste(this.m_oWordControl.m_oApi, true);
|
|
|
|
|
return undefined;
|
|
|
|
|
} else {
|
|
|
|
|
if (0 === window.GlobalPasteFlagCounter) {
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.Create_NewHistoryPoint(historydescription_Presentation_PasteOnThumbnailsSafari);
|
|
|
|
|
SafariIntervalFocus();
|
|
|
|
|
window.GlobalPasteFlag = true;
|
|
|
|
|
editor.waitSave = true;
|
|
|
|
|
Editor_Paste(this.m_oWordControl.m_oApi, true);
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (window.USER_AGENT_SAFARI_MACOS) {
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 67:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
Editor_Copy(editor);
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 77:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
var _selected_thumbnails = this.GetSelectedArray();
|
|
|
|
|
if (_selected_thumbnails.length > 0) {
|
|
|
|
|
var _last_selected_slide_num = _selected_thumbnails[_selected_thumbnails.length - 1];
|
|
|
|
|
this.m_oWordControl.GoToPage(_last_selected_slide_num);
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.addNextSlide();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 68:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
editor.DublicateSlide();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 33:
|
|
|
|
|
case 38:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey && global_keyboardEvent.ShiftKey) {
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
var _presentation = this.m_oWordControl.m_oLogicDocument;
|
|
|
|
|
History.Create_NewPoint(historydescription_Presentation_MoveSlidesToStart);
|
|
|
|
|
var _selection_array = this.GetSelectedArray();
|
|
|
|
|
_presentation.moveSlides(_selection_array, 0);
|
|
|
|
|
_presentation.Recalculate();
|
|
|
|
|
_presentation.Document_UpdateInterfaceState();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (this.m_oWordControl.m_oLogicDocument.viewMode === false) {
|
|
|
|
|
_presentation = this.m_oWordControl.m_oLogicDocument;
|
|
|
|
|
var _selected_array = this.GetSelectedArray();
|
|
|
|
|
var can_move = false,
|
|
|
|
|
first_index;
|
|
|
|
|
for (var i = 0; i < _selected_array.length; ++i) {
|
|
|
|
|
if (i === 0) {
|
|
|
|
|
if (_selected_array[i] > 0) {
|
|
|
|
|
can_move = true;
|
|
|
|
|
first_index = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (Math.abs(_selected_array[i] - _selected_array[i - 1]) > 1) {
|
|
|
|
|
can_move = true;
|
|
|
|
|
first_index = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (can_move) {
|
|
|
|
|
History.Create_NewPoint(historydescription_Presentation_MoveSlidesPrevPos);
|
|
|
|
|
for (var i = first_index; i > -1; --i) {
|
|
|
|
|
_presentation.moveSlides([_selected_array[i]], _selected_array[i] - 1);
|
|
|
|
|
}
|
|
|
|
|
_presentation.Recalculate();
|
|
|
|
|
_presentation.Document_UpdateInterfaceState();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var drDoc = this.m_oWordControl.m_oDrawingDocument;
|
|
|
|
|
var slidesCount = drDoc.SlidesCount;
|
|
|
|
|
if (!global_keyboardEvent.ShiftKey) {
|
|
|
|
|
if (drDoc.SlideCurrent > 0) {
|
|
|
|
|
this.m_oWordControl.GoToPage(drDoc.SlideCurrent - 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
if (drDoc.SlidesCount > 0) {
|
|
|
|
|
this.m_oWordControl.GoToPage(0);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.CorrectShiftSelect(true, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 80:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
this.m_oWordControl.m_oApi.asc_Print();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 83:
|
|
|
|
|
if (global_keyboardEvent.CtrlKey) {
|
|
|
|
|
this.m_oWordControl.m_oApi.asc_Save();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
function DrawBackground(graphics, unifill, w, h) {
|
|
|
|
|
if (true) {
|
|
|
|
|
graphics.SetIntegerGrid(false);
|
|
|
|
|
var _l = 0;
|
|
|
|
|
var _t = 0;
|
|
|
|
|
var _r = (0 + w);
|
|
|
|
|
var _b = (0 + h);
|
|
|
|
|
graphics._s();
|
|
|
|
|
graphics._m(_l, _t);
|
|
|
|
|
graphics._l(_r, _t);
|
|
|
|
|
graphics._l(_r, _b);
|
|
|
|
|
graphics._l(_l, _b);
|
|
|
|
|
graphics._z();
|
|
|
|
|
graphics.b_color1(255, 255, 255, 255);
|
|
|
|
|
graphics.df();
|
|
|
|
|
graphics._e();
|
|
|
|
|
}
|
|
|
|
|
if (unifill == null || unifill.fill == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
graphics.SetIntegerGrid(false);
|
|
|
|
|
var _shape = {};
|
|
|
|
|
_shape.brush = unifill;
|
|
|
|
|
_shape.pen = null;
|
|
|
|
|
_shape.TransformMatrix = new CMatrix();
|
|
|
|
|
_shape.extX = w;
|
|
|
|
|
_shape.extY = h;
|
|
|
|
|
_shape.check_bounds = function (checker) {
|
|
|
|
|
checker._s();
|
|
|
|
|
checker._m(0, 0);
|
|
|
|
|
checker._l(this.extX, 0);
|
|
|
|
|
checker._l(this.extX, this.extY);
|
|
|
|
|
checker._l(0, this.extY);
|
|
|
|
|
checker._z();
|
|
|
|
|
checker._e();
|
|
|
|
|
};
|
|
|
|
|
var shape_drawer = new CShapeDrawer();
|
|
|
|
|
shape_drawer.fromShape2(_shape, graphics, null);
|
|
|
|
|
shape_drawer.draw(null);
|
|
|
|
|
}
|
|
|
|
|
function CSlideDrawer() {
|
|
|
|
|
this.m_oWordControl = null;
|
|
|
|
|
this.CONST_MAX_SLIDE_CACHE_SIZE = 104857600;
|
|
|
|
|
this.CONST_BORDER = 10;
|
|
|
|
|
this.IsCached = false;
|
|
|
|
|
this.CachedCanvas = null;
|
|
|
|
|
this.CachedCanvasCtx = null;
|
|
|
|
|
this.BoundsChecker = new CSlideBoundsChecker();
|
|
|
|
|
this.bIsEmptyPresentation = false;
|
|
|
|
|
this.IsRecalculateSlide = false;
|
|
|
|
|
this.SlideEps = 20;
|
|
|
|
|
this.CheckRecalculateSlide = function () {
|
|
|
|
|
if (this.IsRecalculateSlide) {
|
|
|
|
|
this.IsRecalculateSlide = false;
|
|
|
|
|
this.m_oWordControl.m_oDrawingDocument.FirePaint();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.CheckSlide = function (slideNum) {
|
|
|
|
|
if (this.m_oWordControl.m_oApi.isSaveFonts_Images) {
|
|
|
|
|
this.IsRecalculateSlide = true;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.IsRecalculateSlide = false;
|
|
|
|
|
this.bIsEmptyPresentation = false;
|
|
|
|
|
if (-1 == slideNum) {
|
|
|
|
|
this.bIsEmptyPresentation = true;
|
|
|
|
|
}
|
|
|
|
|
var dKoef = this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
dKoef *= 2;
|
|
|
|
|
}
|
|
|
|
|
var w_mm = this.m_oWordControl.m_oLogicDocument.Width;
|
|
|
|
|
var h_mm = this.m_oWordControl.m_oLogicDocument.Height;
|
|
|
|
|
var w_px = (w_mm * dKoef) >> 0;
|
|
|
|
|
var h_px = (h_mm * dKoef) >> 0;
|
|
|
|
|
this.BoundsChecker.init(w_px, h_px, w_mm, h_mm);
|
|
|
|
|
this.BoundsChecker.transform(1, 0, 0, 1, 0, 0);
|
|
|
|
|
if (this.bIsEmptyPresentation) {
|
|
|
|
|
this.BoundsChecker._s();
|
|
|
|
|
this.BoundsChecker._m(0, 0);
|
|
|
|
|
this.BoundsChecker._l(w_mm, 0);
|
|
|
|
|
this.BoundsChecker._l(w_mm, h_mm);
|
|
|
|
|
this.BoundsChecker._l(0, h_mm);
|
|
|
|
|
this.BoundsChecker._z();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.DrawPage(slideNum, this.BoundsChecker);
|
|
|
|
|
var bIsResize = this.m_oWordControl.CheckCalculateDocumentSize(this.BoundsChecker.Bounds);
|
|
|
|
|
if (true) {
|
|
|
|
|
dKoef = this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
dKoef *= 2;
|
|
|
|
|
}
|
|
|
|
|
w_mm = this.m_oWordControl.m_oLogicDocument.Width;
|
|
|
|
|
h_mm = this.m_oWordControl.m_oLogicDocument.Height;
|
|
|
|
|
w_px = (w_mm * dKoef) >> 0;
|
|
|
|
|
h_px = (h_mm * dKoef) >> 0;
|
|
|
|
|
}
|
|
|
|
|
var _need_pix_width = this.BoundsChecker.Bounds.max_x - this.BoundsChecker.Bounds.min_x + 1 + 2 * this.SlideEps;
|
|
|
|
|
var _need_pix_height = this.BoundsChecker.Bounds.max_y - this.BoundsChecker.Bounds.min_y + 1 + 2 * this.SlideEps;
|
|
|
|
|
this.IsCached = false;
|
|
|
|
|
if (4 * _need_pix_width * _need_pix_height < this.CONST_MAX_SLIDE_CACHE_SIZE) {
|
|
|
|
|
this.IsCached = true;
|
|
|
|
|
}
|
|
|
|
|
if (this.IsCached) {
|
|
|
|
|
var _need_reinit_image = false;
|
|
|
|
|
if (null == this.CachedCanvas) {
|
|
|
|
|
_need_reinit_image = true;
|
|
|
|
|
} else {
|
|
|
|
|
if (this.CachedCanvas.width < _need_pix_width || this.CachedCanvas.height < _need_pix_height) {
|
|
|
|
|
_need_reinit_image = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (_need_reinit_image) {
|
|
|
|
|
this.CachedCanvas = null;
|
|
|
|
|
this.CachedCanvas = document.createElement("canvas");
|
|
|
|
|
this.CachedCanvas.width = _need_pix_width + 100;
|
|
|
|
|
this.CachedCanvas.height = _need_pix_height + 100;
|
|
|
|
|
this.CachedCanvasCtx = this.CachedCanvas.getContext("2d");
|
|
|
|
|
} else {
|
|
|
|
|
this.CachedCanvasCtx.clearRect(0, 0, _need_pix_width, _need_pix_height);
|
|
|
|
|
}
|
|
|
|
|
var g = new CGraphics();
|
|
|
|
|
g.init(this.CachedCanvasCtx, w_px, h_px, w_mm, h_mm);
|
|
|
|
|
g.m_oFontManager = g_fontManager;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
g.IsRetina = true;
|
|
|
|
|
}
|
|
|
|
|
g.m_oCoordTransform.tx = -this.BoundsChecker.Bounds.min_x + this.SlideEps;
|
|
|
|
|
g.m_oCoordTransform.ty = -this.BoundsChecker.Bounds.min_y + this.SlideEps;
|
|
|
|
|
g.transform(1, 0, 0, 1, 0, 0);
|
|
|
|
|
if (this.m_oWordControl.m_oApi.isViewMode) {
|
|
|
|
|
g.IsNoDrawingEmptyPlaceholderText = true;
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.DrawPage(slideNum, g);
|
|
|
|
|
} else {
|
|
|
|
|
if (null != this.CachedCanvas) {
|
|
|
|
|
this.CachedCanvas = null;
|
|
|
|
|
this.CachedCanvasCtx = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
this.DrawSlide = function (outputCtx, scrollX, scrollX_max, scrollY, scrollY_max, slideNum) {
|
|
|
|
|
var _rect = this.m_oWordControl.m_oDrawingDocument.SlideCurrectRect;
|
|
|
|
|
var _bounds = this.BoundsChecker.Bounds;
|
|
|
|
|
var _x = _rect.left + _bounds.min_x;
|
|
|
|
|
var _y = _rect.top + _bounds.min_y;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
_x = (_rect.left << 1) + _bounds.min_x;
|
|
|
|
|
_y = (_rect.top << 1) + _bounds.min_y;
|
|
|
|
|
}
|
|
|
|
|
if (this.bIsEmptyPresentation) {
|
|
|
|
|
var w_px = _bounds.max_x - _bounds.min_x + 1;
|
|
|
|
|
var h_px = _bounds.max_y - _bounds.min_y + 1;
|
|
|
|
|
outputCtx.lineWidth = 1;
|
|
|
|
|
outputCtx.strokeStyle = "#000000";
|
|
|
|
|
outputCtx.beginPath();
|
|
|
|
|
this.m_oWordControl.m_oDrawingDocument.AutoShapesTrack.AddRectDashClever(outputCtx, _x >> 0, _y >> 0, (_x + w_px) >> 0, (_y + h_px) >> 0, 2, 2, true);
|
|
|
|
|
outputCtx.beginPath();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.IsCached) {
|
|
|
|
|
var w_px = (_bounds.max_x - _bounds.min_x + 1 + 2 * this.SlideEps) >> 0;
|
|
|
|
|
var h_px = (_bounds.max_y - _bounds.min_y + 1 + 2 * this.SlideEps) >> 0;
|
|
|
|
|
if (w_px > this.CachedCanvas.width) {
|
|
|
|
|
w_px = this.CachedCanvas.width;
|
|
|
|
|
}
|
|
|
|
|
if (h_px > this.CachedCanvas.height) {
|
|
|
|
|
h_px = this.CachedCanvas.height;
|
|
|
|
|
}
|
|
|
|
|
outputCtx.drawImage(this.CachedCanvas, 0, 0, w_px, h_px, (_x >> 0) - this.SlideEps, (_y >> 0) - this.SlideEps, w_px, h_px);
|
|
|
|
|
} else {
|
|
|
|
|
var dKoef = this.m_oWordControl.m_nZoomValue * g_dKoef_mm_to_pix / 100;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
dKoef *= 2;
|
|
|
|
|
}
|
|
|
|
|
var w_mm = this.m_oWordControl.m_oLogicDocument.Width;
|
|
|
|
|
var h_mm = this.m_oWordControl.m_oLogicDocument.Height;
|
|
|
|
|
var w_px = (w_mm * dKoef) >> 0;
|
|
|
|
|
var h_px = (h_mm * dKoef) >> 0;
|
|
|
|
|
var g = new CGraphics();
|
|
|
|
|
g.init(outputCtx, w_px, h_px, w_mm, h_mm);
|
|
|
|
|
g.m_oFontManager = g_fontManager;
|
|
|
|
|
if (this.m_oWordControl.bIsRetinaSupport) {
|
|
|
|
|
g.IsRetina = true;
|
|
|
|
|
}
|
|
|
|
|
g.m_oCoordTransform.tx = _x - _bounds.min_x;
|
|
|
|
|
g.m_oCoordTransform.ty = _y - _bounds.min_y;
|
|
|
|
|
g.transform(1, 0, 0, 1, 0, 0);
|
|
|
|
|
if (this.m_oWordControl.m_oApi.isViewMode) {
|
|
|
|
|
g.IsNoDrawingEmptyPlaceholderText = true;
|
|
|
|
|
}
|
|
|
|
|
this.m_oWordControl.m_oLogicDocument.DrawPage(slideNum, g);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
window.g_comment_image = new Image();
|
|
|
|
|
window.g_comment_image.asc_complete = false;
|
|
|
|
|
window.g_comment_image.onload = function () {
|
|
|
|
|
window.g_comment_image.asc_complete = true;
|
|
|
|
|
};
|
|
|
|
|
window.g_comment_image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAR0AAAAlCAMAAABI6s09AAAABGdBTUEAALGPC/xhBQAAAMBQTFRF2Ypk03pP0nZJ1oNb68Ku03hL1X9U7MWy1X9V9d7T3JNv5bCW0nZJ9uXc////8dPE+vDq5rSb5a6U4aOF5K6T2Idg////1HxR6r6o03lN0nZJ6Lef+u7p8NDA0ndK////78++0nZJ8dPE////0nZJ1HtP2Ihh////03hM////////3JVy0nZJ0nZJ9+Xc0nZJ////3JVy3JVx////////AAAA3Zh38tbJ3ZZ08dXH4qaJ5a6U9N3R+/Tw////0nZJQeZHfgAAADZ0Uk5TZJaoUk+v3lzdEi9hDlIbKVN8eY54xTTnc/NKegRg9EJm8WQz7+3EFPYoSKborlkmCqeoJ00ATKvZ0wAAA3tJREFUaN7dmOdi2jAUhelukjaQkkGCGIHYbDAYNYOh93+r2mZIsq6WwVHD+RfukWx93OtjUsCxHoaE0fAB7yWvHFCcjB6JRI+jCc7kzMVfSEzD5zWj5yFdPuSXDLm9C7/nVOMyX5SvnDwRhZ4mWZz5+Dd0yJoToevTK7jNLxHzByryRYZcqemzK0fkbbWWaPVGRqxTqVH6tJ8/XbBfGPPVjVtlT/Tr9t/ToZ+l6bR2l2hxdITJQfLil6/syjqRwonwkDrrVKqePu15fy5XWfTr9s/eO+I0EvlYnRFuz7VCRHF1ZSdHavfOEIaEUHBZE/0XJbjTmuWfyf7Ze0ckqjgWeh86AVaoKPrlrVb6ztGx7h2RKLesRa8UUcUiHei0MJ2KePMVgY4+rQJj/7fzy0YZ6h2AzuacTYCOee8cRKcq0qmm78YgrZCNH/1w2zvHnSyTHOT9mjQsUjreK7vbq0d38fhVnqp3PFXvePnSMclB3q9Jw4DS+XNHFvHuq0X82d013SWqMGIrwjSia6B3dgPJrczhuWNC3Io7onQ6jfk0wrNazOJLNzp0l7iS2IWK0Duoo+gdbmUOz52j08GUTqQwwrOYhkAShjEesSKfRuVA5jRZJsTTO1fgMK8AdHA4+AvCiSsAHMU0KgfyP6JThelUITo4rIaS9yiwIp/GTXGW3NsUKEInUdGpAE+cd56s+EjS10xJRT6N8oHMQOdqzOjKFR17yadxgwcufsTnTjY80mlUFD/kcyeTOhmKXfWbW5d1KtW1nKyu5WR1D6WTRb76rd9nnUr5lnR8Szq+Czq1+/j6L0t698sXel/3tbRTJtZp8KT/5dWUz51Kmo5Xc0Gn3bxJRmaPZ8kMy02zLTrBseKcJnRabZ4Ol4VCGnp+q+2CTpD802m2x7Pc/k7ZqB8ATiqJ02CyEO/XTVa8vws6OLjtM3g4OP3bAHSKcHinCR3er6PTbwfYCZ1EvS2eBE5P69zB6R2agzZp6I7OFo8eDoNH7jTPQZs0dEgnOvRUfWQLp3kO2qShSzo4jA89nYdHcJrnoE0aOqUTHXpgBEfvNM9B1j9goQxEv1s60aHN4Oid5jnI+gcQHOp3TAeH4TGd5jm470gKB9jfNR1nOZjCA8I5NToWOcjhgeGcHB2LHGTwSOCcHh2LHNz7ZXBOkI5FDmr9J0jHIgd1/n8LiumvxDAoYwAAAABJRU5ErkJggg==";
|
2014-07-05 18:22:49 +00:00
|
|
|
|
var g_comment_image_offsets = [[5, 0, 16, 15], [31, 0, 16, 15], [57, 0, 19, 18], [86, 0, 19, 18], [115, 0, 32, 30], [157, 0, 32, 30], [199, 0, 38, 36], [247, 0, 38, 36]];
|