Compare commits

..

28 Commits

Author SHA1 Message Date
da1f604f09 Merge pull request #308 from ONLYOFFICE/fix/v5.6.4-bin2
x2t - fix bug #46353
2020-09-02 18:31:59 +03:00
68e791c2fd x2t - fix bug #46353 2020-09-02 18:30:46 +03:00
30cdf52611 Merge pull request #307 from ONLYOFFICE/fix/v5.6.4-bin2
x2t - fix bug #46353
2020-09-01 10:37:42 +03:00
83f1a9e068 x2t - fix bug #46353 2020-09-01 10:35:41 +03:00
df3382c616 Merge pull request #305 from ONLYOFFICE/fix/v5.6.4_bin
x2t - fix #46353
2020-08-31 19:52:58 +03:00
70c886cd9a x2t - fix #46353 2020-08-31 19:51:30 +03:00
8cb6415915 Merge pull request #303 from ONLYOFFICE/fix/v5.6.4_bin
x2t - fix bug #46348
2020-08-31 09:45:12 +03:00
279eaed9c8 x2t - fix bug #46348 2020-08-31 09:43:51 +03:00
078aa9c5e7 Merge pull request #302 from ONLYOFFICE/fix/bug-46384
[x2t] Fix bug 46384
2020-08-30 16:08:23 +03:00
b76463f8d1 [x2t] Fix bug 46384
Fix omitted break statement in switch
2020-08-30 16:06:00 +03:00
a2110b9947 Merge pull request #301 from ONLYOFFICE/fix/bug-46352
[x2t] Fix bug 46352
2020-08-28 14:30:47 +03:00
de2c16ed7c [x2t] Fix bug 46352
Fix out_of_range while binary reading
2020-08-28 14:25:31 +03:00
5aa32a21f6 Merge pull request #300 from ONLYOFFICE/fix/v5.6.4_bin
x2t - binary - fix bug #46352
2020-08-28 13:07:30 +03:00
bec0a59ac1 x2t - binary - fix bug #46352 2020-08-28 13:05:18 +03:00
9024feaf5d Merge pull request #299 from ONLYOFFICE/fix/v5.6.4_bin
x2t - binary - fix bug #46353
2020-08-28 12:49:33 +03:00
078d3bc991 x2t - binary - fix bug #46353 2020-08-28 12:47:24 +03:00
ef6af5a1ae Merge branch hotfix/v5.6.1 into master 2020-08-05 09:19:35 +00:00
6e5fe1202e Merge pull request #278 from ONLYOFFICE/fix/fixXP
Fix xp build
2020-08-03 12:00:48 +03:00
0005b20095 Fix xp build 2020-08-03 11:29:19 +03:00
82cdd75365 Merge branch hotfix/v5.6.0 into master 2020-07-28 13:31:16 +00:00
3410e157e0 Merge pull request #272 from ONLYOFFICE/feature/fixIOSBoost
Fix ios build
2020-07-21 16:02:46 +03:00
92d0edeb48 Fix ios build 2020-07-21 15:55:55 +03:00
ce397b13f6 Fix bug with redirects in downloads 2020-07-10 16:31:37 +03:00
d197c0da15 . 2020-07-06 16:55:04 +03:00
0e7a8c1af9 Fix rpath instead runpath 2020-07-06 16:14:41 +03:00
a52bcb3205 Fix previous commit 2020-07-06 14:05:06 +03:00
b57bf58068 Use std::vector in CArray realization. Deprecated class! 2020-07-06 13:50:43 +03:00
7be6410a13 Fix fonts selection 2020-07-03 11:25:24 +03:00
23 changed files with 346 additions and 127 deletions

View File

