DocumentServer/OfficeWeb/sdk/Word/Drawing/Metafile.js
nikolay ivanov a8be6b9e72 init repo
2014-07-05 18:22:49 +00:00

1611 lines
55 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* 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
*
*/
var gr_state_pen = 0;
var gr_state_brush = 1;
var gr_state_pen_brush = 2;
var gr_state_state = 3;
var gr_state_all = 4;
function CFontSetup() {
this.Name = "";
this.Index = -1;
this.Size = 12;
this.Bold = false;
this.Italic = false;
this.SetUpIndex = -1;
this.SetUpSize = 12;
this.SetUpStyle = -1;
this.SetUpMatrix = new CMatrix();
}
CFontSetup.prototype = {
Clear: function () {
this.Name = "";
this.Index = -1;
this.Size = 12;
this.Bold = false;
this.Italic = false;
this.SetUpIndex = -1;
this.SetUpSize = 12;
this.SetUpStyle = -1;
this.SetUpMatrix = new CMatrix();
}
};
function CGrState_Pen() {
this.Type = gr_state_pen;
this.Pen = null;
}
CGrState_Pen.prototype = {
Init: function (_pen) {
if (_pen !== undefined) {
this.Pen = _pen.CreateDublicate();
}
}
};
function CGrState_Brush() {
this.Type = gr_state_brush;
this.Brush = null;
}
CGrState_Brush.prototype = {
Init: function (_brush) {
if (undefined !== _brush) {
this.Brush = _brush.CreateDublicate();
}
}
};
function CGrState_PenBrush() {
this.Type = gr_state_pen_brush;
this.Pen = null;
this.Brush = null;
}
CGrState_PenBrush.prototype = {
Init: function (_pen, _brush) {
if (undefined !== _pen && undefined !== _brush) {
this.Pen = _pen.CreateDublicate();
this.Brush = _brush.CreateDublicate();
}
}
};
function CHist_Clip() {
this.Path = null;
this.Rect = null;
this.IsIntegerGrid = false;
this.Transform = new CMatrix();
}
CHist_Clip.prototype = {
Init: function (path, rect, isIntegerGrid, transform) {
this.Path = path;
if (rect !== undefined) {
this.Rect = new _rect();
this.Rect.x = rect.x;
this.Rect.y = rect.y;
this.Rect.w = rect.w;
this.Rect.h = rect.h;
}
if (undefined !== isIntegerGrid) {
this.IsIntegerGrid = isIntegerGrid;
}
if (undefined !== transform) {
this.Transform = transform.CreateDublicate();
}
},
ToRenderer: function (renderer) {
if (this.Rect != null) {
var r = this.Rect;
renderer.StartClipPath();
renderer.rect(r.x, r.y, r.w, r.h);
renderer.EndClipPath();
} else {}
}
};
function CGrState_State() {
this.Type = gr_state_state;
this.Transform = null;
this.IsIntegerGrid = false;
this.Clips = null;
}
CGrState_State.prototype = {
Init: function (_transform, _isIntegerGrid, _clips) {
if (undefined !== _transform) {
this.Transform = _transform.CreateDublicate();
}
if (undefined !== _isIntegerGrid) {
this.IsIntegerGrid = _isIntegerGrid;
}
if (undefined !== _clips) {
this.Clips = _clips;
}
},
ApplyClips: function (renderer) {
var _len = this.Clips.length;
for (var i = 0; i < _len; i++) {
this.Clips[i].ToRenderer(renderer);
}
}
};
function CGrState() {
this.Parent = null;
this.States = [];
this.Clips = [];
}
CGrState.prototype = {
SavePen: function () {
if (null == this.Parent) {
return;
}
var _state = new CGrState_Pen();
_state.Init(this.Parent.m_oPen);
this.States.push(_state);
},
SaveBrush: function () {
if (null == this.Parent) {
return;
}
var _state = new CGrState_Brush();
_state.Init(this.Parent.m_oBrush);
this.States.push(_state);
},
SavePenBrush: function () {
if (null == this.Parent) {
return;
}
var _state = new CGrState_PenBrush();
_state.Init(this.Parent.m_oPen, this.Parent.m_oBrush);
this.States.push(_state);
},
RestorePen: function () {
var _ind = this.States.length - 1;
if (null == this.Parent || -1 == _ind) {
return;
}
var _state = this.States[_ind];
if (_state.Type == gr_state_pen) {
this.States.splice(_ind, 1);
var _c = _state.Pen.Color;
this.Parent.p_color(_c.R, _c.G, _c.B, _c.A);
}
},
RestoreBrush: function () {
var _ind = this.States.length - 1;
if (null == this.Parent || -1 == _ind) {
return;
}
var _state = this.States[_ind];
if (_state.Type == gr_state_brush) {
this.States.splice(_ind, 1);
var _c = _state.Brush.Color1;
this.Parent.b_color1(_c.R, _c.G, _c.B, _c.A);
}
},
RestorePenBrush: function () {
var _ind = this.States.length - 1;
if (null == this.Parent || -1 == _ind) {
return;
}
var _state = this.States[_ind];
if (_state.Type == gr_state_pen_brush) {
this.States.splice(_ind, 1);
var _cb = _state.Brush.Color1;
var _cp = _state.Pen.Color;
this.Parent.b_color1(_cb.R, _cb.G, _cb.B, _cb.A);
this.Parent.p_color(_cp.R, _cp.G, _cp.B, _cp.A);
}
},
SaveGrState: function () {
if (null == this.Parent) {
return;
}
var _state = new CGrState_State();
_state.Init(this.Parent.m_oTransform, !!this.Parent.m_bIntegerGrid, this.Clips);
this.States.push(_state);
this.Clips = [];
},
RestoreGrState: function () {
var _ind = this.States.length - 1;
if (null == this.Parent || -1 == _ind) {
return;
}
var _state = this.States[_ind];
if (_state.Type == gr_state_state) {
if (this.Clips.length > 0) {
this.Parent.RemoveClip();
for (var i = 0; i <= _ind; i++) {
var _s = this.States[i];
if (_s.Type == gr_state_state) {
var _c = _s.Clips;
var _l = _c.length;
for (var j = 0; j < _l; j++) {
this.Parent.transform3(_c[j].Transform);
this.Parent.SetIntegerGrid(_c[j].IsIntegerGrid);
var _r = _c[j].Rect;
var _restoreDumpedVectors = null;
if (this.Parent.private_removeVectors !== undefined) {
_restoreDumpedVectors = this.Parent.private_removeVectors();
}
this.Parent.StartClipPath();
this.Parent._s();
this.Parent._m(_r.x, _r.y);
this.Parent._l(_r.x + _r.w, _r.y);
this.Parent._l(_r.x + _r.w, _r.y + _r.h);
this.Parent._l(_r.x, _r.y + _r.h);
this.Parent._l(_r.x, _r.y);
this.Parent.EndClipPath();
if (null != _restoreDumpedVectors) {
this.Parent.private_restoreVectors(_restoreDumpedVectors);
}
}
}
}
}
this.Clips = _state.Clips;
this.States.splice(_ind, 1);
this.Parent.transform3(_state.Transform);
this.Parent.SetIntegerGrid(_state.IsIntegerGrid);
}
},
Save: function () {
this.SavePen();
this.SaveBrush();
this.SaveGrState();
},
Restore: function () {
this.RestoreGrState();
this.RestoreBrush();
this.RestorePen();
},
StartClipPath: function () {},
EndClipPath: function () {},
AddClipRect: function (_r) {
var _histClip = new CHist_Clip();
_histClip.Transform = this.Parent.m_oTransform.CreateDublicate();
_histClip.IsIntegerGrid = !!this.Parent.m_bIntegerGrid;
_histClip.Rect = new _rect();
_histClip.Rect.x = _r.x;
_histClip.Rect.y = _r.y;
_histClip.Rect.w = _r.w;
_histClip.Rect.h = _r.h;
this.Clips.push(_histClip);
this.Parent.StartClipPath();
this.Parent._s();
this.Parent._m(_r.x, _r.y);
this.Parent._l(_r.x + _r.w, _r.y);
this.Parent._l(_r.x + _r.w, _r.y + _r.h);
this.Parent._l(_r.x, _r.y + _r.h);
this.Parent._l(_r.x, _r.y);
this.Parent.EndClipPath();
}
};
var g_stringBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
function Base64Encode(srcData, nSrcLen, nOffset) {
if ("undefined" === typeof(nOffset)) {
nOffset = 0;
}
var nWritten = 0;
var nLen1 = (((nSrcLen / 3) >> 0) * 4);
var nLen2 = (nLen1 / 76) >> 0;
var nLen3 = 19;
var srcInd = 0;
var dstStr = "";
for (var i = 0; i <= nLen2; i++) {
if (i == nLen2) {
nLen3 = ((nLen1 % 76) / 4) >> 0;
}
for (var j = 0; j < nLen3; j++) {
var dwCurr = 0;
for (var n = 0; n < 3; n++) {
dwCurr |= srcData[srcInd+++nOffset];
dwCurr <<= 8;
}
for (var k = 0; k < 4; k++) {
var b = (dwCurr >>> 26) & 255;
dstStr += g_stringBase64[b];
dwCurr <<= 6;
dwCurr &= 4294967295;
}
}
}
nLen2 = (nSrcLen % 3 != 0) ? (nSrcLen % 3 + 1) : 0;
if (nLen2) {
var dwCurr = 0;
for (var n = 0; n < 3; n++) {
if (n < (nSrcLen % 3)) {
dwCurr |= srcData[srcInd+++nOffset];
}
dwCurr <<= 8;
}
for (var k = 0; k < nLen2; k++) {
var b = (dwCurr >>> 26) & 255;
dstStr += g_stringBase64[b];
dwCurr <<= 6;
}
nLen3 = (nLen2 != 0) ? 4 - nLen2 : 0;
for (var j = 0; j < nLen3; j++) {
dstStr += "=";
}
}
return dstStr;
}
function CMemory(bIsNoInit) {
this.Init = function () {
var _canvas = document.createElement("canvas");
var _ctx = _canvas.getContext("2d");
this.len = 1024 * 1024 * 5;
this.ImData = _ctx.createImageData(this.len / 4, 1);
this.data = this.ImData.data;
this.pos = 0;
delete _canvas;
};
this.ImData = null;
this.data = null;
this.len = 0;
this.pos = 0;
if (true !== bIsNoInit) {
this.Init();
}
this.Copy = function (oMemory, nPos, nLen) {
for (var Index = 0; Index < nLen; Index++) {
this.CheckSize(1);
this.data[this.pos++] = oMemory.data[Index + nPos];
}
};
this.CheckSize = function (count) {
if (this.pos + count >= this.len) {
var _canvas = document.createElement("canvas");
var _ctx = _canvas.getContext("2d");
var oldImData = this.ImData;
var oldData = this.data;
var oldPos = this.pos;
this.len *= 2;
this.ImData = _ctx.createImageData(this.len / 4, 1);
this.data = this.ImData.data;
var newData = this.data;
for (var i = 0; i < this.pos; i++) {
newData[i] = oldData[i];
}
delete _canvas;
}
};
this.GetBase64Memory = function () {
return Base64Encode(this.data, this.pos, 0);
};
this.GetBase64Memory2 = function (nPos, nLen) {
return Base64Encode(this.data, nLen, nPos);
};
this.GetCurPosition = function () {
return this.pos;
};
this.Seek = function (nPos) {
this.pos = nPos;
};
this.Skip = function (nDif) {
this.pos += nDif;
};
this.WriteBool = function (val) {
this.CheckSize(1);
if (false == val) {
this.data[this.pos++] = 0;
} else {
this.data[this.pos++] = 1;
}
};
this.WriteByte = function (val) {
this.CheckSize(1);
this.data[this.pos++] = val;
};
this.WriteLong = function (val) {
this.CheckSize(4);
this.data[this.pos++] = (val) & 255;
this.data[this.pos++] = (val >>> 8) & 255;
this.data[this.pos++] = (val >>> 16) & 255;
this.data[this.pos++] = (val >>> 24) & 255;
};
this.WriteDouble = function (val) {
this.CheckSize(4);
var lval = ((val * 100000) >> 0) & 4294967295;
this.data[this.pos++] = (lval) & 255;
this.data[this.pos++] = (lval >>> 8) & 255;
this.data[this.pos++] = (lval >>> 16) & 255;
this.data[this.pos++] = (lval >>> 24) & 255;
};
this.WriteDouble2 = function (val) {
this.CheckSize(8);
var aVal = this._doubleEncodeLE754(val);
this.data[this.pos++] = aVal[0];
this.data[this.pos++] = aVal[1];
this.data[this.pos++] = aVal[2];
this.data[this.pos++] = aVal[3];
this.data[this.pos++] = aVal[4];
this.data[this.pos++] = aVal[5];
this.data[this.pos++] = aVal[6];
this.data[this.pos++] = aVal[7];
};
this._doubleEncodeLE754 = function (v) {
var s, e, m, i, d, c, mLen, eLen, eBias, eMax;
var el = {
len: 8,
mLen: 52,
rt: 0
};
mLen = el.mLen,
eLen = el.len * 8 - el.mLen - 1,
eMax = (1 << eLen) - 1,
eBias = eMax >> 1;
s = v < 0 ? 1 : 0;
v = Math.abs(v);
if (isNaN(v) || (v == Infinity)) {
m = isNaN(v) ? 1 : 0;
e = eMax;
} else {
e = Math.floor(Math.log(v) / Math.LN2);
if (v * (c = Math.pow(2, -e)) < 1) {
e--;
c *= 2;
}
if (e + eBias >= 1) {
v += el.rt / c;
} else {
v += el.rt * Math.pow(2, 1 - eBias);
}
if (v * c >= 2) {
e++;
c /= 2;
}
if (e + eBias >= eMax) {
m = 0;
e = eMax;
} else {
if (e + eBias >= 1) {
m = (v * c - 1) * Math.pow(2, mLen);
e = e + eBias;
} else {
m = v * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
e = 0;
}
}
}
var a = new Array(8);
for (i = 0, d = 1; mLen >= 8; a[i] = m & 255, i += d, m /= 256, mLen -= 8) {}
for (e = (e << mLen) | m, eLen += mLen; eLen > 0; a[i] = e & 255, i += d, e /= 256, eLen -= 8) {}
a[i - d] |= s * 128;
return a;
};
this.WriteString = function (text) {
if ("string" != typeof text) {
text = text + "";
}
var count = text.length & 65535;
this.CheckSize(count + 2);
this.data[this.pos++] = count & 255;
this.data[this.pos++] = (count >>> 8) & 255;
for (var i = 0; i < count; i++) {
var c = text.charCodeAt(i) & 65535;
this.data[this.pos++] = c & 255;
this.data[this.pos++] = (c >>> 8) & 255;
}
};
this.WriteString2 = function (text) {
if ("string" != typeof text) {
text = text + "";
}
var count = text.length & 2147483647;
var countWrite = 2 * count;
this.WriteLong(countWrite);
this.CheckSize(countWrite);
for (var i = 0; i < count; i++) {
var c = text.charCodeAt(i) & 65535;
this.data[this.pos++] = c & 255;
this.data[this.pos++] = (c >>> 8) & 255;
}
};
this.WriteString3 = function (text) {
if ("string" != typeof text) {
text = text + "";
}
var count = text.length & 2147483647;
var countWrite = 2 * count;
this.CheckSize(countWrite);
for (var i = 0; i < count; i++) {
var c = text.charCodeAt(i) & 65535;
this.data[this.pos++] = c & 255;
this.data[this.pos++] = (c >>> 8) & 255;
}
};
this.ClearNoAttack = function () {
this.pos = 0;
};
this.WriteLongAt = function (_pos, val) {
this.data[_pos++] = (val) & 255;
this.data[_pos++] = (val >>> 8) & 255;
this.data[_pos++] = (val >>> 16) & 255;
this.data[_pos++] = (val >>> 24) & 255;
};
this.WriteBuffer = function (data, _pos, count) {
this.CheckSize(count);
for (var i = 0; i < count; i++) {
this.data[this.pos++] = data[_pos + i];
}
};
}
function CCommandsType() {
this.ctPenXML = 0;
this.ctPenColor = 1;
this.ctPenAlpha = 2;
this.ctPenSize = 3;
this.ctPenDashStyle = 4;
this.ctPenLineStartCap = 5;
this.ctPenLineEndCap = 6;
this.ctPenLineJoin = 7;
this.ctPenDashPatern = 8;
this.ctPenDashPatternCount = 9;
this.ctPenDashOffset = 10;
this.ctPenAlign = 11;
this.ctPenMiterLimit = 12;
this.ctBrushXML = 20;
this.ctBrushType = 21;
this.ctBrushColor1 = 22;
this.ctBrushColor2 = 23;
this.ctBrushAlpha1 = 24;
this.ctBrushAlpha2 = 25;
this.ctBrushTexturePath = 26;
this.ctBrushTextureAlpha = 27;
this.ctBrushTextureMode = 28;
this.ctBrushRectable = 29;
this.ctBrushRectableEnabled = 30;
this.ctBrushGradient = 31;
this.ctFontXML = 40;
this.ctFontName = 41;
this.ctFontSize = 42;
this.ctFontStyle = 43;
this.ctFontPath = 44;
this.ctFontGID = 45;
this.ctFontCharSpace = 46;
this.ctShadowXML = 50;
this.ctShadowVisible = 51;
this.ctShadowDistanceX = 52;
this.ctShadowDistanceY = 53;
this.ctShadowBlurSize = 54;
this.ctShadowColor = 55;
this.ctShadowAlpha = 56;
this.ctEdgeXML = 70;
this.ctEdgeVisible = 71;
this.ctEdgeDistance = 72;
this.ctEdgeColor = 73;
this.ctEdgeAlpha = 74;
this.ctDrawText = 80;
this.ctDrawTextEx = 81;
this.ctPathCommandMoveTo = 91;
this.ctPathCommandLineTo = 92;
this.ctPathCommandLinesTo = 93;
this.ctPathCommandCurveTo = 94;
this.ctPathCommandCurvesTo = 95;
this.ctPathCommandArcTo = 96;
this.ctPathCommandClose = 97;
this.ctPathCommandEnd = 98;
this.ctDrawPath = 99;
this.ctPathCommandStart = 100;
this.ctPathCommandGetCurrentPoint = 101;
this.ctPathCommandText = 102;
this.ctPathCommandTextEx = 103;
this.ctDrawImage = 110;
this.ctDrawImageFromFile = 111;
this.ctSetParams = 120;
this.ctBeginCommand = 121;
this.ctEndCommand = 122;
this.ctSetTransform = 130;
this.ctResetTransform = 131;
this.ctClipMode = 140;
this.ctCommandLong1 = 150;
this.ctCommandDouble1 = 151;
this.ctCommandString1 = 152;
this.ctCommandLong2 = 153;
this.ctCommandDouble2 = 154;
this.ctCommandString2 = 155;
this.ctPageWidth = 200;
this.ctPageHeight = 201;
this.ctPageStart = 202;
this.ctPageEnd = 203;
this.ctError = 255;
}
var CommandType = new CCommandsType();
var MetaBrushType = {
Solid: 0,
Gradient: 1,
Texture: 2
};
function CMetafile(width, height) {
this.Width = width;
this.Height = height;
this.m_oPen = new CPen();
this.m_oBrush = new CBrush();
this.m_oFont = null;
this.m_oPen.Color.R = -1;
this.m_oBrush.Color1.R = -1;
this.m_oBrush.Color2.R = -1;
this.m_oTransform = new CMatrix();
this.m_arrayCommands = new Array();
this.Memory = null;
this.VectorMemoryForPrint = null;
this.BrushType = MetaBrushType.Solid;
this.m_oTextPr = null;
this.m_oLastFont = new CFontSetup();
}
CMetafile.prototype = {
p_color: function (r, g, b, a) {
if (this.m_oPen.Color.R != r || this.m_oPen.Color.G != g || this.m_oPen.Color.B != b) {
this.m_oPen.Color.R = r;
this.m_oPen.Color.G = g;
this.m_oPen.Color.B = b;
var value = b << 16 | g << 8 | r;
this.Memory.WriteByte(CommandType.ctPenColor);
this.Memory.WriteLong(value);
}
if (this.m_oPen.Color.A != a) {
this.m_oPen.Color.A = a;
this.Memory.WriteByte(CommandType.ctPenAlpha);
this.Memory.WriteByte(a);
}
},
p_width: function (w) {
var val = w / 1000;
if (this.m_oPen.Size != val) {
this.m_oPen.Size = val;
this.Memory.WriteByte(CommandType.ctPenSize);
this.Memory.WriteDouble(val);
}
},
b_color1: function (r, g, b, a) {
if (this.BrushType != MetaBrushType.Solid) {
this.Memory.WriteByte(CommandType.ctBrushType);
this.Memory.WriteLong(1000);
this.BrushType = MetaBrushType.Solid;
}
if (this.m_oBrush.Color1.R != r || this.m_oBrush.Color1.G != g || this.m_oBrush.Color1.B != b) {
this.m_oBrush.Color1.R = r;
this.m_oBrush.Color1.G = g;
this.m_oBrush.Color1.B = b;
var value = b << 16 | g << 8 | r;
this.Memory.WriteByte(CommandType.ctBrushColor1);
this.Memory.WriteLong(value);
}
if (this.m_oBrush.Color1.A != a) {
this.m_oBrush.Color1.A = a;
this.Memory.WriteByte(CommandType.ctBrushAlpha1);
this.Memory.WriteByte(a);
}
},
b_color2: function (r, g, b, a) {
if (this.m_oBrush.Color2.R != r || this.m_oBrush.Color2.G != g || this.m_oBrush.Color2.B != b) {
this.m_oBrush.Color2.R = r;
this.m_oBrush.Color2.G = g;
this.m_oBrush.Color2.B = b;
var value = b << 16 | g << 8 | r;
this.Memory.WriteByte(CommandType.ctBrushColor2);
this.Memory.WriteLong(value);
}
if (this.m_oBrush.Color2.A != a) {
this.m_oBrush.Color2.A = a;
this.Memory.WriteByte(CommandType.ctBrushAlpha2);
this.Memory.WriteByte(a);
}
},
put_brushTexture: function (src, mode) {
if (this.BrushType != MetaBrushType.Texture) {
this.Memory.WriteByte(CommandType.ctBrushType);
this.Memory.WriteLong(3008);
this.BrushType = MetaBrushType.Texture;
}
this.m_oBrush.Color1.R = -1;
this.m_oBrush.Color1.G = -1;
this.m_oBrush.Color1.B = -1;
this.m_oBrush.Color1.A = -1;
this.Memory.WriteByte(CommandType.ctBrushTexturePath);
var _src = src;
if (window.editor) {
var _search = window.editor.DocumentUrl;
if (0 == _src.indexOf(_search)) {
_src = _src.substring(_search.length);
}
} else {
if (!window.editor) {
var _api = window["Asc"]["editor"];
var _mask = g_sResourceServiceLocalUrl + _api.documentId + "/";
if (0 == src.indexOf(_mask)) {
_src = src.substring(_mask.length);
}
}
}
this.Memory.WriteString(_src);
this.Memory.WriteByte(CommandType.ctBrushTextureMode);
this.Memory.WriteByte(mode);
},
put_BrushTextureAlpha: function (alpha) {
var write = alpha;
if (null == alpha || undefined == alpha) {
write = 255;
}
this.Memory.WriteByte(CommandType.ctBrushTextureAlpha);
this.Memory.WriteByte(write);
},
put_BrushGradient: function (gradFill, points, transparent) {
this.BrushType = MetaBrushType.Gradient;
this.Memory.WriteByte(CommandType.ctBrushGradient);
this.Memory.WriteByte(g_nodeAttributeStart);
if (gradFill.path != null && (gradFill.lin == null || gradFill.lin == undefined)) {
this.Memory.WriteByte(1);
this.Memory.WriteByte(gradFill.path);
this.Memory.WriteDouble(points.x0);
this.Memory.WriteDouble(points.y0);
this.Memory.WriteDouble(points.x1);
this.Memory.WriteDouble(points.y1);
this.Memory.WriteDouble(points.r0);
this.Memory.WriteDouble(points.r1);
} else {
this.Memory.WriteByte(0);
if (null == gradFill.lin) {
this.Memory.WriteLong(90 * 60000);
this.Memory.WriteBool(false);
} else {
this.Memory.WriteLong(gradFill.lin.angle);
this.Memory.WriteBool(gradFill.lin.scale);
}
this.Memory.WriteDouble(points.x0);
this.Memory.WriteDouble(points.y0);
this.Memory.WriteDouble(points.x1);
this.Memory.WriteDouble(points.y1);
}
var _colors = gradFill.colors;
this.Memory.WriteByte(2);
this.Memory.WriteLong(_colors.length);
for (var i = 0; i < _colors.length; i++) {
this.Memory.WriteLong(_colors[i].pos);
this.Memory.WriteByte(_colors[i].color.RGBA.R);
this.Memory.WriteByte(_colors[i].color.RGBA.G);
this.Memory.WriteByte(_colors[i].color.RGBA.B);
if (null == transparent) {
this.Memory.WriteByte(_colors[i].color.RGBA.A);
} else {
this.Memory.WriteByte(transparent);
}
}
this.Memory.WriteByte(g_nodeAttributeEnd);
},
transform: function (sx, shy, shx, sy, tx, ty) {
if (this.m_oTransform.sx != sx || this.m_oTransform.shx != shx || this.m_oTransform.shy != shy || this.m_oTransform.sy != sy || this.m_oTransform.tx != tx || this.m_oTransform.ty != ty) {
this.m_oTransform.sx = sx;
this.m_oTransform.shx = shx;
this.m_oTransform.shy = shy;
this.m_oTransform.sy = sy;
this.m_oTransform.tx = tx;
this.m_oTransform.ty = ty;
this.Memory.WriteByte(CommandType.ctSetTransform);
this.Memory.WriteDouble(sx);
this.Memory.WriteDouble(shy);
this.Memory.WriteDouble(shx);
this.Memory.WriteDouble(sy);
this.Memory.WriteDouble(tx);
this.Memory.WriteDouble(ty);
}
},
_s: function () {
if (this.VectorMemoryForPrint != null) {
this.VectorMemoryForPrint.ClearNoAttack();
}
var _memory = (null == this.VectorMemoryForPrint) ? this.Memory : this.VectorMemoryForPrint;
_memory.WriteByte(CommandType.ctPathCommandStart);
},
_e: function () {
this.Memory.WriteByte(CommandType.ctPathCommandEnd);
},
_z: function () {
var _memory = (null == this.VectorMemoryForPrint) ? this.Memory : this.VectorMemoryForPrint;
_memory.WriteByte(CommandType.ctPathCommandClose);
},
_m: function (x, y) {
var _memory = (null == this.VectorMemoryForPrint) ? this.Memory : this.VectorMemoryForPrint;
_memory.WriteByte(CommandType.ctPathCommandMoveTo);
_memory.WriteDouble(x);
_memory.WriteDouble(y);
},
_l: function (x, y) {
var _memory = (null == this.VectorMemoryForPrint) ? this.Memory : this.VectorMemoryForPrint;
_memory.WriteByte(CommandType.ctPathCommandLineTo);
_memory.WriteDouble(x);
_memory.WriteDouble(y);
},
_c: function (x1, y1, x2, y2, x3, y3) {
var _memory = (null == this.VectorMemoryForPrint) ? this.Memory : this.VectorMemoryForPrint;
_memory.WriteByte(CommandType.ctPathCommandCurveTo);
_memory.WriteDouble(x1);
_memory.WriteDouble(y1);
_memory.WriteDouble(x2);
_memory.WriteDouble(y2);
_memory.WriteDouble(x3);
_memory.WriteDouble(y3);
},
_c2: function (x1, y1, x2, y2) {
var _memory = (null == this.VectorMemoryForPrint) ? this.Memory : this.VectorMemoryForPrint;
_memory.WriteByte(CommandType.ctPathCommandCurveTo);
_memory.WriteDouble(x1);
_memory.WriteDouble(y1);
_memory.WriteDouble(x1);
_memory.WriteDouble(y1);
_memory.WriteDouble(x2);
_memory.WriteDouble(y2);
},
ds: function () {
if (null == this.VectorMemoryForPrint) {
this.Memory.WriteByte(CommandType.ctDrawPath);
this.Memory.WriteLong(1);
} else {
this.Memory.Copy(this.VectorMemoryForPrint, 0, this.VectorMemoryForPrint.pos);
this.Memory.WriteByte(CommandType.ctDrawPath);
this.Memory.WriteLong(1);
}
},
df: function () {
if (null == this.VectorMemoryForPrint) {
this.Memory.WriteByte(CommandType.ctDrawPath);
this.Memory.WriteLong(256);
} else {
this.Memory.Copy(this.VectorMemoryForPrint, 0, this.VectorMemoryForPrint.pos);
this.Memory.WriteByte(CommandType.ctDrawPath);
this.Memory.WriteLong(256);
}
},
drawpath: function (type) {
if (null == this.VectorMemoryForPrint) {
this.Memory.WriteByte(CommandType.ctDrawPath);
this.Memory.WriteLong(type);
} else {
this.Memory.Copy(this.VectorMemoryForPrint, 0, this.VectorMemoryForPrint.pos);
this.Memory.WriteByte(CommandType.ctDrawPath);
this.Memory.WriteLong(type);
}
},
save: function () {},
restore: function () {},
clip: function () {},
drawImage: function (img, x, y, w, h) {
if (!window.editor) {
this.Memory.WriteByte(CommandType.ctDrawImageFromFile);
var _api = window["Asc"]["editor"];
var _mask = g_sResourceServiceLocalUrl + _api.documentId + "/";
if (0 == img.indexOf(_mask)) {
var _src = img.substring(_mask.length);
this.Memory.WriteString2(_src);
} else {
this.Memory.WriteString2(img);
}
this.Memory.WriteDouble(x);
this.Memory.WriteDouble(y);
this.Memory.WriteDouble(w);
this.Memory.WriteDouble(h);
return;
}
var _img = window.editor.ImageLoader.map_image_index[img];
if (_img == undefined || _img.Image == null) {
return;
}
var _src = _img.src;
var _search = window.editor.DocumentUrl;
if (0 == _src.indexOf(_search)) {
_src = _src.substring(_search.length);
} else {
if (window.editor.ThemeLoader !== undefined && window.editor.ThemeLoader != null) {
if (0 == _src.indexOf(window.editor.ThemeLoader.ThemesUrl)) {
_src = _src.substring(window.editor.ThemeLoader.ThemesUrl.length);
}
}
}
this.Memory.WriteByte(CommandType.ctDrawImageFromFile);
this.Memory.WriteString2(_src);
this.Memory.WriteDouble(x);
this.Memory.WriteDouble(y);
this.Memory.WriteDouble(w);
this.Memory.WriteDouble(h);
},
SetFont: function (font) {
if (null == font) {
return;
}
if (font.FontFamily.Name == "" && 0 <= font.FontFamily.Index) {
font.FontFamily.Name = window.g_font_infos[font.FontFamily.Index].Name;
}
var style = 0;
if (font.Italic == true) {
style += 2;
}
if (font.Bold == true) {
style += 1;
}
if (null == this.m_oFont) {
this.Memory.WriteByte(CommandType.ctFontName);
this.Memory.WriteString(font.FontFamily.Name);
this.Memory.WriteByte(CommandType.ctFontSize);
this.Memory.WriteDouble(font.FontSize);
this.Memory.WriteByte(CommandType.ctFontStyle);
this.Memory.WriteLong(style);
} else {
if (this.m_oFont.FontFamily.Name != font.FontFamily.Name) {
this.Memory.WriteByte(CommandType.ctFontName);
this.Memory.WriteString(font.FontFamily.Name);
}
if (this.m_oFont.FontSize != font.FontSize) {
this.Memory.WriteByte(CommandType.ctFontSize);
this.Memory.WriteDouble(font.FontSize);
}
if (this.m_oFont.Italic != font.Italic || this.m_oFont.Bold != font.Bold) {
this.Memory.WriteByte(CommandType.ctFontStyle);
this.Memory.WriteLong(style);
}
}
this.m_oFont = {
FontFamily: {
Index: font.FontFamily.Index,
Name: font.FontFamily.Name
},
FontSize: font.FontSize,
Bold: font.Bold,
Italic: font.Italic
};
this.m_oLastFont.SetUpIndex = font.FontFamily.Index;
this.m_oLastFont.SetUpSize = font.FontSize;
this.m_oLastFont.SetUpStyle = style;
},
FillText: function (x, y, text) {
this.Memory.WriteByte(CommandType.ctDrawText);
this.Memory.WriteString(text);
this.Memory.WriteDouble(x);
this.Memory.WriteDouble(y);
},
charspace: function (space) {},
beginCommand: function (command) {
this.Memory.WriteByte(CommandType.ctBeginCommand);
this.Memory.WriteLong(command);
},
endCommand: function (command) {
if (32 == command) {
if (null == this.VectorMemoryForPrint) {
this.Memory.WriteByte(CommandType.ctEndCommand);
this.Memory.WriteLong(command);
} else {
this.Memory.Copy(this.VectorMemoryForPrint, 0, this.VectorMemoryForPrint.pos);
this.Memory.WriteByte(CommandType.ctEndCommand);
this.Memory.WriteLong(command);
}
return;
}
this.Memory.WriteByte(CommandType.ctEndCommand);
this.Memory.WriteLong(command);
},
put_PenLineJoin: function (_join) {
this.Memory.WriteByte(CommandType.ctPenLineJoin);
this.Memory.WriteByte(_join & 255);
},
put_TextureBounds: function (x, y, w, h) {
this.Memory.WriteByte(CommandType.ctBrushRectable);
this.Memory.WriteDouble(x);
this.Memory.WriteDouble(y);
this.Memory.WriteDouble(w);
this.Memory.WriteDouble(h);
},
put_TextureBoundsEnabled: function (bIsEnabled) {
this.Memory.WriteByte(CommandType.ctBrushRectableEnabled);
this.Memory.WriteBool(bIsEnabled);
},
SetFontSlot: function (slot, fontSizeKoef) {
var _rfonts = this.m_oTextPr.RFonts;
var _lastFont = this.m_oLastFont;
switch (slot) {
case fontslot_ASCII:
_lastFont.Name = _rfonts.Ascii.Name;
_lastFont.Index = _rfonts.Ascii.Index;
if (_lastFont.Index == -1 || _lastFont.Index === undefined) {
_lastFont.Index = window.g_map_font_index[_lastFont.Name];
}
_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;
if (_lastFont.Index == -1 || _lastFont.Index === undefined) {
_lastFont.Index = window.g_map_font_index[_lastFont.Name];
}
_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;
if (_lastFont.Index == -1 || _lastFont.Index === undefined) {
_lastFont.Index = window.g_map_font_index[_lastFont.Name];
}
_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;
if (_lastFont.Index == -1 || _lastFont.Index === undefined) {
_lastFont.Index = window.g_map_font_index[_lastFont.Name];
}
_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 == true) {
style += 2;
}
if (_lastFont.Bold == true) {
style += 1;
}
if (null == this.m_oFont) {
this.Memory.WriteByte(CommandType.ctFontName);
this.Memory.WriteString(_lastFont.Name);
this.Memory.WriteByte(CommandType.ctFontSize);
this.Memory.WriteDouble(_lastFont.Size);
this.Memory.WriteByte(CommandType.ctFontStyle);
this.Memory.WriteLong(style);
} else {
if (this.m_oFont.FontFamily.Name != _lastFont.Name) {
this.Memory.WriteByte(CommandType.ctFontName);
this.Memory.WriteString(_lastFont.Name);
}
if (this.m_oFont.FontSize != _lastFont.Size) {
this.Memory.WriteByte(CommandType.ctFontSize);
this.Memory.WriteDouble(_lastFont.Size);
}
if (this.m_oFont.Italic != _lastFont.Italic || this.m_oFont.Bold != _lastFont.Bold) {
this.Memory.WriteByte(CommandType.ctFontStyle);
this.Memory.WriteLong(style);
}
}
this.m_oFont = {
FontFamily: {
Index: _lastFont.Index,
Name: _lastFont.Name
},
FontSize: _lastFont.Size,
Bold: _lastFont.Bold,
Italic: _lastFont.Italic
};
}
};
function CDocumentRenderer() {
this.m_arrayPages = new Array();
this.m_lPagesCount = 0;
this.Memory = new CMemory();
this.VectorMemoryForPrint = null;
this.ClipManager = new CClipManager();
this.ClipManager.BaseObject = this;
this.RENDERER_PDF_FLAG = true;
this.ArrayPoints = null;
this.GrState = new CGrState();
this.GrState.Parent = this;
this.m_oPen = null;
this.m_oBrush = null;
this.m_oTransform = null;
}
CDocumentRenderer.prototype = {
BeginPage: function (width, height) {
this.m_arrayPages[this.m_arrayPages.length] = new CMetafile(width, height);
this.m_lPagesCount = this.m_arrayPages.length;
this.m_arrayPages[this.m_lPagesCount - 1].Memory = this.Memory;
this.m_arrayPages[this.m_lPagesCount - 1].VectorMemoryForPrint = this.VectorMemoryForPrint;
this.Memory.WriteByte(CommandType.ctPageStart);
this.Memory.WriteByte(CommandType.ctPageWidth);
this.Memory.WriteDouble(width);
this.Memory.WriteByte(CommandType.ctPageHeight);
this.Memory.WriteDouble(height);
var _page = this.m_arrayPages[this.m_lPagesCount - 1];
this.m_oPen = _page.m_oPen;
this.m_oBrush = _page.m_oBrush;
this.m_oTransform = _page.m_oTransform;
},
EndPage: function () {
this.Memory.WriteByte(CommandType.ctPageEnd);
},
p_color: function (r, g, b, a) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].p_color(r, g, b, a);
}
},
p_width: function (w) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].p_width(w);
}
},
b_color1: function (r, g, b, a) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].b_color1(r, g, b, a);
}
},
b_color2: function (r, g, b, a) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].b_color2(r, g, b, a);
}
},
transform: function (sx, shy, shx, sy, tx, ty) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].transform(sx, shy, shx, sy, tx, ty);
}
},
transform3: function (m) {
this.transform(m.sx, m.shy, m.shx, m.sy, m.tx, m.ty);
},
reset: function () {
this.transform(1, 0, 0, 1, 0, 0);
},
_s: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1]._s();
}
},
_e: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1]._e();
}
},
_z: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1]._z();
}
},
_m: function (x, y) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1]._m(x, y);
}
if (this.ArrayPoints != null) {
this.ArrayPoints[this.ArrayPoints.length] = {
x: x,
y: y
};
}
},
_l: function (x, y) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1]._l(x, y);
}
if (this.ArrayPoints != null) {
this.ArrayPoints[this.ArrayPoints.length] = {
x: x,
y: y
};
}
},
_c: function (x1, y1, x2, y2, x3, y3) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1]._c(x1, y1, x2, y2, x3, y3);
}
if (this.ArrayPoints != null) {
this.ArrayPoints[this.ArrayPoints.length] = {
x: x1,
y: y1
};
this.ArrayPoints[this.ArrayPoints.length] = {
x: x2,
y: y2
};
this.ArrayPoints[this.ArrayPoints.length] = {
x: x3,
y: y3
};
}
},
_c2: function (x1, y1, x2, y2) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1]._c2(x1, y1, x2, y2);
}
if (this.ArrayPoints != null) {
this.ArrayPoints[this.ArrayPoints.length] = {
x: x1,
y: y1
};
this.ArrayPoints[this.ArrayPoints.length] = {
x: x2,
y: y2
};
}
},
ds: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].ds();
}
},
df: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].df();
}
},
drawpath: function (type) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].drawpath(type);
}
},
save: function () {},
restore: function () {},
clip: function () {},
drawImage: function (img, x, y, w, h, alpha, srcRect) {
if (0 != this.m_lPagesCount) {
if (!srcRect) {
this.m_arrayPages[this.m_lPagesCount - 1].drawImage(img, x, y, w, h);
} else {
if (!window.editor) {
this.m_arrayPages[this.m_lPagesCount - 1].drawImage(img, x, y, w, h);
}
var _img = window.editor.ImageLoader.map_image_index[img];
var w0 = 0;
var h0 = 0;
if (_img != undefined && _img.Image != null) {
w0 = _img.Image.width;
h0 = _img.Image.height;
}
if (w0 == 0 || h0 == 0) {
this.m_arrayPages[this.m_lPagesCount - 1].drawImage(img, x, y, w, h);
return;
}
var bIsClip = false;
if (srcRect.l > 0 || srcRect.t > 0 || srcRect.r < 100 || srcRect.b < 100) {
bIsClip = true;
}
if (bIsClip) {
this.SaveGrState();
this.AddClipRect(x, y, w, h);
}
var __w = w;
var __h = h;
var _delW = Math.max(0, -srcRect.l) + Math.max(0, srcRect.r - 100) + 100;
var _delH = Math.max(0, -srcRect.t) + Math.max(0, srcRect.b - 100) + 100;
if (srcRect.l < 0) {
var _off = ((-srcRect.l / _delW) * __w);
x += _off;
w -= _off;
}
if (srcRect.t < 0) {
var _off = ((-srcRect.t / _delH) * __h);
y += _off;
h -= _off;
}
if (srcRect.r > 100) {
var _off = ((srcRect.r - 100) / _delW) * __w;
w -= _off;
}
if (srcRect.b > 100) {
var _off = ((srcRect.b - 100) / _delH) * __h;
h -= _off;
}
var _wk = 100;
if (srcRect.l > 0) {
_wk -= srcRect.l;
}
if (srcRect.r < 100) {
_wk -= (100 - srcRect.r);
}
_wk = 100 / _wk;
var _hk = 100;
if (srcRect.t > 0) {
_hk -= srcRect.t;
}
if (srcRect.b < 100) {
_hk -= (100 - srcRect.b);
}
_hk = 100 / _hk;
var _r = x + w;
var _b = y + h;
if (srcRect.l > 0) {
x -= ((srcRect.l * _wk * w) / 100);
}
if (srcRect.t > 0) {
y -= ((srcRect.t * _hk * h) / 100);
}
if (srcRect.r < 100) {
_r += (((100 - srcRect.r) * _wk * w) / 100);
}
if (srcRect.b < 100) {
_b += (((100 - srcRect.b) * _hk * h) / 100);
}
this.m_arrayPages[this.m_lPagesCount - 1].drawImage(img, x, y, _r - x, _b - y);
if (bIsClip) {
this.RestoreGrState();
}
}
}
},
SetFont: function (font) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].SetFont(font);
}
},
FillText: function (x, y, text, cropX, cropW) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].FillText(x, y, text);
}
},
FillText2: function (x, y, text) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].FillText(x, y, text);
}
},
charspace: function (space) {},
SetIntegerGrid: function (param) {},
GetIntegerGrid: function () {},
GetFont: function () {
if (0 != this.m_lPagesCount) {
return this.m_arrayPages[this.m_lPagesCount - 1].m_oFont;
}
return null;
},
put_GlobalAlpha: function (enable, alpha) {},
Start_GlobalAlpha: function () {},
End_GlobalAlpha: function () {},
DrawHeaderEdit: function (yPos) {},
DrawFooterEdit: function (yPos) {},
drawCollaborativeChanges: function (x, y, w, h) {},
drawSearchResult: function (x, y, w, h) {},
DrawEmptyTableLine: function (x1, y1, x2, y2) {},
DrawLockParagraph: function (lock_type, x, y1, y2) {},
DrawLockObjectRect: function (lock_type, x, y, w, h) {},
DrawSpellingLine: function (y0, x0, x1, w) {},
drawHorLine: function (align, y, x, r, penW) {
this.p_width(1000 * penW);
this._s();
var _y = y;
switch (align) {
case 0:
_y = y + penW / 2;
break;
case 1:
break;
case 2:
_y = y - penW / 2;
}
this._m(x, y);
this._l(r, y);
this.ds();
this._e();
},
drawHorLine2: function (align, y, x, r, penW) {
this.p_width(1000 * penW);
var _y = y;
switch (align) {
case 0:
_y = y + penW / 2;
break;
case 1:
break;
case 2:
_y = y - penW / 2;
break;
}
this._s();
this._m(x, (_y - penW));
this._l(r, (_y - penW));
this.ds();
this._s();
this._m(x, (_y + penW));
this._l(r, (_y + penW));
this.ds();
this._e();
},
drawVerLine: function (align, x, y, b, penW) {
this.p_width(1000 * penW);
this._s();
var _x = x;
switch (align) {
case 0:
_x = x + penW / 2;
break;
case 1:
break;
case 2:
_x = x - penW / 2;
}
this._m(_x, y);
this._l(_x, b);
this.ds();
},
drawHorLineExt: function (align, y, x, r, penW, leftMW, rightMW) {
this.drawHorLine(align, y, x + leftMW, r + rightMW, penW);
},
rect: function (x, y, w, h) {
var _x = x;
var _y = y;
var _r = (x + w);
var _b = (y + h);
this._s();
this._m(_x, _y);
this._l(_r, _y);
this._l(_r, _b);
this._l(_x, _b);
this._l(_x, _y);
},
TableRect: function (x, y, w, h) {
this.rect(x, y, w, h);
this.df();
},
put_PenLineJoin: function (_join) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].put_PenLineJoin(_join);
}
},
put_TextureBounds: function (x, y, w, h) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].put_TextureBounds(x, y, w, h);
}
},
put_TextureBoundsEnabled: function (val) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].put_TextureBoundsEnabled(val);
}
},
put_brushTexture: function (src, mode) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].put_brushTexture(src, mode);
}
},
put_BrushTextureAlpha: function (alpha) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].put_BrushTextureAlpha(alpha);
}
},
put_BrushGradient: function (gradFill, points, transparent) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].put_BrushGradient(gradFill, points, transparent);
}
},
AddClipRect: function (x, y, w, h) {
var __rect = new _rect();
__rect.x = x;
__rect.y = y;
__rect.w = w;
__rect.h = h;
this.GrState.AddClipRect(__rect);
},
RemoveClipRect: function () {},
SetClip: function (r) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].beginCommand(32);
}
this.rect(r.x, r.y, r.w, r.h);
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].endCommand(32);
}
},
RemoveClip: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].beginCommand(64);
this.m_arrayPages[this.m_lPagesCount - 1].endCommand(64);
}
},
GetTransform: function () {
if (0 != this.m_lPagesCount) {
return this.m_arrayPages[this.m_lPagesCount - 1].m_oTransform;
}
return null;
},
GetLineWidth: function () {
if (0 != this.m_lPagesCount) {
return this.m_arrayPages[this.m_lPagesCount - 1].m_oPen.Size;
}
return 0;
},
GetPen: function () {
if (0 != this.m_lPagesCount) {
return this.m_arrayPages[this.m_lPagesCount - 1].m_oPen;
}
return 0;
},
GetBrush: function () {
if (0 != this.m_lPagesCount) {
return this.m_arrayPages[this.m_lPagesCount - 1].m_oBrush;
}
return 0;
},
drawFlowAnchor: function (x, y) {},
SavePen: function () {
this.GrState.SavePen();
},
RestorePen: function () {
this.GrState.RestorePen();
},
SaveBrush: function () {
this.GrState.SaveBrush();
},
RestoreBrush: function () {
this.GrState.RestoreBrush();
},
SavePenBrush: function () {
this.GrState.SavePenBrush();
},
RestorePenBrush: function () {
this.GrState.RestorePenBrush();
},
SaveGrState: function () {
this.GrState.SaveGrState();
},
RestoreGrState: function () {
this.GrState.RestoreGrState();
},
StartClipPath: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].beginCommand(32);
}
},
EndClipPath: function () {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].endCommand(32);
}
},
SetTextPr: function (textPr) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].m_oTextPr = textPr.Copy();
}
},
SetFontSlot: function (slot, fontSizeKoef) {
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].SetFontSlot(slot, fontSizeKoef);
}
},
GetTextPr: function () {
if (0 != this.m_lPagesCount) {
return this.m_arrayPages[this.m_lPagesCount - 1].m_oTextPr;
}
return null;
},
DrawPresentationComment: function (type, x, y, w, h) {},
private_removeVectors: function () {
var _ret = this.VectorMemoryForPrint;
if (_ret != null) {
this.VectorMemoryForPrint = null;
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].VectorMemoryForPrint = null;
}
}
return _ret;
},
private_restoreVectors: function (_vectors) {
if (null != _vectors) {
this.VectorMemoryForPrint = _vectors;
if (0 != this.m_lPagesCount) {
this.m_arrayPages[this.m_lPagesCount - 1].VectorMemoryForPrint = _vectors;
}
}
}
};