mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Fix indents
This commit is contained in:
@ -32,409 +32,409 @@
|
||||
|
||||
(function(window, undefined) {
|
||||
|
||||
function getMemoryPathIE(name)
|
||||
{
|
||||
if (self["AscViewer"] && self["AscViewer"]["baseUrl"])
|
||||
return self["AscViewer"]["baseUrl"] + name;
|
||||
return name;
|
||||
}
|
||||
function getMemoryPathIE(name)
|
||||
{
|
||||
if (self["AscViewer"] && self["AscViewer"]["baseUrl"])
|
||||
return self["AscViewer"]["baseUrl"] + name;
|
||||
return name;
|
||||
}
|
||||
|
||||
var FS = undefined;
|
||||
var FS = undefined;
|
||||
|
||||
//desktop_fetch
|
||||
//desktop_fetch
|
||||
|
||||
//polyfill
|
||||
//polyfill
|
||||
|
||||
//string_utf8
|
||||
//string_utf8
|
||||
|
||||
//module
|
||||
//module
|
||||
|
||||
self.drawingFileCurrentPageIndex = -1;
|
||||
self.fontStreams = {};
|
||||
self.drawingFile = null;
|
||||
self.drawingFileCurrentPageIndex = -1;
|
||||
self.fontStreams = {};
|
||||
self.drawingFile = null;
|
||||
|
||||
function CBinaryReader(data, start, size)
|
||||
{
|
||||
this.data = data;
|
||||
this.pos = start;
|
||||
this.limit = start + size;
|
||||
}
|
||||
CBinaryReader.prototype.readInt = function()
|
||||
{
|
||||
var val = this.data[this.pos] | this.data[this.pos + 1] << 8 | this.data[this.pos + 2] << 16 | this.data[this.pos + 3] << 24;
|
||||
this.pos += 4;
|
||||
return val;
|
||||
};
|
||||
CBinaryReader.prototype.readDouble = function()
|
||||
{
|
||||
return this.readInt() / 100;
|
||||
};
|
||||
CBinaryReader.prototype.readString = function()
|
||||
{
|
||||
var len = this.readInt();
|
||||
var val = String.prototype.fromUtf8(this.data, this.pos, len);
|
||||
this.pos += len;
|
||||
return val;
|
||||
};
|
||||
CBinaryReader.prototype.readData = function()
|
||||
{
|
||||
var len = this.readInt();
|
||||
var val = this.data.slice(this.pos, this.pos + len);
|
||||
this.pos += len;
|
||||
return val;
|
||||
};
|
||||
CBinaryReader.prototype.isValid = function()
|
||||
{
|
||||
return (this.pos < this.limit) ? true : false;
|
||||
};
|
||||
CBinaryReader.prototype.Skip = function(nPos)
|
||||
{
|
||||
this.pos += nPos;
|
||||
};
|
||||
function CBinaryReader(data, start, size)
|
||||
{
|
||||
this.data = data;
|
||||
this.pos = start;
|
||||
this.limit = start + size;
|
||||
}
|
||||
CBinaryReader.prototype.readInt = function()
|
||||
{
|
||||
var val = this.data[this.pos] | this.data[this.pos + 1] << 8 | this.data[this.pos + 2] << 16 | this.data[this.pos + 3] << 24;
|
||||
this.pos += 4;
|
||||
return val;
|
||||
};
|
||||
CBinaryReader.prototype.readDouble = function()
|
||||
{
|
||||
return this.readInt() / 100;
|
||||
};
|
||||
CBinaryReader.prototype.readString = function()
|
||||
{
|
||||
var len = this.readInt();
|
||||
var val = String.prototype.fromUtf8(this.data, this.pos, len);
|
||||
this.pos += len;
|
||||
return val;
|
||||
};
|
||||
CBinaryReader.prototype.readData = function()
|
||||
{
|
||||
var len = this.readInt();
|
||||
var val = this.data.slice(this.pos, this.pos + len);
|
||||
this.pos += len;
|
||||
return val;
|
||||
};
|
||||
CBinaryReader.prototype.isValid = function()
|
||||
{
|
||||
return (this.pos < this.limit) ? true : false;
|
||||
};
|
||||
CBinaryReader.prototype.Skip = function(nPos)
|
||||
{
|
||||
this.pos += nPos;
|
||||
};
|
||||
|
||||
function CBinaryWriter()
|
||||
{
|
||||
this.size = 100000;
|
||||
this.dataSize = 0;
|
||||
this.buffer = new Uint8Array(this.size);
|
||||
}
|
||||
CBinaryWriter.prototype.checkAlloc = function(addition)
|
||||
{
|
||||
if ((this.dataSize + addition) <= this.size)
|
||||
return;
|
||||
function CBinaryWriter()
|
||||
{
|
||||
this.size = 100000;
|
||||
this.dataSize = 0;
|
||||
this.buffer = new Uint8Array(this.size);
|
||||
}
|
||||
CBinaryWriter.prototype.checkAlloc = function(addition)
|
||||
{
|
||||
if ((this.dataSize + addition) <= this.size)
|
||||
return;
|
||||
|
||||
let newSize = Math.max(this.size * 2, this.size + addition);
|
||||
let newBuffer = new Uint8Array(newSize);
|
||||
newBuffer.set(this.buffer, 0);
|
||||
let newSize = Math.max(this.size * 2, this.size + addition);
|
||||
let newBuffer = new Uint8Array(newSize);
|
||||
newBuffer.set(this.buffer, 0);
|
||||
|
||||
this.size = newSize;
|
||||
this.buffer = newBuffer;
|
||||
};
|
||||
CBinaryWriter.prototype.writeUint = function(value)
|
||||
{
|
||||
this.checkAlloc(4);
|
||||
let val = (value>2147483647)?value-4294967296:value;
|
||||
this.buffer[this.dataSize++] = (val) & 0xFF;
|
||||
this.buffer[this.dataSize++] = (val >>> 8) & 0xFF;
|
||||
this.buffer[this.dataSize++] = (val >>> 16) & 0xFF;
|
||||
this.buffer[this.dataSize++] = (val >>> 24) & 0xFF;
|
||||
};
|
||||
CBinaryWriter.prototype.writeString = function(value)
|
||||
{
|
||||
let valueUtf8 = value.toUtf8();
|
||||
this.checkAlloc(valueUtf8.length);
|
||||
this.buffer.set(valueUtf8, this.dataSize);
|
||||
this.dataSize += valueUtf8.length;
|
||||
};
|
||||
this.size = newSize;
|
||||
this.buffer = newBuffer;
|
||||
};
|
||||
CBinaryWriter.prototype.writeUint = function(value)
|
||||
{
|
||||
this.checkAlloc(4);
|
||||
let val = (value>2147483647)?value-4294967296:value;
|
||||
this.buffer[this.dataSize++] = (val) & 0xFF;
|
||||
this.buffer[this.dataSize++] = (val >>> 8) & 0xFF;
|
||||
this.buffer[this.dataSize++] = (val >>> 16) & 0xFF;
|
||||
this.buffer[this.dataSize++] = (val >>> 24) & 0xFF;
|
||||
};
|
||||
CBinaryWriter.prototype.writeString = function(value)
|
||||
{
|
||||
let valueUtf8 = value.toUtf8();
|
||||
this.checkAlloc(valueUtf8.length);
|
||||
this.buffer.set(valueUtf8, this.dataSize);
|
||||
this.dataSize += valueUtf8.length;
|
||||
};
|
||||
|
||||
function CFile()
|
||||
{
|
||||
this.nativeFile = 0;
|
||||
this.stream = -1;
|
||||
this.stream_size = 0;
|
||||
this.type = -1;
|
||||
this.pages = [];
|
||||
this.info = null;
|
||||
this._isNeedPassword = false;
|
||||
}
|
||||
function CFile()
|
||||
{
|
||||
this.nativeFile = 0;
|
||||
this.stream = -1;
|
||||
this.stream_size = 0;
|
||||
this.type = -1;
|
||||
this.pages = [];
|
||||
this.info = null;
|
||||
this._isNeedPassword = false;
|
||||
}
|
||||
|
||||
CFile.prototype["loadFromData"] = function(arrayBuffer)
|
||||
{
|
||||
var data = new Uint8Array(arrayBuffer);
|
||||
var _stream = Module["_malloc"](data.length);
|
||||
Module["HEAP8"].set(data, _stream);
|
||||
this.nativeFile = Module["_Open"](_stream, data.length, 0);
|
||||
var error = Module["_GetErrorCode"](this.nativeFile);
|
||||
this.stream = _stream;
|
||||
this.stream_size = data.length;
|
||||
this.type = Module["_GetType"](_stream, data.length);
|
||||
self.drawingFile = this;
|
||||
this.getInfo();
|
||||
this._isNeedPassword = (4 === error) ? true : false;
|
||||
CFile.prototype["loadFromData"] = function(arrayBuffer)
|
||||
{
|
||||
var data = new Uint8Array(arrayBuffer);
|
||||
var _stream = Module["_malloc"](data.length);
|
||||
Module["HEAP8"].set(data, _stream);
|
||||
this.nativeFile = Module["_Open"](_stream, data.length, 0);
|
||||
var error = Module["_GetErrorCode"](this.nativeFile);
|
||||
this.stream = _stream;
|
||||
this.stream_size = data.length;
|
||||
this.type = Module["_GetType"](_stream, data.length);
|
||||
self.drawingFile = this;
|
||||
this.getInfo();
|
||||
this._isNeedPassword = (4 === error) ? true : false;
|
||||
|
||||
// 0 - ok
|
||||
// 4 - password
|
||||
// else - error
|
||||
return error;
|
||||
};
|
||||
CFile.prototype["loadFromDataWithPassword"] = function(password)
|
||||
{
|
||||
if (0 != this.nativeFile)
|
||||
Module["_Close"](this.nativeFile);
|
||||
// 0 - ok
|
||||
// 4 - password
|
||||
// else - error
|
||||
return error;
|
||||
};
|
||||
CFile.prototype["loadFromDataWithPassword"] = function(password)
|
||||
{
|
||||
if (0 != this.nativeFile)
|
||||
Module["_Close"](this.nativeFile);
|
||||
|
||||
var passBuffer = password.toUtf8();
|
||||
var passPointer = Module["_malloc"](passBuffer.length);
|
||||
Module["HEAP8"].set(passBuffer, passPointer);
|
||||
this.nativeFile = Module["_Open"](this.stream, this.stream_size, passPointer);
|
||||
Module["_free"](passPointer);
|
||||
var error = Module["_GetErrorCode"](this.nativeFile);
|
||||
this.type = Module["_GetType"](this.stream, this.stream_size);
|
||||
self.drawingFile = this;
|
||||
this.getInfo();
|
||||
this._isNeedPassword = (4 === error) ? true : false;
|
||||
var passBuffer = password.toUtf8();
|
||||
var passPointer = Module["_malloc"](passBuffer.length);
|
||||
Module["HEAP8"].set(passBuffer, passPointer);
|
||||
this.nativeFile = Module["_Open"](this.stream, this.stream_size, passPointer);
|
||||
Module["_free"](passPointer);
|
||||
var error = Module["_GetErrorCode"](this.nativeFile);
|
||||
this.type = Module["_GetType"](this.stream, this.stream_size);
|
||||
self.drawingFile = this;
|
||||
this.getInfo();
|
||||
this._isNeedPassword = (4 === error) ? true : false;
|
||||
|
||||
// 0 - ok
|
||||
// 4 - password
|
||||
// else - error
|
||||
return error;
|
||||
};
|
||||
CFile.prototype["isNeedPassword"] = function()
|
||||
{
|
||||
return this._isNeedPassword;
|
||||
};
|
||||
CFile.prototype["isNeedCMap"] = function()
|
||||
{
|
||||
if (!this.nativeFile)
|
||||
return false;
|
||||
// 0 - ok
|
||||
// 4 - password
|
||||
// else - error
|
||||
return error;
|
||||
};
|
||||
CFile.prototype["isNeedPassword"] = function()
|
||||
{
|
||||
return this._isNeedPassword;
|
||||
};
|
||||
CFile.prototype["isNeedCMap"] = function()
|
||||
{
|
||||
if (!this.nativeFile)
|
||||
return false;
|
||||
|
||||
var isNeed = Module["_IsNeedCMap"](this.nativeFile);
|
||||
return (isNeed === 1) ? true : false;
|
||||
};
|
||||
CFile.prototype["setCMap"] = function(memoryBuffer)
|
||||
{
|
||||
if (!this.nativeFile)
|
||||
return;
|
||||
var isNeed = Module["_IsNeedCMap"](this.nativeFile);
|
||||
return (isNeed === 1) ? true : false;
|
||||
};
|
||||
CFile.prototype["setCMap"] = function(memoryBuffer)
|
||||
{
|
||||
if (!this.nativeFile)
|
||||
return;
|
||||
|
||||
var pointer = Module["_malloc"](memoryBuffer.length);
|
||||
Module.HEAP8.set(memoryBuffer, pointer);
|
||||
Module["_SetCMapData"](this.nativeFile, pointer, memoryBuffer.length);
|
||||
};
|
||||
CFile.prototype["getInfo"] = function()
|
||||
{
|
||||
if (!this.nativeFile)
|
||||
return false;
|
||||
var pointer = Module["_malloc"](memoryBuffer.length);
|
||||
Module.HEAP8.set(memoryBuffer, pointer);
|
||||
Module["_SetCMapData"](this.nativeFile, pointer, memoryBuffer.length);
|
||||
};
|
||||
CFile.prototype["getInfo"] = function()
|
||||
{
|
||||
if (!this.nativeFile)
|
||||
return false;
|
||||
|
||||
var _info = Module["_GetInfo"](this.nativeFile);
|
||||
if (_info == 0)
|
||||
return false;
|
||||
var _info = Module["_GetInfo"](this.nativeFile);
|
||||
if (_info == 0)
|
||||
return false;
|
||||
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, _info, 4);
|
||||
if (lenArray == null)
|
||||
return false;
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, _info, 4);
|
||||
if (lenArray == null)
|
||||
return false;
|
||||
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
if (len <= 0)
|
||||
return false;
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
if (len <= 0)
|
||||
return false;
|
||||
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, _info + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, _info + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
|
||||
var _pages = reader.readInt();
|
||||
for (var i = 0; i < _pages; i++)
|
||||
{
|
||||
var rec = {};
|
||||
rec["W"] = reader.readInt();
|
||||
rec["H"] = reader.readInt();
|
||||
rec["Dpi"] = reader.readInt();
|
||||
rec.fonts = [];
|
||||
rec.text = null;
|
||||
this.pages.push(rec);
|
||||
}
|
||||
var json_info = reader.readString();
|
||||
try
|
||||
{
|
||||
this.info = JSON.parse(json_info);
|
||||
} catch(err) {}
|
||||
var _pages = reader.readInt();
|
||||
for (var i = 0; i < _pages; i++)
|
||||
{
|
||||
var rec = {};
|
||||
rec["W"] = reader.readInt();
|
||||
rec["H"] = reader.readInt();
|
||||
rec["Dpi"] = reader.readInt();
|
||||
rec.fonts = [];
|
||||
rec.text = null;
|
||||
this.pages.push(rec);
|
||||
}
|
||||
var json_info = reader.readString();
|
||||
try
|
||||
{
|
||||
this.info = JSON.parse(json_info);
|
||||
} catch(err) {}
|
||||
|
||||
Module["_free"](_info);
|
||||
return this.pages.length > 0;
|
||||
};
|
||||
CFile.prototype["close"] = function()
|
||||
{
|
||||
Module["_Close"](this.nativeFile);
|
||||
this.nativeFile = 0;
|
||||
this.pages = [];
|
||||
this.info = null;
|
||||
if (this.stream > 0)
|
||||
Module["_free"](this.stream);
|
||||
this.stream = -1;
|
||||
self.drawingFile = null;
|
||||
};
|
||||
Module["_free"](_info);
|
||||
return this.pages.length > 0;
|
||||
};
|
||||
CFile.prototype["close"] = function()
|
||||
{
|
||||
Module["_Close"](this.nativeFile);
|
||||
this.nativeFile = 0;
|
||||
this.pages = [];
|
||||
this.info = null;
|
||||
if (this.stream > 0)
|
||||
Module["_free"](this.stream);
|
||||
this.stream = -1;
|
||||
self.drawingFile = null;
|
||||
};
|
||||
|
||||
CFile.prototype["getPages"] = function()
|
||||
{
|
||||
return this.pages;
|
||||
};
|
||||
CFile.prototype["getPages"] = function()
|
||||
{
|
||||
return this.pages;
|
||||
};
|
||||
|
||||
CFile.prototype["getDocumentInfo"] = function()
|
||||
{
|
||||
return this.info;
|
||||
};
|
||||
CFile.prototype["getDocumentInfo"] = function()
|
||||
{
|
||||
return this.info;
|
||||
};
|
||||
|
||||
CFile.prototype["getPagePixmap"] = function(pageIndex, width, height, backgroundColor)
|
||||
{
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
return null;
|
||||
}
|
||||
CFile.prototype["getPagePixmap"] = function(pageIndex, width, height, backgroundColor)
|
||||
{
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
return null;
|
||||
}
|
||||
|
||||
self.drawingFileCurrentPageIndex = pageIndex;
|
||||
var retValue = Module["_GetPixmap"](this.nativeFile, pageIndex, width, height, backgroundColor === undefined ? 0xFFFFFF : backgroundColor);
|
||||
self.drawingFileCurrentPageIndex = -1;
|
||||
self.drawingFileCurrentPageIndex = pageIndex;
|
||||
var retValue = Module["_GetPixmap"](this.nativeFile, pageIndex, width, height, backgroundColor === undefined ? 0xFFFFFF : backgroundColor);
|
||||
self.drawingFileCurrentPageIndex = -1;
|
||||
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
Module["_free"](retValue);
|
||||
retValue = null;
|
||||
}
|
||||
return retValue;
|
||||
};
|
||||
CFile.prototype["getGlyphs"] = function(pageIndex)
|
||||
{
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
return null;
|
||||
}
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
Module["_free"](retValue);
|
||||
retValue = null;
|
||||
}
|
||||
return retValue;
|
||||
};
|
||||
CFile.prototype["getGlyphs"] = function(pageIndex)
|
||||
{
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
return null;
|
||||
}
|
||||
|
||||
self.drawingFileCurrentPageIndex = pageIndex;
|
||||
var retValue = Module["_GetGlyphs"](this.nativeFile, pageIndex);
|
||||
// удалять результат не надо, этот буфер используется в качестве текстового буфера
|
||||
// для текстовых команд других страниц. После получения ВСЕХ текстовых страниц -
|
||||
// нужно вызвать destroyTextInfo()
|
||||
self.drawingFileCurrentPageIndex = -1;
|
||||
self.drawingFileCurrentPageIndex = pageIndex;
|
||||
var retValue = Module["_GetGlyphs"](this.nativeFile, pageIndex);
|
||||
// удалять результат не надо, этот буфер используется в качестве текстового буфера
|
||||
// для текстовых команд других страниц. После получения ВСЕХ текстовых страниц -
|
||||
// нужно вызвать destroyTextInfo()
|
||||
self.drawingFileCurrentPageIndex = -1;
|
||||
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
retValue = null;
|
||||
}
|
||||
if (this.pages[pageIndex].fonts.length > 0)
|
||||
{
|
||||
// ждем загрузки шрифтов для этой страницы
|
||||
retValue = null;
|
||||
}
|
||||
|
||||
if (null == retValue)
|
||||
return null;
|
||||
if (null == retValue)
|
||||
return null;
|
||||
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, retValue, 5);
|
||||
var len = lenArray[0];
|
||||
len -= 20;
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, retValue, 5);
|
||||
var len = lenArray[0];
|
||||
len -= 20;
|
||||
|
||||
if (self.drawingFile.onUpdateStatistics)
|
||||
self.drawingFile.onUpdateStatistics(lenArray[1], lenArray[2], lenArray[3], lenArray[4]);
|
||||
if (self.drawingFile.onUpdateStatistics)
|
||||
self.drawingFile.onUpdateStatistics(lenArray[1], lenArray[2], lenArray[3], lenArray[4]);
|
||||
|
||||
if (len <= 0)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
if (len <= 0)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
var textCommandsSrc = new Uint8Array(Module["HEAP8"].buffer, retValue + 20, len);
|
||||
var textCommands = new Uint8Array(len);
|
||||
textCommands.set(textCommandsSrc);
|
||||
var textCommandsSrc = new Uint8Array(Module["HEAP8"].buffer, retValue + 20, len);
|
||||
var textCommands = new Uint8Array(len);
|
||||
textCommands.set(textCommandsSrc);
|
||||
|
||||
textCommandsSrc = null;
|
||||
return textCommands;
|
||||
};
|
||||
CFile.prototype["destroyTextInfo"] = function()
|
||||
{
|
||||
Module["_DestroyTextInfo"]();
|
||||
};
|
||||
CFile.prototype["getLinks"] = function(pageIndex)
|
||||
{
|
||||
var res = [];
|
||||
var ext = Module["_GetLinks"](this.nativeFile, pageIndex);
|
||||
if (ext == 0)
|
||||
return res;
|
||||
textCommandsSrc = null;
|
||||
return textCommands;
|
||||
};
|
||||
CFile.prototype["destroyTextInfo"] = function()
|
||||
{
|
||||
Module["_DestroyTextInfo"]();
|
||||
};
|
||||
CFile.prototype["getLinks"] = function(pageIndex)
|
||||
{
|
||||
var res = [];
|
||||
var ext = Module["_GetLinks"](this.nativeFile, pageIndex);
|
||||
if (ext == 0)
|
||||
return res;
|
||||
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, ext, 4);
|
||||
if (lenArray == null)
|
||||
return res;
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, ext, 4);
|
||||
if (lenArray == null)
|
||||
return res;
|
||||
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
if (len <= 0)
|
||||
return res;
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
if (len <= 0)
|
||||
return res;
|
||||
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, ext + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, ext + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
|
||||
while (reader.isValid())
|
||||
{
|
||||
var rec = {};
|
||||
rec["link"] = reader.readString();
|
||||
rec["dest"] = reader.readDouble();
|
||||
rec["x"] = reader.readDouble();
|
||||
rec["y"] = reader.readDouble();
|
||||
rec["w"] = reader.readDouble();
|
||||
rec["h"] = reader.readDouble();
|
||||
res.push(rec);
|
||||
}
|
||||
while (reader.isValid())
|
||||
{
|
||||
var rec = {};
|
||||
rec["link"] = reader.readString();
|
||||
rec["dest"] = reader.readDouble();
|
||||
rec["x"] = reader.readDouble();
|
||||
rec["y"] = reader.readDouble();
|
||||
rec["w"] = reader.readDouble();
|
||||
rec["h"] = reader.readDouble();
|
||||
res.push(rec);
|
||||
}
|
||||
|
||||
Module["_free"](ext);
|
||||
return res;
|
||||
};
|
||||
CFile.prototype["getStructure"] = function()
|
||||
{
|
||||
var res = [];
|
||||
var str = Module["_GetStructure"](this.nativeFile);
|
||||
if (str == 0)
|
||||
return res;
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, str, 4);
|
||||
if (lenArray == null)
|
||||
return res;
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
if (len <= 0)
|
||||
return res;
|
||||
Module["_free"](ext);
|
||||
return res;
|
||||
};
|
||||
CFile.prototype["getStructure"] = function()
|
||||
{
|
||||
var res = [];
|
||||
var str = Module["_GetStructure"](this.nativeFile);
|
||||
if (str == 0)
|
||||
return res;
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, str, 4);
|
||||
if (lenArray == null)
|
||||
return res;
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
if (len <= 0)
|
||||
return res;
|
||||
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, str + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, str + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
|
||||
while (reader.isValid())
|
||||
{
|
||||
var rec = {};
|
||||
rec["page"] = reader.readInt();
|
||||
rec["level"] = reader.readInt();
|
||||
rec["y"] = reader.readDouble();
|
||||
rec["description"] = reader.readString();
|
||||
res.push(rec);
|
||||
}
|
||||
while (reader.isValid())
|
||||
{
|
||||
var rec = {};
|
||||
rec["page"] = reader.readInt();
|
||||
rec["level"] = reader.readInt();
|
||||
rec["y"] = reader.readDouble();
|
||||
rec["description"] = reader.readString();
|
||||
res.push(rec);
|
||||
}
|
||||
|
||||
Module["_free"](str);
|
||||
return res;
|
||||
};
|
||||
Module["_free"](str);
|
||||
return res;
|
||||
};
|
||||
|
||||
CFile.prototype.memory = function()
|
||||
{
|
||||
return Module["HEAP8"];
|
||||
};
|
||||
CFile.prototype.free = function(pointer)
|
||||
{
|
||||
Module["_free"](pointer);
|
||||
};
|
||||
CFile.prototype.memory = function()
|
||||
{
|
||||
return Module["HEAP8"];
|
||||
};
|
||||
CFile.prototype.free = function(pointer)
|
||||
{
|
||||
Module["_free"](pointer);
|
||||
};
|
||||
|
||||
self["AscViewer"]["CDrawingFile"] = CFile;
|
||||
self["AscViewer"]["CDrawingFile"] = CFile;
|
||||
self["AscViewer"]["InitializeFonts"] = function() {
|
||||
if (!window["g_fonts_selection_bin"])
|
||||
return;
|
||||
var memoryBuffer = window["g_fonts_selection_bin"].toUtf8();
|
||||
var pointer = Module["_malloc"](memoryBuffer.length);
|
||||
Module.HEAP8.set(memoryBuffer, pointer);
|
||||
Module.HEAP8.set(memoryBuffer, pointer);
|
||||
Module["_InitializeFontsBase64"](pointer, memoryBuffer.length);
|
||||
Module["_free"](pointer);
|
||||
delete window["g_fonts_selection_bin"];
|
||||
|
||||
// ranges
|
||||
let rangesBuffer = new CBinaryWriter();
|
||||
let ranges = AscFonts.FontPickerByCharacter.Ranges;
|
||||
let rangesBuffer = new CBinaryWriter();
|
||||
let ranges = AscFonts.FontPickerByCharacter.Ranges;
|
||||
|
||||
let rangesCount = ranges.length;
|
||||
rangesBuffer.writeUint(rangesCount);
|
||||
for (let i = 0; i < rangesCount; i++)
|
||||
{
|
||||
rangesBuffer.writeString(ranges[i].Name);
|
||||
rangesBuffer.writeUint(ranges[i].Start);
|
||||
rangesBuffer.writeUint(ranges[i].End);
|
||||
}
|
||||
let rangesCount = ranges.length;
|
||||
rangesBuffer.writeUint(rangesCount);
|
||||
for (let i = 0; i < rangesCount; i++)
|
||||
{
|
||||
rangesBuffer.writeString(ranges[i].Name);
|
||||
rangesBuffer.writeUint(ranges[i].Start);
|
||||
rangesBuffer.writeUint(ranges[i].End);
|
||||
}
|
||||
|
||||
let rangesFinalLen = rangesBuffer.dataSize;
|
||||
let rangesFinal = new Uint8Array(rangesBuffer.buffer.buffer, 0, rangesFinalLen);
|
||||
pointer = Module["_malloc"](rangesFinalLen);
|
||||
Module.HEAP8.set(rangesFinal, pointer);
|
||||
Module["_InitializeFontsRanges"](pointer, rangesFinalLen);
|
||||
Module["_free"](pointer);
|
||||
let rangesFinalLen = rangesBuffer.dataSize;
|
||||
let rangesFinal = new Uint8Array(rangesBuffer.buffer.buffer, 0, rangesFinalLen);
|
||||
pointer = Module["_malloc"](rangesFinalLen);
|
||||
Module.HEAP8.set(rangesFinal, pointer);
|
||||
Module["_InitializeFontsRanges"](pointer, rangesFinalLen);
|
||||
Module["_free"](pointer);
|
||||
};
|
||||
self["AscViewer"]["Free"] = function(pointer) {
|
||||
self["AscViewer"]["Free"] = function(pointer) {
|
||||
Module["_free"](pointer);
|
||||
};
|
||||
|
||||
@ -454,114 +454,114 @@
|
||||
return isFound;
|
||||
}
|
||||
|
||||
self["AscViewer"]["CheckStreamId"] = function(data, status) {
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, data, 4);
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
self["AscViewer"]["CheckStreamId"] = function(data, status) {
|
||||
var lenArray = new Int32Array(Module["HEAP8"].buffer, data, 4);
|
||||
var len = lenArray[0];
|
||||
len -= 4;
|
||||
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, data + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
var buffer = new Uint8Array(Module["HEAP8"].buffer, data + 4, len);
|
||||
var reader = new CBinaryReader(buffer, 0, len);
|
||||
|
||||
var name = reader.readString();
|
||||
var style = 0;
|
||||
if (reader.readInt() != 0)
|
||||
style |= 1;//AscFonts.FontStyle.FontStyleBold;
|
||||
if (reader.readInt() != 0)
|
||||
style |= 2;//AscFonts.FontStyle.FontStyleItalic;
|
||||
var name = reader.readString();
|
||||
var style = 0;
|
||||
if (reader.readInt() != 0)
|
||||
style |= 1;//AscFonts.FontStyle.FontStyleBold;
|
||||
if (reader.readInt() != 0)
|
||||
style |= 2;//AscFonts.FontStyle.FontStyleItalic;
|
||||
|
||||
var file = AscFonts.pickFont(name, style);
|
||||
var fileId = file.GetID();
|
||||
var fileStatus = file.GetStatus();
|
||||
var file = AscFonts.pickFont(name, style);
|
||||
var fileId = file.GetID();
|
||||
var fileStatus = file.GetStatus();
|
||||
|
||||
if (fileStatus == 0)
|
||||
{
|
||||
// шрифт загружен.
|
||||
fontToMemory(file, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.fontStreams[fileId] = self.fontStreams[fileId] || {};
|
||||
self.fontStreams[fileId].pages = self.fontStreams[fileId].pages || [];
|
||||
addToArrayAsDictionary(self.fontStreams[fileId].pages, self.drawingFileCurrentPageIndex);
|
||||
if (fileStatus == 0)
|
||||
{
|
||||
// шрифт загружен.
|
||||
fontToMemory(file, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.fontStreams[fileId] = self.fontStreams[fileId] || {};
|
||||
self.fontStreams[fileId].pages = self.fontStreams[fileId].pages || [];
|
||||
addToArrayAsDictionary(self.fontStreams[fileId].pages, self.drawingFileCurrentPageIndex);
|
||||
|
||||
if (self.drawingFile)
|
||||
{
|
||||
addToArrayAsDictionary(self.drawingFile.pages[self.drawingFileCurrentPageIndex].fonts, fileId);
|
||||
}
|
||||
if (self.drawingFile)
|
||||
{
|
||||
addToArrayAsDictionary(self.drawingFile.pages[self.drawingFileCurrentPageIndex].fonts, fileId);
|
||||
}
|
||||
|
||||
if (fileStatus != 2)
|
||||
{
|
||||
// шрифт не грузится - надо загрузить
|
||||
var _t = file;
|
||||
file.LoadFontAsync("../../../../fonts/", function(){
|
||||
fontToMemory(_t, true);
|
||||
if (fileStatus != 2)
|
||||
{
|
||||
// шрифт не грузится - надо загрузить
|
||||
var _t = file;
|
||||
file.LoadFontAsync("../../../../fonts/", function(){
|
||||
fontToMemory(_t, true);
|
||||
|
||||
var pages = self.fontStreams[fileId].pages;
|
||||
delete self.fontStreams[fileId];
|
||||
var pagesRepaint = [];
|
||||
for (var i = 0, len = pages.length; i < len; i++)
|
||||
{
|
||||
var pageObj = self.drawingFile.pages[pages[i]];
|
||||
var fonts = pageObj.fonts;
|
||||
|
||||
for (var j = 0, len_fonts = fonts.length; j < len_fonts; j++)
|
||||
{
|
||||
if (fonts[j] == fileId)
|
||||
{
|
||||
fonts.splice(j, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (0 == fonts.length)
|
||||
pagesRepaint.push(pages[i]);
|
||||
}
|
||||
var pages = self.fontStreams[fileId].pages;
|
||||
delete self.fontStreams[fileId];
|
||||
var pagesRepaint = [];
|
||||
for (var i = 0, len = pages.length; i < len; i++)
|
||||
{
|
||||
var pageObj = self.drawingFile.pages[pages[i]];
|
||||
var fonts = pageObj.fonts;
|
||||
|
||||
for (var j = 0, len_fonts = fonts.length; j < len_fonts; j++)
|
||||
{
|
||||
if (fonts[j] == fileId)
|
||||
{
|
||||
fonts.splice(j, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (0 == fonts.length)
|
||||
pagesRepaint.push(pages[i]);
|
||||
}
|
||||
|
||||
if (pagesRepaint.length > 0)
|
||||
{
|
||||
if (self.drawingFile.onRepaintPages)
|
||||
self.drawingFile.onRepaintPages(pagesRepaint);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
if (pagesRepaint.length > 0)
|
||||
{
|
||||
if (self.drawingFile.onRepaintPages)
|
||||
self.drawingFile.onRepaintPages(pagesRepaint);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var memoryBuffer = fileId.toUtf8();
|
||||
var pointer = Module["_malloc"](memoryBuffer.length);
|
||||
Module.HEAP8.set(memoryBuffer, pointer);
|
||||
Module["HEAP8"][status] = (fileStatus == 0) ? 1 : 0;
|
||||
return pointer;
|
||||
};
|
||||
var memoryBuffer = fileId.toUtf8();
|
||||
var pointer = Module["_malloc"](memoryBuffer.length);
|
||||
Module.HEAP8.set(memoryBuffer, pointer);
|
||||
Module["HEAP8"][status] = (fileStatus == 0) ? 1 : 0;
|
||||
return pointer;
|
||||
};
|
||||
|
||||
function fontToMemory(file, isCheck)
|
||||
{
|
||||
var idBuffer = file.GetID().toUtf8();
|
||||
var idPointer = Module["_malloc"](idBuffer.length);
|
||||
Module["HEAP8"].set(idBuffer, idPointer);
|
||||
function fontToMemory(file, isCheck)
|
||||
{
|
||||
var idBuffer = file.GetID().toUtf8();
|
||||
var idPointer = Module["_malloc"](idBuffer.length);
|
||||
Module["HEAP8"].set(idBuffer, idPointer);
|
||||
|
||||
if (isCheck)
|
||||
{
|
||||
var nExist = Module["_IsFontBinaryExist"](idPointer);
|
||||
if (nExist != 0)
|
||||
{
|
||||
Module["_free"](idPointer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (isCheck)
|
||||
{
|
||||
var nExist = Module["_IsFontBinaryExist"](idPointer);
|
||||
if (nExist != 0)
|
||||
{
|
||||
Module["_free"](idPointer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var stream_index = file.GetStreamIndex();
|
||||
|
||||
var stream = AscFonts.getFontStream(stream_index);
|
||||
var streamPointer = Module["_malloc"](stream.size);
|
||||
Module["HEAP8"].set(stream.data, streamPointer);
|
||||
var stream_index = file.GetStreamIndex();
|
||||
|
||||
var stream = AscFonts.getFontStream(stream_index);
|
||||
var streamPointer = Module["_malloc"](stream.size);
|
||||
Module["HEAP8"].set(stream.data, streamPointer);
|
||||
|
||||
// не скидываем стрим, чтобы можно было использовать его а fonts.js
|
||||
//var streams = AscFonts.getFontStreams();
|
||||
//streams[stream_index] = null;
|
||||
//streams[stream_index] = AscFonts.updateFontStreamNative(streamPointer, stream.size);
|
||||
// не скидываем стрим, чтобы можно было использовать его а fonts.js
|
||||
//var streams = AscFonts.getFontStreams();
|
||||
//streams[stream_index] = null;
|
||||
//streams[stream_index] = AscFonts.updateFontStreamNative(streamPointer, stream.size);
|
||||
|
||||
Module["_SetFontBinary"](idPointer, streamPointer, stream.size);
|
||||
Module["_SetFontBinary"](idPointer, streamPointer, stream.size);
|
||||
|
||||
Module["_free"](streamPointer);
|
||||
Module["_free"](idPointer);
|
||||
}
|
||||
Module["_free"](streamPointer);
|
||||
Module["_free"](idPointer);
|
||||
}
|
||||
})(window, undefined);
|
||||
|
||||
Reference in New Issue
Block a user