@ -112,7 +112,9 @@ public:
long read1defCurPos = 0;\
while(read1defCurPos < (long)stLen)\
{\
BYTE read1defType = m_oBufferedStream.GetUChar();\
BYTE read1defType = 0;\
if (false == m_oBufferedStream.GetUCharWithResult(&read1defType))\
break;\
long read1defLength = m_oBufferedStream.GetLong();\
res = fReadFunction(read1defType, read1defLength, arg);\
if(res == c_oSerConstants::ReadUnknown)\
@ -129,7 +131,9 @@ public:
long read2defCurPos = 0;\
while(read2defCurPos < (long)stLen)\
{\
BYTE read2defType = m_oBufferedStream.GetUChar();\
BYTE read2defType = 0;\
if (false == m_oBufferedStream.GetUCharWithResult(&read2defType))\
break;\
long read2defLenType = m_oBufferedStream.GetUChar();\
int read2defCurPosShift = 2;\
int read2defRealLen;\
@ -3294,7 +3298,14 @@ int Binary_OtherTableReader::ReadOtherContent(BYTE type, long length, void* poRe
else if(c_oSerOtherTableTypes::DocxTheme == type)
{
smart_ptr<PPTX::Theme> pTheme = new PPTX::Theme(NULL);
pTheme->fromPPTY(&m_oBufferedStream);
try
{
pTheme->fromPPTY(&m_oBufferedStream);
}
catch(...)
{
//todooo в отдельный лог
}
NSBinPptxRW::CXmlWriter xmlWriter;
pTheme->toXmlWriter(&xmlWriter);
m_oFileWriter.m_oTheme.m_sContent = xmlWriter.GetXmlString();

View File

@ -5959,7 +5959,7 @@ void BinaryDocumentTableWriter::WriteDrawingPptx(OOX::WritingElement* item)
WriteDrawing(pXml, NULL, NULL);
m_oBcw.WriteItemEnd(nCurPos);
}
else
else if (pGraphicDrawing || pGraphic)
{
int nCurPos = m_oBcw.WriteItemStart(c_oSerRunType::pptxDrawing);
WriteDrawing(NULL, pGraphicDrawing, pGraphic);

View File

@ -459,7 +459,7 @@ void OoxConverter::convert(PPTX::Logic::ChartRec *oox_chart)
odf_context()->drawing_context()->start_group();
odf_context()->drawing_context()->set_group_size (width, height, width, height);
odf_context()->drawing_context()->set_group_position (x, y, 0, 0);
odf_context()->drawing_context()->set_group_position (x, y, 0., 0.);
odf_context()->drawing_context()->start_drawing();
odf_context()->drawing_context()->set_position (zero, zero);

View File

@ -4913,19 +4913,26 @@ HRESULT CDrawingConverter::SaveObject(LONG lStart, LONG lLength, const std::wstr
//strMainProps += L"<wp:cNvGraphicFramePr/>");
m_pReader->Seek(lStart);
PPTX::Logic::SpTreeElem oElem;
++m_nCurrentIndexObject;
m_pReader->Seek(lStart);
BYTE typeRec1 = m_pReader->GetUChar(); // must be 0;
LONG _e = m_pReader->GetPos() + m_pReader->GetLong() + 4;
m_pReader->Skip(5); // type record (must be 1) + 4 byte - len record
PPTX::Logic::SpTreeElem oElem;
m_pReader->m_nDocumentType = XMLWRITER_DOC_TYPE_DOCX;
try
{
m_pReader->Skip(5); // type record (must be 1) + 4 byte - len record
oElem.fromPPTY(m_pReader);
oElem.fromPPTY(m_pReader);
}
catch(...)
{
//todooo в отдельный лог
}
bool bOle = false;
if (oElem.is<PPTX::Logic::Pic>())
{
@ -5074,19 +5081,26 @@ HRESULT CDrawingConverter::SaveObjectEx(LONG lStart, LONG lLength, const std::ws
}
else
{
PPTX::Logic::SpTreeElem oElem;
m_pReader->Seek(lStart);
m_pReader->m_nDocumentType = nDocType;
++m_nCurrentIndexObject;
PPTX::Logic::SpTreeElem oElem;
BYTE typeRec1 = m_pReader->GetUChar(); // must be 0;
LONG _e = m_pReader->GetPos() + m_pReader->GetLong() + 4;
try
{
m_pReader->Skip(5); // type record (must be 1) + 4 byte - len record
m_pReader->Skip(5); // type record (must be 1) + 4 byte - len record
oElem.fromPPTY(m_pReader);
oElem.fromPPTY(m_pReader);
}
catch(...)
{
//todooo
}
bool bOle = false;
if (oElem.is<PPTX::Logic::Pic>())
@ -5115,10 +5129,8 @@ HRESULT CDrawingConverter::SaveObjectEx(LONG lStart, LONG lLength, const std::ws
--m_nCurrentIndexObject;
SaveObjectExWriterRelease(oXmlWriter);
sXml = oXmlWriter.GetXmlString();
m_pReader->Seek(_e);
}
return S_OK;
@ -5130,20 +5142,25 @@ std::wstring CDrawingConverter::SaveObjectBackground(LONG lStart, LONG lLength)
m_pReader->Seek(lStart);
++m_nCurrentIndexObject;
BYTE typeRec1 = m_pReader->GetUChar(); // must be 0;
LONG _e = m_pReader->GetPos() + m_pReader->GetLong() + 4;
m_pReader->Skip(5); // type record (must be 1) + 4 byte - len record
PPTX::Logic::SpTreeElem oElem;
m_pReader->m_nDocumentType = XMLWRITER_DOC_TYPE_DOCX;
PPTX::Logic::SpTreeElem oElem;
try
{
m_pReader->Skip(5); // type record (must be 1) + 4 byte - len record
oElem.fromPPTY(m_pReader);
oElem.fromPPTY(m_pReader);
}
catch(...)
{
//todooo
}
m_pReader->m_nDocumentType = XMLWRITER_DOC_TYPE_PPTX;
NSBinPptxRW::CXmlWriter oXmlWriter;
SaveObjectExWriterInit(oXmlWriter, XMLWRITER_DOC_TYPE_DOCX);

View File

@ -52,6 +52,7 @@
#include "../../DesktopEditor/common/File.h"
#include "../../DesktopEditor/common/Directory.h"
#include "../PPTXFormat/FileContainer.h"
#include <iostream>
#define BYTE_SIZEOF sizeof(BYTE)
#define UINT16_SIZEOF sizeof(_UINT16)
@ -1531,7 +1532,7 @@ namespace NSBinPptxRW
std::wstring strOleRelsPath;
oRelsGeneratorInfo.nOleRId = m_lNextRelsID++;
oRelsGeneratorInfo.nOleRId = m_lNextRelsID++;
oRelsGeneratorInfo.sFilepathOle = oleFile->filename().GetPath();
if (m_pManager->m_nDocumentType != XMLWRITER_DOC_TYPE_XLSX)
@ -1561,7 +1562,7 @@ namespace NSBinPptxRW
std::wstring strMediaRelsPath;
oRelsGeneratorInfo.nMediaRId = m_lNextRelsID++;
oRelsGeneratorInfo.nMediaRId = m_lNextRelsID++;
oRelsGeneratorInfo.sFilepathOle = mediaFile->filename().GetPath();
if (m_pManager->m_nDocumentType != XMLWRITER_DOC_TYPE_XLSX)
@ -1702,7 +1703,14 @@ namespace NSBinPptxRW
int CBinaryFileReader::Seek(LONG _pos)
{
if (_pos > m_lSize)
return 1;
{
_pos = m_lSize;
}
if (_pos < 0 )
{
_pos = 0;
throw;
}
m_lPos = _pos;
m_pDataCur = m_pData + m_lPos;
return 0;
@ -1719,10 +1727,24 @@ namespace NSBinPptxRW
}
// 1 bytes
bool CBinaryFileReader::GetUCharWithResult(BYTE *value_)
{
if (!value_ || m_lPos >= m_lSize)
{
return false;
}
*value_ = *m_pDataCur;
++m_lPos;
++m_pDataCur;
return true;
}
BYTE CBinaryFileReader::GetUChar()
{
if (m_lPos >= m_lSize)
return 0;
if (m_lPos >= m_lSize || m_lPos < 0)
{
throw;
}
BYTE res = *m_pDataCur;
++m_lPos;
@ -1731,8 +1753,10 @@ namespace NSBinPptxRW
}
signed char CBinaryFileReader::GetChar()
{
if (m_lPos >= m_lSize)
return 0;
if (m_lPos >= m_lSize || m_lPos <0)
{
throw;
}
BYTE res = *m_pDataCur;
if (res > 127)
@ -1763,7 +1787,9 @@ namespace NSBinPptxRW
_UINT16 CBinaryFileReader::GetUShort()
{
if (m_lPos + 1 >= m_lSize)
return 0;
{
throw;
}
#if defined(_IOS) || defined(__ANDROID__)
_UINT16 res = 0;
memcpy(&res, m_pDataCur, sizeof(_UINT16));
@ -1777,7 +1803,10 @@ namespace NSBinPptxRW
_INT16 CBinaryFileReader::GetShort()
{
if (m_lPos + 1 >= m_lSize)
return 0;
{
throw;
}
#if defined(_IOS) || defined(__ANDROID__)
_INT16 res = 0;
memcpy(&res, m_pDataCur, sizeof(_INT16));
@ -1793,7 +1822,10 @@ namespace NSBinPptxRW
_UINT32 CBinaryFileReader::GetULong()
{
if (m_lPos + 3 >= m_lSize)
return 0;
{
throw;
}
#if defined(_IOS) || defined(__ANDROID__)
_UINT32 res = 0;
memcpy(&res, m_pDataCur, sizeof(_UINT32));
@ -1807,7 +1839,10 @@ namespace NSBinPptxRW
_INT64 CBinaryFileReader::GetLong64()
{
if (m_lPos + 7 >= m_lSize)
return 0;
{
throw;
}
#if defined(_IOS) || defined(__ANDROID__)
_INT64 res = 0;
memcpy(&res, m_pDataCur, sizeof(_INT64));
@ -1833,7 +1868,10 @@ namespace NSBinPptxRW
double CBinaryFileReader::GetDoubleReal()
{
if (m_lPos + (int)DOUBLE_SIZEOF > m_lSize)
return 0;
{
throw;
}
#if defined(_IOS) || defined(__ANDROID__)
double res = 0.0;
memcpy(&res, m_pDataCur, sizeof(double));
@ -1856,7 +1894,9 @@ namespace NSBinPptxRW
if (len < 1 )
return "";
if (m_lPos + len > m_lSize)
return "";
{
throw;
}
std::string res((CHAR*)m_pDataCur, len);
m_lPos += len;
@ -1873,7 +1913,9 @@ namespace NSBinPptxRW
if (len < 1 )
return _T("");
if (m_lPos + len > m_lSize)
return _T("");
{
throw;
}
_UINT32 lSize = len >>1; //string in char
@ -1902,7 +1944,9 @@ namespace NSBinPptxRW
if (len < 1)
return _T("");
if (m_lPos + len > m_lSize)
return _T("");
{
throw;
}
_UINT32 lSize = len >> 1; //string in char
@ -1979,7 +2023,9 @@ namespace NSBinPptxRW
if (nSize < 0) return 0;
if (m_lPos + nSize > m_lSize)
return 0;
{
throw;
}
BYTE* res = (BYTE*)m_pDataCur;
m_lPos += nSize;

View File

@ -512,6 +512,7 @@ namespace NSBinPptxRW
bool Peek (LONG nSizeToRead);
// 1 bytes
bool GetUCharWithResult(BYTE *value_);
BYTE GetUChar();
signed char GetChar();
bool GetBool();

View File

@ -192,10 +192,14 @@ namespace NSBinPptxRW
for (LONG i = 0; i < 30/*main tables max*/; ++i)
{
BYTE _type = m_oReader.GetUChar();
if (0 == _type)
break;
BYTE _type = 0;
if (false == m_oReader.GetUCharWithResult(&_type))
break;
if (0 == _type)
break;
m_mainTables.insert(std::pair<BYTE, LONG>(_type, m_oReader.GetLong()));
}
@ -407,7 +411,13 @@ namespace NSBinPptxRW
m_oReader.m_pRels->Clear();
m_oReader.m_pRels->StartTheme();
m_arThemes[i].fromPPTY(&m_oReader);
try
{
m_arThemes[i].fromPPTY(&m_oReader);
}
catch(...)
{
}
std::wstring strMasterXml = L"theme" + std::to_wstring(i + 1) + L".xml";
oXmlWriter.ClearNoAttack();
@ -446,7 +456,13 @@ namespace NSBinPptxRW
m_oReader.m_pRels->Clear();
m_oReader.m_pRels->StartMaster(i, m_arSlideMasters_Theme[i]);
m_arSlideMasters[i].fromPPTY(&m_oReader);
try
{
m_arSlideMasters[i].fromPPTY(&m_oReader);
}
catch(...)
{
}
std::vector<PPTX::Logic::XmlId>& arrLays = m_arSlideMasters[i].sldLayoutIdLst;
LONG lLayouts = (LONG)m_arSlideMasters_Theme[i].m_arLayouts.size();
@ -496,7 +512,14 @@ namespace NSBinPptxRW
m_oReader.m_pRels->Clear();
m_oReader.m_pRels->StartLayout(m_arSlideLayouts_Master[i]);
m_arSlideLayouts[i].fromPPTY(&m_oReader);
try
{
m_arSlideLayouts[i].fromPPTY(&m_oReader);
}
catch(...)
{
}
m_oReader.m_pRels->CloseRels();
std::wstring strMasterXml = L"slideLayout" + std::to_wstring(i + 1) + L".xml";
@ -543,7 +566,13 @@ namespace NSBinPptxRW
}
m_oReader.m_pRels->StartNotes((int)indexSlide);
m_arNotesSlides[i].fromPPTY(&m_oReader);
try
{
m_arNotesSlides[i].fromPPTY(&m_oReader);
}
catch(...)
{
}
m_oReader.m_pRels->CloseRels();
@ -584,7 +613,13 @@ namespace NSBinPptxRW
bNotesMasterPresent = true;
if (lCount > 0)
{
m_arNotesMasters.back().fromPPTY(&m_oReader);
try
{
m_arNotesMasters.back().fromPPTY(&m_oReader);
}
catch(...)
{
}
m_oReader.m_pRels->CloseRels();
std::wstring strMasterNotesXml = L"notesMaster1.xml";
@ -625,7 +660,14 @@ namespace NSBinPptxRW
m_oReader.m_pRels->Clear();
m_oReader.m_pRels->StartSlide(i, m_arSlides_Layout[i], m_arSlides_Notes[i]);
m_arSlides[i].fromPPTY(&m_oReader);
try
{
m_arSlides[i].fromPPTY(&m_oReader);
}
catch(...)
{
}
if (m_arSlides[i].comments.is_init())
{
@ -667,7 +709,13 @@ namespace NSBinPptxRW
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
m_oApp.fromPPTY(&m_oReader);
try
{
m_oApp.fromPPTY(&m_oReader);
}
catch(...)
{
}
SetRequiredDefaultsApp();
}
@ -677,7 +725,13 @@ namespace NSBinPptxRW
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
m_oCore.fromPPTY(&m_oReader);
try
{
m_oCore.fromPPTY(&m_oReader);
}
catch(...)
{
}
SetRequiredDefaultsCore();
}
if (false)
@ -687,7 +741,13 @@ namespace NSBinPptxRW
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
m_oTableStyles.fromPPTY(&m_oReader);
try
{
m_oTableStyles.fromPPTY(&m_oReader);
}
catch(...)
{
}
}
// presProps
@ -695,7 +755,14 @@ namespace NSBinPptxRW
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
m_oPresProps.fromPPTY(&m_oReader);
try
{
m_oPresProps.fromPPTY(&m_oReader);
}
catch(...)
{
//todooo сделать в отдельный лог
}
}
// viewProps
@ -703,7 +770,13 @@ namespace NSBinPptxRW
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
m_oViewProps.fromPPTY(&m_oReader);
try
{
m_oViewProps.fromPPTY(&m_oReader);
}
catch(...)
{
}
}
}
@ -717,7 +790,13 @@ namespace NSBinPptxRW
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
m_oPresProps.fromPPTY(&m_oReader);
try
{
m_oPresProps.fromPPTY(&m_oReader);
}
catch(...)
{
}
}
else
{
@ -728,7 +807,13 @@ namespace NSBinPptxRW
if (m_mainTables.end() != pPair)
{
m_oReader.Seek(pPair->second);
m_oTableStyles.fromPPTY(&m_oReader);
try
{
m_oTableStyles.fromPPTY(&m_oReader);
}
catch(...)
{
}
}
if (m_oTableStyles.Styles.empty())
@ -786,7 +871,13 @@ namespace NSBinPptxRW
NSDirectory::CreateDirectory (pathFolderRels.GetPath());
m_oReader.Seek(pPair->second);
m_oPresentation.fromPPTY(&m_oReader);
try
{
m_oPresentation.fromPPTY(&m_oReader);
}
catch(...)
{
}
m_oPresentation.sldMasterIdLst.clear();
LONG nCountLayouts = 0;

View File

@ -314,22 +314,30 @@ namespace PPTX
pDstBuffer = (BYTE*) __s.c_str();
dstLen = len;
}
if (sImageExtension.length() < 1)
{
CImageFileFormatChecker checker;
sImageExtension = checker.DetectFormatByData(pDstBuffer, dstLen);
}
//папки media может не быть в случае, когда все картинки base64(поскольку файл временный, папку media не создаем)
std::wstring tempFilePath = pReader->m_strFolder + FILE_SEPARATOR_STR;
OOX::CPath pathTemp = NSFile::CFileBinary::CreateTempFileWithUniqueName(tempFilePath, _T("img")) + _T(".") + sImageExtension;
CImageFileFormatChecker checker;
std::wstring detectImageExtension = checker.DetectFormatByData(pDstBuffer, dstLen);
CFile oTempFile;
oTempFile.CreateFile(pathTemp.GetPath());
oTempFile.WriteFile((void*)pDstBuffer, (DWORD)dstLen);
oTempFile.CloseFile();
strImagePath = strTempFile =pathTemp.GetPath(); // strTempFile для удаления
if (false == detectImageExtension.empty())
{
if (sImageExtension.empty())
sImageExtension = detectImageExtension;
//папки media может не быть в случае, когда все картинки base64(поскольку файл временный, папку media не создаем)
std::wstring tempFilePath = pReader->m_strFolder + FILE_SEPARATOR_STR;
OOX::CPath pathTemp = NSFile::CFileBinary::CreateTempFileWithUniqueName(tempFilePath, _T("img")) + _T(".") + sImageExtension;
CFile oTempFile;
oTempFile.CreateFile(pathTemp.GetPath());
oTempFile.WriteFile((void*)pDstBuffer, (DWORD)dstLen);
oTempFile.CloseFile();
strImagePath = strTempFile =pathTemp.GetPath(); // strTempFile для удаления
}
else
{// бяка
strImagePath.clear();
}
if (bBase64)
{
RELEASEARRAYOBJECTS(pDstBuffer);

View File

@ -485,6 +485,7 @@ namespace PPTX
defRPr = new Logic::RunProperties();
defRPr->m_name = _T("a:defRPr");
defRPr->fromPPTY(pReader);
break;
}
default:
{

View File

@ -332,25 +332,33 @@ namespace PPTX
pDstBuffer = (BYTE*) __s.c_str();
dstLen = len;
}
if (sImageExtension.length() < 1)
{
CImageFileFormatChecker checker;
sImageExtension = checker.DetectFormatByData(pDstBuffer, dstLen);
}
//папки media может не быть в случае, когда все картинки base64(поскольку файл временный, папку media не создаем)
std::wstring tempFilePath = pReader->m_strFolder + FILE_SEPARATOR_STR;
OOX::CPath pathTemp = NSFile::CFileBinary::CreateTempFileWithUniqueName(tempFilePath, _T("img")) + _T(".") + sImageExtension;
CImageFileFormatChecker checker;
std::wstring detectImageExtension = checker.DetectFormatByData(pDstBuffer, dstLen);
CFile oTempFile;
oTempFile.CreateFile(pathTemp.GetPath());
oTempFile.WriteFile((void*)pDstBuffer, (DWORD)dstLen);
oTempFile.CloseFile();
strUrl = strTempFile =pathTemp.GetPath(); // strTempFile для удаления
if (bBase64)
if (false == detectImageExtension.empty())
{
RELEASEARRAYOBJECTS(pDstBuffer);
if (sImageExtension.empty())
sImageExtension = detectImageExtension;
//папки media может не быть в случае, когда все картинки base64(поскольку файл временный, папку media не создаем)
std::wstring tempFilePath = pReader->m_strFolder + FILE_SEPARATOR_STR;
OOX::CPath pathTemp = NSFile::CFileBinary::CreateTempFileWithUniqueName(tempFilePath, _T("img")) + _T(".") + sImageExtension;
CFile oTempFile;
oTempFile.CreateFile(pathTemp.GetPath());
oTempFile.WriteFile((void*)pDstBuffer, (DWORD)dstLen);
oTempFile.CloseFile();
strUrl = strTempFile =pathTemp.GetPath(); // strTempFile для удаления
if (bBase64)
{
RELEASEARRAYOBJECTS(pDstBuffer);
}
}
else
{// бяка
strUrl.clear();
}
}
else
@ -521,6 +529,7 @@ namespace PPTX
pFill->tileRect = new PPTX::Logic::Rect();
pFill->tileRect->fromPPTY(pReader);
pFill->tileRect->m_name = _T("a:tileRect");
break;
}
default:
{

View File

@ -206,11 +206,16 @@ namespace PPTX
while (pReader->GetPos() < _e)
{
BYTE _rec = pReader->GetUChar();
Logic::UniColor color;
color.fromPPTY(pReader);
Scheme.insert(std::pair<std::wstring,Logic::UniColor>(SchemeClr_GetStringCode(_rec), color));
if (pReader->GetPos() + 4 < _e)
{
Logic::UniColor color;
color.fromPPTY(pReader);
Scheme.insert(std::pair<std::wstring,Logic::UniColor>(SchemeClr_GetStringCode(_rec), color));
}
else
break;
}
pReader->Seek(_e);

View File

@ -5,8 +5,8 @@
# iOS simulator.
#
# To configure the script, define:
# BOOST_VERSION: Which version of Boost to build (e.g. 1.58.0)
# BOOST_VERSION2: Same as BOOST_VERSION, but with _ instead of . (e.g. 1_58_0)
# BOOST_VERSION: Which version of Boost to build (e.g. 1.72.0)
# BOOST_VERSION2: Same as BOOST_VERSION, but with _ instead of . (e.g. 1_72_0)
# BOOST_LIBS: Which Boost libraries to build
# MIN_IOS_VERSION: Minimum iOS Target Version (e.g. 8.0)
# IOS_SDK_VERSION: iOS SDK version (e.g. 9.0)
@ -24,8 +24,8 @@ BOOST_LIBS="regex"
BUILD_IOS=
CLEAN=
BOOST_VERSION=1.58.0
BOOST_VERSION2=1_58_0
BOOST_VERSION=1.72.0
BOOST_VERSION2=1_72_0
MIN_IOS_VERSION=8.0
IOS_SDK_VERSION=`xcodebuild BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE="YES" OTHER_CFLAGS="-fembed-bitcode" -showsdks | grep iphoneos | \
egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`

View File

@ -605,6 +605,7 @@ namespace OOX
case 'r':
if ( _T("v:rect") == sName )
m_oShape = oSubReader;
break;
case 's':
if ( _T("v:shadow") == sName )
pItem = new OOX::Vml::CShadow( oSubReader );

View File

@ -80,14 +80,15 @@ int download_external(const std::wstring& sUrl, const std::wstring& sOutput)
case 0: // child process
{
const char* nargs[7];
const char* nargs[8];
nargs[0] = "/usr/bin/curl";
nargs[1] = "--url";
nargs[2] = sUrlA.c_str();
nargs[3] = "--output";
nargs[4] = sOutputA.c_str();
nargs[5] = "--silent";
nargs[6] = NULL;
nargs[6] = "-L";
nargs[7] = NULL;
const char* nenv[3];
nenv[0] = "LD_PRELOAD=";

View File

@ -6,7 +6,7 @@ BUILD_NUMBER = $$(BUILD_NUMBER)
!isEmpty(PRODUCT_VERSION){
!isEmpty(BUILD_NUMBER){
VERSION = $${PRODUCT_VERSION}.$${BUILD_NUMBER}
}
}
}
DEFINES += INTVER=$$VERSION
@ -67,6 +67,8 @@ isEqual(QT_MAJOR_VERSION, 5) {
}
}
DEFINES += INTERNAL_USE_ARRAY_AS_VECTOR
ios {
CONFIG += core_ios
DEFINES += _IOS IOS LINUX _LINUX MAC _MAC _XCODE
@ -158,7 +160,9 @@ core_windows {
core_linux {
equals(TEMPLATE, app) {
QMAKE_LFLAGS += -Wl,--rpath=./:./system
QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN\'"
QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN/system\'"
QMAKE_LFLAGS += -Wl,--disable-new-dtags
}
}
@ -373,6 +377,7 @@ defineTest(ADD_DEPENDENCY) {
isEqual(lib, doctrenderer):CORE_BUILDS_LIBRARIES_PATH_DST=$$CORE_BUILDS_LIBRARIES_PATH/xp
isEqual(lib, ascdocumentscore):CORE_BUILDS_LIBRARIES_PATH_DST=$$CORE_BUILDS_LIBRARIES_PATH/xp
isEqual(lib, videoplayer):CORE_BUILDS_LIBRARIES_PATH_DST=$$CORE_BUILDS_LIBRARIES_PATH/xp
isEqual(lib, ooxmlsignature):CORE_BUILDS_LIBRARIES_PATH_DST=$$CORE_BUILDS_LIBRARIES_PATH/xp
}
!bundle_dylibs:LIBS += -L$$CORE_BUILDS_LIBRARIES_PATH_DST -l$$lib
bundle_dylibs:LIBS += -F$$CORE_BUILDS_LIBRARIES_PATH_DST -framework $$lib

View File

@ -35,7 +35,9 @@
#include "Types.h"
#include <string.h>
#if 0 //__APPLE__
#ifdef INTERNAL_USE_ARRAY_AS_VECTOR
// Use std::vector instead this class
#include <vector>
@ -87,7 +89,7 @@ public:
for (int i = 0; i < nAllocSize; i++)
Add();
return TRUE;
}
@ -137,6 +139,11 @@ public:
}
return m_aT[nIndex];
}
T* GetData()
{
return m_aT.data();
}
private:

View File

@ -679,7 +679,7 @@ HRESULT CGraphicsRenderer::CommandDrawTextExCHAR(const LONG& c, const LONG& gid,
HRESULT CGraphicsRenderer::CommandDrawTextEx(const std::wstring& bsUnicodeText, const unsigned int* pGids, const unsigned int nGidsCount, const double& x, const double& y, const double& w, const double& h)
{
if (NULL != pGids)
if (NULL != pGids && 0 != nGidsCount && !(1 == nGidsCount && 0 == *pGids))
{
m_oFont.StringGID = TRUE;
if (c_nHyperlinkType == m_lCurrentCommandType)

View File

@ -33,6 +33,7 @@
#include "../../DesktopEditor/graphics/pro/Fonts.h"
#include "../../DesktopEditor/graphics/pro/Graphics.h"
#include "../../DesktopEditor/fontengine/ApplicationFontsWorker.h"
#include "../../PdfReader/PdfReader.h"
#include "../../DjVuFile/DjVu.h"
@ -77,17 +78,15 @@ int main(int argc, char *argv[])
return 0;
#endif
NSFonts::IApplicationFonts* pFonts = NSFonts::NSApplication::Create();
if (true)
{
pFonts->Initialize();
}
else
{
std::vector<std::wstring> arFiles = pFonts->GetSetupFontFiles();
NSDirectory::GetFiles2(L"D:\\GIT\\core-fonts", arFiles, true);
pFonts->InitializeFromArrayFiles(arFiles);
}
CApplicationFontsWorker oWorker;
oWorker.m_sDirectory = NSFile::GetProcessDirectory() + L"/fonts_cache";
//oWorker.m_arAdditionalFolders.push_back(L"D:\\GIT\\core-fonts");
oWorker.m_bIsNeedThumbnails = false;
if (!NSDirectory::Exists(oWorker.m_sDirectory))
NSDirectory::CreateDirectory(oWorker.m_sDirectory);
NSFonts::IApplicationFonts* pFonts = oWorker.Check();
#ifdef METAFILE_TEST

View File

@ -53,5 +53,8 @@ linux-g++ | linux-g++-64 | linux-g++-32 {
SOURCES += main.cpp
SOURCES += ../src/ASCSVGWriter.cpp
SOURCES += \
../src/ASCSVGWriter.cpp \
../../DesktopEditor/fontengine/ApplicationFontsWorker.cpp
HEADERS += ../include/ASCSVGWriter.h

View File

@ -15,8 +15,9 @@ include(../Common/base.pri)
DEFINES += UNICODECONVERTER_USE_DYNAMIC_LIBRARY
core_linux {
QMAKE_LFLAGS += -Wl,--rpath=./
core_linux {
QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN\'"
QMAKE_LFLAGS += -Wl,--disable-new-dtags
}
core_ios {

View File

@ -80,8 +80,13 @@ namespace SerializeCommon
memset(pBuffer, 0, lFileSize);
Base64::Base64Decode (sUnicode.c_str() + nShift, lFileSize, pBuffer, &nDstLength);
// Пишем в файл
oFile.WriteFile(pBuffer, nDstLength);
CImageFileFormatChecker checker;
std::wstring detectImageExtension = checker.DetectFormatByData(pBuffer, nDstLength);
if (false == detectImageExtension.empty())
{
oFile.WriteFile(pBuffer, nDstLength);
}
RELEASEARRAYOBJECTS (pBuffer);
}

View File

@ -53,7 +53,9 @@ namespace BinXlsxRW {
long read1defstart_pos = m_oBufferedStream.GetPos();\
while(read1defCurPos < (long)stLen)\
{\
BYTE read1defType = m_oBufferedStream.GetUChar();\
BYTE read1defType = 0;\
if (false == m_oBufferedStream.GetUCharWithResult(&read1defType))\
break;\
ULONG read1defLength = m_oBufferedStream.GetULong();\
if (read1defLength + read1defCurPos > (ULONG)stLen)\
{\
@ -77,7 +79,9 @@ namespace BinXlsxRW {
long read2defCurPos = 0;\
while(read2defCurPos < stLen)\
{\
BYTE read2defType = m_oBufferedStream.GetUChar();\
BYTE read2defType = 0;\
if (false == m_oBufferedStream.GetUCharWithResult(&read2defType))\
break;\
long read2defLenType = m_oBufferedStream.GetUChar();\
int read2defCurPosShift = 2;\
int read2defRealLen;\

View File

@ -6789,7 +6789,11 @@ int BinaryFileReader::ReadMainTable(OOX::Spreadsheet::CXlsx& oXlsx, NSBinPptxRW:
res = oBufferedStream.Peek(5) == false ? c_oSerConstants::ErrorStream : c_oSerConstants::ReadOk;
if(c_oSerConstants::ReadOk != res)
return res;
BYTE mtiType = oBufferedStream.GetUChar();
BYTE mtiType = 0;
if (false == oBufferedStream.GetUCharWithResult(&mtiType))
break;
long mtiOffBits = oBufferedStream.GetLong();
if(c_oSerTableTypes::Other == mtiType)
nOtherOffBits = mtiOffBits;