mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Compare commits
11 Commits
core-win-6
...
core-linux
| Author | SHA1 | Date | |
|---|---|---|---|
| 95af281145 | |||
| 00fb2ba7bb | |||
| 0f65e36517 | |||
| aa1af73fda | |||
| 1610978821 | |||
| 20faf24556 | |||
| c14a21b2da | |||
| b952692225 | |||
| 23249e69f9 | |||
| 09f6c3f4e8 | |||
| 867b0634f3 |
@ -3590,28 +3590,28 @@ void DocxConverter::convert_comment(int oox_comm_id)
|
||||
{
|
||||
if (!docx_document->m_pComments)return;
|
||||
|
||||
for (size_t comm = 0 ; comm < docx_document->m_pComments->m_arrComments.size(); comm++)
|
||||
{
|
||||
OOX::CComment* oox_comment = docx_document->m_pComments->m_arrComments[comm];
|
||||
|
||||
if (oox_comment == NULL) continue;
|
||||
if (oox_comment->m_oId.IsInit() == false) continue;
|
||||
|
||||
if (oox_comment->m_oId->GetValue() == oox_comm_id)
|
||||
{
|
||||
odt_context->start_comment_content();
|
||||
{
|
||||
if (oox_comment->m_oAuthor.IsInit()) odt_context->comment_context()->set_author (*oox_comment->m_oAuthor);
|
||||
if (oox_comment->m_oDate.IsInit()) odt_context->comment_context()->set_date (oox_comment->m_oDate->GetValue());
|
||||
if (oox_comment->m_oInitials.IsInit()) {}
|
||||
std::map<int, int>::iterator pFind = docx_document->m_pComments->m_mapComments.find(oox_comm_id);
|
||||
|
||||
for (std::vector<OOX::WritingElement*>::iterator it = oox_comment->m_arrItems.begin(); it != oox_comment->m_arrItems.end(); ++it)
|
||||
{
|
||||
convert(*it);
|
||||
}
|
||||
if (pFind == docx_document->m_pComments->m_mapComments.end()) return;
|
||||
|
||||
if ( pFind->second < docx_document->m_pComments->m_arrComments.size() && pFind->second >= 0)
|
||||
{
|
||||
OOX::CComment* oox_comment = docx_document->m_pComments->m_arrComments[pFind->second];
|
||||
|
||||
if (oox_comment == NULL) return;
|
||||
|
||||
odt_context->start_comment_content();
|
||||
{
|
||||
if (oox_comment->m_oAuthor.IsInit()) odt_context->comment_context()->set_author (*oox_comment->m_oAuthor);
|
||||
if (oox_comment->m_oDate.IsInit()) odt_context->comment_context()->set_date (oox_comment->m_oDate->GetValue());
|
||||
if (oox_comment->m_oInitials.IsInit()) {}
|
||||
|
||||
for (std::vector<OOX::WritingElement*>::iterator it = oox_comment->m_arrItems.begin(); it != oox_comment->m_arrItems.end(); ++it)
|
||||
{
|
||||
convert(*it);
|
||||
}
|
||||
odt_context->end_comment_content();
|
||||
}
|
||||
odt_context->end_comment_content();
|
||||
}
|
||||
}
|
||||
void DocxConverter::convert_footnote(int oox_ref_id)
|
||||
|
||||
@ -163,78 +163,64 @@ namespace PPTX
|
||||
|
||||
COfficeFileFormatChecker office_checker;
|
||||
office_checker.isOOXFormatFile(oox_file.GetPath());
|
||||
//if ( std::wstring::npos != sProgID.find(L"Word.Document"))
|
||||
//-----------------------------------------------------------------------------------------
|
||||
DocWrapper::FontProcessor oFontProcessor;
|
||||
NSBinPptxRW::CDrawingConverter oDrawingConverter;
|
||||
|
||||
NSCommon::smart_ptr<OOX::IFileContainer> old_rels = *pWriter->m_pCurrentContainer;
|
||||
NSCommon::smart_ptr<PPTX::Theme> old_theme = *pWriter->m_pTheme;
|
||||
|
||||
NSShapeImageGen::CMediaManager* old_manager = oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pMediaManager;
|
||||
oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pMediaManager = pWriter->m_pCommon->m_pMediaManager;
|
||||
|
||||
oDrawingConverter.SetFontPicker(pWriter->m_pCommon->m_pFontPicker);
|
||||
|
||||
int type = 0;
|
||||
if (office_checker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX ||
|
||||
office_checker.nFileType == AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCM )
|
||||
{
|
||||
pWriter->StartRecord(1);
|
||||
pWriter->WriteBYTE(1);
|
||||
pWriter->EndRecord();
|
||||
|
||||
DocWrapper::FontProcessor oFontProcessor;
|
||||
NSBinPptxRW::CDrawingConverter oDrawingConverter;
|
||||
BinDocxRW::CDocxSerializer oDocxSerializer;
|
||||
|
||||
NSBinPptxRW::CBinaryFileWriter* old_writer = oDrawingConverter.m_pBinaryWriter;
|
||||
NSCommon::smart_ptr<OOX::IFileContainer> old_rels = *pWriter->m_pCurrentContainer;
|
||||
BinDocxRW::CDocxSerializer* old_serial = pWriter->m_pMainDocument;
|
||||
NSCommon::smart_ptr<PPTX::Theme> old_theme = *pWriter->m_pTheme;
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = pWriter;
|
||||
oDocxSerializer.m_pParamsWriter = new BinDocxRW::ParamsWriter(pWriter, &oFontProcessor, &oDrawingConverter, NULL);
|
||||
|
||||
pWriter->m_pMainDocument = &oDocxSerializer;
|
||||
type = 1;
|
||||
BinDocxRW::CDocxSerializer* old_serializer = pWriter->m_pMainDocument;
|
||||
|
||||
BinDocxRW::CDocxSerializer oDocxSerializer;
|
||||
oDrawingConverter.m_pBinaryWriter->m_pMainDocument = &oDocxSerializer;
|
||||
oDocxSerializer.m_pParamsWriter = new BinDocxRW::ParamsWriter(oDrawingConverter.m_pBinaryWriter, &oFontProcessor, &oDrawingConverter, NULL);
|
||||
|
||||
BinDocxRW::BinaryFileWriter oBinaryFileWriter(*oDocxSerializer.m_pParamsWriter);
|
||||
|
||||
pWriter->StartRecord(2);
|
||||
oBinaryFileWriter.intoBindoc(oox_unpacked.GetPath());
|
||||
pWriter->EndRecord();
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = old_writer;
|
||||
*pWriter->m_pCurrentContainer = old_rels;
|
||||
pWriter->m_pMainDocument = old_serial;
|
||||
*pWriter->m_pTheme = old_theme;
|
||||
oBinaryFileWriter.intoBindoc(oox_unpacked.GetPath());
|
||||
|
||||
pWriter->m_pMainDocument = old_serializer;
|
||||
}
|
||||
else if (office_checker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX ||
|
||||
office_checker.nFileType == AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSM)
|
||||
//if ( std::wstring::npos != sProgID.find(L"Excel.Sheet")) //"ET.Xlsx.6" !!!
|
||||
{
|
||||
pWriter->StartRecord(1);
|
||||
pWriter->WriteBYTE(2);
|
||||
pWriter->EndRecord();
|
||||
|
||||
DocWrapper::FontProcessor fp;
|
||||
NSBinPptxRW::CDrawingConverter oDrawingConverter;
|
||||
type = 2;
|
||||
|
||||
NSBinPptxRW::CBinaryFileWriter* old_writer = oDrawingConverter.m_pBinaryWriter;
|
||||
NSCommon::smart_ptr<OOX::IFileContainer> old_rels = *pWriter->m_pCurrentContainer;
|
||||
NSCommon::smart_ptr<PPTX::Theme> old_theme = *pWriter->m_pTheme;
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = pWriter;
|
||||
|
||||
BinXlsxRW::BinaryFileWriter xlsxBinaryWriter(fp);
|
||||
BinXlsxRW::BinaryFileWriter xlsxBinaryWriter(oFontProcessor);
|
||||
OOX::Spreadsheet::CXlsx oXlsxEmbedded(oox_unpacked);
|
||||
|
||||
pWriter->StartRecord(2);
|
||||
xlsxBinaryWriter.intoBindoc(oXlsxEmbedded, *pWriter , NULL, &oDrawingConverter);
|
||||
pWriter->EndRecord();
|
||||
|
||||
oDrawingConverter.m_pBinaryWriter = old_writer;
|
||||
*pWriter->m_pCurrentContainer = old_rels;
|
||||
*pWriter->m_pTheme = old_theme;
|
||||
xlsxBinaryWriter.intoBindoc(oXlsxEmbedded, *oDrawingConverter.m_pBinaryWriter , NULL, &oDrawingConverter);
|
||||
}
|
||||
//else if (office_checker.nFileType == AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX)
|
||||
//{
|
||||
//}
|
||||
else
|
||||
{//unknown ms package
|
||||
pWriter->StartRecord(1);
|
||||
pWriter->WriteBYTE(0);
|
||||
pWriter->EndRecord();
|
||||
|
||||
pWriter->WriteString1(2, ole_file->filename().GetFilename());
|
||||
oDrawingConverter.m_pBinaryWriter->WriteString1(2, ole_file->filename().GetFilename());
|
||||
}
|
||||
*pWriter->m_pCurrentContainer = old_rels;
|
||||
*pWriter->m_pTheme = old_theme;
|
||||
oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pMediaManager = old_manager;
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
pWriter->StartRecord(1);
|
||||
pWriter->WriteBYTE(type);
|
||||
pWriter->EndRecord();
|
||||
|
||||
pWriter->StartRecord(2);
|
||||
pWriter->WriteBYTEArray(oDrawingConverter.m_pBinaryWriter->GetBuffer(), oDrawingConverter.m_pBinaryWriter->GetPosition());
|
||||
pWriter->EndRecord();
|
||||
|
||||
NSDirectory::DeleteDirectory(oox_unpacked.GetPath());
|
||||
}
|
||||
else if ( std::wstring::npos != sProgID.find(L"Equation"))
|
||||
@ -359,14 +345,8 @@ namespace PPTX
|
||||
|
||||
std::wstring sThemePath, sMediaPath, sEmbedPath;
|
||||
oDocxSerializer.CreateDocxFolders (sDstEmbeddedTemp, sThemePath, sMediaPath, sEmbedPath);
|
||||
|
||||
NSBinPptxRW::CBinaryFileReader* old_reader = oDrawingConverter.m_pReader;
|
||||
NSBinPptxRW::CRelsGenerator* old_rels = pReader->m_pRels;
|
||||
|
||||
//m_mapEnumeratedGlobal.clear();
|
||||
|
||||
oDrawingConverter.m_pReader = pReader;
|
||||
pReader->m_pRels = new NSBinPptxRW::CRelsGenerator();
|
||||
oDrawingConverter.m_pReader->Init(pReader->GetData() + pReader->GetPos(), 0, _embed_data_size);
|
||||
|
||||
oDrawingConverter.SetMainDocument(&oDocxSerializer);
|
||||
|
||||
@ -390,46 +370,24 @@ namespace PPTX
|
||||
|
||||
OOX::CContentTypes *pContentTypes = oDrawingConverter.GetContentTypes();
|
||||
//docProps
|
||||
OOX::CPath pathDocProps = sDstEmbeddedTemp + FILE_SEPARATOR_STR + _T("docProps");
|
||||
OOX::CPath pathDocProps = sDstEmbeddedTemp + FILE_SEPARATOR_STR + L"docProps";
|
||||
NSDirectory::CreateDirectory(pathDocProps.GetPath());
|
||||
|
||||
OOX::CPath DocProps = std::wstring(_T("docProps"));
|
||||
OOX::CPath DocProps = std::wstring(L"docProps");
|
||||
|
||||
OOX::CApp oApp(NULL);
|
||||
oApp.SetDefaults();
|
||||
oApp.write(pathDocProps + FILE_SEPARATOR_STR + _T("app.xml"), DocProps, *pContentTypes);
|
||||
|
||||
OOX::CCore oCore(NULL);
|
||||
oCore.SetDefaults();
|
||||
oCore.write(pathDocProps + FILE_SEPARATOR_STR + _T("core.xml"), DocProps, *pContentTypes);
|
||||
|
||||
OOX::CApp* pApp = new OOX::CApp(NULL);
|
||||
if (pApp)
|
||||
{
|
||||
pApp->SetApplication(L"ONLYOFFICE");
|
||||
#if defined(INTVER)
|
||||
pApp->SetAppVersion(VALUE2STR(INTVER));
|
||||
#endif
|
||||
pApp->SetDocSecurity(0);
|
||||
pApp->SetScaleCrop(false);
|
||||
pApp->SetLinksUpToDate(false);
|
||||
pApp->SetSharedDoc(false);
|
||||
pApp->SetHyperlinksChanged(false);
|
||||
|
||||
pApp->write(pathDocProps + FILE_SEPARATOR_STR + _T("app.xml"), DocProps, *pContentTypes);
|
||||
delete pApp;
|
||||
}
|
||||
OOX::CCore* pCore = new OOX::CCore(NULL);
|
||||
if (pCore)
|
||||
{
|
||||
pCore->SetCreator(_T(""));
|
||||
pCore->SetLastModifiedBy(_T(""));
|
||||
pCore->write(pathDocProps + FILE_SEPARATOR_STR + _T("core.xml"), DocProps, *pContentTypes);
|
||||
delete pCore;
|
||||
}
|
||||
oDocxSerializer.m_pCurFileWriter->Write();
|
||||
pContentTypes->Write(sDstEmbeddedTemp);
|
||||
|
||||
COfficeUtils oOfficeUtils(NULL);
|
||||
oOfficeUtils.CompressFileOrDirectory(sDstEmbeddedTemp, sDstEmbedded + FILE_SEPARATOR_STR + sDocxFilename, true);
|
||||
|
||||
pReader->m_pRels->CloseRels();
|
||||
delete pReader->m_pRels;
|
||||
|
||||
pReader->m_pRels = old_rels;
|
||||
oDrawingConverter.m_pReader = old_reader;
|
||||
//------------------------------------------------------------------
|
||||
//std::wstring sEmbWorksheetRelsName = L"embeddings/" + sDocxFilename;
|
||||
//std::wstring sEmbWorksheetRelType = OOX::FileTypes::MicrosoftOfficeWordDocument.RelationType();
|
||||
@ -455,13 +413,9 @@ namespace PPTX
|
||||
|
||||
boost::unordered_map<std::wstring, size_t> old_enum_map = oXlsx.m_mapEnumeratedGlobal;
|
||||
|
||||
NSBinPptxRW::CBinaryFileReader* old_reader = oDrawingConverter.m_pReader;
|
||||
NSBinPptxRW::CRelsGenerator* old_rels = pReader->m_pRels;
|
||||
|
||||
oXlsx.m_mapEnumeratedGlobal.clear();
|
||||
|
||||
oDrawingConverter.m_pReader = pReader;
|
||||
pReader->m_pRels = new NSBinPptxRW::CRelsGenerator();
|
||||
oDrawingConverter.m_pReader->Init(pReader->GetData() + pReader->GetPos(), 0, _embed_data_size);
|
||||
|
||||
oDrawingConverter.SetDstPath(sDstEmbeddedTemp + FILE_SEPARATOR_STR + L"xl");
|
||||
oDrawingConverter.SetSrcPath(pReader->m_strFolder, 2);
|
||||
@ -470,7 +424,7 @@ namespace PPTX
|
||||
oDrawingConverter.SetEmbedDstPath(sEmbedPath);
|
||||
|
||||
std::wstring sXlsxFilename = L"Microsoft_Excel_Worksheet" + std::to_wstring( id ) + L".xlsx";
|
||||
oEmbeddedReader.ReadMainTable(oXlsx, *pReader, pReader->m_strFolder, sDstEmbeddedTemp, oSaveParams, &oDrawingConverter);
|
||||
oEmbeddedReader.ReadMainTable(oXlsx, *oDrawingConverter.m_pReader, pReader->m_strFolder, sDstEmbeddedTemp, oSaveParams, &oDrawingConverter);
|
||||
|
||||
oXlsx.PrepareToWrite();
|
||||
|
||||
@ -479,11 +433,6 @@ namespace PPTX
|
||||
COfficeUtils oOfficeUtils(NULL);
|
||||
oOfficeUtils.CompressFileOrDirectory(sDstEmbeddedTemp, sDstEmbedded + FILE_SEPARATOR_STR + sXlsxFilename, true);
|
||||
|
||||
pReader->m_pRels->CloseRels();
|
||||
delete pReader->m_pRels;
|
||||
|
||||
pReader->m_pRels = old_rels;
|
||||
oDrawingConverter.m_pReader = old_reader;
|
||||
oXlsx.m_mapEnumeratedGlobal = old_enum_map;
|
||||
//------------------------------------------------------------------
|
||||
//std::wstring sEmbWorksheetRelsName = L"embeddings/" + sXlsxFilename;
|
||||
|
||||
@ -2852,8 +2852,8 @@ bool RtfParagraphPropDestination::ExecuteCommand(RtfDocument& oDocument, RtfRead
|
||||
|
||||
oAbstrReader.StartSubReader( oAnnotElemReader, oDocument, oReader );
|
||||
|
||||
//if ( pNewAnnotElem->IsValid() )
|
||||
// m_oCurParagraph->AddItem( pNewAnnotElem );
|
||||
if ( pNewAnnotElem->IsValid() )
|
||||
m_oCurParagraph->AddItem( pNewAnnotElem );
|
||||
}
|
||||
else if ( "atnauthor" == sCommand )
|
||||
{
|
||||
@ -2862,8 +2862,8 @@ bool RtfParagraphPropDestination::ExecuteCommand(RtfDocument& oDocument, RtfRead
|
||||
|
||||
oAbstrReader.StartSubReader( oAnnotElemReader, oDocument, oReader );
|
||||
|
||||
//if ( pNewAnnotElem->IsValid() )
|
||||
// m_oCurParagraph->AddItem( pNewAnnotElem );
|
||||
if ( pNewAnnotElem->IsValid() )
|
||||
m_oCurParagraph->AddItem( pNewAnnotElem );
|
||||
}
|
||||
else if ( "atnref" == sCommand )
|
||||
{
|
||||
|
||||
@ -135,14 +135,14 @@ public:
|
||||
int nId = ooxFtnEdn->m_oId->GetValue();
|
||||
OOXTextItemReader oTextItemReader;
|
||||
|
||||
for (std::vector<OOX::WritingElement*>::iterator it = ooxFtnEdn->m_arrItems.begin(); it != ooxFtnEdn->m_arrItems.end(); ++it)
|
||||
for (size_t i = 0; i < ooxFtnEdn->m_arrItems.size(); ++i)
|
||||
{
|
||||
if( nSeparatorId == nId )
|
||||
{
|
||||
TextItemContainerPtr oNewTextItem ( new TextItemContainer() );
|
||||
oTextItemReader.m_oTextItems = oNewTextItem;
|
||||
|
||||
if( true == oTextItemReader.Parse( *it, oParam ) )
|
||||
if( true == oTextItemReader.Parse( ooxFtnEdn->m_arrItems[i], oParam ) )
|
||||
{
|
||||
if( true == bFootnote )
|
||||
oParam.oRtf->m_oFootnoteSep = oNewTextItem;
|
||||
@ -155,7 +155,7 @@ public:
|
||||
TextItemContainerPtr oNewTextItem ( new TextItemContainer() );
|
||||
oTextItemReader.m_oTextItems = oNewTextItem;
|
||||
|
||||
if( true == oTextItemReader.Parse( *it, oParam ) )
|
||||
if( true == oTextItemReader.Parse( ooxFtnEdn->m_arrItems[i], oParam ) )
|
||||
{
|
||||
if( true == bFootnote )
|
||||
oParam.oRtf->m_oFootnoteCon = oNewTextItem;
|
||||
@ -168,7 +168,7 @@ public:
|
||||
TextItemContainerPtr oNewTextItem ( new TextItemContainer() );
|
||||
oTextItemReader.m_oTextItems = oNewTextItem;
|
||||
|
||||
if( true == oTextItemReader.Parse( *it, oParam ) )
|
||||
if( true == oTextItemReader.Parse( ooxFtnEdn->m_arrItems[i], oParam ) )
|
||||
{
|
||||
if( true == bFootnote )
|
||||
oParam.oReader->m_mapFootnotes[ nId] = oNewTextItem;
|
||||
|
||||
@ -32,9 +32,9 @@
|
||||
|
||||
#include "OOXParagraphReader.h"
|
||||
|
||||
#include "OOXTextItemReader.h"
|
||||
#include "OOXpPrFrameReader.h"
|
||||
#include "OOXpPrTabReader.h"
|
||||
#include "OOXTableReader.h"
|
||||
|
||||
#include "../RtfOle.h"
|
||||
|
||||
@ -457,6 +457,117 @@ bool OOXParagraphReader::Parse3( ReaderParameter oParam , RtfParagraph& oOutputP
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case OOX::et_w_commentRangeStart:
|
||||
case OOX::et_w_commentReference:
|
||||
{
|
||||
OOX::Logic::CCommentRangeStart * pCommentStart = dynamic_cast<OOX::Logic::CCommentRangeStart*>(m_ooxElement);
|
||||
|
||||
if(pCommentStart->m_oId.IsInit())
|
||||
{
|
||||
int nId = pCommentStart->m_oId->GetValue();
|
||||
std::map<int, OOXReader::_comment>::iterator pFind = oParam.oReader->m_mapComments.find( nId );
|
||||
|
||||
if( pFind == oParam.oReader->m_mapComments.end())
|
||||
{
|
||||
RtfAnnotElemPtr oNewAnnotElem ( new RtfAnnotElem(1) );
|
||||
oNewAnnotElem->m_sValue = std::to_wstring(0x7700000 + nId);
|
||||
|
||||
OOXReader::_comment comment;
|
||||
comment.ref = oNewAnnotElem->m_sValue;
|
||||
comment.index = oParam.oReader->m_mapComments.size();
|
||||
|
||||
oParam.oReader->m_mapComments.insert(std::make_pair( nId, comment));
|
||||
oOutputParagraph.AddItem( oNewAnnotElem );
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case OOX::et_w_commentRangeEnd:
|
||||
{
|
||||
OOX::Logic::CCommentRangeEnd * pCommentEnd = dynamic_cast<OOX::Logic::CCommentRangeEnd*>(m_ooxElement);
|
||||
|
||||
int nId = pCommentEnd->m_oId->GetValue();
|
||||
|
||||
std::map<int, OOXReader::_comment>::iterator pFindRef = oParam.oReader->m_mapComments.find( nId );
|
||||
|
||||
if( pFindRef != oParam.oReader->m_mapComments.end())
|
||||
{
|
||||
RtfAnnotElemPtr oNewAnnotElem ( new RtfAnnotElem(2) );
|
||||
oNewAnnotElem->m_sValue = pFindRef->second.ref;
|
||||
oOutputParagraph.AddItem( oNewAnnotElem );
|
||||
|
||||
//find comment and add info
|
||||
std::map<int, int>::iterator pFindComment = oParam.oDocx->m_pComments->m_mapComments.find(nId);
|
||||
|
||||
if (pFindComment != oParam.oDocx->m_pComments->m_mapComments.end())
|
||||
{
|
||||
if ( pFindComment->second < oParam.oDocx->m_pComments->m_arrComments.size() && pFindComment->second >= 0)
|
||||
{
|
||||
OOX::CComment* oox_comment = oParam.oDocx->m_pComments->m_arrComments[pFindComment->second];
|
||||
if (oox_comment)
|
||||
{
|
||||
if (oox_comment->m_oAuthor.IsInit())
|
||||
{
|
||||
RtfAnnotElemPtr oNewAnnotAuthor ( new RtfAnnotElem(4) );
|
||||
oNewAnnotAuthor->m_sValue = *oox_comment->m_oAuthor;
|
||||
oOutputParagraph.AddItem( oNewAnnotAuthor );
|
||||
}
|
||||
if (oox_comment->m_oInitials.IsInit())
|
||||
{
|
||||
RtfAnnotElemPtr oNewAnnotAuthorId ( new RtfAnnotElem(5) );
|
||||
oNewAnnotAuthorId->m_sValue = *oox_comment->m_oInitials;
|
||||
oOutputParagraph.AddItem( oNewAnnotAuthorId );
|
||||
}
|
||||
|
||||
RtfAnnotationPtr oNewAnnotContent(new RtfAnnotation());
|
||||
|
||||
oNewAnnotContent->m_oRef = RtfAnnotElemPtr ( new RtfAnnotElem(3) );
|
||||
oNewAnnotContent->m_oRef->m_sValue = pFindRef->second.ref;
|
||||
|
||||
if (oox_comment->m_oDate.IsInit())
|
||||
{
|
||||
oNewAnnotContent->m_oDate = RtfAnnotElemPtr ( new RtfAnnotElem(6) );
|
||||
|
||||
int nDate = RtfUtility::convertDateTime(oox_comment->m_oDate->GetValue());
|
||||
oNewAnnotContent->m_oDate->m_sValue = std::to_wstring(nDate);
|
||||
}
|
||||
|
||||
OOXTextItemReader oTextItemReader;
|
||||
oTextItemReader.m_oTextItems = oNewAnnotContent->m_oContent;
|
||||
|
||||
for (size_t i = 0; i < oox_comment->m_arrItems.size(); ++i)
|
||||
{
|
||||
if (oParam.oDocx->m_pCommentsExt)
|
||||
{
|
||||
OOX::Logic::CParagraph *pParagraph = dynamic_cast<OOX::Logic::CParagraph*>(oox_comment->m_arrItems[i]);
|
||||
if ((pParagraph) && (pParagraph->m_oParaId.IsInit()))
|
||||
{
|
||||
std::map<int, int>::iterator pFindPara = oParam.oDocx->m_pCommentsExt->m_mapComments.find(pParagraph->m_oParaId->GetValue());
|
||||
if (pFindPara != oParam.oDocx->m_pCommentsExt->m_mapComments.end())
|
||||
{
|
||||
oParam.oReader->m_mapCommentsPara.insert(std::make_pair( pParagraph->m_oParaId->GetValue(), pFindRef->second.index));
|
||||
|
||||
if (oParam.oDocx->m_pCommentsExt->m_arrComments[pFindPara->second]->m_oParaIdParent.IsInit())
|
||||
{
|
||||
std::map<int, int>::iterator pFindParent = oParam.oReader->m_mapCommentsPara.find(oParam.oDocx->m_pCommentsExt->m_arrComments[pFindPara->second]->m_oParaIdParent->GetValue());
|
||||
if (pFindParent != oParam.oReader->m_mapCommentsPara.end())
|
||||
{
|
||||
oNewAnnotContent->m_oParent = RtfAnnotElemPtr ( new RtfAnnotElem(7) );
|
||||
oNewAnnotContent->m_oParent->m_sValue = std::to_wstring( pFindParent->second - pFindRef->second.index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
oTextItemReader.Parse(oox_comment->m_arrItems[i], oParam);
|
||||
}
|
||||
|
||||
oOutputParagraph.AddItem( oNewAnnotContent );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -66,8 +66,17 @@ public:
|
||||
|
||||
int m_nCurOleChartId;
|
||||
int m_nCurFittextId;
|
||||
|
||||
std::map<int, std::wstring> m_aBookmarks;
|
||||
|
||||
struct _comment
|
||||
{
|
||||
std::wstring ref;
|
||||
int index;
|
||||
};
|
||||
std::map<int, _comment> m_mapComments; //nId, ref & index added
|
||||
std::map<int, int> m_mapCommentsPara; //paraId, index added
|
||||
|
||||
std::map<int, int> m_mapPictureBullet;
|
||||
std::map<int, TextItemContainerPtr> m_mapFootnotes;
|
||||
std::map<int, TextItemContainerPtr> m_mapEndnotes;
|
||||
|
||||
@ -124,39 +124,62 @@ std::wstring RtfAnnotElem::RenderToRtf(RenderParameter oRenderParameter)
|
||||
std::wstring sResult;
|
||||
|
||||
if (m_nType == 1) sResult += L"{\\*\\atrfstart " + m_sValue + L"}";
|
||||
else if (m_nType = 2) sResult += L"{\\*\\atrfend " + m_sValue + L"}";
|
||||
else if (m_nType = 3) sResult += L"{\\*\\atnref " + m_sValue + L"}";
|
||||
else if (m_nType == 2) sResult += L"{\\*\\atrfend " + m_sValue + L"}";
|
||||
else if (m_nType == 3) sResult += L"{\\*\\atnref " + m_sValue + L"}";
|
||||
else if (m_nType == 4) sResult += L"{\\*\\atnauthor " + m_sValue + L"}";
|
||||
else if (m_nType == 5) sResult += L"{\\*\\atnid " + m_sValue + L"}";
|
||||
else if (m_nType == 6) sResult += L"{\\*\\atndate " + m_sValue + L"}";
|
||||
else if (m_nType == 7) sResult += L"{\\*\\atnparent " + m_sValue + L"}";
|
||||
|
||||
return sResult;
|
||||
}
|
||||
|
||||
std::wstring RtfAnnotElem::RenderToOOX(RenderParameter oRenderParameter)
|
||||
{
|
||||
if (m_nType > 3 || m_nType < 1) return L"";
|
||||
if (m_nType > 8 || m_nType < 1) return L"";
|
||||
|
||||
std::wstring sResult;
|
||||
|
||||
OOXWriter* poOOXWriter = static_cast<OOXWriter*> (oRenderParameter.poWriter);
|
||||
OOXCommentsWriter* poCommentsWriter = static_cast<OOXCommentsWriter*>( poOOXWriter->m_poCommentsWriter );
|
||||
|
||||
std::map<std::wstring, int>::iterator pFind = poCommentsWriter->m_mapRefs.find(m_sValue);
|
||||
|
||||
int id = -1;
|
||||
if (pFind == poCommentsWriter->m_mapRefs.end())
|
||||
if (m_nType == 4)
|
||||
{
|
||||
id = poCommentsWriter->m_mapRefs.size() ;//+ 1;
|
||||
poCommentsWriter->m_mapRefs.insert(std::make_pair(m_sValue, id));
|
||||
poCommentsWriter->AddCommentAuthor(m_sValue);
|
||||
}
|
||||
else if (m_nType == 5)
|
||||
{
|
||||
poCommentsWriter->AddCommentID(m_sValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
id = pFind->second;
|
||||
}
|
||||
if (m_nType == 1) sResult += L"<w:commentRangeStart w:id=\"" + std::to_wstring(id) + L"\"/>";
|
||||
else if (m_nType == 3) sResult += L"<w:commentReference w:id=\"" + std::to_wstring(id) + L"\"/>";
|
||||
else if (m_nType == 2)
|
||||
{
|
||||
sResult += L"<w:commentRangeEnd w:id=\"" + std::to_wstring(id) + L"\"/>";
|
||||
sResult += L"<w:r><w:commentReference w:id=\"" + std::to_wstring(id) + L"\"/></w:r>";
|
||||
std::map<std::wstring,OOXCommentsWriter::_comment>::iterator pFind = poCommentsWriter->m_mapComments.find(m_sValue);
|
||||
|
||||
int id = -1;
|
||||
if (pFind == poCommentsWriter->m_mapComments.end())
|
||||
{
|
||||
id = poCommentsWriter->m_mapComments.size() ;//+ 1;
|
||||
poCommentsWriter->AddComment(m_sValue, id);
|
||||
}
|
||||
else
|
||||
{
|
||||
id = pFind->second.nID;
|
||||
}
|
||||
if (m_nType == 1)
|
||||
{
|
||||
sResult += L"<w:commentRangeStart w:id=\"" + std::to_wstring(id) + L"\"/>";
|
||||
}
|
||||
else if (m_nType == 3)
|
||||
{
|
||||
sResult += L"<w:commentReference w:id=\"" + std::to_wstring(id) + L"\"/>";
|
||||
}
|
||||
else if (m_nType == 2)
|
||||
{
|
||||
poCommentsWriter->SetCommentEnd(m_sValue);
|
||||
|
||||
sResult += L"<w:commentRangeEnd w:id=\"" + std::to_wstring(id) + L"\"/>";
|
||||
sResult += L"<w:r><w:commentReference w:id=\"" + std::to_wstring(id) + L"\"/></w:r>";
|
||||
}
|
||||
}
|
||||
|
||||
return sResult;
|
||||
@ -166,12 +189,24 @@ std::wstring RtfAnnotation::RenderToRtf(RenderParameter oRenderParameter)
|
||||
{
|
||||
std::wstring sResult;
|
||||
|
||||
sResult += L"\\chatn{\\*\\annotation";
|
||||
if (m_oRef)
|
||||
{
|
||||
if (m_oRef->m_nType == 1) sResult += L"{\\*\\atrfstart " + m_oRef->m_sValue + L"}";
|
||||
else if (m_oRef->m_nType = 2) sResult += L"{\\*\\atrfend " + m_oRef->m_sValue + L"}";
|
||||
else if (m_oRef->m_nType = 3) sResult += L"{\\*\\atnref " + m_oRef->m_sValue + L"}";
|
||||
sResult += m_oRef->RenderToRtf(oRenderParameter);
|
||||
}
|
||||
if (m_oDate)
|
||||
{
|
||||
sResult += m_oDate->RenderToRtf(oRenderParameter);
|
||||
}
|
||||
if (m_oParent)
|
||||
{
|
||||
sResult += m_oParent->RenderToRtf(oRenderParameter);
|
||||
}
|
||||
if (m_oContent)
|
||||
{
|
||||
sResult += m_oContent->RenderToRtf(oRenderParameter);
|
||||
}
|
||||
sResult += L"}";
|
||||
return sResult;
|
||||
}
|
||||
|
||||
@ -180,33 +215,14 @@ std::wstring RtfAnnotation::RenderToOOX(RenderParameter oRenderParameter)
|
||||
OOXWriter* poOOXWriter = static_cast<OOXWriter*> (oRenderParameter.poWriter);
|
||||
OOXCommentsWriter* poCommentsWriter = static_cast<OOXCommentsWriter*>( poOOXWriter->m_poCommentsWriter );
|
||||
|
||||
std::wstring sResult;
|
||||
|
||||
sResult += L"<w:comment";
|
||||
int id = -1;
|
||||
if (m_oRef)
|
||||
{
|
||||
std::map<std::wstring, int>::iterator pFind = poCommentsWriter->m_mapRefs.find(m_oRef->m_sValue);
|
||||
if (!m_oRef) return L"";
|
||||
|
||||
if (pFind == poCommentsWriter->m_mapRefs.end())
|
||||
{
|
||||
id = poCommentsWriter->m_mapRefs.size();// + 1;
|
||||
poCommentsWriter->m_mapRefs.insert(std::make_pair(m_oRef->m_sValue, id));
|
||||
}
|
||||
else
|
||||
{
|
||||
id = pFind->second;
|
||||
}
|
||||
sResult += L" w:id=\"" + std::to_wstring(id) + L"\"";
|
||||
}
|
||||
sResult += L" w:author=\"Elena S\"";
|
||||
if (m_oDate)
|
||||
{
|
||||
int nValue = boost::lexical_cast<int>(m_oDate->m_sValue);
|
||||
sResult += L" w:date=\"" + RtfUtility::convertDateTime(nValue) + L"\"";
|
||||
|
||||
poCommentsWriter->AddCommentDate(m_oRef->m_sValue, RtfUtility::convertDateTime(nValue));
|
||||
}
|
||||
sResult += L" w:initials=\"ES\"";
|
||||
sResult += L">";
|
||||
if (m_oContent)
|
||||
{
|
||||
RenderParameter oNewParameter = oRenderParameter;
|
||||
@ -214,13 +230,16 @@ std::wstring RtfAnnotation::RenderToOOX(RenderParameter oRenderParameter)
|
||||
oNewParameter.nType = RENDER_TO_OOX_PARAM_COMMENT;
|
||||
oNewParameter.poRels = poCommentsWriter->m_oRelsWriter.get();
|
||||
|
||||
sResult += m_oContent->RenderToOOX(oNewParameter);
|
||||
std::wstring content = m_oContent->RenderToOOX(oNewParameter);
|
||||
|
||||
std::wstring sParaId = XmlUtils::IntToString(poOOXWriter->m_nextParaId, L"%08X");//last para id in comment
|
||||
|
||||
poCommentsWriter->AddCommentContent(m_oRef->m_sValue, sParaId, content);
|
||||
}
|
||||
if (m_oParent)
|
||||
{
|
||||
poCommentsWriter->AddCommentParent(m_oRef->m_sValue, m_oParent->m_sValue);
|
||||
}
|
||||
sResult += L"</w:comment>";
|
||||
|
||||
std::wstring sParaId = XmlUtils::IntToString(poOOXWriter->m_nextParaId, L"%08X");//last para id in comment
|
||||
poCommentsWriter->AddComment(id, sResult, sParaId, m_oParent ? boost::lexical_cast<int>(m_oParent->m_sValue) : 0);
|
||||
|
||||
return L"";
|
||||
}
|
||||
|
||||
|
||||
@ -130,9 +130,13 @@ std::wstring RtfParagraph::RenderToOOX(RenderParameter oRenderParameter)
|
||||
if( NULL != m_oOldList )
|
||||
bCanConvertToNumbering = m_oOldList->CanConvertToNumbering();
|
||||
|
||||
std::wstring sParaId = XmlUtils::IntToString(++poOOXWriter->m_nextParaId, L"%08X");
|
||||
sResult += L"<w:p w14:paraId=\"" + sParaId + L"\" w14:textId=\"" + sParaId + L"\">";
|
||||
sResult += L"<w:pPr>";
|
||||
sResult += L"<w:p";
|
||||
if (oRenderParameter.nType == RENDER_TO_OOX_PARAM_COMMENT)
|
||||
{
|
||||
std::wstring sParaId = XmlUtils::IntToString(++poOOXWriter->m_nextParaId, L"%08X");
|
||||
sResult += L" w14:paraId=\"" + sParaId + L"\" w14:textId=\"" + sParaId + L"\"";
|
||||
}
|
||||
sResult += L"><w:pPr>";
|
||||
|
||||
m_oProperty.m_bOldList = (NULL != m_oOldList);
|
||||
sResult += m_oProperty.RenderToOOX(oRenderParameter);
|
||||
|
||||
@ -379,7 +379,7 @@ public:
|
||||
|
||||
return date_str;
|
||||
}
|
||||
static int convertDateTime (std::wstring & dt_)
|
||||
static int convertDateTime (const std::wstring & dt_)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
|
||||
@ -43,30 +43,66 @@ public:
|
||||
m_oRelsWriter = OOXRelsWriterPtr( new OOXRelsWriter( _T("comments.xml"), oDocument ) );
|
||||
oWriter.m_oCustomRelsWriter.push_back( m_oRelsWriter );
|
||||
}
|
||||
void AddComment( int nID, std::wstring sText, const std::wstring & paraId, int nParentID)
|
||||
void SetCommentEnd(const std::wstring & ref) //for author
|
||||
{
|
||||
m_sComments += sText;
|
||||
|
||||
m_mapCommentsParent.insert(std::make_pair(nID, paraId));
|
||||
|
||||
m_sCommentsExtended += L"<w15:commentEx w15:paraId=\"" + paraId + L"\"";
|
||||
if (nParentID != 0)
|
||||
{
|
||||
nParentID = nID + nParentID;
|
||||
|
||||
std::map<int, std::wstring>::iterator pFind = m_mapCommentsParent.find(nParentID);
|
||||
|
||||
if (pFind != m_mapCommentsParent.end())
|
||||
{
|
||||
m_sCommentsExtended += L" w15:paraIdParent=\"" + pFind->second + L"\"";
|
||||
}
|
||||
}
|
||||
m_sCommentsExtended += L" w15:done=\"0\"/>";
|
||||
m_sCurrent_ref = ref;
|
||||
}
|
||||
|
||||
bool Save( std::wstring sFolder )
|
||||
void AddComment( const std::wstring & ref, int nID)
|
||||
{
|
||||
if( m_sComments.empty() ) return false;
|
||||
_comment comment(nID);
|
||||
m_mapComments.insert(std::make_pair(ref, comment));
|
||||
}
|
||||
void AddCommentID( const std::wstring & id)
|
||||
{
|
||||
std::map<std::wstring, _comment>::iterator pFind = m_mapComments.find(m_sCurrent_ref);
|
||||
|
||||
if (pFind != m_mapComments.end())
|
||||
{
|
||||
pFind->second.authorId = id;
|
||||
}
|
||||
}
|
||||
void AddCommentAuthor( const std::wstring & author)
|
||||
{
|
||||
std::map<std::wstring, _comment>::iterator pFind = m_mapComments.find(m_sCurrent_ref);
|
||||
|
||||
if (pFind != m_mapComments.end())
|
||||
{
|
||||
pFind->second.author = author;
|
||||
}
|
||||
}
|
||||
void AddCommentContent( const std::wstring & ref, const std::wstring & paraId, const std::wstring & content)
|
||||
{
|
||||
std::map<std::wstring, _comment>::iterator pFind = m_mapComments.find(ref);
|
||||
|
||||
if (pFind != m_mapComments.end())
|
||||
{
|
||||
pFind->second.content = content;
|
||||
pFind->second.paraId = paraId;
|
||||
|
||||
m_mapCommentsParent.insert(std::make_pair(pFind->second.nID, paraId));
|
||||
}
|
||||
}
|
||||
void AddCommentParent( const std::wstring & ref, const std::wstring & parent)
|
||||
{
|
||||
std::map<std::wstring, _comment>::iterator pFind = m_mapComments.find(ref);
|
||||
|
||||
if (pFind != m_mapComments.end())
|
||||
{
|
||||
pFind->second.nParentID = boost::lexical_cast<int>(parent);
|
||||
}
|
||||
}
|
||||
void AddCommentDate( const std::wstring & ref, const std::wstring & date)
|
||||
{
|
||||
std::map<std::wstring, _comment>::iterator pFind = m_mapComments.find(ref);
|
||||
|
||||
if (pFind != m_mapComments.end())
|
||||
{
|
||||
pFind->second.date = date;
|
||||
}
|
||||
}
|
||||
bool Save( std::wstring sFolder )
|
||||
{
|
||||
if( m_mapComments.empty() ) return false;
|
||||
|
||||
CFile file;
|
||||
if (file.CreateFile(sFolder + FILE_SEPARATOR_STR + _T("comments.xml"))) return false;
|
||||
@ -82,8 +118,6 @@ public:
|
||||
|
||||
file.CloseFile();
|
||||
//-------------------------------------------------------------------------------------------------------------------------
|
||||
if( m_sCommentsExtended.empty() ) return true;
|
||||
|
||||
if (file.CreateFile(sFolder + FILE_SEPARATOR_STR + L"commentsExtended.xml")) return false;
|
||||
|
||||
m_oWriter.m_oDocRels.AddRelationship( L"http://schemas.microsoft.com/office/2011/relationships/commentsExtended", L"commentsExtended.xml" );
|
||||
@ -98,46 +132,82 @@ public:
|
||||
file.CloseFile();
|
||||
return true;
|
||||
}
|
||||
std::map<std::wstring, int> m_mapRefs;
|
||||
std::map<int, std::wstring> m_mapCommentsParent;
|
||||
struct _comment
|
||||
{
|
||||
_comment(int id) : nID(id) {}
|
||||
int nID = 0;
|
||||
int nParentID = 0;
|
||||
std::wstring author;
|
||||
std::wstring date;
|
||||
std::wstring content;
|
||||
std::wstring authorId;
|
||||
std::wstring paraId;
|
||||
|
||||
};
|
||||
std::map<std::wstring, _comment> m_mapComments;
|
||||
private:
|
||||
RtfDocument& m_oDocument;
|
||||
OOXWriter& m_oWriter;
|
||||
|
||||
std::wstring m_sComments;
|
||||
std::wstring m_sCommentsExtended;
|
||||
std::wstring m_sCurrent_ref;
|
||||
std::wstring m_sCommentsExtended;
|
||||
std::map<int, std::wstring> m_mapCommentsParent;
|
||||
|
||||
std::wstring CreateXml()
|
||||
{
|
||||
std::wstring sResult;
|
||||
sResult += _T("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
|
||||
std::wstring sResult = L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
|
||||
|
||||
sResult += _T("<w:comments \
|
||||
xmlns:wpc=\"http://schemas.microsoft.com/office/word/2008/6/28/wordprocessingCanvas\" \
|
||||
sResult += L"<w:comments \
|
||||
xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" \
|
||||
xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \
|
||||
xmlns:o=\"urn:schemas-microsoft-com:office:office\" \
|
||||
xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" \
|
||||
xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" \
|
||||
xmlns:v=\"urn:schemas-microsoft-com:vml\" \
|
||||
xmlns:wp14=\"http://schemas.microsoft.com/office/word/2008/9/16/wordprocessingDrawing\" \
|
||||
xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" \
|
||||
xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" \
|
||||
xmlns:w10=\"urn:schemas-microsoft-com:office:word\" \
|
||||
xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" \
|
||||
xmlns:w14=\"http://schemas.microsoft.com/office/word/2009/2/wordml\" \
|
||||
xmlns:wpg=\"http://schemas.microsoft.com/office/word/2008/6/28/wordprocessingGroup\" \
|
||||
xmlns:wpi=\"http://schemas.microsoft.com/office/word/2008/6/28/wordprocessingInk\" \
|
||||
xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" \
|
||||
xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" \
|
||||
xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" \
|
||||
xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" \
|
||||
xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" \
|
||||
xmlns:wps=\"http://schemas.microsoft.com/office/word/2008/6/28/wordprocessingShape\">");
|
||||
sResult += m_sComments;
|
||||
sResult += _T("</w:comments>");
|
||||
xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\" \
|
||||
mc:Ignorable=\"w14 w15 wp14\">";
|
||||
|
||||
for (std::map<std::wstring, _comment>::iterator it = m_mapComments.begin(); it != m_mapComments.end(); ++it)
|
||||
{
|
||||
sResult += L"<w:comment w:id=\"" + std::to_wstring(it->second.nID) + L"\" w:author=\"" +
|
||||
it->second.author + L"\" w:date=\"" + it->second.date + L"\" w:initials=\"" + it->second.authorId + L"\">";
|
||||
sResult += it->second.content;
|
||||
|
||||
sResult += L"</w:comment>";
|
||||
//--------------------------------------------------------
|
||||
m_sCommentsExtended += L"<w15:commentEx w15:paraId=\"" + it->second.paraId + L"\"";
|
||||
if (it->second.nParentID != 0)
|
||||
{
|
||||
it->second.nParentID = it->second.nID + it->second.nParentID;
|
||||
|
||||
std::map<int, std::wstring>::iterator pFind = m_mapCommentsParent.find(it->second.nParentID);
|
||||
|
||||
if (pFind != m_mapCommentsParent.end())
|
||||
{
|
||||
m_sCommentsExtended += L" w15:paraIdParent=\"" + pFind->second + L"\"";
|
||||
}
|
||||
}
|
||||
m_sCommentsExtended += L" w15:done=\"0\"/>";
|
||||
|
||||
}
|
||||
sResult += L"</w:comments>";
|
||||
return sResult;
|
||||
}
|
||||
std::wstring CreateXmlExtended()
|
||||
{
|
||||
std::wstring sResult;
|
||||
sResult += _T("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
|
||||
sResult += L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
|
||||
|
||||
sResult += _T("<w15:commentsEx \
|
||||
sResult += L"<w15:commentsEx \
|
||||
xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" \
|
||||
xmlns:cx=\"http://schemas.microsoft.com/office/drawing/2014/chartex\" \
|
||||
xmlns:cx1=\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\" \
|
||||
@ -157,9 +227,9 @@ xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\"
|
||||
xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" \
|
||||
xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" \
|
||||
xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\" \
|
||||
mc:Ignorable=\"w14 w15 w16se wp14\">");
|
||||
mc:Ignorable=\"w14 w15 w16se wp14\">";
|
||||
sResult += m_sCommentsExtended;
|
||||
sResult += _T("</w15:commentsEx>");
|
||||
sResult += L"</w15:commentsEx>";
|
||||
return sResult;
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ OOXWriter::OOXWriter( RtfDocument& oDocument, std::wstring sPath ) :
|
||||
m_sTargetFolder ( sPath.c_str() ),
|
||||
m_oRels ( L"", oDocument ),
|
||||
m_nCurTrackChangesId( 0),
|
||||
m_nextParaId ( 0x77000000),
|
||||
m_nextParaId ( 0x00000000),
|
||||
m_oDocRels ( L"document.xml", oDocument )
|
||||
{
|
||||
m_nCurFitWidth = PROP_DEF;
|
||||
|
||||
@ -40,6 +40,19 @@
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
|
||||
#if defined(_WIN64)
|
||||
#pragma comment(lib, "../../build/bin/icu/win_64/icuuc.lib")
|
||||
#elif defined (_WIN32)
|
||||
|
||||
#if defined(_DEBUG)
|
||||
#pragma comment(lib, "../../build/lib/win_32/DEBUG/graphics.lib")
|
||||
#pragma comment(lib, "../../build/lib/win_32/DEBUG/kernel.lib")
|
||||
#else
|
||||
#pragma comment(lib, "../../build/lib/win_32/graphics.lib")
|
||||
#pragma comment(lib, "../../build/lib/win_32/kernel.lib")
|
||||
#endif
|
||||
#pragma comment(lib, "../../build/bin/icu/win_32/icuuc.lib")
|
||||
#endif
|
||||
HRESULT convert_single(std::wstring srcFileName)
|
||||
{
|
||||
int n1 = srcFileName.rfind(_T('.'));
|
||||
|
||||
@ -2,82 +2,18 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RtfFormatLib", "..\RtfFormatLib\Win32\RtfFormatLib.vcproj", "{AF2D00A7-A351-4700-AE88-C1D9ADE29345}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DocxFormat", "..\..\Common\DocxFormat\Projects\DocxFormat2005.vcproj", "{A100103A-353E-45E8-A9B8-90B87CC5C0B0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raster", "..\..\DesktopEditor\raster\raster_vs2005.vcproj", "{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36}
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cximage", "..\..\DesktopEditor\cximage\CxImage\cximage_vs2005.vcproj", "{BC52A07C-A797-423D-8C4F-8678805BBB36}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470}
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D}
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1} = {EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E}
|
||||
{40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E}
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3}
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169}
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239} = {764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jasper", "..\..\DesktopEditor\cximage\jasper\jasper_vs2005.vcproj", "{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jbig", "..\..\DesktopEditor\cximage\jbig\jbig_vs2005.vcproj", "{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg", "..\..\DesktopEditor\cximage\jpeg\Jpeg_vs2005.vcproj", "{818753F2-DBB9-4D3B-898A-A604309BE470}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpsd", "..\..\DesktopEditor\cximage\libpsd\libpsd_vs2005.vcproj", "{9A037A69-D1DF-4505-AB2A-6CB3641C476E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mng", "..\..\DesktopEditor\cximage\mng\mng_vs2005.vcproj", "{40A69F40-063E-43FD-8543-455495D8733E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "png", "..\..\DesktopEditor\cximage\png\png_vs2005.vcproj", "{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdcr", "..\..\DesktopEditor\cximage\raw\libdcr_vs2005.vcproj", "{DF861D33-9BC1-418C-82B1-581F590FE169}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiff", "..\..\DesktopEditor\cximage\tiff\Tiff_vs2005.vcproj", "{0588563C-F05C-428C-B21A-DD74756628B3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jbig2", "..\..\DesktopEditor\raster\JBig2\win32\jbig2.vcproj", "{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OfficeUtilsLib", "..\..\OfficeUtils\win32\OfficeUtilsLib.vcproj", "{F8274B05-168E-4D6E-B843-AA7510725363}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RtfFormatTest", "RtfFormatTest.vcproj", "{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
|
||||
{AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345}
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302}
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0}
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56}
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363}
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPTXFormat", "..\..\ASCOfficePPTXFile\PPTXLib\PPTXFormat.vcproj", "{36636678-AE25-4BE6-9A34-2561D1BCF302}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphics", "..\..\DesktopEditor\graphics\graphics_vs2005.vcproj", "{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "font_engine", "..\..\DesktopEditor\fontengine\font_engine_vs2005.vcproj", "{C739151F-5384-41DF-A1A6-F089E2C1AD56}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "agg2d", "..\..\DesktopEditor\agg-2.4\agg_vs2005.vcproj", "{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "..\..\DesktopEditor\freetype-2.5.2\builds\windows\vc2005\freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml2", "..\..\DesktopEditor\xml\build\vs2005\libxml2.vcproj", "{21663823-DE45-479B-91D0-B4FEF4916EF0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
@ -102,102 +38,6 @@ Global
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|Win32.Build.0 = Release|Win32
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|x64.ActiveCfg = Release|x64
|
||||
{A100103A-353E-45E8-A9B8-90B87CC5C0B0}.Release|x64.Build.0 = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Debug|x64.Build.0 = Debug|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|Win32.Build.0 = Release|Win32
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.ActiveCfg = Release|x64
|
||||
{9CAA294E-58C3-4CEB-ABA0-CB9786CA5540}.Release|x64.Build.0 = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Debug|x64.Build.0 = Debug|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|Win32.Build.0 = Release|Win32
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.ActiveCfg = Release|x64
|
||||
{BC52A07C-A797-423D-8C4F-8678805BBB36}.Release|x64.Build.0 = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Debug|x64.Build.0 = Debug|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|Win32.Build.0 = Release|Win32
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.ActiveCfg = Release|x64
|
||||
{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}.Release|x64.Build.0 = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Debug|x64.Build.0 = Debug|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|Win32.Build.0 = Release|Win32
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.ActiveCfg = Release|x64
|
||||
{764C3A2D-FB0F-428E-B1C7-62D1DD2CE239}.Release|x64.Build.0 = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Debug|x64.Build.0 = Debug|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|Win32.Build.0 = Release|Win32
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.ActiveCfg = Release|x64
|
||||
{818753F2-DBB9-4D3B-898A-A604309BE470}.Release|x64.Build.0 = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Debug|x64.Build.0 = Debug|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|Win32.Build.0 = Release|Win32
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.ActiveCfg = Release|x64
|
||||
{9A037A69-D1DF-4505-AB2A-6CB3641C476E}.Release|x64.Build.0 = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Debug|x64.Build.0 = Debug|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|Win32.Build.0 = Release|Win32
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.ActiveCfg = Release|x64
|
||||
{40A69F40-063E-43FD-8543-455495D8733E}.Release|x64.Build.0 = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Debug|x64.Build.0 = Debug|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|Win32.Build.0 = Release|Win32
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.ActiveCfg = Release|x64
|
||||
{43A0E60E-5C4A-4C09-A29B-7683F503BBD7}.Release|x64.Build.0 = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Debug|x64.Build.0 = Debug|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|Win32.Build.0 = Release|Win32
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.ActiveCfg = Release|x64
|
||||
{DF861D33-9BC1-418C-82B1-581F590FE169}.Release|x64.Build.0 = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Debug|x64.Build.0 = Debug|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|Win32.Build.0 = Release|Win32
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.ActiveCfg = Release|x64
|
||||
{0588563C-F05C-428C-B21A-DD74756628B3}.Release|x64.Build.0 = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Debug|x64.Build.0 = Debug|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|Win32.Build.0 = Release|Win32
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.ActiveCfg = Release|x64
|
||||
{EE1B576A-07C5-4ACC-920F-81C41DD0C8C1}.Release|x64.Build.0 = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Debug|x64.Build.0 = Debug|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|Win32.Build.0 = Release|Win32
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.ActiveCfg = Release|x64
|
||||
{F8274B05-168E-4D6E-B843-AA7510725363}.Release|x64.Build.0 = Release|x64
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0F49D5D1-A8D3-4F97-8BC1-E2F65BB00C10}.Debug|x64.ActiveCfg = Debug|x64
|
||||
@ -214,46 +54,6 @@ Global
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|Win32.Build.0 = Release|Win32
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|x64.ActiveCfg = Release|x64
|
||||
{36636678-AE25-4BE6-9A34-2561D1BCF302}.Release|x64.Build.0 = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Debug|x64.Build.0 = Debug|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|Win32.Build.0 = Release|Win32
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.ActiveCfg = Release|x64
|
||||
{37CA072A-5BDE-498B-B3A7-5E404F5F9BF2}.Release|x64.Build.0 = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Debug|x64.Build.0 = Debug|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|Win32.Build.0 = Release|Win32
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.ActiveCfg = Release|x64
|
||||
{C739151F-5384-41DF-A1A6-F089E2C1AD56}.Release|x64.Build.0 = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Debug|x64.Build.0 = Debug|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|Win32.Build.0 = Release|Win32
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.ActiveCfg = Release|x64
|
||||
{617F9069-5E37-4B80-9A3A-E77AFC4CC7AD}.Release|x64.Build.0 = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
|
||||
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Debug|x64.Build.0 = Debug|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|Win32.Build.0 = Release|Win32
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.ActiveCfg = Release|x64
|
||||
{21663823-DE45-479B-91D0-B4FEF4916EF0}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@ -427,23 +427,7 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\DesktopEditor\xml\src\xmldom.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\DesktopEditor\xml\src\xmllight.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\..\build\bin\icu\win_32\icudt.lib"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\build\bin\icu\win_32\icuuc.lib"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="RtfFormatTest.cpp"
|
||||
>
|
||||
|
||||
@ -413,6 +413,18 @@ namespace OOX
|
||||
{
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
void SetDefaults()
|
||||
{
|
||||
SetApplication(L"ONLYOFFICE");
|
||||
#if defined(INTVER)
|
||||
SetAppVersion(VALUE2STR(INTVER));
|
||||
#endif
|
||||
SetDocSecurity(0);
|
||||
SetScaleCrop(false);
|
||||
SetLinksUpToDate(false);
|
||||
SetSharedDoc(false);
|
||||
SetHyperlinksChanged(false);
|
||||
}
|
||||
void SetApplication(const std::wstring& sVal)
|
||||
{
|
||||
m_sApplication = sVal;
|
||||
|
||||
@ -336,7 +336,15 @@ namespace OOX
|
||||
{
|
||||
sName = oReader.GetName();
|
||||
if ( L"w:comment" == sName )
|
||||
m_arrComments.push_back( new CComment(oReader) );
|
||||
{
|
||||
CComment* pComment = new CComment(oReader);
|
||||
|
||||
if ((pComment) && (pComment->m_oId.IsInit()))
|
||||
{
|
||||
m_mapComments.insert( std::make_pair( pComment->m_oId->GetValue(), m_arrComments.size()));
|
||||
}
|
||||
m_arrComments.push_back( pComment );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -357,7 +365,8 @@ namespace OOX
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
|
||||
std::vector<CComment*> m_arrComments;
|
||||
std::vector<CComment*> m_arrComments;
|
||||
std::map<int, int> m_mapComments; //id, index
|
||||
|
||||
};
|
||||
class CCommentExt : public WritingElement
|
||||
@ -401,10 +410,9 @@ namespace OOX
|
||||
}
|
||||
|
||||
public:
|
||||
// Attributes
|
||||
nullable<SimpleTypes::CLongHexNumber<> > m_oParaId;
|
||||
nullable<SimpleTypes::CLongHexNumber<> > m_oParaIdParent;
|
||||
nullable<SimpleTypes::COnOff<> > m_oDone;
|
||||
nullable<SimpleTypes::CLongHexNumber<> > m_oParaId;
|
||||
nullable<SimpleTypes::CLongHexNumber<> > m_oParaIdParent;
|
||||
nullable<SimpleTypes::COnOff<> > m_oDone;
|
||||
};
|
||||
|
||||
class CCommentsExt : public OOX::File
|
||||
@ -449,7 +457,14 @@ namespace OOX
|
||||
{
|
||||
sName = oReader.GetName();
|
||||
if ( L"w15:commentEx" == sName )
|
||||
m_arrComments.push_back( new CCommentExt(oReader) );
|
||||
{
|
||||
CCommentExt* pCommentExt = new CCommentExt(oReader);
|
||||
if ((pCommentExt) && (pCommentExt->m_oParaId.IsInit()))
|
||||
{
|
||||
m_mapComments.insert( std::make_pair( pCommentExt->m_oParaId->GetValue(), m_arrComments.size()));
|
||||
m_arrComments.push_back( pCommentExt );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -470,7 +485,8 @@ namespace OOX
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
|
||||
std::vector<CCommentExt*> m_arrComments;
|
||||
std::vector<CCommentExt*> m_arrComments;
|
||||
std::map<int, int> m_mapComments; //paraId, index
|
||||
};
|
||||
|
||||
class CPresenceInfo : public WritingElement
|
||||
|
||||
@ -57,8 +57,6 @@ namespace OOX
|
||||
virtual ~CCore()
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
virtual void read(const CPath& oPath)
|
||||
{
|
||||
XmlUtils::CXmlNode oProperties;
|
||||
@ -230,7 +228,6 @@ namespace OOX
|
||||
oContent.Registration( type().OverrideType(), oDirectory, oPath.GetFilename() );
|
||||
}
|
||||
|
||||
public:
|
||||
virtual const FileType type() const
|
||||
{
|
||||
return FileTypes::Core;
|
||||
@ -244,7 +241,11 @@ namespace OOX
|
||||
{
|
||||
return type().DefaultFileName();
|
||||
}
|
||||
|
||||
void SetDefaults()
|
||||
{
|
||||
m_sCreator = L"";
|
||||
m_sLastModifiedBy = L"";
|
||||
}
|
||||
void SetCreator(std::wstring sVal)
|
||||
{
|
||||
m_sCreator = sVal;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
VERSION = 2.4.535.0
|
||||
VERSION = 2.4.537.0
|
||||
DEFINES += INTVER=$$VERSION
|
||||
|
||||
# CONFIGURATION
|
||||
|
||||
@ -29,14 +29,15 @@
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#include "ApplicationFonts.h"
|
||||
//#include "ApplicationFonts.h"
|
||||
#include "ApplicationFontsWorker.h"
|
||||
#include "../common/File.h"
|
||||
#include "../common/Array.h"
|
||||
#include "../common/Directory.h"
|
||||
#include "./MemoryStream.h"
|
||||
#include "./../graphics/pro/Fonts.h"
|
||||
|
||||
using namespace NSFonts;
|
||||
#include "./MemoryStream.h"
|
||||
#include "./../graphics/pro/Fonts.h"
|
||||
|
||||
using namespace NSFonts;
|
||||
|
||||
namespace NSFontsApplication
|
||||
{
|
||||
@ -347,11 +348,11 @@ namespace NSFontsApplication
|
||||
}
|
||||
};
|
||||
|
||||
static std::vector<std::wstring> SaveAllFontsJS(CApplicationFonts& applicationFonts, CStringWriter& oWriterJS)
|
||||
static std::vector<std::wstring> SaveAllFontsJS(NSFonts::IApplicationFonts* applicationFonts, CStringWriter& oWriterJS)
|
||||
{
|
||||
std::vector<std::wstring> arrNames;
|
||||
|
||||
std::vector<NSFonts::CFontInfo*>* pList = applicationFonts.GetList()->GetFonts();
|
||||
std::vector<NSFonts::CFontInfo*>* pList = applicationFonts->GetList()->GetFonts();
|
||||
|
||||
#ifdef _IOS
|
||||
|
||||
@ -361,7 +362,7 @@ namespace NSFontsApplication
|
||||
CFontInfo* pInfo = pList->operator [](i);
|
||||
|
||||
if (pInfo->m_wsFontName.find(L".") == 0)
|
||||
{
|
||||
{
|
||||
pList->erase(pList->begin() + i);
|
||||
// странные шрифты какие-то есть в ios
|
||||
//pList->RemoveAt(i);
|
||||
@ -556,7 +557,7 @@ namespace NSFontsApplication
|
||||
{
|
||||
BYTE* pData = NULL;
|
||||
LONG lLen = 0;
|
||||
applicationFonts.GetList()->ToBuffer(&pData, &lLen, L"", true);
|
||||
applicationFonts->GetList()->ToBuffer(&pData, &lLen, L"", true);
|
||||
|
||||
char* cData64 = NULL;
|
||||
int nData64Dst = 0;
|
||||
@ -658,14 +659,14 @@ std::vector<std::wstring> CApplicationFontsWorker::CheckApplication(bool bIsNeed
|
||||
std::vector<std::wstring> arrNames;
|
||||
|
||||
std::vector<std::wstring> fonts;
|
||||
CApplicationFonts oFonts;
|
||||
NSFonts::IApplicationFonts* pFonts = NSFonts::NSApplication::Create();
|
||||
|
||||
pDataDst = NULL;
|
||||
nLenDst = 0;
|
||||
|
||||
if (bIsNeedSystemFonts)
|
||||
{
|
||||
fonts = oFonts.GetSetupFontFiles();
|
||||
fonts = pFonts->GetSetupFontFiles();
|
||||
}
|
||||
|
||||
for (std::vector<std::wstring>::iterator iter = m_arAdditionalFolders.begin(); iter != m_arAdditionalFolders.end(); ++iter)
|
||||
@ -720,10 +721,10 @@ std::vector<std::wstring> CApplicationFontsWorker::CheckApplication(bool bIsNeed
|
||||
}
|
||||
|
||||
// произошли изменения
|
||||
oFonts.InitializeFromArrayFiles(fonts);
|
||||
pFonts->InitializeFromArrayFiles(fonts);
|
||||
|
||||
NSFontsApplication::CStringWriter oWriterJS;
|
||||
arrNames = NSFontsApplication::SaveAllFontsJS(oFonts, oWriterJS);
|
||||
arrNames = NSFontsApplication::SaveAllFontsJS(pFonts, oWriterJS);
|
||||
|
||||
// теперь нужно записать новую дату
|
||||
NSMemoryStream::CMemoryStream oStream;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2018
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
@ -773,4 +773,32 @@ void CFontManager::SetSubpixelRendering(const bool& hmul, const bool& vmul)
|
||||
m_nRENDER_MODE = FT_RENDER_MODE_LCD_V;
|
||||
else
|
||||
m_nRENDER_MODE = FT_RENDER_MODE_NORMAL;
|
||||
}
|
||||
|
||||
void CFontManager::GetFace(double& d0, double& d1, double& d2)
|
||||
{
|
||||
d0 = 2048;
|
||||
d1 = 0;
|
||||
d2 = 0;
|
||||
|
||||
if (m_pFont)
|
||||
{
|
||||
TT_OS2* os2 = NULL;
|
||||
TT_Header* header = NULL;
|
||||
if (m_pFont->m_pFace)
|
||||
{
|
||||
if ((header = (TT_Header*)FT_Get_Sfnt_Table(m_pFont->m_pFace, ft_sfnt_head)) != NULL)
|
||||
{
|
||||
d1 = header->yMax;
|
||||
d2 = header->yMin;
|
||||
d0 = header->Units_Per_EM;
|
||||
}
|
||||
|
||||
if ((os2 = (TT_OS2*)FT_Get_Sfnt_Table(m_pFont->m_pFace, ft_sfnt_os2)) != NULL && os2->version != 0xFFFFU)
|
||||
{
|
||||
d1 = os2->usWinAscent;
|
||||
d2 = -os2->usWinDescent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2018
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
@ -217,7 +217,9 @@ public:
|
||||
virtual std::wstring GetFontType();
|
||||
virtual unsigned int GetNameIndex(const std::wstring& wsName);
|
||||
|
||||
virtual void SetSubpixelRendering(const bool& hmul, const bool& vmul);
|
||||
virtual void SetSubpixelRendering(const bool& hmul, const bool& vmul);
|
||||
|
||||
virtual void GetFace(double& d0, double& d1, double& d2);
|
||||
};
|
||||
|
||||
#endif // _BUILD_FONT_ENGINE_FONTMANAGER_H_
|
||||
|
||||
@ -152,27 +152,7 @@ static inline unsigned char Div255(int nValue)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
class CDIB : public IGrObject
|
||||
{
|
||||
public:
|
||||
BYTE* m_pBits;
|
||||
LONG m_lWidth;
|
||||
LONG m_lHeight;
|
||||
|
||||
public:
|
||||
CDIB() : IGrObject()
|
||||
{
|
||||
m_pBits = NULL;
|
||||
m_lWidth = 0;
|
||||
m_lHeight = 0;
|
||||
}
|
||||
virtual ~CDIB()
|
||||
{
|
||||
// delete all in system wrapper
|
||||
}
|
||||
|
||||
virtual INT Create(LONG lWidth, LONG lHeight, double dDPIX, double dDPIY) = 0;
|
||||
};
|
||||
class CDIB;
|
||||
|
||||
class CGraphics_ClipStateRecord
|
||||
{
|
||||
|
||||
@ -718,6 +718,16 @@ namespace Aggplus
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
bool CGraphicsPath::IsPointInPath(const double& x, const double& y)
|
||||
{
|
||||
agg::rasterizer_scanline_aa<> rasterizer;
|
||||
agg::conv_curve<agg::path_storage> c_c_path(m_internal->m_agg_ps);
|
||||
rasterizer.add_path(c_c_path);
|
||||
|
||||
return rasterizer.hit_test((int)x, (int)y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace Aggplus
|
||||
|
||||
@ -97,6 +97,7 @@ namespace Aggplus
|
||||
int EllipseArc3(double fX, double fY, double fXRad, double fYRad, double dAngle1, double dAngle2, double *pfXCur, double *pfYCur, INT bClockDirection = FALSE);
|
||||
int Ellipse(double fX, double fY, double fXRad, double fYRad);
|
||||
Status AddArc2(double fX, double fY, double fWidth, double fHeight, double fStartAngle, double fSweepAngle);
|
||||
bool IsPointInPath(const double& x, const double& y);
|
||||
|
||||
public:
|
||||
CGraphicsPath_private* m_internal;
|
||||
|
||||
@ -213,8 +213,13 @@ namespace Aggplus
|
||||
double CMatrix::ty() const
|
||||
{
|
||||
return m_internal->m_agg_mtx.ty;
|
||||
}
|
||||
double CMatrix::rotation()
|
||||
{
|
||||
return m_internal->m_agg_mtx.rotation();
|
||||
}
|
||||
|
||||
|
||||
void CMatrix::SetElements(const double& sx, const double& shy, const double& shx, const double& sy, const double& tx, const double& ty)
|
||||
{
|
||||
m_internal->m_agg_mtx.sx = sx;
|
||||
|
||||
@ -71,7 +71,7 @@ namespace Aggplus
|
||||
double shy() const;
|
||||
double tx() const;
|
||||
double ty() const;
|
||||
|
||||
double rotation();
|
||||
void SetElements(const double& sx, const double& shy, const double& shx, const double& sy, const double& tx = 0, const double& ty = 0);
|
||||
|
||||
Status GetElements(float* m) const;
|
||||
|
||||
@ -460,6 +460,10 @@ namespace NSFonts
|
||||
virtual bool IsItalic() = 0;
|
||||
virtual bool IsBold() = 0;
|
||||
|
||||
|
||||
virtual void SetItalic(const INT& value) = 0;
|
||||
virtual void SetNeedBold(const INT& value) = 0;
|
||||
|
||||
virtual bool IsSymbolic(bool bIsOS2Check = false) = 0;
|
||||
|
||||
virtual int IsUnicodeRangeAvailable(unsigned long ulBit, unsigned int un4ByteIndex) = 0;
|
||||
@ -565,6 +569,8 @@ namespace NSFonts
|
||||
virtual void SetSubpixelRendering(const bool& hmul, const bool& vmul) = 0;
|
||||
|
||||
virtual unsigned int GetNameIndex(const std::wstring& wsName) = 0;
|
||||
|
||||
virtual void GetFace(double& d0, double& d1, double& d2) = 0;
|
||||
|
||||
public:
|
||||
static IFontFile* LoadFontFile(CLibrary& library, IFontStream* pStream, int lFaceIndex);
|
||||
|
||||
@ -40,7 +40,31 @@
|
||||
#include "./Image.h"
|
||||
|
||||
#include "../IRenderer.h"
|
||||
#include "../structures.h"
|
||||
|
||||
namespace Aggplus {
|
||||
class CDIB : public IGrObject
|
||||
{
|
||||
public:
|
||||
BYTE* m_pBits;
|
||||
LONG m_lWidth;
|
||||
LONG m_lHeight;
|
||||
|
||||
public:
|
||||
CDIB() : IGrObject()
|
||||
{
|
||||
m_pBits = NULL;
|
||||
m_lWidth = 0;
|
||||
m_lHeight = 0;
|
||||
}
|
||||
virtual ~CDIB()
|
||||
{
|
||||
// delete all in system wrapper
|
||||
}
|
||||
|
||||
virtual INT Create(LONG lWidth, LONG lHeight, double dDPIX, double dDPIY) = 0;
|
||||
};
|
||||
}
|
||||
namespace NSGraphics
|
||||
{
|
||||
class GRAPHICS_DECL IGraphicsRenderer : public IRenderer
|
||||
@ -63,9 +87,46 @@ namespace NSGraphics
|
||||
public:
|
||||
virtual void CreateFromBgraFrame(CBgraFrame* pFrame) = 0;
|
||||
virtual void SetCoordTransformOffset(double dOffsetX, double dOffsetY) = 0;
|
||||
|
||||
|
||||
virtual void SavePen(NSStructures::CPen& oPen) = 0;
|
||||
virtual void RestorePen(const NSStructures::CPen& oPen) = 0;
|
||||
|
||||
virtual void SaveBrush(NSStructures::CBrush& oBrush) = 0;
|
||||
virtual void RestoreBrush(const NSStructures::CBrush& oBrush) = 0;
|
||||
|
||||
virtual void put_GlobalAlphaEnabled(const bool& bEnabled, const double& dVal) = 0;
|
||||
virtual void put_IntegerGrid(const bool& bEnabled) = 0;
|
||||
virtual bool get_IntegerGrid() = 0;
|
||||
virtual void AddRect(const double& x, const double& y, const double& w, const double& h) = 0;
|
||||
virtual void SetFontAttack() = 0;
|
||||
|
||||
virtual void Create(BYTE* pPixels, const Aggplus::CDoubleRect& oRect, LONG lWidthControl, LONG lHeightControl, Aggplus::CDIB* pDib = NULL) = 0;
|
||||
virtual void CreateFlip(BYTE* pPixels, const Aggplus::CDoubleRect& oRect, LONG lWidthControl, LONG lHeightControl, Aggplus::CDIB* pDib = NULL) = 0;
|
||||
|
||||
virtual Aggplus::CMatrix* GetFullTransform() = 0;
|
||||
virtual Aggplus::CMatrix* GetTransformMatrix() = 0;
|
||||
virtual void CalculateFullTransform() = 0;
|
||||
virtual void PathCommandRect(double x, double y, double w, double h) = 0;
|
||||
virtual Aggplus::CMatrix* GetCoordTransform() = 0;
|
||||
virtual void Fill() = 0;
|
||||
virtual void Stroke() = 0;
|
||||
virtual double GetPixW() = 0;
|
||||
virtual double GetPixH() = 0;
|
||||
|
||||
// smart methods
|
||||
virtual void drawHorLine(BYTE align, double y, double x, double r, double penW) = 0;
|
||||
virtual void drawHorLine2(BYTE align, double y, double x, double r, double penW) = 0;
|
||||
|
||||
virtual void drawVerLine(BYTE align, double x, double y, double b, double penW) = 0;
|
||||
virtual void drawHorLineExt(BYTE align, double y, double x, double r, double penW, double leftMW, double rightMW) = 0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
GRAPHICS_DECL IGraphicsRenderer* Create();
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // _GRAPHICS_EXPORTS_GRAPHICS_H_
|
||||
|
||||
@ -515,6 +515,9 @@ namespace MetaFile
|
||||
else //if (WINDING == unFillMode)
|
||||
unClipMode |= c_nClipRegionTypeWinding;
|
||||
|
||||
if (RGN_COPY == unMode)
|
||||
ResetClip();
|
||||
|
||||
m_pRenderer->put_ClipMode(unClipMode);
|
||||
m_pRenderer->BeginCommand(c_nClipType);
|
||||
m_pRenderer->BeginCommand(c_nPathType);
|
||||
|
||||
@ -232,7 +232,7 @@ static const struct ActionNamesEmf
|
||||
//-----------------------------------------------------------
|
||||
// 2.3.2 Clipping
|
||||
//-----------------------------------------------------------
|
||||
case EMR_EXCLUDECLIPRECT: Read_EMR_EXCLUDECLIPRECT(); break;
|
||||
case EMR_EXCLUDECLIPRECT: Read_EMR_EXCLUDECLIPRECT(); break;
|
||||
case EMR_EXTSELECTCLIPRGN: Read_EMR_EXTSELECTCLIPRGN(); break;
|
||||
case EMR_INTERSECTCLIPRECT: Read_EMR_INTERSECTCLIPRECT(); break;
|
||||
case EMR_SELECTCLIPPATH: Read_EMR_SELECTCLIPPATH(); break;
|
||||
|
||||
@ -94,7 +94,7 @@ static std::wstring nsstring_to_wstring(NSString* nsstring)
|
||||
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
|
||||
oInputParams.m_bIsNoBase64 = new bool(self.isNoBase64);
|
||||
|
||||
if (self.password) {
|
||||
if (nil != self.password && self.password.length > 0) {
|
||||
oInputParams.m_sSavePassword = new std::wstring(nsstring_to_wstring(self.password));
|
||||
|
||||
std::wstring sResultDecryptFile = temp + FILE_SEPARATOR_STR + L"uncrypt_file.docx";
|
||||
@ -169,7 +169,7 @@ static std::wstring nsstring_to_wstring(NSString* nsstring)
|
||||
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
|
||||
oInputParams.m_bIsNoBase64 = new bool(self.isNoBase64);
|
||||
|
||||
if (self.password) {
|
||||
if (nil != self.password && self.password.length > 0) {
|
||||
oInputParams.m_sSavePassword = new std::wstring(nsstring_to_wstring(self.password));
|
||||
|
||||
std::wstring sResultDecryptFile = temp + FILE_SEPARATOR_STR + L"uncrypt_file.xlsx";
|
||||
@ -238,7 +238,7 @@ static std::wstring nsstring_to_wstring(NSString* nsstring)
|
||||
NExtractTools::InputParams oInputParams;
|
||||
oInputParams.m_sFontDir = new std::wstring(nsstring_to_wstring(nsFontPath));
|
||||
|
||||
if (self.password) {
|
||||
if (nil != self.password && self.password.length > 0) {
|
||||
oInputParams.m_sSavePassword = new std::wstring(nsstring_to_wstring(self.password));
|
||||
|
||||
std::wstring sResultDecryptFile = temp + FILE_SEPARATOR_STR + L"uncrypt_file.pptx";
|
||||
|
||||
Reference in New Issue
Block a user