Compare commits

...

12 Commits

75 changed files with 10256 additions and 575 deletions

View File

@ -125,7 +125,7 @@ namespace DocFormatUtils
if(bDeleteNoUnicode)
{
for(size_t pos = 0; pos != data.size(); ++pos)
for(size_t pos = 0; pos < data.size(); ++pos)
{
switch(data[pos])
{
@ -157,7 +157,7 @@ namespace DocFormatUtils
}
else
{
for(size_t pos = 0; pos != data.size(); ++pos)
for(size_t pos = 0; pos < data.size(); ++pos)
{
switch(data[pos])
{
@ -166,6 +166,8 @@ namespace DocFormatUtils
case '\'': buffer.append(L"&apos;"); break;
case '<': buffer.append(L"&lt;"); break;
case '>': buffer.append(L"&gt;"); break;
case '\0':
return buffer;
default: buffer.append(&data[pos], 1); break;
}
}

View File

@ -85,7 +85,7 @@ namespace DocFileFormat
if (author_str)
{
XMLTools::XMLAttribute author( _T( "w:author" ), FormatUtils::XmlEncode(*author_str).c_str());
XMLTools::XMLAttribute author( _T( "w:author" ), FormatUtils::XmlEncode(*author_str));
rPrChange.AppendAttribute( author );
}
@ -98,7 +98,7 @@ namespace DocFileFormat
//write properties
if ( ( m_pXmlWriter != NULL ) && ( ( _rPr->GetChildCount() > 0 ) || ( _rPr->GetAttributeCount() > 0 ) ) )
{
m_pXmlWriter->WriteString( _rPr->GetXMLString().c_str() );
m_pXmlWriter->WriteString( _rPr->GetXMLString());
}
}
@ -144,7 +144,7 @@ namespace DocFileFormat
_currentIstd = FormatUtils::BytesToUInt16( iter->Arguments, 0, iter->argumentsSize );
if (_currentIstd < _doc->Styles->Styles->size())
{
appendValueElement( parent, _T( "rStyle" ), StyleSheetMapping::MakeStyleId( _doc->Styles->Styles->at( _currentIstd ) ).c_str(), true );
appendValueElement( parent, _T( "rStyle" ), StyleSheetMapping::MakeStyleId( _doc->Styles->Styles->at( _currentIstd ) ), true );
}
}
}break;
@ -232,7 +232,7 @@ namespace DocFileFormat
case sprmOldCIss:
case sprmCIss:
appendValueElement( parent, _T( "vertAlign" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &SuperscriptIndex[0][0], 3, 12 ).c_str(), true );
appendValueElement( parent, _T( "vertAlign" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &SuperscriptIndex[0][0], 3, 12 ), true );
break;
case sprmCRgLid0_80:
@ -292,7 +292,7 @@ namespace DocFileFormat
case sprmCIco:
case sprmCIcoBi:
{//color
colorVal->SetValue( FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::ColorIdentifier[0][0], 17, 12 ).c_str() );
colorVal->SetValue( FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::ColorIdentifier[0][0], 17, 12 ));
}break;
case sprmCCv:
@ -305,17 +305,17 @@ namespace DocFileFormat
case sprmCOldHighlight:
{
appendValueElement( parent, _T( "highlight" ), FormatUtils::MapValueToWideString( iter->Arguments[1], &Global::ColorIdentifier[0][0], 17, 12 ).c_str(), true );
appendValueElement( parent, _T( "highlight" ), FormatUtils::MapValueToWideString( iter->Arguments[1], &Global::ColorIdentifier[0][0], 17, 12 ), true );
}break;
case sprmCHighlight:
{
appendValueElement( parent, _T( "highlight" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::ColorIdentifier[0][0], 17, 12 ).c_str(), true );
appendValueElement( parent, _T( "highlight" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::ColorIdentifier[0][0], 17, 12 ), true );
}break;
case sprmOldCDxaSpace:
case sprmCDxaSpace:
{
appendValueElement( parent, _T( "spacing" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( parent, _T( "spacing" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
}break;
case sprmCFtcBi :
@ -332,20 +332,20 @@ namespace DocFileFormat
case sprmCHpsBi :
{
appendValueElement( parent, _T( "szCs" ),
FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
}
break;
// Font Size in points (2~3276) default 20-half-points
case sprmOldCHps :
{
appendValueElement (parent, _T( "sz" ),
FormatUtils::IntToWideString (FormatUtils::BytesToUChar (iter->Arguments, 0, iter->argumentsSize) ).c_str(),
FormatUtils::IntToWideString (FormatUtils::BytesToUChar (iter->Arguments, 0, iter->argumentsSize) ),
true );
}break;
case sprmCHps :
{
appendValueElement (parent, _T( "sz" ),
FormatUtils::IntToWideString (FormatUtils::BytesToUInt16 (iter->Arguments, 0, iter->argumentsSize) ).c_str(), true );
FormatUtils::IntToWideString (FormatUtils::BytesToUInt16 (iter->Arguments, 0, iter->argumentsSize) ), true );
}break;
case sprmCMajority :
@ -366,7 +366,7 @@ namespace DocFileFormat
case sprmOldCHpsKern:
case sprmCHpsKern:
{
appendValueElement( parent, _T( "kern" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( parent, _T( "kern" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
}break;
case sprmOldCFtc:
@ -379,7 +379,7 @@ namespace DocFileFormat
XMLTools::XMLAttribute* ascii = new XMLTools::XMLAttribute( _T( "w:ascii" ) );
FontFamilyName* ffn = static_cast<FontFamilyName*>( _doc->FontTable->operator [] ( nIndex ) );
m_sAsciiFont = ffn->xszFtn;
ascii->SetValue( FormatUtils::XmlEncode(m_sAsciiFont).c_str() );
ascii->SetValue( FormatUtils::XmlEncode(m_sAsciiFont, true));
rFonts->AppendAttribute( *ascii );
RELEASEOBJECT( ascii );
}
@ -393,7 +393,7 @@ namespace DocFileFormat
XMLTools::XMLAttribute* eastAsia = new XMLTools::XMLAttribute( _T( "w:eastAsia" ) );
FontFamilyName* ffn = static_cast<FontFamilyName*>( _doc->FontTable->operator [] ( nIndex ) );
m_sEastAsiaFont = ffn->xszFtn;
eastAsia->SetValue( FormatUtils::XmlEncode(m_sEastAsiaFont).c_str() );
eastAsia->SetValue( FormatUtils::XmlEncode(m_sEastAsiaFont));
rFonts->AppendAttribute( *eastAsia );
RELEASEOBJECT( eastAsia );
}
@ -408,7 +408,7 @@ namespace DocFileFormat
XMLTools::XMLAttribute* ansi = new XMLTools::XMLAttribute( _T( "w:hAnsi" ) );
FontFamilyName* ffn = static_cast<FontFamilyName*>( _doc->FontTable->operator [] ( nIndex ) );
m_shAnsiFont = ffn->xszFtn;
ansi->SetValue( FormatUtils::XmlEncode(m_shAnsiFont).c_str() );
ansi->SetValue( FormatUtils::XmlEncode(m_shAnsiFont));
rFonts->AppendAttribute( *ansi );
RELEASEOBJECT( ansi );
}
@ -417,18 +417,18 @@ namespace DocFileFormat
case sprmOldCKul:
case sprmCKul:
{ //Underlining
appendValueElement( parent, _T( "u" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::UnderlineCode[0][0], 56, 16 ).c_str(), true );
appendValueElement( parent, _T( "u" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::UnderlineCode[0][0], 56, 16 ), true );
}
break;
case sprmCCharScale:
{ //char width
appendValueElement( parent, _T( "w" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( parent, _T( "w" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
}break;
case sprmCSfxText:
{ //animation
appendValueElement( parent, _T( "effect" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::TextAnimation[0][0], 7, 16 ).c_str(), true );
appendValueElement( parent, _T( "effect" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::TextAnimation[0][0], 7, 16 ), true );
}break;
case sprmCIdctHint:
@ -483,7 +483,7 @@ namespace DocFileFormat
if (!m_sDefaultFont.empty() && m_sAsciiFont.empty() && m_sEastAsiaFont.empty() && m_shAnsiFont.empty())
{//????
XMLTools::XMLAttribute* ascii = new XMLTools::XMLAttribute( _T( "w:ascii" ) );
ascii->SetValue( FormatUtils::XmlEncode(m_sDefaultFont).c_str() );
ascii->SetValue( FormatUtils::XmlEncode(m_sDefaultFont));
//rFonts->AppendAttribute( *ascii );
RELEASEOBJECT( ascii );
}

View File

@ -73,10 +73,10 @@ namespace DocFileFormat
AnnotationReferenceDescriptor* atrdPre10 = static_cast<AnnotationReferenceDescriptor*>(m_document->AnnotationsReferencePlex->Elements[index]);
m_pXmlWriter->WriteNodeBegin( _T( "w:comment" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( index ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( index ));
m_pXmlWriter->WriteAttribute( _T( "w:author" ),
FormatUtils::XmlEncode(m_document->AnnotationOwners->at( atrdPre10->GetAuthorIndex() ) ).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:initials" ), atrdPre10->GetUserInitials().c_str() );
FormatUtils::XmlEncode(m_document->AnnotationOwners->at( atrdPre10->GetAuthorIndex() ) ));
m_pXmlWriter->WriteAttribute( _T( "w:initials" ), atrdPre10->GetUserInitials());
//!!!TODO!!!
/*//ATRDpost10 is optional and not saved in all files

View File

@ -346,7 +346,7 @@ namespace DocFileFormat
{
std::wstring id = FormatUtils::IntToFormattedWideString(FormatUtils::BytesToInt32(iter->Arguments, 0, iter->argumentsSize), _T("%08x"));
m_context->AddRsid(id);
m_pXmlWriter->WriteAttribute(_T("w:rsidP"), id.c_str());
m_pXmlWriter->WriteAttribute(_T("w:rsidP"), id);
break;
}
@ -380,7 +380,7 @@ namespace DocFileFormat
WideString* author = dynamic_cast<WideString*>(m_document->RevisionAuthorTable->operator[](rev.Isbt));
//if it's a inserted run
m_pXmlWriter->WriteNodeBegin(_T("w:ins"), true);
m_pXmlWriter->WriteAttribute(_T("w:author"), FormatUtils::XmlEncode(*author).c_str());
m_pXmlWriter->WriteAttribute(_T("w:author"), FormatUtils::XmlEncode(*author));
m_pXmlWriter->WriteNodeEnd(_T(""), true, false);
//rev.Dttm.Convert(new DateMapping(m_pXmlWriter));
}
@ -392,21 +392,21 @@ namespace DocFileFormat
if (0 != rev.Rsid)
{
std::wstring rsid = FormatUtils::IntToFormattedWideString(rev.Rsid, _T("%08x"));
m_pXmlWriter->WriteAttribute(_T("w:rsidR"), rsid.c_str());
m_pXmlWriter->WriteAttribute(_T("w:rsidR"), rsid);
m_context->AddRsid(rsid);
}
if (0 != rev.RsidDel)
{
std::wstring rsidDel = FormatUtils::IntToFormattedWideString(rev.RsidDel, _T("%08x"));
m_pXmlWriter->WriteAttribute(_T("w:rsidDel"), rsidDel.c_str());
m_pXmlWriter->WriteAttribute(_T("w:rsidDel"), rsidDel);
m_context->AddRsid(rsidDel);
}
if (0 != rev.RsidProp)
{
std::wstring rsidProp = FormatUtils::IntToFormattedWideString(rev.RsidProp, _T("%08x"));
m_pXmlWriter->WriteAttribute(_T("w:rsidRPr"), rsidProp.c_str());
m_pXmlWriter->WriteAttribute(_T("w:rsidRPr"), rsidProp);
m_context->AddRsid(rsidProp);
}
@ -447,7 +447,7 @@ namespace DocFileFormat
if (!_writeAfterRun.empty())
{
m_pXmlWriter->WriteString(_writeAfterRun.c_str());
m_pXmlWriter->WriteString(_writeAfterRun);
_writeAfterRun.clear();
}
}
@ -493,7 +493,7 @@ namespace DocFileFormat
XMLTools::XMLElement elem(_T("w:tab"));
m_pXmlWriter->WriteString(elem.GetXMLString().c_str());
m_pXmlWriter->WriteString(elem.GetXMLString());
}
else if (TextMark::HardLineBreak == code)
{
@ -505,7 +505,7 @@ namespace DocFileFormat
elem.AppendAttribute(_T("w:type"), _T("textWrapping"));
elem.AppendAttribute(_T("w:clear"), _T("all"));
m_pXmlWriter->WriteString(elem.GetXMLString().c_str());
m_pXmlWriter->WriteString(elem.GetXMLString());
}
else if (TextMark::ParagraphEnd == code)
{
@ -523,7 +523,7 @@ namespace DocFileFormat
XMLTools::XMLElement elem(_T("w:br"));
elem.AppendAttribute(_T("w:type"), _T("page"));
m_pXmlWriter->WriteString(elem.GetXMLString().c_str());
m_pXmlWriter->WriteString(elem.GetXMLString());
}
}
else if (TextMark::ColumnBreak == code)
@ -535,7 +535,7 @@ namespace DocFileFormat
XMLTools::XMLElement elem(_T("w:br"));
elem.AppendAttribute(_T("w:type"), _T("column"));
m_pXmlWriter->WriteString(elem.GetXMLString().c_str());
m_pXmlWriter->WriteString(elem.GetXMLString());
}
else if (TextMark::FieldBeginMark == code)
{
@ -698,8 +698,8 @@ namespace DocFileFormat
OleObject ole ( chpxObj, m_document->GetStorage(), m_document->bOlderVersion);
oleWriter.WriteNodeBegin (_T( "w:object" ), true);
oleWriter.WriteAttribute( _T( "w:dxaOrig" ), FormatUtils::IntToWideString( ( ole.pictureDesciptor.dxaGoal + ole.pictureDesciptor.dxaOrigin ) ).c_str() );
oleWriter.WriteAttribute( _T( "w:dyaOrig" ), FormatUtils::IntToWideString( ( ole.pictureDesciptor.dyaGoal + ole.pictureDesciptor.dyaOrigin ) ).c_str() );
oleWriter.WriteAttribute( _T( "w:dxaOrig" ), FormatUtils::IntToWideString( ( ole.pictureDesciptor.dxaGoal + ole.pictureDesciptor.dxaOrigin ) ));
oleWriter.WriteAttribute( _T( "w:dyaOrig" ), FormatUtils::IntToWideString( ( ole.pictureDesciptor.dyaGoal + ole.pictureDesciptor.dyaOrigin ) ));
oleWriter.WriteNodeEnd( _T( "" ), true, false );
ole.pictureDesciptor.Convert(&oVmlMapper);
@ -714,8 +714,8 @@ namespace DocFileFormat
PictureDescriptor pic(chpxObj, m_document->DataStream, 0x7fffffff, m_document->bOlderVersion);
oleWriter.WriteNodeBegin (_T( "w:object" ), true);
oleWriter.WriteAttribute( _T( "w:dxaOrig" ), FormatUtils::IntToWideString( ( pic.dxaGoal + pic.dxaOrigin ) ).c_str() );
oleWriter.WriteAttribute( _T( "w:dyaOrig" ), FormatUtils::IntToWideString( ( pic.dyaGoal + pic.dyaOrigin ) ).c_str() );
oleWriter.WriteAttribute( _T( "w:dxaOrig" ), FormatUtils::IntToWideString( ( pic.dxaGoal + pic.dxaOrigin ) ) );
oleWriter.WriteAttribute( _T( "w:dyaOrig" ), FormatUtils::IntToWideString( ( pic.dyaGoal + pic.dyaOrigin ) ) );
oleWriter.WriteNodeEnd( _T( "" ), true, false );
pic.Convert(&oVmlMapper);
@ -751,7 +751,7 @@ namespace DocFileFormat
if (!oVmlMapper.m_isEmbedded && oVmlMapper.m_isEquation)
{
//нельзя в Run писать oMath
//m_pXmlWriter->WriteString(oVmlMapper.m_equationXml.c_str());
//m_pXmlWriter->WriteString(oVmlMapper.m_equationXml);
_writeAfterRun = oVmlMapper.m_equationXml;
}
else
@ -780,7 +780,7 @@ namespace DocFileFormat
XMLTools::XMLElement elem( _T( "w:fldChar" ) );
elem.AppendAttribute( _T( "w:fldCharType" ), _T( "separate" ) );
m_pXmlWriter->WriteString( elem.GetXMLString().c_str() );
m_pXmlWriter->WriteString( elem.GetXMLString() );
}
if (_embeddedObject) _skipRuns += 2;
}
@ -791,7 +791,7 @@ namespace DocFileFormat
XMLTools::XMLElement elem( _T( "w:fldChar" ) );
elem.AppendAttribute( _T( "w:fldCharType" ), _T( "end" ) );
m_pXmlWriter->WriteString( elem.GetXMLString().c_str() );
m_pXmlWriter->WriteString( elem.GetXMLString());
_fldCharCounter--;
}
@ -812,8 +812,8 @@ namespace DocFileFormat
Symbol s = getSymbol( chpx );
m_pXmlWriter->WriteNodeBegin(_T("w:sym"), true);
m_pXmlWriter->WriteAttribute(_T("w:font"), FormatUtils::XmlEncode(s.FontName).c_str());
m_pXmlWriter->WriteAttribute(_T("w:char"), FormatUtils::XmlEncode(s.HexValue).c_str());
m_pXmlWriter->WriteAttribute(_T("w:font"), FormatUtils::XmlEncode(s.FontName));
m_pXmlWriter->WriteAttribute(_T("w:char"), FormatUtils::XmlEncode(s.HexValue));
m_pXmlWriter->WriteNodeEnd(_T(""), true);
}
else if ((TextMark::DrawnObject == code) && fSpec)
@ -903,7 +903,7 @@ namespace DocFileFormat
else if (oVmlMapper.m_isEquation)
{
//нельзя в Run писать oMath
//m_pXmlWriter->WriteString(oVmlMapper.m_equationXml.c_str());
//m_pXmlWriter->WriteString(oVmlMapper.m_equationXml);
_writeAfterRun = oVmlMapper.m_equationXml;
bFormula = true;
}
@ -925,7 +925,7 @@ namespace DocFileFormat
if ((m_document->FootnoteReferenceCharactersPlex != NULL) && (m_document->FootnoteReferenceCharactersPlex->IsCpExists(cp)))
{
m_pXmlWriter->WriteNodeBegin( _T( "w:footnoteReference" ), true );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString(_footnoteNr++ ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString(_footnoteNr++ ) );
m_pXmlWriter->WriteNodeEnd( _T( "" ), true );
}
else if ((m_document->IndividualFootnotesPlex != NULL) && (m_document->IndividualFootnotesPlex->IsCpExists(cp - m_document->FIB->m_RgLw97.ccpText)))
@ -936,7 +936,7 @@ namespace DocFileFormat
else if ((m_document->EndnoteReferenceCharactersPlex != NULL) && (m_document->EndnoteReferenceCharactersPlex->IsCpExists(cp)))
{
m_pXmlWriter->WriteNodeBegin( _T( "w:endnoteReference" ), true );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString(_endnoteNr++ ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString(_endnoteNr++ ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), true );
}
else if ((m_document->IndividualEndnotesPlex != NULL) &&
@ -951,7 +951,7 @@ namespace DocFileFormat
if (typeid(*this) != typeid(CommentsMapping))
{
m_pXmlWriter->WriteNodeBegin( _T( "w:commentReference" ), true );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( _commentNr ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( _commentNr ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), true );
}
else
@ -976,7 +976,7 @@ namespace DocFileFormat
writeTextStart(textType, true/*preserve_space*/);
m_pXmlWriter->WriteString(text.c_str());
m_pXmlWriter->WriteString(text);
writeTextEnd(textType);
}
@ -993,7 +993,7 @@ namespace DocFileFormat
writeTextStart( textType, preserve_space );
m_pXmlWriter->WriteString( text.c_str() );
m_pXmlWriter->WriteString( text);
writeTextEnd( textType );
}
@ -1003,7 +1003,7 @@ namespace DocFileFormat
{
std::wstring str = ( std::wstring( _T( "w:" ) ) + textType );
m_pXmlWriter->WriteNodeBegin( str.c_str(), true );
m_pXmlWriter->WriteNodeBegin( str, true );
if (preserve_space)
{
m_pXmlWriter->WriteAttribute( _T( "xml:space" ), _T( "preserve" ) );
@ -1015,7 +1015,7 @@ namespace DocFileFormat
{
std::wstring str = ( std::wstring( _T( "w:" ) ) + textType );
m_pXmlWriter->WriteNodeEnd( str.c_str() );
m_pXmlWriter->WriteNodeEnd( str );
}
// Searches for bookmarks in the list of characters.
@ -1572,10 +1572,10 @@ namespace DocFileFormat
{
XMLTools::XMLElement bookmarkElem(_T("w:bookmarkStart"));
bookmarkElem.AppendAttribute(_T("w:id"), FormatUtils::IntToWideString(id).c_str());
bookmarkElem.AppendAttribute(_T("w:name"), bookmarkName->c_str());
bookmarkElem.AppendAttribute(_T("w:id"), FormatUtils::IntToWideString(id));
bookmarkElem.AppendAttribute(_T("w:name"), *bookmarkName);
m_pXmlWriter->WriteString(bookmarkElem.GetXMLString().c_str());
m_pXmlWriter->WriteString(bookmarkElem.GetXMLString());
return true;
}
@ -1593,9 +1593,9 @@ namespace DocFileFormat
{
XMLTools::XMLElement bookmarkElem( _T( "w:bookmarkEnd" ) );
bookmarkElem.AppendAttribute( _T( "w:id" ), FormatUtils::IntToWideString( id ).c_str() );
bookmarkElem.AppendAttribute( _T( "w:id" ), FormatUtils::IntToWideString( id ));
m_pXmlWriter->WriteString( bookmarkElem.GetXMLString().c_str() );
m_pXmlWriter->WriteString( bookmarkElem.GetXMLString());
return true;
}

View File

@ -70,7 +70,7 @@ namespace DocFileFormat
while ( cp <= ( m_document->FIB->m_RgLw97.ccpText + m_document->FIB->m_RgLw97.ccpFtn + m_document->FIB->m_RgLw97.ccpHdr + m_document->FIB->m_RgLw97.ccpAtn + m_document->FIB->m_RgLw97.ccpEdn - 2 ) )
{
m_pXmlWriter->WriteNodeBegin( _T( "w:endnote" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( id ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( id ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
while ( ( cp - m_document->FIB->m_RgLw97.ccpText - m_document->FIB->m_RgLw97.ccpFtn - m_document->FIB->m_RgLw97.ccpHdr - m_document->FIB->m_RgLw97.ccpAtn ) < (*m_document->IndividualEndnotesPlex)[id + 1] )

View File

@ -59,34 +59,39 @@ namespace DocFileFormat
m_pXmlWriter->WriteAttribute( _T( "xmlns:w" ), OpenXmlNamespaces::WordprocessingML );
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
int sz_fonts = table->Data.size();
int sz_fonts = table->Data.size();
int users_fonts = 0;
for ( std::vector<ByteStructure*>::iterator iter = table->Data.begin(); iter != table->Data.end(); iter++ )
{
FontFamilyName* font = dynamic_cast<FontFamilyName*>( *iter );
m_pXmlWriter->WriteNodeBegin( _T( "w:font" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:name" ), FormatUtils::XmlEncode(font->xszFtn, true).c_str());
std::wstring name_ = FormatUtils::XmlEncode(font->xszFtn, true);
if (name_.empty())
name_ = L"UserFont_" + std::to_wstring(++users_fonts);
m_pXmlWriter->WriteAttribute( _T( "w:name" ), name_);
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
//alternative name
if ( ( font->xszAlt != std::wstring( _T( "" ) ) ) && ( font->xszAlt.length() > 0 ) )
{
m_pXmlWriter->WriteNodeBegin( _T( "w:altName" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(font->xszAlt, true).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(font->xszAlt, true));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:altName" ) );
}
//charset
m_pXmlWriter->WriteNodeBegin( _T("w:charset" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( font->chs, _T( "%02x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( font->chs, _T( "%02x" ) ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:charset" ) );
//font family
m_pXmlWriter->WriteNodeBegin( _T("w:family"), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString( font->ff, &FontFamily[0][0], 6, 11 ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString( font->ff, &FontFamily[0][0], 6, 11 ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:family" ) );
@ -100,13 +105,13 @@ namespace DocFileFormat
wstr += FormatUtils::IntToFormattedWideString( font->panose[i], _T( "%02x" ) );
}
m_pXmlWriter->WriteAttribute( _T( "w:val" ), wstr.c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), wstr);
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:panose1" ) );
//pitch
m_pXmlWriter->WriteNodeBegin( _T("w:pitch"), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString( font->prq, &FontPitch[0][0], 3, 9 ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString( font->prq, &FontPitch[0][0], 3, 9 ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:pitch" ) );
@ -121,12 +126,12 @@ namespace DocFileFormat
//font signature
m_pXmlWriter->WriteNodeBegin( _T("w:sig"), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:usb0" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield0, _T( "%08x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:usb1" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield1, _T( "%08x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:usb2" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield2, _T( "%08x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:usb3" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield3, _T( "%08x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:csb0" ), FormatUtils::IntToFormattedWideString( font->fs.CodePageBitfield0, _T( "%08x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:csb1" ), FormatUtils::IntToFormattedWideString( font->fs.CodePageBitfield1, _T( "%08x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:usb0" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield0, _T( "%08x" ) ));
m_pXmlWriter->WriteAttribute( _T( "w:usb1" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield1, _T( "%08x" ) ));
m_pXmlWriter->WriteAttribute( _T( "w:usb2" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield2, _T( "%08x" ) ));
m_pXmlWriter->WriteAttribute( _T( "w:usb3" ), FormatUtils::IntToFormattedWideString( font->fs.UnicodeSubsetBitfield3, _T( "%08x" ) ));
m_pXmlWriter->WriteAttribute( _T( "w:csb0" ), FormatUtils::IntToFormattedWideString( font->fs.CodePageBitfield0, _T( "%08x" ) ));
m_pXmlWriter->WriteAttribute( _T( "w:csb1" ), FormatUtils::IntToFormattedWideString( font->fs.CodePageBitfield1, _T( "%08x" ) ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:sig" ) );

View File

@ -77,9 +77,14 @@ namespace DocFileFormat
{
//this PAPX is for a table
//cp = writeTable( cp, tai.iTap );
int start_table_cp = cp;
Table table( this, cp, ( ( tai.iTap > 0 ) ? ( 1 ) : ( 0 ) ) );
table.Convert( this );
cp = table.GetCPEnd();
if (cp == start_table_cp)
cp++;
}
else
{

View File

@ -70,7 +70,7 @@ namespace DocFileFormat
while ( cp <= ( m_document->FIB->m_RgLw97.ccpText + m_document->FIB->m_RgLw97.ccpFtn - 2 ) )
{
m_pXmlWriter->WriteNodeBegin( _T( "w:footnote" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( id ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:id" ), FormatUtils::IntToWideString( id ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
while ( ( cp - m_document->FIB->m_RgLw97.ccpText ) < (*m_document->IndividualFootnotesPlex)[id + 1] )

View File

@ -65,25 +65,25 @@ namespace DocFileFormat
{
case Default:
{
att = new XMLTools::XMLAttribute( L"w:val", langcode.c_str() );
att = new XMLTools::XMLAttribute( L"w:val", langcode);
}
break;
case EastAsian:
{
att = new XMLTools::XMLAttribute( L"w:eastAsia", langcode.c_str() );
att = new XMLTools::XMLAttribute( L"w:eastAsia", langcode);
}
break;
case Complex:
{
att = new XMLTools::XMLAttribute( L"w:bidi", langcode.c_str() );
att = new XMLTools::XMLAttribute( L"w:bidi", langcode);
}
break;
default:
{
att = new XMLTools::XMLAttribute( L"w:val", langcode.c_str() );
att = new XMLTools::XMLAttribute( L"w:val", langcode);
}
break;
}
@ -91,7 +91,7 @@ namespace DocFileFormat
if (m_pXmlWriter)
{
// !!!TODO!!!
m_pXmlWriter->WriteString( att->GetXMLString().c_str() );
m_pXmlWriter->WriteString( att->GetXMLString());
}
else if ( _parent != NULL )
{

View File

@ -83,12 +83,12 @@ namespace DocFileFormat
{
//start abstractNum
m_pXmlWriter->WriteNodeBegin( _T( "w:abstractNum" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:abstractNumId" ), FormatUtils::IntToWideString( i ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:abstractNumId" ), FormatUtils::IntToWideString( i ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
//nsid
m_pXmlWriter->WriteNodeBegin( _T( "w:nsid" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( (*iter)->lsid, _T( "%08x" ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( (*iter)->lsid, _T( "%08x" ) ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
//multiLevelType
@ -111,7 +111,7 @@ namespace DocFileFormat
//template
m_pXmlWriter->WriteNodeBegin( _T( "w:tmpl" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( (*iter)->tplc, _T( "%08x" ) ).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( (*iter)->tplc, _T( "%08x" ) ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// writes the levels
@ -131,12 +131,12 @@ namespace DocFileFormat
{
//start abstractNum
m_pXmlWriter->WriteNodeBegin( _T( "w:abstractNum" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:abstractNumId" ), FormatUtils::IntToWideString( i ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:abstractNumId" ), FormatUtils::IntToWideString( i ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
////nsid
//m_pXmlWriter->WriteNodeBegin( _T( "w:nsid" ), TRUE );
//m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( (*iter)->lsid, _T( "%08x" ) ).c_str() );
//m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToFormattedWideString( (*iter)->lsid, _T( "%08x" ) ));
//m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
//multiLevelType
@ -160,26 +160,26 @@ namespace DocFileFormat
//start num
m_pXmlWriter->WriteNodeBegin( _T( "w:num" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:numId" ), FormatUtils::IntToWideString(i + 1).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:numId" ), FormatUtils::IntToWideString(i + 1));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
int index = FindIndexbyId( rglst->listData, lfo->lsid );
m_pXmlWriter->WriteNodeBegin( _T( "w:abstractNumId" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString( index ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString( index ) );
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
for (std::vector<ListFormatOverrideLevel*>::const_iterator iter = lfo->rgLfoLvl.begin(); iter != lfo->rgLfoLvl.end(); ++iter)
{
m_pXmlWriter->WriteNodeBegin( _T( "w:lvlOverride" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:ilvl" ), FormatUtils::IntToWideString( (*iter)->ilvl ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:ilvl" ), FormatUtils::IntToWideString( (*iter)->ilvl ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
if ( ( (*iter)->fStartAt ) && ( !(*iter)->fFormatting ) )
{
m_pXmlWriter->WriteNodeBegin( _T( "w:startOverride" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString( (*iter)->iStartAt ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString( (*iter)->iStartAt ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
}
@ -197,12 +197,12 @@ namespace DocFileFormat
for (std::list<NumberingDescriptor>::iterator iter = rglst->listNumbering.begin(); iter != rglst->listNumbering.end(); ++iter, ++i)
{
m_pXmlWriter->WriteNodeBegin( _T( "w:num" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:numId" ), FormatUtils::IntToWideString(i+1).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:numId" ), FormatUtils::IntToWideString(i+1));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeBegin( _T( "w:abstractNumId" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString( i ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString( i ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
m_pXmlWriter->WriteNodeEnd(_T( "w:num"));
@ -255,8 +255,10 @@ namespace DocFileFormat
if (!FormatUtils::IsControlSymbol(xchBullet))
{
ret.push_back(lvl->xst[0]);
ret.push_back(L'\0');
ret.push_back(lvl->xst[0]);//??? xchBullet
}
else
{
}
}
}
@ -487,20 +489,20 @@ namespace DocFileFormat
//--------------------------------------------------------------------------------
m_pXmlWriter->WriteNodeBegin( _T( "w:lvl" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:ilvl" ), FormatUtils::IntToWideString(level).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:ilvl" ), FormatUtils::IntToWideString(level));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeBegin( _T( "w:start" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString(lvl.iStartAt).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString(lvl.iStartAt));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
m_pXmlWriter->WriteNodeBegin( _T( "w:numFmt" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), GetNumberFormatWideString(lvl.nfc, true).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), GetNumberFormatWideString(lvl.nfc, true));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
//// suffix
// m_pXmlWriter->WriteNodeBegin( _T( "w:suff" ), TRUE );
// m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl.ixchFollow, &FollowingCharMap[0][0], 3, 8).c_str());
// m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl.ixchFollow, &FollowingCharMap[0][0], 3, 8));
// m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// Number level text
@ -516,13 +518,13 @@ namespace DocFileFormat
if (!lvlText.empty())
{
m_pXmlWriter->WriteNodeBegin(_T("w:lvlText"), TRUE);
m_pXmlWriter->WriteAttribute(_T("w:val"), lvlText.c_str());
m_pXmlWriter->WriteAttribute(_T("w:val"), lvlText);
m_pXmlWriter->WriteNodeEnd(_T( ""), TRUE);
}
// jc
m_pXmlWriter->WriteNodeBegin( _T( "w:lvlJc" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl.jc, &LevelJustificationMap[0][0], 3, 7).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl.jc, &LevelJustificationMap[0][0], 3, 7));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// pPr
m_pXmlWriter->WriteNodeBegin( _T( "w:pPr" ), FALSE );
@ -535,8 +537,8 @@ namespace DocFileFormat
{
m_pXmlWriter->WriteNodeBegin( _T( "w:rFonts" ), TRUE );
// w:hint="default"
m_pXmlWriter->WriteAttribute(_T("w:hAnsi"), fontFamily.c_str());
m_pXmlWriter->WriteAttribute(_T("w:ascii"), fontFamily.c_str());
m_pXmlWriter->WriteAttribute(_T("w:hAnsi"), fontFamily);
m_pXmlWriter->WriteAttribute(_T("w:ascii"), fontFamily);
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
}
m_pXmlWriter->WriteNodeEnd(_T("w:rPr"));
@ -557,25 +559,25 @@ namespace DocFileFormat
// Проверяем шрифт
m_pXmlWriter->WriteNodeBegin( _T( "w:lvl" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:ilvl" ), FormatUtils::IntToWideString(level).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:ilvl" ), FormatUtils::IntToWideString(level));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
// starts at
m_pXmlWriter->WriteNodeBegin( _T( "w:start" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString(lvl->iStartAt).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::IntToWideString(lvl->iStartAt));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// number format
m_pXmlWriter->WriteNodeBegin( _T( "w:numFmt" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), GetNumberFormatWideString(lvl->nfc).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), GetNumberFormatWideString(lvl->nfc));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// suffix
m_pXmlWriter->WriteNodeBegin( _T( "w:suff" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl->ixchFollow, &FollowingCharMap[0][0], 3, 8).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl->ixchFollow, &FollowingCharMap[0][0], 3, 8));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// style
@ -585,14 +587,14 @@ namespace DocFileFormat
if (styleIndex != ListData::ISTD_NIL)
{
m_pXmlWriter->WriteNodeBegin( _T( "w:pStyle" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(StyleSheetMapping::MakeStyleId(m_document->Styles->Styles->at(styleIndex))).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(StyleSheetMapping::MakeStyleId(m_document->Styles->Styles->at(styleIndex))));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
}
// Number level text
m_pXmlWriter->WriteNodeBegin(_T("w:lvlText"), TRUE);
m_pXmlWriter->WriteAttribute(_T("w:val"), GetLvlText(lvl, cpMapping.CheckIsSymbolFont()).c_str());
m_pXmlWriter->WriteAttribute(_T("w:val"), GetLvlText(lvl, cpMapping.CheckIsSymbolFont()));
m_pXmlWriter->WriteNodeEnd(_T( ""), TRUE);
WriteLevelPictureBullet(lvl->grpprlChpx);
@ -606,7 +608,7 @@ namespace DocFileFormat
}
// jc
m_pXmlWriter->WriteNodeBegin( _T( "w:lvlJc" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl->jc, &LevelJustificationMap[0][0], 3, 7).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::MapValueToWideString(lvl->jc, &LevelJustificationMap[0][0], 3, 7));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// pPr
bool isBidi = false;
@ -638,7 +640,7 @@ namespace DocFileFormat
if ((pict.mfp.mm > 98) && (pict.shapeContainer != NULL))
{
m_pXmlWriter->WriteNodeBegin( _T( "w:numPicBullet" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:numPicBulletId" ), FormatUtils::IntToWideString( iter->first ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:numPicBulletId" ), FormatUtils::IntToWideString( iter->first ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeBegin( _T( "w:pict" ) );
@ -670,7 +672,7 @@ namespace DocFileFormat
{
if (grpprlChpx)
{
unsigned int cp = 0;
unsigned int index = 0;
bool isPictureBullet = false;
for (std::list<SinglePropertyModifier>::const_iterator iter = grpprlChpx->grpprl->begin(); iter != grpprlChpx->grpprl->end(); ++iter)
@ -679,7 +681,7 @@ namespace DocFileFormat
{
case sprmCPbiIBullet:
{
cp = FormatUtils::BytesToUInt32(iter->Arguments, 0, iter->argumentsSize);
index = FormatUtils::BytesToUInt32(iter->Arguments, 0, iter->argumentsSize);
}break;
case sprmCPbiGrf:
@ -692,7 +694,7 @@ namespace DocFileFormat
if (isPictureBullet)
{
m_pXmlWriter->WriteNodeBegin(_T("w:lvlPicBulletId"), TRUE);
m_pXmlWriter->WriteAttribute(_T("w:val"), FormatUtils::IntToWideString(cp).c_str());
m_pXmlWriter->WriteAttribute(_T("w:val"), FormatUtils::IntToWideString(index));
m_pXmlWriter->WriteNodeEnd(_T(""), TRUE);
}
}

View File

@ -71,9 +71,9 @@ namespace DocFileFormat
{
int relID = m_context->_docx->RegisterExternalOLEObject(_caller, ole->ClipboardFormat, ole->Link);
m_pXmlWriter->WriteAttribute( _T( "r:id" ), ( std::wstring( _T( "rId" ) ) + FormatUtils::IntToWideString( relID ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "r:id" ), ( std::wstring( _T( "rId" ) ) + FormatUtils::IntToWideString( relID ) ));
m_pXmlWriter->WriteAttribute( _T( "Type" ), _T( "Link" ) );
m_pXmlWriter->WriteAttribute( _T( "UpdateMode" ), ole->UpdateMode.c_str() );
m_pXmlWriter->WriteAttribute( _T( "UpdateMode" ), ole->UpdateMode);
}
else
{
@ -84,16 +84,16 @@ namespace DocFileFormat
else
relID = m_context->_docx->RegisterOLEObject(_caller, ole->ClipboardFormat);
m_pXmlWriter->WriteAttribute( _T( "r:id" ), ( std::wstring( _T( "rId" ) ) + FormatUtils::IntToWideString( relID ) ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "r:id" ), ( std::wstring( _T( "rId" ) ) + FormatUtils::IntToWideString( relID ) ));
m_pXmlWriter->WriteAttribute( _T( "Type" ), _T( "Embed" ) );
copyEmbeddedObject( ole );
}
m_pXmlWriter->WriteAttribute( _T( "ProgID" ), ole->Program.c_str() );
m_pXmlWriter->WriteAttribute( _T( "ShapeID" ), _shapeId.c_str() );
m_pXmlWriter->WriteAttribute( _T( "ProgID" ), ole->Program);
m_pXmlWriter->WriteAttribute( _T( "ShapeID" ), _shapeId);
m_pXmlWriter->WriteAttribute( _T( "DrawAspect" ), _T( "Content" ) );
m_pXmlWriter->WriteAttribute( _T( "ObjectID" ), ole->ObjectId.c_str() );
m_pXmlWriter->WriteAttribute( _T( "ObjectID" ), ole->ObjectId);
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "o:OLEObject" ) );

View File

@ -224,7 +224,7 @@ namespace DocFileFormat
{
HeaderRelationshipsFiles.push_back( RelationshipsFile( ( std::wstring( _T( "word/_rels/header" ) ) + FormatUtils::IntToWideString( ++_headerCounter ) + std::wstring( _T( ".xml.rels" ) ) ) ) );
return AddPart( _T( "word" ), ( std::wstring( _T( "header" ) ) + FormatUtils::IntToWideString( _headerCounter ) + std::wstring( _T( ".xml" ) ) ).c_str(), WordprocessingMLContentTypes::Header, OpenXmlRelationshipTypes::Header );
return AddPart( _T( "word" ), ( std::wstring( _T( "header" ) ) + FormatUtils::IntToWideString( _headerCounter ) + std::wstring( _T( ".xml" ) ) ), WordprocessingMLContentTypes::Header, OpenXmlRelationshipTypes::Header );
}
int OpenXmlPackage::AddHeaderPart( const std::wstring& fileName, const std::wstring& relationshipType, const std::wstring& targetMode )
@ -245,7 +245,7 @@ namespace DocFileFormat
{
FooterRelationshipsFiles.push_back( RelationshipsFile( ( std::wstring( _T( "word/_rels/footer" ) ) + FormatUtils::IntToWideString( ++_footerCounter ) + std::wstring( _T( ".xml.rels" ) ) ) ) );
return AddPart( _T( "word" ), ( std::wstring( _T( "footer" ) ) + FormatUtils::IntToWideString( _footerCounter ) + std::wstring( _T( ".xml" ) ) ).c_str(), WordprocessingMLContentTypes::Footer, OpenXmlRelationshipTypes::Footer );
return AddPart( _T( "word" ), ( std::wstring( _T( "footer" ) ) + FormatUtils::IntToWideString( _footerCounter ) + std::wstring( _T( ".xml" ) ) ), WordprocessingMLContentTypes::Footer, OpenXmlRelationshipTypes::Footer );
}
int OpenXmlPackage::AddFooterPart( const std::wstring& fileName, const std::wstring& relationshipType, const std::wstring& targetMode )
@ -322,13 +322,13 @@ namespace DocFileFormat
for ( std::list<Relationship>::const_iterator iter = relationshipsFile.Relationships.begin(); iter != relationshipsFile.Relationships.end(); iter++ )
{
writer.WriteNodeBegin( _T( "Relationship" ), TRUE );
writer.WriteAttribute( _T( "Id" ), iter->Id.c_str() );
writer.WriteAttribute( _T( "Type" ), iter->Type.c_str() );
writer.WriteAttribute( _T( "Target" ), iter->Target.c_str() );
writer.WriteAttribute( _T( "Id" ), iter->Id );
writer.WriteAttribute( _T( "Type" ), iter->Type );
writer.WriteAttribute( _T( "Target" ), iter->Target );
if ( !iter->TargetMode.empty() )
{
writer.WriteAttribute( _T( "TargetMode" ), iter->TargetMode.c_str() );
writer.WriteAttribute( _T( "TargetMode" ), iter->TargetMode );
}
writer.WriteNodeEnd( _T( "" ), TRUE );
@ -358,16 +358,16 @@ namespace DocFileFormat
for ( std::map<std::wstring, std::wstring>::iterator iter = DocumentContentTypesFile._defaultTypes.begin(); iter != DocumentContentTypesFile._defaultTypes.end(); iter++ )
{
writer.WriteNodeBegin( _T( "Default" ), TRUE );
writer.WriteAttribute( _T( "Extension" ), iter->first.c_str() );
writer.WriteAttribute( _T( "ContentType" ), DocumentContentTypesFile._defaultTypes[iter->first].c_str() );
writer.WriteAttribute( _T( "Extension" ), iter->first );
writer.WriteAttribute( _T( "ContentType" ), DocumentContentTypesFile._defaultTypes[iter->first] );
writer.WriteNodeEnd( _T( "" ), TRUE );
}
for ( std::map<std::wstring, std::wstring>::iterator iter = DocumentContentTypesFile._partOverrides.begin(); iter != DocumentContentTypesFile._partOverrides.end(); iter++ )
{
writer.WriteNodeBegin( _T( "Override" ), TRUE );
writer.WriteAttribute( _T( "PartName" ), iter->first.c_str() );
writer.WriteAttribute( _T( "ContentType" ), DocumentContentTypesFile._partOverrides[iter->first].c_str() );
writer.WriteAttribute( _T( "PartName" ), iter->first );
writer.WriteAttribute( _T( "ContentType" ), DocumentContentTypesFile._partOverrides[iter->first] );
writer.WriteNodeEnd( _T( "" ), TRUE );
}

View File

@ -96,7 +96,7 @@ namespace DocFileFormat
if ( papx->istd < m_document->Styles->Styles->size() )
{
styleId.SetValue( FormatUtils::XmlEncode(StyleSheetMapping::MakeStyleId( m_document->Styles->Styles->at( papx->istd ) )).c_str() );
styleId.SetValue( FormatUtils::XmlEncode(StyleSheetMapping::MakeStyleId( m_document->Styles->Styles->at( papx->istd ) )) );
}
pStyle.AppendAttribute( styleId );
@ -139,7 +139,7 @@ namespace DocFileFormat
{
case sprmPIpgp:
{
appendValueElement(_pPr, _T( "divId" ), FormatUtils::IntToWideString( FormatUtils::BytesToUInt32(iter->Arguments, 0, iter->argumentsSize)).c_str(), true);
appendValueElement(_pPr, _T( "divId" ), FormatUtils::IntToWideString( FormatUtils::BytesToUInt32(iter->Arguments, 0, iter->argumentsSize)), true);
}break;
case sprmPFAutoSpaceDE:
@ -242,7 +242,7 @@ namespace DocFileFormat
flValue *= -1;
}
appendValueAttribute( &ind, flName.c_str(), flValue );
appendValueAttribute( &ind, flName, flValue );
}break;
case sprmPDxcLeft1:
@ -283,7 +283,7 @@ namespace DocFileFormat
{
LineSpacingDescriptor lspd( iter->Arguments, iter->argumentsSize );
XMLTools::XMLAttribute line( _T( "w:line" ), FormatUtils::IntToWideString( abs( lspd.dyaLine ) ).c_str() );
XMLTools::XMLAttribute line( _T( "w:line" ), FormatUtils::IntToWideString( abs( lspd.dyaLine ) ));
spacing.AppendAttribute( line );
XMLTools::XMLAttribute lineRule( _T( "w:lineRule" ), _T( "auto" ) );
@ -314,7 +314,7 @@ namespace DocFileFormat
jc = new XMLTools::XMLElement( L"w:jc" );
if ( jc )
{
XMLTools::XMLAttribute jcVal( L"w:val", FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::JustificationCode[0][0], 10, 15 ).c_str() );
XMLTools::XMLAttribute jcVal( L"w:val", FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::JustificationCode[0][0], 10, 15 ));
jc->AppendAttribute( jcVal );
}
}break;
@ -438,10 +438,13 @@ namespace DocFileFormat
}break;
case sprmOldPNLvlAnm:
{ short level = FormatUtils::BytesToUChar( iter->Arguments, 0, iter->argumentsSize) - 1;
{
short level = FormatUtils::BytesToUChar( iter->Arguments, 0, iter->argumentsSize) - 1;
if (level > 0 && level < 10)
appendValueElement( _pPr, _T( "outlineLvl" ), level, false );
}break; case sprmOldPFNoLineNumb:
}break;
case sprmOldPFNoLineNumb:
{
}break;
@ -498,7 +501,7 @@ namespace DocFileFormat
tab.AppendAttribute( tabsVal );
//position
XMLTools::XMLAttribute tabsPos( _T( "w:pos" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, pos, iter->argumentsSize ) ).c_str() );
XMLTools::XMLAttribute tabsPos( _T( "w:pos" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, pos, iter->argumentsSize ) ) );
tab.AppendAttribute( tabsPos );
tabs.AppendChild( tab );
@ -515,9 +518,9 @@ namespace DocFileFormat
}
//read the added tabs
unsigned char itbdAddMax = iter->Arguments[pos];
unsigned char itbdAddMax = pos < iter->argumentsSize ? iter->Arguments[pos] : 0;
pos++;
if (itbdAddMax > 0) pos++;
for ( int i = 0; i < itbdAddMax; i++ )
{
@ -526,15 +529,15 @@ namespace DocFileFormat
XMLTools::XMLElement tab( _T( "w:tab" ) );
//justification
XMLTools::XMLAttribute tabsVal( _T( "w:val" ), FormatUtils::MapValueToWideString( tbd.jc, &Global::TabStop[0][0], 7, 8 ).c_str() );
XMLTools::XMLAttribute tabsVal( _T( "w:val" ), FormatUtils::MapValueToWideString( tbd.jc, &Global::TabStop[0][0], 7, 8 ) );
tab.AppendAttribute( tabsVal );
//tab leader type
XMLTools::XMLAttribute leader( _T( "w:leader" ), FormatUtils::MapValueToWideString( tbd.tlc, &Global::TabLeader[0][0], 8, 11 ).c_str() );
XMLTools::XMLAttribute leader( _T( "w:leader" ), FormatUtils::MapValueToWideString( tbd.tlc, &Global::TabLeader[0][0], 8, 11 ) );
tab.AppendAttribute( leader );
//position
XMLTools::XMLAttribute tabsPos( _T( "w:pos" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, ( pos + (i * 2) ), iter->argumentsSize ) ).c_str() );
XMLTools::XMLAttribute tabsPos( _T( "w:pos" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, ( pos + (i * 2) ), iter->argumentsSize ) ) );
tab.AppendAttribute( tabsPos );
tabs.AppendChild( tab );
@ -551,14 +554,14 @@ namespace DocFileFormat
//position code
unsigned char flag = iter->Arguments[0];
appendValueAttribute (_framePr, _T( "w:hAnchor" ), FormatUtils::MapValueToWideString( ( ( flag & 0xC0 ) >> 6 ), &Global::HorizontalPositionCode[0][0], 4, 7 ).c_str() );
appendValueAttribute (_framePr, _T( "w:vAnchor" ), FormatUtils::MapValueToWideString( ( ( flag & 0x30 ) >> 4 ), &Global::VerticalPositionCode[0][0], 4, 7 ).c_str() );
appendValueAttribute (_framePr, _T( "w:hAnchor" ), FormatUtils::MapValueToWideString( ( ( flag & 0xC0 ) >> 6 ), &Global::HorizontalPositionCode[0][0], 4, 7 ) );
appendValueAttribute (_framePr, _T( "w:vAnchor" ), FormatUtils::MapValueToWideString( ( ( flag & 0x30 ) >> 4 ), &Global::VerticalPositionCode[0][0], 4, 7 ) );
}
break;
case sprmOldPWr:
case sprmPWr:
appendValueAttribute( _framePr, _T( "w:wrap" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::TextFrameWrapping[0][0], 6, 10 ).c_str() );
appendValueAttribute( _framePr, _T( "w:wrap" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::TextFrameWrapping[0][0], 6, 10 ) );
break;
case sprmOldPDxaAbs:
@ -595,7 +598,7 @@ namespace DocFileFormat
{
short pDcs = FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize );
appendValueAttribute( _framePr, _T( "w:dropCap" ), FormatUtils::MapValueToWideString( ( pDcs & 0x07 ), &Global::TextFrameDropCapLocation[0][0], 3, 7 ).c_str() );
appendValueAttribute( _framePr, _T( "w:dropCap" ), FormatUtils::MapValueToWideString( ( pDcs & 0x07 ), &Global::TextFrameDropCapLocation[0][0], 3, 7 ) );
appendValueAttribute( _framePr, _T( "w:lines" ), (unsigned char)( ( pDcs & 0xF8 ) >> 3 ) );
}
@ -678,7 +681,7 @@ namespace DocFileFormat
//write Properties
if ( ( _pPr->GetChildCount() > 0 ) || ( _pPr->GetAttributeCount() > 0 ) )
{
m_pXmlWriter->WriteString( _pPr->GetXMLString().c_str() );
m_pXmlWriter->WriteString( _pPr->GetXMLString() );
}
}
}

View File

@ -244,16 +244,16 @@ namespace DocFileFormat
/*========================================================================================================*/
void PropertiesMapping::appendFlagAttribute( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const wchar_t* attributeName )
void PropertiesMapping::appendFlagAttribute( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const std::wstring & attributeName )
{
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( sprm.Arguments[0] ).c_str());
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( sprm.Arguments[0] ));
node->AppendAttribute( att );
}
/*========================================================================================================*/
void PropertiesMapping::appendFlagElement( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const wchar_t* elementName, bool unique )
void PropertiesMapping::appendFlagElement( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const std::wstring & elementName, bool unique )
{
XMLTools::XMLElement ele( L"w", elementName );
@ -274,7 +274,7 @@ namespace DocFileFormat
/*========================================================================================================*/
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, const wchar_t* attributeValue )
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const std::wstring & attributeName, const std::wstring & attributeValue )
{
XMLTools::XMLAttribute att( attributeName, attributeValue );
@ -283,47 +283,47 @@ namespace DocFileFormat
/*========================================================================================================*/
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, int attributeValue )
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const std::wstring & attributeName, int attributeValue )
{
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ).c_str());
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ));
node->AppendAttribute( att );
}
/*========================================================================================================*/
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, short attributeValue )
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const std::wstring & attributeName, short attributeValue )
{
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ).c_str());
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ));
node->AppendAttribute( att );
}
/*========================================================================================================*/
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, unsigned short attributeValue )
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const std::wstring & attributeName, unsigned short attributeValue )
{
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ).c_str());
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ));
node->AppendAttribute( att );
}
/*========================================================================================================*/
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, unsigned char attributeValue )
void PropertiesMapping::appendValueAttribute( XMLTools::XMLElement* node, const std::wstring & attributeName, unsigned char attributeValue )
{
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ).c_str());
XMLTools::XMLAttribute att( attributeName, FormatUtils::IntToWideString( attributeValue ));
node->AppendAttribute( att );
}
/*========================================================================================================*/
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, const wchar_t* elementValue, bool unique )
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const std::wstring & elementName, const std::wstring & elementValue, bool unique )
{
XMLTools::XMLElement* ele = new XMLTools::XMLElement( L"w" , elementName );
if( ( elementValue != NULL ) && ( wcscmp( elementValue, L"" ) != 0 ))
if(!elementValue.empty())
{
XMLTools::XMLAttribute* val = new XMLTools::XMLAttribute( L"w:val" );
@ -347,7 +347,7 @@ namespace DocFileFormat
/*========================================================================================================*/
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, short elementValue, bool unique )
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const std::wstring & elementName, short elementValue, bool unique )
{
XMLTools::XMLElement* ele = new XMLTools::XMLElement( L"w" , elementName );
@ -355,7 +355,7 @@ namespace DocFileFormat
if ( strValue != std::wstring( L""))
{
XMLTools::XMLAttribute* val = new XMLTools::XMLAttribute( L"w:val", strValue.c_str());
XMLTools::XMLAttribute* val = new XMLTools::XMLAttribute( L"w:val", strValue);
ele->AppendAttribute( *val );
RELEASEOBJECT( val );
}
@ -373,7 +373,7 @@ namespace DocFileFormat
/*========================================================================================================*/
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, unsigned short elementValue, bool unique )
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const std::wstring & elementName, unsigned short elementValue, bool unique )
{
XMLTools::XMLElement* ele = new XMLTools::XMLElement( L"w" , elementName );
@ -381,7 +381,7 @@ namespace DocFileFormat
if ( strValue != std::wstring( L"" ))
{
XMLTools::XMLAttribute* val = new XMLTools::XMLAttribute( L"w:val", strValue.c_str());
XMLTools::XMLAttribute* val = new XMLTools::XMLAttribute( L"w:val", strValue);
ele->AppendAttribute( *val );
RELEASEOBJECT( val );
}
@ -399,7 +399,7 @@ namespace DocFileFormat
/*========================================================================================================*/
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, unsigned char elementValue, bool unique )
void PropertiesMapping::appendValueElement( XMLTools::XMLElement* node, const std::wstring & elementName, unsigned char elementValue, bool unique )
{
XMLTools::XMLElement* ele = new XMLTools::XMLElement( L"w", elementName );
@ -407,7 +407,7 @@ namespace DocFileFormat
if ( strValue != std::wstring( L"" ))
{
XMLTools::XMLAttribute* val = new XMLTools::XMLAttribute( L"w:val", strValue.c_str());
XMLTools::XMLAttribute* val = new XMLTools::XMLAttribute( L"w:val", strValue);
ele->AppendAttribute( *val );
RELEASEOBJECT( val );
}
@ -436,17 +436,17 @@ namespace DocFileFormat
}
else
{
val.SetValue( getBorderType( brc->brcType ).c_str());
val.SetValue( getBorderType( brc->brcType ));
border->AppendAttribute( val );
XMLTools::XMLAttribute color( L"w:color" );
color.SetValue( RGBColor( brc->cv, RedFirst ).SixDigitHexCode.c_str());
color.SetValue( RGBColor( brc->cv, RedFirst ).SixDigitHexCode);
border->AppendAttribute( color );
XMLTools::XMLAttribute space( L"w:space" , FormatUtils::IntToWideString( brc->dptSpace ).c_str());
XMLTools::XMLAttribute space( L"w:space" , FormatUtils::IntToWideString( brc->dptSpace ));
border->AppendAttribute( space );
XMLTools::XMLAttribute sz( L"w:sz", FormatUtils::IntToWideString( brc->dptLineWidth ).c_str());
XMLTools::XMLAttribute sz( L"w:sz", FormatUtils::IntToWideString( brc->dptLineWidth ));
border->AppendAttribute( sz );
if ( brc->fShadow )
@ -477,12 +477,12 @@ namespace DocFileFormat
}
else
{
fill.SetValue( RGBColor( (int)desc.cvBack, RedLast ).SixDigitHexCode.c_str());
fill.SetValue( RGBColor( (int)desc.cvBack, RedLast ).SixDigitHexCode);
}
}
else
{
fill.SetValue( FormatUtils::MapValueToWideString( desc.icoBack, &Global::ColorIdentifier[0][0], 17, 12 ).c_str());
fill.SetValue( FormatUtils::MapValueToWideString( desc.icoBack, &Global::ColorIdentifier[0][0], 17, 12 ));
}
shd.AppendAttribute( fill );
@ -498,19 +498,19 @@ namespace DocFileFormat
}
else
{
color.SetValue( RGBColor( (int)desc.cvFore, RedLast ).SixDigitHexCode.c_str());
color.SetValue( RGBColor( (int)desc.cvFore, RedLast ).SixDigitHexCode);
}
}
else
{
color.SetValue( FormatUtils::MapValueToWideString( desc.icoFore, &Global::ColorIdentifier[0][0], 17, 12 ).c_str());
color.SetValue( FormatUtils::MapValueToWideString( desc.icoFore, &Global::ColorIdentifier[0][0], 17, 12 ));
}
shd.AppendAttribute( color );
//pattern
XMLTools::XMLAttribute val( L"w:val" );
val.SetValue( getShadingPattern( desc ).c_str());
val.SetValue( getShadingPattern( desc ));
shd.AppendAttribute( val );
parent->RemoveChildByName( L"w:shd" );
@ -759,7 +759,7 @@ namespace DocFileFormat
/*========================================================================================================*/
void PropertiesMapping::appendDxaElement( XMLTools::XMLElement* node, const wchar_t* elementName, const wchar_t* elementValue, bool unique )
void PropertiesMapping::appendDxaElement( XMLTools::XMLElement* node, const std::wstring & elementName, const std::wstring & elementValue, bool unique )
{
XMLTools::XMLElement ele( L"w", elementName );
XMLTools::XMLAttribute val( L"w:w", elementValue );

View File

@ -51,24 +51,26 @@ namespace DocFileFormat
protected:
static void init();
void appendFlagAttribute( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const wchar_t* attributeName );
virtual void appendFlagElement( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const wchar_t* elementName, bool unique );
void appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, const wchar_t* attributeValue );
void appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, int attributeValue );
void appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, short attributeValue );
void appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, unsigned short attributeValue );
void appendValueAttribute( XMLTools::XMLElement* node, const wchar_t* attributeName, unsigned char attributeValue );
void appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, const wchar_t* elementValue, bool unique );
void appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, short elementValue, bool unique );
void appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, unsigned short elementValue, bool unique );
void appendValueElement( XMLTools::XMLElement* node, const wchar_t* elementName, unsigned char elementValue, bool unique );
void appendBorderAttributes( BorderCode* brc, XMLTools::XMLElement* border );
void appendShading( XMLTools::XMLElement* parent, const ShadingDescriptor& desc );
std::wstring getBorderType( unsigned char type );
std::wstring getShadingPattern( const ShadingDescriptor& shd );
void appendDxaElement( XMLTools::XMLElement* node, const wchar_t* elementName, const wchar_t* elementValue, bool unique );
void addOrSetBorder( XMLTools::XMLElement* pBdr, const XMLTools::XMLElement* border );
virtual void appendFlagElement( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const std::wstring & elementName, bool unique );
void appendFlagAttribute ( XMLTools::XMLElement* node, const SinglePropertyModifier& sprm, const std::wstring & attributeName );
void appendValueAttribute ( XMLTools::XMLElement* node, const std::wstring & attributeName, const std::wstring & attributeValue );
void appendValueAttribute ( XMLTools::XMLElement* node, const std::wstring & attributeName, int attributeValue );
void appendValueAttribute ( XMLTools::XMLElement* node, const std::wstring & ttributeName, short attributeValue );
void appendValueAttribute ( XMLTools::XMLElement* node, const std::wstring & attributeName, unsigned short attributeValue );
void appendValueAttribute ( XMLTools::XMLElement* node, const std::wstring & attributeName, unsigned char attributeValue );
void appendValueElement ( XMLTools::XMLElement* node, const std::wstring & elementName, const std::wstring & elementValue, bool unique );
void appendValueElement ( XMLTools::XMLElement* node, const std::wstring & elementName, short elementValue, bool unique );
void appendValueElement ( XMLTools::XMLElement* node, const std::wstring & elementName, unsigned short elementValue, bool unique );
void appendValueElement ( XMLTools::XMLElement* node, const std::wstring & elementName, unsigned char elementValue, bool unique );
void appendShading ( XMLTools::XMLElement* parent, const ShadingDescriptor& desc );
void appendDxaElement ( XMLTools::XMLElement* node, const std::wstring & elementName, const std::wstring & elementValue, bool unique );
void addOrSetBorder ( XMLTools::XMLElement* pBdr, const XMLTools::XMLElement* border );
void appendBorderAttributes ( BorderCode* brc, XMLTools::XMLElement* border );
std::wstring getBorderType ( unsigned char type );
std::wstring getShadingPattern ( const ShadingDescriptor& shd );
protected:
XMLTools::CStringXmlWriter* m_pXmlWriter;

View File

@ -157,7 +157,7 @@ namespace DocFileFormat
case sprmSDxaLeft:
{
_marLeft = FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize );
appendValueAttribute( &pgMar, _T( "w:left" ), FormatUtils::IntToWideString( _marLeft ).c_str() );
appendValueAttribute( &pgMar, _T( "w:left" ), FormatUtils::IntToWideString( _marLeft ) );
}
break;
@ -165,38 +165,38 @@ namespace DocFileFormat
case sprmSDxaRight:
{
_marRight = FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize );
appendValueAttribute( &pgMar, _T( "w:right" ), FormatUtils::IntToWideString( _marRight ).c_str() );
appendValueAttribute( &pgMar, _T( "w:right" ), FormatUtils::IntToWideString( _marRight ) );
}
break;
case sprmOldSDyaTop:
case sprmSDyaTop:
//top margin
appendValueAttribute( &pgMar, _T( "w:top" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &pgMar, _T( "w:top" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmOldSDyaBottom:
case sprmSDyaBottom:
//bottom margin
appendValueAttribute( &pgMar, _T( "w:bottom" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &pgMar, _T( "w:bottom" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmOldSDzaGutter:
case sprmSDzaGutter:
//gutter margin
appendValueAttribute( &pgMar, _T( "w:gutter" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &pgMar, _T( "w:gutter" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmOldSDyaHdrTop:
case sprmSDyaHdrTop:
//header margin
appendValueAttribute( &pgMar, _T( "w:header"), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &pgMar, _T( "w:header"), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmOldSDyaHdrBottom:
case sprmSDyaHdrBottom:
//footer margin
appendValueAttribute( &pgMar, _T( "w:footer" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &pgMar, _T( "w:footer" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
//page size and orientation
@ -204,30 +204,30 @@ namespace DocFileFormat
case sprmSXaPage:
{
_pgWidth = FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize );
appendValueAttribute( &pgSz, _T( "w:w" ), FormatUtils::IntToWideString( _pgWidth ).c_str() );
appendValueAttribute( &pgSz, _T( "w:w" ), FormatUtils::IntToWideString( _pgWidth ) );
}
break;
case sprmOldSYaPage:
case sprmSYaPage:
appendValueAttribute( &pgSz, _T( "w:h" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &pgSz, _T( "w:h" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmOldSBOrientation:
case sprmSBOrientation:
//orientation
appendValueAttribute( &pgSz, _T( "w:orient" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &PageOrientationMap[0][0], 3, 10 ).c_str() );
appendValueAttribute( &pgSz, _T( "w:orient" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &PageOrientationMap[0][0], 3, 10 ) );
break;
//paper source
case sprmOldSDmBinFirst:
case sprmSDmBinFirst:
appendValueAttribute( &paperSrc, _T( "w:first" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &paperSrc, _T( "w:first" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmOldSDmBinOther:
case sprmSDmBinOther:
appendValueAttribute( &paperSrc, _T( "w:other" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &paperSrc, _T( "w:other" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
//page borders
@ -276,12 +276,12 @@ namespace DocFileFormat
case sprmSRncFtn:
//restart code
appendValueElement( &footnotePr, _T( "numRestart" ), FormatUtils::MapValueToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ), &FootnoteRestartCodeMap[0][0], 3, 11 ).c_str(), true );
appendValueElement( &footnotePr, _T( "numRestart" ), FormatUtils::MapValueToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ), &FootnoteRestartCodeMap[0][0], 3, 11 ), true );
break;
case sprmSRncEdn:
//restart code
appendValueElement( &endnotePr, _T( "numRestart" ), FormatUtils::MapValueToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ), &EndnoteRestartCodeMap[0][0], 3, 11 ).c_str(), true );
appendValueElement( &endnotePr, _T( "numRestart" ), FormatUtils::MapValueToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ), &EndnoteRestartCodeMap[0][0], 3, 11 ), true );
break;
case sprmSFpc:
@ -305,31 +305,31 @@ namespace DocFileFormat
}break;
case sprmSNfcFtnRef:
appendValueElement( &footnotePr, _T( "numFmt" ), NumberingMapping::GetNumberFormatWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( &footnotePr, _T( "numFmt" ), NumberingMapping::GetNumberFormatWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
break;
case sprmSNfcEdnRef:
appendValueElement( &endnotePr, _T( "numFmt" ), NumberingMapping::GetNumberFormatWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( &endnotePr, _T( "numFmt" ), NumberingMapping::GetNumberFormatWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
break;
case sprmSNFtn:
appendValueElement( &footnotePr, _T( "numStart" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( &footnotePr, _T( "numStart" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
break;
case sprmSNEdn:
appendValueElement( &endnotePr, _T( "numStart" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( &endnotePr, _T( "numStart" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ), true );
break;
case sprmSDyaLinePitch:
appendValueAttribute( &docGrid, _T( "w:linePitch" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &docGrid, _T( "w:linePitch" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmSDxtCharSpace:
appendValueAttribute( &docGrid, _T( "w:charSpace" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt32( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute( &docGrid, _T( "w:charSpace" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt32( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmSClm:
appendValueAttribute( &docGrid, _T( "w:type" ), FormatUtils::MapValueToWideString( FormatUtils::BytesToUInt16( iter->Arguments, 0, iter->argumentsSize ), &DocGridTypeMap[0][0], 4, 14 ).c_str() );
appendValueAttribute( &docGrid, _T( "w:type" ), FormatUtils::MapValueToWideString( FormatUtils::BytesToUInt16( iter->Arguments, 0, iter->argumentsSize ), &DocGridTypeMap[0][0], 4, 14 ) );
break;
case sprmOldSCcolumns:
@ -340,14 +340,14 @@ namespace DocFileFormat
RELEASEARRAYOBJECTS (m_arrSpace);
m_arrSpace = new short [m_nColumns];
appendValueAttribute (&cols, _T( "w:num" ), FormatUtils::IntToWideString (m_nColumns).c_str());
appendValueAttribute (&cols, _T( "w:num" ), FormatUtils::IntToWideString (m_nColumns));
}
break;
case sprmOldSDxaColumns:
case sprmSDxaColumns:
//evenly spaced columns
appendValueAttribute (&cols, _T( "w:space" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ).c_str() );
appendValueAttribute (&cols, _T( "w:space" ), FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 0, iter->argumentsSize ) ) );
break;
case sprmOldSDxaColWidth:
@ -403,12 +403,12 @@ namespace DocFileFormat
case sprmOldSVjc:
case sprmSVjc:
appendValueElement (m_pXmlNode, _T( "vAlign" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &TextVerticalAlignment[0][0], 4, 7 ).c_str(), true );
appendValueElement (m_pXmlNode, _T( "vAlign" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &TextVerticalAlignment[0][0], 4, 7 ), true );
break;
case sprmOldSNfcPgn:
case sprmSNfcPgn:
appendValueAttribute( &pgNumType, _T( "w:fmt" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &PageNumberFormatCodeMap[0][0], 42, 29 ).c_str() );
appendValueAttribute( &pgNumType, _T( "w:fmt" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &PageNumberFormatCodeMap[0][0], 42, 29 ) );
break;
case sprmOldSPgnStart:
@ -439,7 +439,7 @@ namespace DocFileFormat
SLncOperand mode = (SLncOperand)FormatUtils::BytesToUChar (iter->Arguments, 0, iter->argumentsSize);
mode = (SLncOperand)(std::min)((std::max)(mode,lncPerPage),lncContinue);
appendValueAttribute (&lnNumType, _T("w:restart"), LineNumberRestart[mode].c_str() );
appendValueAttribute (&lnNumType, _T("w:restart"), LineNumberRestart[mode] );
}
break;
@ -461,7 +461,7 @@ namespace DocFileFormat
}
if (bWasSprmSFPgnRestart && false == wsSprmSPgnStart.empty() )
appendValueAttribute( &pgNumType, _T( "w:start" ), wsSprmSPgnStart.c_str() );
appendValueAttribute( &pgNumType, _T( "w:start" ), wsSprmSPgnStart );
// build the columns
if (m_arrWidth)
@ -487,8 +487,8 @@ namespace DocFileFormat
for (int i = 0; i < m_nColumns; ++i)
{
XMLTools::XMLElement col (_T( "w:col" ));
XMLTools::XMLAttribute w (_T( "w:w" ), FormatUtils::IntToWideString (m_arrWidth[i]).c_str());
XMLTools::XMLAttribute space (_T( "w:space" ), FormatUtils::IntToWideString (m_arrSpace[i]).c_str());
XMLTools::XMLAttribute w (_T( "w:w" ), FormatUtils::IntToWideString (m_arrWidth[i]));
XMLTools::XMLAttribute space (_T( "w:space" ), FormatUtils::IntToWideString (m_arrSpace[i]));
col.AppendAttribute (w);
col.AppendAttribute (space);
@ -496,7 +496,7 @@ namespace DocFileFormat
}
}
appendValueElement (m_pXmlNode, _T( "type" ), _type.c_str(), true );
appendValueElement (m_pXmlNode, _T( "type" ), _type, true );
if (footnotePr.GetChildCount())
m_pXmlNode->AppendChild (footnotePr);
@ -529,10 +529,10 @@ namespace DocFileFormat
m_pXmlNode->AppendChild (pgNumType);
if (m_pXmlWriter)
m_pXmlWriter->WriteString (m_pXmlNode->GetXMLString().c_str() );
m_pXmlWriter->WriteString (m_pXmlNode->GetXMLString() );
}
void SectionPropertiesMapping::AppendRef (XMLTools::XMLElement *parent, const wchar_t* element, const wchar_t* refType, const wchar_t* refId)
void SectionPropertiesMapping::AppendRef (XMLTools::XMLElement *parent, const std::wstring& element, const std::wstring& refType, const std::wstring& refId)
{
XMLTools::XMLElement headerRef (_T("w"), element);
@ -576,7 +576,7 @@ namespace DocFileFormat
}
}
AppendRef (m_pXmlNode, StoryType.c_str(), Story.c_str(), ( std::wstring( _T( "rId" ) ) + FormatUtils::IntToWideString(nRelID) ).c_str() );
AppendRef (m_pXmlNode, StoryType, Story, ( std::wstring( _T( "rId" ) ) + FormatUtils::IntToWideString(nRelID) ) );
return TRUE;
}

View File

@ -167,7 +167,7 @@ namespace DocFileFormat
const std::wstring & get_section_type();
private:
void AppendRef (XMLTools::XMLElement* pBaseNode, const wchar_t* element, const wchar_t* refType, const wchar_t* refId);
void AppendRef (XMLTools::XMLElement* pBaseNode, const std::wstring& element, const std::wstring& refType, const std::wstring& refId);
bool WriteSectionStory (CharacterRange* pRange, const std::wstring& StoryType, const std::wstring& Story);

View File

@ -56,11 +56,11 @@ namespace DocFileFormat
//zoom
m_oXmlWriter.WriteNodeBegin ( L"w:zoom", TRUE );
m_oXmlWriter.WriteAttribute ( L"w:percent", FormatUtils::IntToWideString( dop->wScaleSaved ).c_str() );
m_oXmlWriter.WriteAttribute ( L"w:percent", FormatUtils::IntToWideString( dop->wScaleSaved ) );
if ( dop->zkSaved != 0 )
{
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::MapValueToWideString( dop->zkSaved, &ZoomTypeMap[0][0], 3, 9 ).c_str() );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::MapValueToWideString( dop->zkSaved, &ZoomTypeMap[0][0], 3, 9 ) );
}
m_oXmlWriter.WriteNodeEnd( L"", TRUE );
@ -104,31 +104,31 @@ namespace DocFileFormat
if ( proofState.GetAttributeCount() > 0 )
{
m_oXmlWriter.WriteString( proofState.GetXMLString().c_str() );
m_oXmlWriter.WriteString( proofState.GetXMLString() );
}
//stylePaneFormatFilter
if ( dop->grfFmtFilter != 0 )
{
m_oXmlWriter.WriteNodeBegin( L"w:stylePaneFormatFilter", TRUE );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToFormattedWideString( dop->grfFmtFilter, L"%04x" ).c_str() );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToFormattedWideString( dop->grfFmtFilter, L"%04x" ) );
m_oXmlWriter.WriteNodeEnd( L"", TRUE );
}
//default tab stop
m_oXmlWriter.WriteNodeBegin( L"w:defaultTabStop", TRUE );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToWideString( dop->dxaTab ).c_str() );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToWideString( dop->dxaTab ) );
m_oXmlWriter.WriteNodeEnd( L"", TRUE );
//drawing grid
if( dop->dogrid != NULL )
{
m_oXmlWriter.WriteNodeBegin( L"w:displayHorizontalDrawingGridEvery", TRUE );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToWideString( dop->dogrid->dxGridDisplay ).c_str() );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToWideString( dop->dogrid->dxGridDisplay ) );
m_oXmlWriter.WriteNodeEnd( L"", TRUE );
m_oXmlWriter.WriteNodeBegin( L"w:displayVerticalDrawingGridEvery", TRUE );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToWideString( dop->dogrid->dyGridDisplay ).c_str() );
m_oXmlWriter.WriteAttribute( L"w:val", FormatUtils::IntToWideString( dop->dogrid->dyGridDisplay ) );
m_oXmlWriter.WriteNodeEnd( L"", TRUE );
if ( dop->dogrid->fFollowMargins == false )
@ -153,22 +153,22 @@ namespace DocFileFormat
if ( dop->nFtn != 0 )
{
appendValueAttribute( &footnotePr, L"w:numStart", FormatUtils::IntToWideString( dop->nFtn ).c_str() );
appendValueAttribute( &footnotePr, L"w:numStart", FormatUtils::IntToWideString( dop->nFtn ) );
}
if ( dop->rncFtn != 0 )
{
appendValueAttribute( &footnotePr, L"w:numRestart", FormatUtils::IntToWideString( dop->rncFtn ).c_str() );
appendValueAttribute( &footnotePr, L"w:numRestart", FormatUtils::IntToWideString( dop->rncFtn ) );
}
if ( dop->Fpc != 0 )
{
appendValueAttribute( &footnotePr, L"w:pos", FormatUtils::MapValueToWideString( dop->Fpc, &FootnotePositionMap[0][0], 4, 12 ).c_str() );
appendValueAttribute( &footnotePr, L"w:pos", FormatUtils::MapValueToWideString( dop->Fpc, &FootnotePositionMap[0][0], 4, 12 ) );
}
if ( footnotePr.GetAttributeCount() > 0 )
{
m_oXmlWriter.WriteString( footnotePr.GetXMLString().c_str() );
m_oXmlWriter.WriteString( footnotePr.GetXMLString() );
}

View File

@ -86,7 +86,7 @@ namespace DocFileFormat
{
m_pXmlWriter->WriteNodeBegin( _T( "w:style" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:type" ), FormatUtils::MapValueToWideString( (*iter)->stk, &StyleKindMap[0][0], 5, 10 ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:type" ), FormatUtils::MapValueToWideString( (*iter)->stk, &StyleKindMap[0][0], 5, 10 ));
//!!!TODO: There is NO default styles in DOC file. So, we can't choose one of them!!!
/*if ( ( (*iter)->sti != Null ) && ( (*iter)->sti != User ) )
@ -95,19 +95,19 @@ namespace DocFileFormat
m_pXmlWriter->WriteAttribute( _T( "w:default" ), _T( "1" ) );
}*/
m_pXmlWriter->WriteAttribute( _T( "w:styleId" ), FormatUtils::XmlEncode(MakeStyleId( *iter )).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:styleId" ), FormatUtils::XmlEncode(MakeStyleId( *iter )));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
// <w:name val="" />
m_pXmlWriter->WriteNodeBegin( _T( "w:name" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(getStyleName( *iter ), true ).c_str());
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(getStyleName( *iter ), true ));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
// <w:basedOn val="" />
if ( ( (*iter)->istdBase != 4095 ) && ( (*iter)->istdBase < sheet->Styles->size() ) )
{
m_pXmlWriter->WriteNodeBegin( _T( "w:basedOn" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(MakeStyleId( sheet->Styles->at( (*iter)->istdBase ) )).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(MakeStyleId( sheet->Styles->at( (*iter)->istdBase ) )));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
}
@ -115,7 +115,7 @@ namespace DocFileFormat
if ( (*iter)->istdNext < sheet->Styles->size() )
{
m_pXmlWriter->WriteNodeBegin( _T( "w:next" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(MakeStyleId( sheet->Styles->at( (*iter)->istdNext ) )).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(MakeStyleId( sheet->Styles->at( (*iter)->istdNext ) )));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
}
@ -123,7 +123,7 @@ namespace DocFileFormat
if ( (*iter)->istdLink < sheet->Styles->size() )
{
m_pXmlWriter->WriteNodeBegin( _T( "w:link" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(MakeStyleId( sheet->Styles->at( (*iter)->istdLink ) )).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), FormatUtils::XmlEncode(MakeStyleId( sheet->Styles->at( (*iter)->istdLink ) )));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE );
}
@ -242,19 +242,19 @@ namespace DocFileFormat
FontFamilyName* ffnAscii = static_cast<FontFamilyName*>( m_document->FontTable->operator [] ( sheet->stshi->rgftcStandardChpStsh[0] ) );
if (ffnAscii)
m_pXmlWriter->WriteAttribute( _T( "w:ascii" ), FormatUtils::XmlEncode(ffnAscii->xszFtn).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:ascii" ), FormatUtils::XmlEncode(ffnAscii->xszFtn, true));
FontFamilyName* ffnAsia = static_cast<FontFamilyName*>( m_document->FontTable->operator [] ( sheet->stshi->rgftcStandardChpStsh[1] ) );
if (ffnAsia)
m_pXmlWriter->WriteAttribute( _T( "w:eastAsia" ), FormatUtils::XmlEncode(ffnAsia->xszFtn).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:eastAsia" ), FormatUtils::XmlEncode(ffnAsia->xszFtn, true));
FontFamilyName* ffnAnsi = static_cast<FontFamilyName*>( m_document->FontTable->operator [] ( sheet->stshi->rgftcStandardChpStsh[2] ) );
if (ffnAnsi)
m_pXmlWriter->WriteAttribute( _T( "w:hAnsi" ), FormatUtils::XmlEncode(ffnAnsi->xszFtn).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:hAnsi" ), FormatUtils::XmlEncode(ffnAnsi->xszFtn, true));
FontFamilyName* ffnComplex = static_cast<FontFamilyName*>( m_document->FontTable->operator [] ( sheet->stshi->rgftcStandardChpStsh[3] ) );
if (ffnComplex)
m_pXmlWriter->WriteAttribute( _T( "w:cs" ), FormatUtils::XmlEncode(ffnComplex->xszFtn).c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:cs" ), FormatUtils::XmlEncode(ffnComplex->xszFtn, true));
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:rFonts" ) );
@ -263,7 +263,7 @@ namespace DocFileFormat
std::wstring langcode = LanguageIdMapping::getLanguageCode( &langid );
m_pXmlWriter->WriteNodeBegin( _T( "w:lang" ), TRUE );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), langcode.c_str() );
m_pXmlWriter->WriteAttribute( _T( "w:val" ), langcode);
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( _T( "w:lang" ) );

View File

@ -89,7 +89,7 @@ namespace DocFileFormat
_tGrid = tdef.rgdxaCenter;
_tcDef = tdef.rgTc80[(std::min)(_cellIndex, (int)tdef.rgTc80.size() - 1)]; // NOTE: fix for crash
appendValueElement( _tcPr, L"textDirection", FormatUtils::MapValueToWideString( _tcDef.textFlow, &Global::TextFlowMap[0][0], 6, 6 ).c_str(), false );
appendValueElement( _tcPr, L"textDirection", FormatUtils::MapValueToWideString( _tcDef.textFlow, &Global::TextFlowMap[0][0], 6, 6 ), false );
if ( _tcDef.vertMerge == Global::fvmMerge )
{
@ -100,7 +100,7 @@ namespace DocFileFormat
appendValueElement( _tcPr, L"vMerge", L"restart", false );
}
appendValueElement( _tcPr, L"vAlign", FormatUtils::MapValueToWideString( _tcDef.vertAlign, &Global::VerticalAlignMap[0][0], 3, 7 ).c_str(), false );
appendValueElement( _tcPr, L"vAlign", FormatUtils::MapValueToWideString( _tcDef.vertAlign, &Global::VerticalAlignMap[0][0], 3, 7 ), false );
if ( _tcDef.fFitText )
{
@ -145,22 +145,22 @@ namespace DocFileFormat
{
if ( FormatUtils::GetBitFromInt( iter->Arguments[2], 0 ) == true )
{
appendDxaElement( _tcMar, L"top", FormatUtils::IntToWideString( wMargin ).c_str(), true );
appendDxaElement( _tcMar, L"top", FormatUtils::IntToWideString( wMargin ), true );
}
if ( FormatUtils::GetBitFromInt( iter->Arguments[2], 1 ) == true )
{
appendDxaElement( _tcMar, L"left", FormatUtils::IntToWideString( wMargin ).c_str(), true );
appendDxaElement( _tcMar, L"left", FormatUtils::IntToWideString( wMargin ), true );
}
if ( FormatUtils::GetBitFromInt( iter->Arguments[2], 2 ) == true )
{
appendDxaElement( _tcMar, L"bottom", FormatUtils::IntToWideString( wMargin ).c_str(), true );
appendDxaElement( _tcMar, L"bottom", FormatUtils::IntToWideString( wMargin ), true );
}
if ( FormatUtils::GetBitFromInt( iter->Arguments[2], 3 ) == true )
{
appendDxaElement( _tcMar, L"right", FormatUtils::IntToWideString( wMargin ).c_str(), true );
appendDxaElement( _tcMar, L"right", FormatUtils::IntToWideString( wMargin ), true );
}
}
}
@ -210,7 +210,7 @@ namespace DocFileFormat
if ((_cellIndex >= first) && (_cellIndex < lim))
{
appendValueElement(_tcPr, L"vAlign", FormatUtils::MapValueToWideString( (VerticalCellAlignment)iter->Arguments[2], &VerticalCellAlignmentMap[0][0], 3, 7 ).c_str(), true );
appendValueElement(_tcPr, L"vAlign", FormatUtils::MapValueToWideString( (VerticalCellAlignment)iter->Arguments[2], &VerticalCellAlignmentMap[0][0], 3, 7 ), true );
}
}
break;
@ -222,7 +222,7 @@ namespace DocFileFormat
if ( ( _cellIndex >= first ) && ( _cellIndex < lim ) )
{
appendValueElement( _tcPr, L"tcFitText", FormatUtils::IntToWideString( iter->Arguments[2] ).c_str(), true );
appendValueElement( _tcPr, L"tcFitText", FormatUtils::IntToWideString( iter->Arguments[2] ), true );
}
}
break;
@ -299,7 +299,7 @@ namespace DocFileFormat
}
}
appendValueElement( _tcPr, L"gridSpan", FormatUtils::IntToWideString( _gridSpan ).c_str(), true );
appendValueElement( _tcPr, L"gridSpan", FormatUtils::IntToWideString( _gridSpan ), true );
}
//append margins
@ -344,7 +344,7 @@ namespace DocFileFormat
//write Properties
if ((_tcPr->GetChildCount() > 0) || (_tcPr->GetAttributeCount() > 0))
m_pXmlWriter->WriteString(_tcPr->GetXMLString().c_str());
m_pXmlWriter->WriteString(_tcPr->GetXMLString());
}
void TableCellPropertiesMapping::apppendCellShading (unsigned char* sprmArg, int size, int cellIndex)

View File

@ -111,8 +111,8 @@ namespace DocFileFormat
XMLTools::XMLElement tblW( _T( "w:tblW" ) );
XMLTools::XMLAttribute w( _T( "w:w" ), FormatUtils::IntToWideString( width ).c_str() );
XMLTools::XMLAttribute type( _T( "w:type" ), FormatUtils::MapValueToWideString( fts, &WidthType[0][0], 4, 5 ).c_str() );
XMLTools::XMLAttribute w( _T( "w:w" ), FormatUtils::IntToWideString( width ) );
XMLTools::XMLAttribute type( _T( "w:type" ), FormatUtils::MapValueToWideString( fts, &WidthType[0][0], 4, 5 ) );
tblW.AppendAttribute( type );
tblW.AppendAttribute( w );
@ -126,7 +126,7 @@ namespace DocFileFormat
case sprmTJcRow:
{ //justification
appendValueElement( _tblPr, _T( "jc" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::JustificationCode[0][0], 10, 15 ).c_str(), true );
appendValueElement( _tblPr, _T( "jc" ), FormatUtils::MapValueToWideString( iter->Arguments[0], &Global::JustificationCode[0][0], 10, 15 ), true );
}
break;
@ -150,7 +150,7 @@ namespace DocFileFormat
if( id != std::wstring( _T( "TableNormal" )) && !id.empty() )
{
appendValueElement( _tblPr, _T( "tblStyle" ), id.c_str(), true );
appendValueElement( _tblPr, _T( "tblStyle" ), id, true );
}
}
}
@ -168,7 +168,7 @@ namespace DocFileFormat
case sprmTTlp:
{ //table look
appendValueElement( _tblPr, _T( "tblLook" ), FormatUtils::IntToFormattedWideString( FormatUtils::BytesToInt16( iter->Arguments, 2, iter->argumentsSize ), _T( "%04x" ) ).c_str(), true );
appendValueElement( _tblPr, _T( "tblLook" ), FormatUtils::IntToFormattedWideString( FormatUtils::BytesToInt16( iter->Arguments, 2, iter->argumentsSize ), _T( "%04x" ) ), true );
}
break;
@ -194,7 +194,7 @@ namespace DocFileFormat
if ( FormatUtils::BitmaskToBool( (int)grfbrc, 0x01 ) )
{
appendDxaElement( &tblCellMar, _T( "top" ), strValue.c_str(), true );
appendDxaElement( &tblCellMar, _T( "top" ), strValue, true );
}
if ( FormatUtils::BitmaskToBool( (int)grfbrc, 0x02 ) )
@ -204,7 +204,7 @@ namespace DocFileFormat
if ( FormatUtils::BitmaskToBool( (int)grfbrc, 0x04 ) )
{
appendDxaElement( &tblCellMar, _T( "bottom" ), strValue.c_str(), true );
appendDxaElement( &tblCellMar, _T( "bottom" ), strValue, true );
}
if ( FormatUtils::BitmaskToBool( (int)grfbrc, 0x08 ) )
@ -238,7 +238,7 @@ namespace DocFileFormat
tblOverlapVal = std::wstring( _T( "never" ) );
}
appendValueElement( _tblPr, _T( "tblOverlap" ), tblOverlapVal.c_str(), true );
appendValueElement( _tblPr, _T( "tblOverlap" ), tblOverlapVal, true );
}
break;
@ -332,11 +332,11 @@ namespace DocFileFormat
{
unsigned char flag = ( iter->Arguments[0] & 0x30 ) >> 4;
appendValueAttribute( &tblpPr, _T( "w:vertAnchor" ), FormatUtils::MapValueToWideString( flag, &Global::VerticalPositionCode[0][0], 4, 7 ).c_str() );
appendValueAttribute( &tblpPr, _T( "w:vertAnchor" ), FormatUtils::MapValueToWideString( flag, &Global::VerticalPositionCode[0][0], 4, 7 ) );
flag = ( iter->Arguments[0] & 0xC0 ) >> 6;
appendValueAttribute( &tblpPr, _T( "w:horzAnchor" ), FormatUtils::MapValueToWideString( flag, &Global::HorizontalPositionCode[0][0], 4, 7 ).c_str() );
appendValueAttribute( &tblpPr, _T( "w:horzAnchor" ), FormatUtils::MapValueToWideString( flag, &Global::HorizontalPositionCode[0][0], 4, 7 ) );
}
break;
@ -383,7 +383,7 @@ namespace DocFileFormat
{
XMLTools::XMLElement tblInd( _T( "w:tblInd" ) );
XMLTools::XMLAttribute tblIndW( _T( "w:w" ),FormatUtils::IntToWideString( tblIndent ).c_str() );
XMLTools::XMLAttribute tblIndW( _T( "w:w" ),FormatUtils::IntToWideString( tblIndent ) );
tblInd.AppendAttribute( tblIndW );
XMLTools::XMLAttribute tblIndType( _T( "w:type" ), _T( "dxa" ) );
@ -453,20 +453,20 @@ namespace DocFileFormat
//append margins
if ( ( marginLeft == 0 ) && ( gabHalf != 0 ) )
{
appendDxaElement( &tblCellMar, _T( "left" ), FormatUtils::IntToWideString( gabHalf ).c_str(), true );
appendDxaElement( &tblCellMar, _T( "left" ), FormatUtils::IntToWideString( gabHalf ), true );
}
else
{
appendDxaElement( &tblCellMar, _T( "left" ), FormatUtils::IntToWideString( marginLeft ).c_str(), true );
appendDxaElement( &tblCellMar, _T( "left" ), FormatUtils::IntToWideString( marginLeft ), true );
}
if ( ( marginRight == 0 ) && ( gabHalf != 0 ) )
{
appendDxaElement( &tblCellMar, _T( "right" ), FormatUtils::IntToWideString( gabHalf ).c_str(), true );
appendDxaElement( &tblCellMar, _T( "right" ), FormatUtils::IntToWideString( gabHalf ), true );
}
else
{
appendDxaElement( &tblCellMar, _T( "right" ), FormatUtils::IntToWideString( marginRight ).c_str(), true );
appendDxaElement( &tblCellMar, _T( "right" ), FormatUtils::IntToWideString( marginRight ), true );
}
_tblPr->AppendChild( tblCellMar );
@ -474,7 +474,7 @@ namespace DocFileFormat
//write Properties
if ( ( _tblPr->GetChildCount() > 0 ) || ( _tblPr->GetAttributeCount() > 0 ) )
{
m_pXmlWriter->WriteString( _tblPr->GetXMLString().c_str() );
m_pXmlWriter->WriteString( _tblPr->GetXMLString() );
}
//append the grid
@ -500,12 +500,12 @@ namespace DocFileFormat
for ( unsigned int i = 0; i < _grid->size(); i++ )
{
XMLTools::XMLElement gridCol( _T( "w:gridCol" ) );
XMLTools::XMLAttribute gridColW( _T( "w:w" ), FormatUtils::IntToWideString( _grid->at( i ) ).c_str() );
XMLTools::XMLAttribute gridColW( _T( "w:w" ), FormatUtils::IntToWideString( _grid->at( i ) ) );
gridCol.AppendAttribute( gridColW );
_tblGrid->AppendChild( gridCol );
}
}
m_pXmlWriter->WriteString( _tblGrid->GetXMLString().c_str() );
m_pXmlWriter->WriteString( _tblGrid->GetXMLString() );
}
}

View File

@ -90,7 +90,7 @@ namespace DocFileFormat
case sprmTWidthAfter:
{ //width after
XMLTools::XMLElement wAfter( L"w:wAfter" );
XMLTools::XMLAttribute wAfterValue( L"w:w", FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 1, iter->argumentsSize ) ).c_str() );
XMLTools::XMLAttribute wAfterValue( L"w:w", FormatUtils::IntToWideString( FormatUtils::BytesToInt16( iter->Arguments, 1, iter->argumentsSize ) ) );
wAfter.AppendAttribute( wAfterValue );
XMLTools::XMLAttribute wAfterType( L"w:type", L"dxa" );
@ -106,7 +106,7 @@ namespace DocFileFormat
if ( before != 0 )
{
XMLTools::XMLElement wBefore( L"w:wBefore" );
XMLTools::XMLAttribute wBeforeValue( L"w:w", FormatUtils::IntToWideString( before ).c_str() );
XMLTools::XMLAttribute wBeforeValue( L"w:w", FormatUtils::IntToWideString( before ) );
wBefore.AppendAttribute( wBeforeValue );
XMLTools::XMLAttribute wBeforeType( L"w:type", L"dxa" );
@ -128,7 +128,7 @@ namespace DocFileFormat
if ( rH > 0 )
{
rowHeightRule.SetValue( L"atLeast" );
rowHeightVal.SetValue( FormatUtils::IntToWideString( rH ).c_str() );
rowHeightVal.SetValue( FormatUtils::IntToWideString( rH ) );
rowHeight.AppendAttribute( rowHeightVal );
}
else if( rH == 0 )
@ -139,7 +139,7 @@ namespace DocFileFormat
{
rowHeightRule.SetValue( L"exact" );
rH *= -1;
rowHeightVal.SetValue( FormatUtils::IntToWideString( rH ).c_str() );
rowHeightVal.SetValue( FormatUtils::IntToWideString( rH ) );
rowHeight.AppendAttribute( rowHeightVal );
}
@ -158,7 +158,7 @@ namespace DocFileFormat
//div id
case sprmTIpgp:
{
appendValueElement( _trPr, L"divId", FormatUtils::IntToWideString( FormatUtils::BytesToInt32( iter->Arguments, 0, iter->argumentsSize ) ).c_str(), true );
appendValueElement( _trPr, L"divId", FormatUtils::IntToWideString( FormatUtils::BytesToInt32( iter->Arguments, 0, iter->argumentsSize ) ), true );
}break;
//borders 80 exceptions
@ -260,7 +260,7 @@ namespace DocFileFormat
//write Properties
if ( ( _trPr->GetChildCount() > 0 ) || ( _trPr->GetAttributeCount() > 0 ) )
{
m_pXmlWriter->WriteString( _trPr->GetXMLString().c_str() );
m_pXmlWriter->WriteString( _trPr->GetXMLString() );
}
}
}

View File

@ -149,7 +149,7 @@ namespace DocFileFormat
file.WriteFile((BYTE*)xmlString.c_str(), xmlString.size());
file.CloseFile();
OOX::CPath path(sTempXmlFile.c_str());
OOX::CPath path(sTempXmlFile);
OOX::CDocument docEmbedded(path, path);
bool res = false;
@ -194,9 +194,9 @@ namespace DocFileFormat
if ( b != NULL )
{
b->operator += ( propName );
b->operator += ( _T( ":" ) );
b->operator += ( L":" );
b->operator += ( propValue );
b->operator +=( _T( ";" ) );
b->operator +=( L";" );
}
}
@ -213,7 +213,7 @@ namespace DocFileFormat
m_isEquation = false;
m_isEmbedded = false;
m_imageData = new XMLTools::XMLElement( _T( "v:imagedata" ) );
m_imageData = new XMLTools::XMLElement( L"v:imagedata" );
}
VMLPictureMapping::~VMLPictureMapping()
@ -256,24 +256,24 @@ namespace DocFileFormat
{
type.SetType(msosptPictureFrame);
}
m_pXmlWriter->WriteNodeBegin( _T( "v:shape" ), true );
m_pXmlWriter->WriteNodeBegin( L"v:shape", true );
m_pXmlWriter->WriteAttribute( _T( "type" ), std::wstring( _T( "#" ) + VMLShapeTypeMapping::GenerateTypeId(&type)).c_str());
m_pXmlWriter->WriteAttribute( L"type", std::wstring( L"#" + VMLShapeTypeMapping::GenerateTypeId(&type)));
count_vml_objects++;
if (m_shapeId.empty())
m_shapeId = std::wstring(L"_x0000_s") + FormatUtils::IntToWideString(1024 + count_vml_objects);
m_shapeId = L"_x0000_s" + FormatUtils::IntToWideString(1024 + count_vml_objects);
m_pXmlWriter->WriteAttribute( _T( "id" ), m_shapeId.c_str() );
m_pXmlWriter->WriteAttribute( L"id", m_shapeId);
if (m_isOlePreview)
{
m_pXmlWriter->WriteAttribute( _T( "o:ole" ), _T( "" ) );
m_pXmlWriter->WriteAttribute( L"o:ole", L"" );
}
else if (m_isBullete)
{
m_pXmlWriter->WriteAttribute( _T( "o:bullet" ), _T( "1" ) );
m_pXmlWriter->WriteAttribute( L"o:bullet", L"1" );
}
//todooo oбъединить с shape_mapping
@ -304,25 +304,25 @@ namespace DocFileFormat
case borderBottomColor:
{
RGBColor bottomColor( (int)iter->op, RedFirst );
m_pXmlWriter->WriteAttribute( _T( "o:borderbottomcolor" ), ( std::wstring( _T( "#" ) ) + bottomColor.SixDigitHexCode ).c_str() );
m_pXmlWriter->WriteAttribute( L"o:borderbottomcolor", L"#" + bottomColor.SixDigitHexCode);
}
break;
case borderLeftColor:
{
RGBColor leftColor( (int)iter->op, RedFirst );
m_pXmlWriter->WriteAttribute( _T( "o:borderleftcolor" ), ( std::wstring( _T( "#" ) ) + leftColor.SixDigitHexCode ).c_str() );
m_pXmlWriter->WriteAttribute( L"o:borderleftcolor", L"#" + leftColor.SixDigitHexCode);
}
break;
case borderRightColor:
{
RGBColor rightColor( (int)iter->op, RedFirst );
m_pXmlWriter->WriteAttribute( _T( "o:borderrightcolor" ), ( std::wstring( _T( "#" ) ) + rightColor.SixDigitHexCode ).c_str() );
m_pXmlWriter->WriteAttribute( L"o:borderrightcolor", L"#" + rightColor.SixDigitHexCode);
}
break;
case borderTopColor:
{
RGBColor topColor( (int)iter->op, RedFirst );
m_pXmlWriter->WriteAttribute( _T( "o:bordertopcolor" ), ( std::wstring( _T( "#" ) ) + topColor.SixDigitHexCode ).c_str() );
m_pXmlWriter->WriteAttribute( L"o:bordertopcolor", L"#" + topColor.SixDigitHexCode);
}
break;
//CROPPING
@ -330,28 +330,28 @@ namespace DocFileFormat
{
//cast to signed integer
int cropBottom = (int)iter->op;
appendValueAttribute(m_imageData, _T( "cropbottom" ), ( FormatUtils::IntToWideString( cropBottom ) + std::wstring( _T( "f" ) ) ).c_str() );
appendValueAttribute(m_imageData, L"cropbottom", FormatUtils::IntToWideString( cropBottom ) + L"f" );
}
break;
case cropFromLeft:
{
//cast to signed integer
int cropLeft = (int)iter->op;
appendValueAttribute(m_imageData, _T( "cropleft" ), ( FormatUtils::IntToWideString( cropLeft ) + std::wstring( _T( "f" ) ) ).c_str());
appendValueAttribute(m_imageData, L"cropleft", FormatUtils::IntToWideString( cropLeft ) + L"f" );
}
break;
case cropFromRight:
{
//cast to signed integer
int cropRight = (int)iter->op;
appendValueAttribute(m_imageData, _T( "cropright" ), ( FormatUtils::IntToWideString( cropRight ) + std::wstring( _T( "f" ) ) ).c_str());
appendValueAttribute(m_imageData, L"cropright", FormatUtils::IntToWideString( cropRight ) + L"f" );
}
break;
case cropFromTop:
{
//cast to signed integer
int cropTop = (int)iter->op;
appendValueAttribute(m_imageData, _T( "croptop" ), ( FormatUtils::IntToWideString( cropTop ) + std::wstring( _T( "f" ) ) ).c_str());
appendValueAttribute(m_imageData, L"croptop", FormatUtils::IntToWideString( cropTop ) + L"f" );
}
break;
//------------------------------------------------------------
@ -365,23 +365,23 @@ namespace DocFileFormat
std::wstring v = strHeight;
strHeight = strWidth; strWidth = v;
appendStyleProperty(&strStyle, _T( "rotation" ), FormatUtils::DoubleToWideString(dAngle));
appendStyleProperty(&strStyle, L"rotation", FormatUtils::DoubleToWideString(dAngle));
}break;
case posh:
{
appendStyleProperty(&strStyle, _T("mso-position-horizontal"), VMLShapeMapping::mapHorizontalPosition((PositionHorizontal)iter->op));
appendStyleProperty(&strStyle, L"mso-position-horizontal", VMLShapeMapping::mapHorizontalPosition((PositionHorizontal)iter->op));
}break;
case posrelh:
{
appendStyleProperty(&strStyle, _T("mso-position-horizontal-relative"), VMLShapeMapping::mapHorizontalPositionRelative((PositionHorizontalRelative)iter->op));
appendStyleProperty(&strStyle, L"mso-position-horizontal-relative", VMLShapeMapping::mapHorizontalPositionRelative((PositionHorizontalRelative)iter->op));
}break;
case posv:
{
appendStyleProperty(&strStyle, _T("mso-position-vertical"), VMLShapeMapping::mapVerticalPosition((PositionVertical)iter->op));
appendStyleProperty(&strStyle, L"mso-position-vertical", VMLShapeMapping::mapVerticalPosition((PositionVertical)iter->op));
}break;
case posrelv:
{
appendStyleProperty(&strStyle, _T("mso-position-vertical-relative"), VMLShapeMapping::mapVerticalPositionRelative((PositionVerticalRelative)iter->op));
appendStyleProperty(&strStyle, L"mso-position-vertical-relative", VMLShapeMapping::mapVerticalPositionRelative((PositionVerticalRelative)iter->op));
}break;
case groupShapeBooleans:
{
@ -390,52 +390,53 @@ namespace DocFileFormat
if (groupShapeBooleans.fUsefBehindDocument && groupShapeBooleans.fBehindDocument)
{
//The shape is behind the text, so the z-index must be negative.
appendStyleProperty(&strStyle, _T( "z-index" ), _T( "-1" ) );
appendStyleProperty(&strStyle, L"z-index", L"-1" );
}
//else if (!m_isInlinePicture)
//{
// appendStyleProperty( &strStyle, _T( "z-index" ), FormatUtils::IntToWideString(zIndex + 0x7ffff));
// appendStyleProperty( &strStyle, L"z-index", FormatUtils::IntToWideString(zIndex + 0x7ffff));
//}
if (groupShapeBooleans.fHidden && groupShapeBooleans.fUsefHidden)
{
appendStyleProperty(&strStyle, _T( "visibility" ), _T( "hidden" ));
appendStyleProperty(&strStyle, L"visibility", L"hidden");
}
}
break;
}
}
strStyle += _T( "width:" ) + strWidth + _T( "pt;" ) + _T( "height:" ) + strHeight + _T( "pt;" );
m_pXmlWriter->WriteAttribute( _T( "style" ), strStyle.c_str() );
strStyle += L"width:" + strWidth + L"pt;" + L"height:" + strHeight + L"pt;";
m_pXmlWriter->WriteAttribute( L"style", strStyle);
m_pXmlWriter->WriteNodeEnd( _T( "" ), TRUE, FALSE );
m_pXmlWriter->WriteNodeEnd( L"", TRUE, FALSE );
if (CopyPicture(pict))
{
//v:imageData
appendValueAttribute(m_imageData, _T( "r:id" ), ( std::wstring( _T( "rId" ) ) + FormatUtils::IntToWideString(m_nImageId) ).c_str());
appendValueAttribute(m_imageData, _T( "o:title" ) , _T( "" ));
m_pXmlWriter->WriteString(m_imageData->GetXMLString().c_str());
appendValueAttribute(m_imageData, L"r:id", L"rId" + FormatUtils::IntToWideString(m_nImageId));
appendValueAttribute(m_imageData, L"o:title", L"" );
m_pXmlWriter->WriteString(m_imageData->GetXMLString());
}
//borders
writePictureBorder( _T( "bordertop" ), pict->brcTop );
writePictureBorder( _T( "borderleft" ), pict->brcLeft );
writePictureBorder( _T( "borderbottom" ), pict->brcBottom );
writePictureBorder( _T( "borderright" ), pict->brcRight );
{//borders
writePictureBorder( L"bordertop", pict->brcTop );
writePictureBorder( L"borderleft", pict->brcLeft );
writePictureBorder( L"borderbottom", pict->brcBottom );
writePictureBorder( L"borderright", pict->brcRight );
}
m_pXmlWriter->WriteNodeEnd( _T( "v:shape" ) );
m_pXmlWriter->WriteNodeEnd( L"v:shape" );
}
void VMLPictureMapping::writePictureBorder( const std::wstring & name, const BorderCode* brc )
{
if (!brc || name.empty()) return;
m_pXmlWriter->WriteNodeBegin( ( std::wstring( _T( "w10:" ) ) + name).c_str(), true );
m_pXmlWriter->WriteAttribute( _T( "type" ), getBorderType( brc->brcType ).c_str() );
m_pXmlWriter->WriteAttribute( _T( "width" ), FormatUtils::IntToWideString( brc->dptLineWidth ).c_str() );
m_pXmlWriter->WriteNodeEnd ( _T( "" ), true );
m_pXmlWriter->WriteNodeBegin( L"w10:" + name, true );
m_pXmlWriter->WriteAttribute( L"type", getBorderType( brc->brcType ));
m_pXmlWriter->WriteAttribute( L"width", FormatUtils::IntToWideString( brc->dptLineWidth ));
m_pXmlWriter->WriteNodeEnd ( L"", true );
}
bool VMLPictureMapping::CopyPicture (PictureDescriptor* pict)
@ -534,26 +535,26 @@ namespace DocFileFormat
switch (nType)
{
case Global::msoblipDIB:
return std::wstring(_T(".bmp"));
return std::wstring(L".bmp");
case Global::msoblipEMF:
return std::wstring(_T(".emf"));
return std::wstring(L".emf");
case Global::msoblipJPEG:
case Global::msoblipCMYKJPEG:
return std::wstring(_T(".jpg"));
return std::wstring(L".jpg");
case Global::msoblipPNG:
return std::wstring(_T(".png"));
return std::wstring(L".png");
case Global::msoblipTIFF:
return std::wstring(_T(".tif"));
return std::wstring(L".tif");
case Global::msoblipWMF:
return std::wstring(_T(".wmf"));
return std::wstring(L".wmf");
default:
return std::wstring(_T(".png"));
return std::wstring(L".png");
}
}
@ -565,17 +566,17 @@ namespace DocFileFormat
return std::wstring(OpenXmlContentTypes::Emf);
//case msoblipGIF:
// return wstring( _T( "image/gif" ) );
// return wstring( L"image/gif" );
//case msoblipICON:
// return wstring( _T( "image/x-icon" ) );
// return wstring( L"image/x-icon" );
case Global::msoblipJPEG:
case Global::msoblipCMYKJPEG:
return std::wstring(OpenXmlContentTypes::Jpeg);
//case msoblipPCX:
// return wstring( _T( "image/pcx" ) );
// return wstring( L"image/pcx" );
case Global::msoblipPNG:
return std::wstring(OpenXmlContentTypes::Png);

View File

@ -149,10 +149,10 @@ namespace DocFileFormat
m_shapeId = GetShapeID(shape);
m_pXmlWriter->WriteNodeBegin( L"v:group", true );
m_pXmlWriter->WriteAttribute( L"id", m_shapeId .c_str());
m_pXmlWriter->WriteAttribute( L"style", FormatUtils::XmlEncode(buildStyle(shape, anchor, options, container->Index)).c_str() );
m_pXmlWriter->WriteAttribute( L"coordorigin", ( FormatUtils::IntToWideString(gsr->rcgBounds.topLeftAngle.x) + L"," + FormatUtils::IntToWideString( gsr->rcgBounds.topLeftAngle.y)).c_str() );
m_pXmlWriter->WriteAttribute( L"coordsize", ( FormatUtils::IntToWideString(gsr->rcgBounds.size.cx) + L"," + FormatUtils::IntToWideString(gsr->rcgBounds.size.cy)).c_str() );
m_pXmlWriter->WriteAttribute( L"id", m_shapeId);
m_pXmlWriter->WriteAttribute( L"style", FormatUtils::XmlEncode(buildStyle(shape, anchor, options, container->Index)));
m_pXmlWriter->WriteAttribute( L"coordorigin", ( FormatUtils::IntToWideString(gsr->rcgBounds.topLeftAngle.x) + L"," + FormatUtils::IntToWideString( gsr->rcgBounds.topLeftAngle.y)));
m_pXmlWriter->WriteAttribute( L"coordsize", ( FormatUtils::IntToWideString(gsr->rcgBounds.size.cx) + L"," + FormatUtils::IntToWideString(gsr->rcgBounds.size.cy)));
// Write wrap coords
std::list<OptionEntry>::const_iterator end = options.end();
@ -164,7 +164,7 @@ namespace DocFileFormat
{
std::wstring wrapCoords = getWrapCoords(*iter);
if (wrapCoords.length())
m_pXmlWriter->WriteAttribute(L"wrapcoords", wrapCoords.c_str());
m_pXmlWriter->WriteAttribute(L"wrapcoords", wrapCoords);
}
break;
}
@ -205,7 +205,7 @@ namespace DocFileFormat
if (wrap != L"through")
{
m_pXmlWriter->WriteNodeBegin( L"w10:wrap", true );
m_pXmlWriter->WriteAttribute( L"type", wrap.c_str() );
m_pXmlWriter->WriteAttribute( L"type", wrap);
m_pXmlWriter->WriteNodeEnd ( L"w10:wrap", true );
}
}
@ -246,16 +246,16 @@ namespace DocFileFormat
if (pShape->GetShapeType())
{
freeform = false;
m_pXmlWriter->WriteAttribute( L"type", (std::wstring(L"#") + VMLShapeTypeMapping::GenerateTypeId(pShape->GetShapeType())).c_str());
m_pXmlWriter->WriteAttribute( L"type", (std::wstring(L"#") + VMLShapeTypeMapping::GenerateTypeId(pShape->GetShapeType())));
m_pXmlWriter->WriteAttribute( L"style", FormatUtils::XmlEncode(buildStyle(pShape, pAnchor, options, pContainer->Index)).c_str());
m_pXmlWriter->WriteAttribute( L"style", FormatUtils::XmlEncode(buildStyle(pShape, pAnchor, options, pContainer->Index)));
}
if (pShape->is<LineType>())
{
//append "from" and "to" attributes
m_pXmlWriter->WriteAttribute(L"from", GetLineFrom(pAnchor).c_str());
m_pXmlWriter->WriteAttribute(L"to", GetLineTo(pAnchor).c_str());
m_pXmlWriter->WriteAttribute(L"from", GetLineFrom(pAnchor));
m_pXmlWriter->WriteAttribute(L"to", GetLineTo(pAnchor));
}
if (m_isBullete)
@ -410,7 +410,7 @@ namespace DocFileFormat
if (!wrapCoords.empty())
{
m_pXmlWriter->WriteAttribute( L"wrapcoords", wrapCoords.c_str() );
m_pXmlWriter->WriteAttribute( L"wrapcoords", wrapCoords);
}
}break;
case geoRight:
@ -433,7 +433,7 @@ namespace DocFileFormat
{
RGBColor lineColor((int)iter->op, RedFirst);
if ( !pShape->fBackground )
m_pXmlWriter->WriteAttribute( L"strokecolor", (std::wstring(L"#") + lineColor.SixDigitHexCode).c_str());
m_pXmlWriter->WriteAttribute( L"strokecolor", (std::wstring(L"#") + lineColor.SixDigitHexCode));
}break;
case lineWidth:
{
@ -445,67 +445,67 @@ namespace DocFileFormat
}break;
case lineDashing:
{
appendValueAttribute(&m_stroke, L"dashstyle", FormatUtils::MapValueToWideString( iter->op, &Global::DashStyleMap[0][0], 11, 16 ).c_str() );
appendValueAttribute(&m_stroke, L"dashstyle", FormatUtils::MapValueToWideString( iter->op, &Global::DashStyleMap[0][0], 11, 16 ) );
}break;
case lineStyle:
{
appendValueAttribute(&m_stroke, L"linestyle", getLineStyle( iter->op ).c_str());
appendValueAttribute(&m_stroke, L"linestyle", getLineStyle( iter->op ));
}break;
case lineEndArrowhead:
{
appendValueAttribute(&m_stroke, L"endarrow", getArrowStyle( iter->op ).c_str());
appendValueAttribute(&m_stroke, L"endarrow", getArrowStyle( iter->op ));
}break;
case lineEndArrowLength:
{
appendValueAttribute(&m_stroke, L"endarrowlength", getArrowLength( iter->op ).c_str());
appendValueAttribute(&m_stroke, L"endarrowlength", getArrowLength( iter->op ));
}break;
case lineEndArrowWidth:
{
appendValueAttribute(&m_stroke, L"endarrowwidth", getArrowWidth( iter->op ).c_str());
appendValueAttribute(&m_stroke, L"endarrowwidth", getArrowWidth( iter->op ));
}break;
case lineStartArrowhead:
{
appendValueAttribute(&m_stroke, L"startarrow", getArrowStyle( iter->op ).c_str());
appendValueAttribute(&m_stroke, L"startarrow", getArrowStyle( iter->op ));
}break;
case lineStartArrowLength:
{
appendValueAttribute(&m_stroke, L"startarrowlength", getArrowLength( iter->op ).c_str());
appendValueAttribute(&m_stroke, L"startarrowlength", getArrowLength( iter->op ));
}break;
case lineStartArrowWidth:
{
appendValueAttribute(&m_stroke, L"startarrowwidth", getArrowWidth( iter->op ).c_str());
appendValueAttribute(&m_stroke, L"startarrowwidth", getArrowWidth( iter->op ));
}break;
// FILL
case fillColor:
{
RGBColor fillColor((int)iter->op, RedFirst);
m_pXmlWriter->WriteAttribute(L"fillcolor", ( std::wstring( L"#" ) + fillColor.SixDigitHexCode ).c_str());
m_pXmlWriter->WriteAttribute(L"fillcolor", ( std::wstring( L"#" ) + fillColor.SixDigitHexCode ));
}break;
case fillBackColor:
{
RGBColor fillBackColor( (int)iter->op, RedFirst );
appendValueAttribute(&m_fill, L"color2", ( std::wstring( L"#" ) + fillBackColor.SixDigitHexCode ).c_str());
appendValueAttribute(&m_fill, L"color2", ( std::wstring( L"#" ) + fillBackColor.SixDigitHexCode ));
}break;
case fillAngle:
{
FixedPointNumber fllAngl( iter->op );
appendValueAttribute(&m_fill, L"angle", FormatUtils::DoubleToWideString( fllAngl.ToAngle() ).c_str());
appendValueAttribute(&m_fill, L"angle", FormatUtils::DoubleToWideString( fllAngl.ToAngle() ));
}break;
case fillShadeType:
{
appendValueAttribute(&m_fill, L"method", getFillMethod( iter->op ).c_str());
appendValueAttribute(&m_fill, L"method", getFillMethod( iter->op ));
}break;
case fillShadeColors:
{
appendValueAttribute(&m_fill, L"colors", getFillColorString( iter->opComplex, iter->op ).c_str());
appendValueAttribute(&m_fill, L"colors", getFillColorString( iter->opComplex, iter->op ));
}break;
case fillFocus:
{
appendValueAttribute(&m_fill, L"focus", ( FormatUtils::IntToWideString( iter->op ) + L"%" ).c_str());
appendValueAttribute(&m_fill, L"focus", ( FormatUtils::IntToWideString( iter->op ) + L"%" ));
}break;
case fillType:
{
appendValueAttribute(&m_fill, L"type", getFillType( iter->op ).c_str());
appendValueAttribute(&m_fill, L"type", getFillType( iter->op ));
}break;
case fillBlip:
{
@ -523,28 +523,28 @@ namespace DocFileFormat
if ( (pFillBlip != NULL) && copyPicture(pFillBlip) )
{
appendValueAttribute(&m_fill, L"r:id", std::wstring(( L"rId" ) + FormatUtils::IntToWideString(m_nImageId) ).c_str());
appendValueAttribute(&m_fill, L"r:id", std::wstring(( L"rId" ) + FormatUtils::IntToWideString(m_nImageId) ));
}
}break;
case fillOpacity:
{
appendValueAttribute(&m_fill, L"opacity", ( FormatUtils::IntToWideString( iter->op ) + L"f" ).c_str());
appendValueAttribute(&m_fill, L"opacity", ( FormatUtils::IntToWideString( iter->op ) + L"f" ));
}
break;
case fillBackOpacity:
{
appendValueAttribute(&m_fill, L"opacity2", (FormatUtils::IntToWideString(iter->op) + L"f").c_str());
appendValueAttribute(&m_fill, L"opacity2", (FormatUtils::IntToWideString(iter->op) + L"f"));
}break;
// SHADOW
case shadowType:
{
appendValueAttribute(&m_shadow, L"type", getShadowType(iter->op).c_str());
appendValueAttribute(&m_shadow, L"type", getShadowType(iter->op));
}break;
case shadowColor:
{
RGBColor shadowColor((int)iter->op, RedFirst);
appendValueAttribute(&m_shadow, L"color", ( std::wstring( L"#" ) + shadowColor.SixDigitHexCode ).c_str());
appendValueAttribute(&m_shadow, L"color", ( std::wstring( L"#" ) + shadowColor.SixDigitHexCode ));
}break;
case shadowOffsetX:
{
@ -574,7 +574,7 @@ namespace DocFileFormat
{
double shadowOpa = (iter->op / pow( (double)2, (double)16));
appendValueAttribute(&m_shadow, L"opacity", FormatUtils::DoubleToFormattedWideString( shadowOpa, L"%.2f" ).c_str());
appendValueAttribute(&m_shadow, L"opacity", FormatUtils::DoubleToFormattedWideString( shadowOpa, L"%.2f" ));
}break;
case shadowStyleBooleanProperties:
{
@ -595,7 +595,7 @@ namespace DocFileFormat
BlipStoreEntry* oBlip = static_cast<BlipStoreEntry*>(m_pBlipStore->Children[index]);
if (copyPicture(oBlip))
{
appendValueAttribute(&m_imagedata, L"r:id", ( std::wstring( L"rId" ) + FormatUtils::IntToWideString(m_nImageId) ).c_str());
appendValueAttribute(&m_imagedata, L"r:id", ( std::wstring( L"rId" ) + FormatUtils::IntToWideString(m_nImageId) ));
}
}
}break;
@ -604,7 +604,7 @@ namespace DocFileFormat
std::wstring name;
FormatUtils::GetSTLCollectionFromBytes<std::wstring>(&name, iter->opComplex, iter->op, ENCODING_UTF16);
if (!name.empty())
appendValueAttribute(&m_imagedata, L"o:title", FormatUtils::XmlEncode(name).c_str());
appendValueAttribute(&m_imagedata, L"o:title", FormatUtils::XmlEncode(name));
}break;
// 3D STYLE
case f3D:
@ -616,37 +616,37 @@ namespace DocFileFormat
{
EmuValue backwardValue( (int)iter->op );
std::wstring depth = FormatUtils::DoubleToWideString( backwardValue.ToPoints() ) + L"pt";
appendValueAttribute(&m_3dstyle, L"backdepth", depth.c_str());
appendValueAttribute(&m_3dstyle, L"backdepth", depth);
}break;
case c3DAmbientIntensity:
{
std::wstring intens = FormatUtils::IntToWideString((int)iter->op) + L"f";
appendValueAttribute(&m_3dstyle, L"brightness", intens.c_str());
appendValueAttribute(&m_3dstyle, L"brightness", intens);
}break;
case c3DSpecularAmt:
{
std::wstring amt = FormatUtils::IntToWideString((int)iter->op) + L"f";
appendValueAttribute(&m_3dstyle, L"specularity", amt.c_str());
appendValueAttribute(&m_3dstyle, L"specularity", amt);
}break;
case c3DDiffuseAmt:
{
std::wstring amt = FormatUtils::IntToWideString((int)iter->op) + L"f";
appendValueAttribute(&m_3dstyle, L"diffusity", amt.c_str());
appendValueAttribute(&m_3dstyle, L"diffusity", amt);
}break;
case c3DKeyIntensity:
{
std::wstring amt = FormatUtils::IntToWideString((int)iter->op);
appendValueAttribute(&m_3dstyle, L"lightlevel", amt.c_str());
appendValueAttribute(&m_3dstyle, L"lightlevel", amt);
}break;
case c3DExtrusionColor:
{
std::wstring color = FormatUtils::IntToFormattedWideString(iter->op, L"#%06x");
appendValueAttribute(&m_3dstyle, L"color", color.c_str());
appendValueAttribute(&m_3dstyle, L"color", color);
}break;
case c3DSkewAngle:
{
FixedPointNumber skewAngle( iter->op );
appendValueAttribute(&m_3dstyle, L"skewangle", FormatUtils::DoubleToWideString( skewAngle.ToAngle() ).c_str());
appendValueAttribute(&m_3dstyle, L"skewangle", FormatUtils::DoubleToWideString( skewAngle.ToAngle() ));
}break;
case c3DXViewpoint:
{
@ -706,10 +706,10 @@ namespace DocFileFormat
if (0 <= text.find(L"\n"))
{
m_textpath.AppendText(text.c_str());
m_textpath.AppendText(text);
}
text = ReplaceString(text, L"\n", L"&#xA;");
appendValueAttribute(&m_textpath, L"string", text.c_str());
appendValueAttribute(&m_textpath, L"string", text);
}break;
case gtextFont:
{
@ -772,7 +772,7 @@ namespace DocFileFormat
std::wstring path = ParsePath(options);
if (false == path.empty())
m_pXmlWriter->WriteAttribute (L"path", path.c_str());
m_pXmlWriter->WriteAttribute (L"path", path);
}break;
default:
{
@ -786,7 +786,7 @@ namespace DocFileFormat
std::wstring path = ParsePath(options);
if (false == path.empty())
m_pXmlWriter->WriteAttribute (L"path", path.c_str());
m_pXmlWriter->WriteAttribute (L"path", path);
}
if ( !filled )
@ -806,7 +806,7 @@ namespace DocFileFormat
if ( ( xCoord > 0 ) && ( yCoord > 0 ) )
{
m_pXmlWriter->WriteAttribute( L"coordsize", ( FormatUtils::IntToWideString( xCoord ) + L"," + FormatUtils::IntToWideString( yCoord ) ).c_str() );
m_pXmlWriter->WriteAttribute( L"coordsize", ( FormatUtils::IntToWideString( xCoord ) + L"," + FormatUtils::IntToWideString( yCoord ) ));
}
int nCode = 0;
@ -819,7 +819,7 @@ namespace DocFileFormat
{
if (nAdjValues)
{
m_pXmlWriter->WriteAttribute(L"arcsize", adjValues[0].c_str());
m_pXmlWriter->WriteAttribute(L"arcsize", adjValues[0]);
}
}
else
@ -831,7 +831,7 @@ namespace DocFileFormat
for (int i = 1; i < nAdjValues; ++i)
adjTag += std::wstring(L",") + adjValues[i];
m_pXmlWriter->WriteAttribute(L"adj", adjTag.c_str());
m_pXmlWriter->WriteAttribute(L"adj", adjTag);
}
}
@ -853,7 +853,7 @@ namespace DocFileFormat
}
if ( !offset.empty() )
{
appendValueAttribute(&m_shadow, L"offset", offset.c_str());
appendValueAttribute(&m_shadow, L"offset", offset);
}
std::wstring offset2;
@ -873,13 +873,13 @@ namespace DocFileFormat
if (!offset2.empty())
{
appendValueAttribute(&m_shadow, L"offset2", offset2.c_str());
appendValueAttribute(&m_shadow, L"offset2", offset2);
}
//build shadow origin
if ( ( ShadowOriginX != 0 ) && ( ShadowOriginY != 0 ) )
{
appendValueAttribute(&m_shadow, L"origin", (FormatUtils::DoubleToWideString(shadowOriginX) + std::wstring(L"," ) + FormatUtils::DoubleToWideString(shadowOriginY)).c_str());
appendValueAttribute(&m_shadow, L"origin", (FormatUtils::DoubleToWideString(shadowOriginX) + std::wstring(L"," ) + FormatUtils::DoubleToWideString(shadowOriginY)));
}
// write shadow
@ -890,7 +890,7 @@ namespace DocFileFormat
appendValueAttribute(&m_shadow, L"on", L"t" );
}
m_pXmlWriter->WriteString(m_shadow.GetXMLString().c_str());
m_pXmlWriter->WriteString(m_shadow.GetXMLString());
}
//write 3d style
if (m_3dstyle.GetAttributeCount() > 0)
@ -918,7 +918,7 @@ namespace DocFileFormat
viewPoint += FormatUtils::IntToWideString( ViewPointZ ) + L"pt";
}
appendValueAttribute(&m_3dstyle, L"viewpoint", viewPoint.c_str());
appendValueAttribute(&m_3dstyle, L"viewpoint", viewPoint);
}
// write the viewpointorigin
if ( ( viewPointOriginX != 0 ) || ( viewPointOriginY != 0 ) )
@ -936,10 +936,10 @@ namespace DocFileFormat
viewPointOrigin += FormatUtils::DoubleToFormattedWideString( viewPointOriginY, L"%.2f" );
}
appendValueAttribute(&m_3dstyle, L"viewpointorigin", viewPointOrigin.c_str());
appendValueAttribute(&m_3dstyle, L"viewpointorigin", viewPointOrigin);
}
m_pXmlWriter->WriteString(m_3dstyle.GetXMLString().c_str());
m_pXmlWriter->WriteString(m_3dstyle.GetXMLString());
}
// write wrap
if (m_pSpa)
@ -949,19 +949,19 @@ namespace DocFileFormat
if (wrap != L"through")
{
m_pXmlWriter->WriteNodeBegin( L"w10:wrap", true );
m_pXmlWriter->WriteAttribute( L"type", wrap.c_str() );
m_pXmlWriter->WriteAttribute( L"type", wrap );
m_pXmlWriter->WriteNodeEnd ( L"w10:wrap", true );
}
}
// write fill
if (m_fill.GetAttributeCount())
{
m_pXmlWriter->WriteString(m_fill.GetXMLString().c_str());
m_pXmlWriter->WriteString(m_fill.GetXMLString());
}
// write imagedata
if (m_imagedata.GetAttributeCount())
{
m_pXmlWriter->WriteString(m_imagedata.GetXMLString().c_str());
m_pXmlWriter->WriteString(m_imagedata.GetXMLString());
}
if ( pShape->fBackground )
@ -972,13 +972,13 @@ namespace DocFileFormat
// write stroke
if (m_stroke.GetAttributeCount())
{
m_pXmlWriter->WriteString(m_stroke.GetXMLString().c_str());
m_pXmlWriter->WriteString(m_stroke.GetXMLString());
}
// text path
if (m_textpath.GetAttributeCount())
{
appendValueAttribute(&m_textpath, L"style", FormatUtils::XmlEncode(m_textPathStyle).c_str());
m_pXmlWriter->WriteString(m_textpath.GetXMLString().c_str());
appendValueAttribute(&m_textpath, L"style", FormatUtils::XmlEncode(m_textPathStyle));
m_pXmlWriter->WriteString(m_textpath.GetXMLString());
}
if (freeform)
{
@ -1942,7 +1942,7 @@ namespace DocFileFormat
DrawingPrimitive *primitive = dynamic_cast<DrawingPrimitive *>(primitives->at(index));
m_pXmlWriter->WriteNodeBegin(primitive->strVmlType.c_str(), true );
m_pXmlWriter->WriteNodeBegin(primitive->strVmlType, true );
if (primitive->type == 0x0007)
{
@ -1993,7 +1993,7 @@ namespace DocFileFormat
}
}
m_pXmlWriter->WriteNodeEnd( primitive->strVmlType.c_str() );
m_pXmlWriter->WriteNodeEnd( primitive->strVmlType );
index++;
return index;
@ -2009,8 +2009,8 @@ namespace DocFileFormat
std::wstring strId = std::wstring(L"_x0000_s") + FormatUtils::IntToWideString(1024 + count_vml_objects);
count_vml_objects++;
//m_pXmlWriter->WriteAttribute ( L"id") , strId.c_str());
m_pXmlWriter->WriteAttribute ( L"o:spid", strId.c_str());
//m_pXmlWriter->WriteAttribute ( L"id") , strId);
m_pXmlWriter->WriteAttribute ( L"o:spid", strId);
std::wstring strStyle = L"position:absolute;visibility:visible;mso-wrap-style:square;";
@ -2025,8 +2025,8 @@ namespace DocFileFormat
std::wstring strStart = FormatUtils::IntToWideString(line->xaStart + primitive->xa) + L"," + FormatUtils::IntToWideString(line->yaStart + primitive->ya);
std::wstring strEnd = FormatUtils::IntToWideString(line->xaEnd + primitive->xa) + L"," + FormatUtils::IntToWideString(line->yaEnd + primitive->ya);
m_pXmlWriter->WriteAttribute(L"from", strStart.c_str() );
m_pXmlWriter->WriteAttribute(L"to", strEnd.c_str());
m_pXmlWriter->WriteAttribute(L"from", strStart);
m_pXmlWriter->WriteAttribute(L"to", strEnd);
}
else
{
@ -2054,8 +2054,8 @@ namespace DocFileFormat
std::wstring strSize = FormatUtils::IntToWideString(primitive->dxa) + L"," + FormatUtils::IntToWideString(primitive->dya);
std::wstring strOrigin = FormatUtils::IntToWideString(primitive->xa) + L"," + FormatUtils::IntToWideString(primitive->ya);
m_pXmlWriter->WriteAttribute( L"coordsize", strSize.c_str());
//m_pXmlWriter->WriteAttribute( L"coordorigin"), strOrigin.c_str());
m_pXmlWriter->WriteAttribute( L"coordsize", strSize);
//m_pXmlWriter->WriteAttribute( L"coordorigin"), strOrigin);
}
else
{
@ -2070,23 +2070,23 @@ namespace DocFileFormat
if (primitive->type > 1)
{
m_pXmlWriter->WriteAttribute( L"fillColor", FormatUtils::IntToFormattedWideString(primitive->fillFore, L"#%06x").c_str());
m_pXmlWriter->WriteAttribute( L"fillColor", FormatUtils::IntToFormattedWideString(primitive->fillFore, L"#%06x"));
}
m_pXmlWriter->WriteAttribute( L"style", strStyle.c_str());
m_pXmlWriter->WriteAttribute( L"style", strStyle);
std::wstring strStrokeWeight = FormatUtils::IntToWideString(primitive->lineWeight / 20) + L"pt";
if (primitive->lineWeight > 20)
m_pXmlWriter->WriteAttribute( L"strokeweight", strStrokeWeight.c_str());
m_pXmlWriter->WriteAttribute( L"strokeweight", strStrokeWeight);
if (primitive->type > 0)
m_pXmlWriter->WriteAttribute( L"strokecolor", FormatUtils::IntToFormattedWideString(primitive->lineColor, L"#%06x").c_str());
m_pXmlWriter->WriteAttribute( L"strokecolor", FormatUtils::IntToFormattedWideString(primitive->lineColor, L"#%06x"));
m_pXmlWriter->WriteNodeEnd( L"", true, false );
if (primitive->type > 1 && primitive->fillPattern > 1)
{
m_pXmlWriter->WriteNodeBegin(L"v:fill", true );
m_pXmlWriter->WriteAttribute( L"color2", FormatUtils::IntToFormattedWideString(primitive->fillBack, L"#%06x").c_str());
m_pXmlWriter->WriteAttribute( L"color2", FormatUtils::IntToFormattedWideString(primitive->fillBack, L"#%06x"));
m_pXmlWriter->WriteAttribute( L"type", L"pattern");
m_pXmlWriter->WriteNodeEnd( L"", true, false );
m_pXmlWriter->WriteNodeEnd( L"v:fill" );
@ -2096,7 +2096,7 @@ namespace DocFileFormat
{
m_pXmlWriter->WriteNodeBegin(L"v:stroke", true );
std::wstring strDashStyle = FormatUtils::IntToWideString(primitive->lineStyle) + L" 1";
m_pXmlWriter->WriteAttribute( L"dashstyle", strDashStyle.c_str());
m_pXmlWriter->WriteAttribute( L"dashstyle", strDashStyle);
m_pXmlWriter->WriteNodeEnd( L"", true, false );
m_pXmlWriter->WriteNodeEnd( L"v:stroke" );
}

View File

@ -58,21 +58,21 @@ namespace DocFileFormat
m_pXmlWriter->WriteNodeBegin( L"v:shapetype", true );
// ID
m_pXmlWriter->WriteAttribute( L"id", GenerateTypeId( pShape ).c_str() );
m_pXmlWriter->WriteAttribute( L"id", GenerateTypeId( pShape ));
// Coordinate System
m_pXmlWriter->WriteAttribute( L"coordsize", L"21600,21600");
// Shape Code
m_pXmlWriter->WriteAttribute( L"o:spt", FormatUtils::IntToWideString( pShape->GetTypeCode() ).c_str() );
m_pXmlWriter->WriteAttribute( L"o:spt", FormatUtils::IntToWideString( pShape->GetTypeCode() ));
// Adj
if (pShape->AdjustmentValues.length())
m_pXmlWriter->WriteAttribute( L"adj", pShape->AdjustmentValues.c_str() );
m_pXmlWriter->WriteAttribute( L"adj", pShape->AdjustmentValues);
// Path
if (!pShape->Path.empty())
m_pXmlWriter->WriteAttribute( L"path", pShape->Path.c_str() );
m_pXmlWriter->WriteAttribute( L"path", pShape->Path);
else if (_isInlineShape)
m_pXmlWriter->WriteAttribute( L"path", L"m@4@5l@4@11@9@11@9@5xe");
@ -99,12 +99,12 @@ namespace DocFileFormat
if (!pShape->Textpath.empty())
{
m_pXmlWriter->WriteNodeBegin( L"v:textpath", true );
m_pXmlWriter->WriteString( pShape->Textpath.c_str() );
m_pXmlWriter->WriteString( pShape->Textpath );
m_pXmlWriter->WriteNodeEnd( L"", true );
}
// Stroke
m_pXmlWriter->WriteNodeBegin( L"v:stroke", true );
m_pXmlWriter->WriteAttribute( L"joinstyle", FormatUtils::MapValueToWideString( pShape->Joins, &JoinStyleMap[0][0], 3, 6 ).c_str() );
m_pXmlWriter->WriteAttribute( L"joinstyle", FormatUtils::MapValueToWideString( pShape->Joins, &JoinStyleMap[0][0], 3, 6 ));
m_pXmlWriter->WriteNodeEnd( L"", true );
// Formulas
@ -115,7 +115,7 @@ namespace DocFileFormat
for ( std::list<std::wstring>::iterator iter = pShape->Formulas.begin(); iter != pShape->Formulas.end(); iter++ )
{
m_pXmlWriter->WriteNodeBegin( L"v:f", true );
m_pXmlWriter->WriteAttribute( L"eqn", iter->c_str() );
m_pXmlWriter->WriteAttribute( L"eqn", *iter );
m_pXmlWriter->WriteNodeEnd( L"", true );
}
@ -147,19 +147,19 @@ namespace DocFileFormat
m_pXmlWriter->WriteAttribute( L"gradientshapeok", L"t" );
if (pShape->Limo.length())
m_pXmlWriter->WriteAttribute( L"limo", pShape->Limo.c_str() );
m_pXmlWriter->WriteAttribute( L"limo", pShape->Limo );
if (pShape->ConnectorLocations.length())
{
m_pXmlWriter->WriteAttribute( L"o:connecttype", L"custom");
m_pXmlWriter->WriteAttribute( L"o:connectlocs", pShape->ConnectorLocations.c_str() );
m_pXmlWriter->WriteAttribute( L"o:connectlocs", pShape->ConnectorLocations);
}
if (pShape->TextBoxRectangle.length())
m_pXmlWriter->WriteAttribute( L"textboxrect", pShape->TextBoxRectangle.c_str() );
m_pXmlWriter->WriteAttribute( L"textboxrect", pShape->TextBoxRectangle);
if (pShape->ConnectorAngles.length())
m_pXmlWriter->WriteAttribute( L"o:connectangles", pShape->ConnectorAngles.c_str() );
m_pXmlWriter->WriteAttribute( L"o:connectangles", pShape->ConnectorAngles);
}
WordArtTextType* wordArt = dynamic_cast<WordArtTextType*>(pShape);
if (wordArt)
@ -177,7 +177,7 @@ namespace DocFileFormat
if ( _lock->GetAttributeCount() > 1 )
{
m_pXmlWriter->WriteString( _lock->GetXMLString().c_str() );
m_pXmlWriter->WriteString( _lock->GetXMLString() );
}
// Handles
@ -190,22 +190,22 @@ namespace DocFileFormat
m_pXmlWriter->WriteNodeBegin( L"v:h", true );
if (iter->position.length())
m_pXmlWriter->WriteAttribute( L"position", iter->position.c_str() );
m_pXmlWriter->WriteAttribute( L"position", iter->position);
if (iter->switchHandle.length())
m_pXmlWriter->WriteAttribute( L"switch", iter->switchHandle.c_str() );
m_pXmlWriter->WriteAttribute( L"switch", iter->switchHandle);
if (iter->xrange.length())
m_pXmlWriter->WriteAttribute( L"xrange", iter->xrange.c_str() );
m_pXmlWriter->WriteAttribute( L"xrange", iter->xrange);
if (iter->yrange.length())
m_pXmlWriter->WriteAttribute( L"yrange", iter->yrange.c_str() );
m_pXmlWriter->WriteAttribute( L"yrange", iter->yrange);
if (iter->polar.length())
m_pXmlWriter->WriteAttribute( L"polar", iter->polar.c_str() );
m_pXmlWriter->WriteAttribute( L"polar", iter->polar);
if (iter->radiusrange.length())
m_pXmlWriter->WriteAttribute( L"radiusrange", iter->radiusrange.c_str() );
m_pXmlWriter->WriteAttribute( L"radiusrange", iter->radiusrange );
m_pXmlWriter->WriteNodeEnd( L"", true );
}

View File

@ -371,9 +371,9 @@ namespace DocFileFormat
if ( ( bookmarkName != NULL ) && ( *bookmarkName == L"_PictureBullets" ) )
{
for (unsigned int j = BookmarkStartEndCPs[i].first, k = 0; j < this->Text->size(); ++j, ++k )
for (unsigned int j = BookmarkStartEndCPs[i].first, k = 0; j < Text->size(); ++j, ++k )
{
if ( this->Text->at( j ) == 1 )
if ( Text->at( j ) == 1 )
{
PictureBulletsCPsMap.insert (std::make_pair( k, j ));
}
@ -424,7 +424,7 @@ namespace DocFileFormat
int cp = SectionPlex->CharacterPositions[i + 1];
//Get the SEPX
VirtualStreamReader wordReader( this->WordDocumentStream, sed->fcSepx, bOlderVersion);
VirtualStreamReader wordReader( WordDocumentStream, sed->fcSepx, bOlderVersion);
//!!!TODO: cbSepx is the size in bytes of the rest properties part!!!
short cbSepx = wordReader.ReadInt16();
@ -672,7 +672,7 @@ namespace DocFileFormat
//last fkp?
//use full table
if ( i++ == ( this->AllChpxFkps->size() - 1 ) )
if ( i++ == ( AllChpxFkps->size() - 1 ) )
{
max = fkp->rgfcSize;
}

View File

@ -183,7 +183,7 @@ namespace DocFileFormat
void WordprocessingDocument::SaveDocument()
{
std::wstring pathWord = m_strOutputPath + FILE_SEPARATOR_STR + _T( "word" ) ;
//OOX::CPath pathWord = CString(m_strOutputPath.c_str()) + FILE_SEPARATOR_STR + _T( "word" );
//OOX::CPath pathWord = CString(m_strOutputPath) + FILE_SEPARATOR_STR + _T( "word" );
//FileSystem::Directory::CreateDirectory( pathWord.GetPath() );
NSDirectory::CreateDirectory( pathWord );

View File

@ -0,0 +1,621 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
6967B0881E279D8D00A129E2 /* PPTFormatLib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B0071E279D8D00A129E2 /* PPTFormatLib.cpp */; };
6967B0891E279D8D00A129E2 /* Converter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B00A1E279D8D00A129E2 /* Converter.cpp */; };
6967B08A1E279D8D00A129E2 /* ShapeWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B00D1E279D8D00A129E2 /* ShapeWriter.cpp */; };
6967B08B1E279D8D00A129E2 /* PPTDocumentInfoOneUser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B0151E279D8D00A129E2 /* PPTDocumentInfoOneUser.cpp */; };
6967B08C1E279D8D00A129E2 /* ReadStructures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B0191E279D8D00A129E2 /* ReadStructures.cpp */; };
6967B08D1E279D8D00A129E2 /* Records.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B01B1E279D8D00A129E2 /* Records.cpp */; };
6967B08E1E279D8D00A129E2 /* SlidePersist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B01F1E279D8D00A129E2 /* SlidePersist.cpp */; };
6967B08F1E279D8D00A129E2 /* AnimationTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B0241E279D8D00A129E2 /* AnimationTypes.cpp */; };
6967B0901E279D8D00A129E2 /* ArtBlip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B0311E279D8D00A129E2 /* ArtBlip.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
6967AFF91E279D3900A129E2 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "include/$(PRODUCT_NAME)";
dstSubfolderSpec = 16;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
6967AFFB1E279D3900A129E2 /* libPPTFormatLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPPTFormatLib.a; sourceTree = BUILT_PRODUCTS_DIR; };
6967B0071E279D8D00A129E2 /* PPTFormatLib.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PPTFormatLib.cpp; path = ../../PPTFormatLib.cpp; sourceTree = "<group>"; };
6967B0081E279D8D00A129E2 /* PPTFormatLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PPTFormatLib.h; path = ../../PPTFormatLib.h; sourceTree = "<group>"; };
6967B00A1E279D8D00A129E2 /* Converter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Converter.cpp; sourceTree = "<group>"; };
6967B00B1E279D8D00A129E2 /* Converter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Converter.h; sourceTree = "<group>"; };
6967B00C1E279D8D00A129E2 /* ImageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageManager.h; sourceTree = "<group>"; };
6967B00D1E279D8D00A129E2 /* ShapeWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeWriter.cpp; sourceTree = "<group>"; };
6967B00E1E279D8D00A129E2 /* ShapeWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeWriter.h; sourceTree = "<group>"; };
6967B00F1E279D8D00A129E2 /* StylesWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StylesWriter.h; sourceTree = "<group>"; };
6967B0111E279D8D00A129E2 /* AudioOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioOverlay.h; sourceTree = "<group>"; };
6967B0121E279D8D00A129E2 /* ClassesAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassesAtom.h; sourceTree = "<group>"; };
6967B0131E279D8D00A129E2 /* CommonZLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonZLib.h; sourceTree = "<group>"; };
6967B0141E279D8D00A129E2 /* PPTDocumentInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PPTDocumentInfo.h; sourceTree = "<group>"; };
6967B0151E279D8D00A129E2 /* PPTDocumentInfoOneUser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PPTDocumentInfoOneUser.cpp; sourceTree = "<group>"; };
6967B0161E279D8D00A129E2 /* PPTDocumentInfoOneUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PPTDocumentInfoOneUser.h; sourceTree = "<group>"; };
6967B0171E279D8D00A129E2 /* PPTFileDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PPTFileDefines.h; sourceTree = "<group>"; };
6967B0181E279D8D00A129E2 /* PPTFileReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PPTFileReader.h; sourceTree = "<group>"; };
6967B0191E279D8D00A129E2 /* ReadStructures.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadStructures.cpp; sourceTree = "<group>"; };
6967B01A1E279D8D00A129E2 /* ReadStructures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadStructures.h; sourceTree = "<group>"; };
6967B01B1E279D8D00A129E2 /* Records.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Records.cpp; sourceTree = "<group>"; };
6967B01C1E279D8D00A129E2 /* Records.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Records.h; sourceTree = "<group>"; };
6967B01D1E279D8D00A129E2 /* Slide.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Slide.h; sourceTree = "<group>"; };
6967B01E1E279D8D00A129E2 /* SlideInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideInfo.h; sourceTree = "<group>"; };
6967B01F1E279D8D00A129E2 /* SlidePersist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SlidePersist.cpp; sourceTree = "<group>"; };
6967B0201E279D8D00A129E2 /* SlidePersist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlidePersist.h; sourceTree = "<group>"; };
6967B0221E279D8D00A129E2 /* AnimationInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationInfoAtom.h; sourceTree = "<group>"; };
6967B0241E279D8D00A129E2 /* AnimationTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationTypes.cpp; sourceTree = "<group>"; };
6967B0251E279D8D00A129E2 /* AnimationTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationTypes.h; sourceTree = "<group>"; };
6967B0261E279D8D00A129E2 /* BlipEntityAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlipEntityAtom.h; sourceTree = "<group>"; };
6967B0271E279D8D00A129E2 /* BookmarkEntityAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookmarkEntityAtom.h; sourceTree = "<group>"; };
6967B0281E279D8D00A129E2 /* BookmarkSeedAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookmarkSeedAtom.h; sourceTree = "<group>"; };
6967B0291E279D8D00A129E2 /* ColorSchemeAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorSchemeAtom.h; sourceTree = "<group>"; };
6967B02A1E279D8D00A129E2 /* CString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CString.h; sourceTree = "<group>"; };
6967B02B1E279D8D00A129E2 /* CurrentUserAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CurrentUserAtom.h; sourceTree = "<group>"; };
6967B02C1E279D8D00A129E2 /* DocRoutingSlipAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocRoutingSlipAtom.h; sourceTree = "<group>"; };
6967B02D1E279D8D00A129E2 /* DocumentAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentAtom.h; sourceTree = "<group>"; };
6967B02E1E279D8D00A129E2 /* DocumentRecords.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentRecords.h; sourceTree = "<group>"; };
6967B02F1E279D8D00A129E2 /* DocumentTextInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentTextInfo.h; sourceTree = "<group>"; };
6967B0311E279D8D00A129E2 /* ArtBlip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArtBlip.cpp; sourceTree = "<group>"; };
6967B0321E279D8D00A129E2 /* ArtBlip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArtBlip.h; sourceTree = "<group>"; };
6967B0331E279D8D00A129E2 /* BlipStoreContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlipStoreContainer.h; sourceTree = "<group>"; };
6967B0341E279D8D00A129E2 /* BlipStoreEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlipStoreEntry.h; sourceTree = "<group>"; };
6967B0351E279D8D00A129E2 /* ChildAnchor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChildAnchor.h; sourceTree = "<group>"; };
6967B0361E279D8D00A129E2 /* ClientAnchor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClientAnchor.h; sourceTree = "<group>"; };
6967B0371E279D8D00A129E2 /* DrawingContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingContainer.h; sourceTree = "<group>"; };
6967B0381E279D8D00A129E2 /* DrawingGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingGroup.h; sourceTree = "<group>"; };
6967B0391E279D8D00A129E2 /* DrawingRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingRecord.h; sourceTree = "<group>"; };
6967B03A1E279D8D00A129E2 /* GroupShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupShape.h; sourceTree = "<group>"; };
6967B03B1E279D8D00A129E2 /* GroupShapeContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupShapeContainer.h; sourceTree = "<group>"; };
6967B03C1E279D8D00A129E2 /* RegGroupItems.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegGroupItems.h; sourceTree = "<group>"; };
6967B03D1E279D8D00A129E2 /* Shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Shape.h; sourceTree = "<group>"; };
6967B03E1E279D8D00A129E2 /* ShapeContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeContainer.h; sourceTree = "<group>"; };
6967B03F1E279D8D00A129E2 /* ShapeProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeProperties.h; sourceTree = "<group>"; };
6967B0401E279D8D00A129E2 /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBox.h; sourceTree = "<group>"; };
6967B0411E279D8D00A129E2 /* EndDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EndDocument.h; sourceTree = "<group>"; };
6967B0421E279D8D00A129E2 /* ExCDAudioContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExCDAudioContainer.h; sourceTree = "<group>"; };
6967B0431E279D8D00A129E2 /* ExControlAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExControlAtom.h; sourceTree = "<group>"; };
6967B0441E279D8D00A129E2 /* ExHyperlinkAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExHyperlinkAtom.h; sourceTree = "<group>"; };
6967B0451E279D8D00A129E2 /* ExMediaAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExMediaAtom.h; sourceTree = "<group>"; };
6967B0461E279D8D00A129E2 /* ExMIDIAudioContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExMIDIAudioContainer.h; sourceTree = "<group>"; };
6967B0471E279D8D00A129E2 /* ExObjListAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExObjListAtom.h; sourceTree = "<group>"; };
6967B0481E279D8D00A129E2 /* ExObjListContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExObjListContainer.h; sourceTree = "<group>"; };
6967B0491E279D8D00A129E2 /* ExObjRefAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExObjRefAtom.h; sourceTree = "<group>"; };
6967B04A1E279D8D00A129E2 /* ExOleEmbedAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExOleEmbedAtom.h; sourceTree = "<group>"; };
6967B04B1E279D8D00A129E2 /* ExOleLinkAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExOleLinkAtom.h; sourceTree = "<group>"; };
6967B04C1E279D8D00A129E2 /* ExOleObjAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExOleObjAtom.h; sourceTree = "<group>"; };
6967B04D1E279D8D00A129E2 /* ExVideoContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExVideoContainer.h; sourceTree = "<group>"; };
6967B04E1E279D8D00A129E2 /* ExWAVAudioEmbeddedContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExWAVAudioEmbeddedContainer.h; sourceTree = "<group>"; };
6967B04F1E279D8D00A129E2 /* ExWAVAudioLinkContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExWAVAudioLinkContainer.h; sourceTree = "<group>"; };
6967B0501E279D8D00A129E2 /* FontEntityAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontEntityAtom.h; sourceTree = "<group>"; };
6967B0511E279D8D00A129E2 /* GridSpacing10Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GridSpacing10Atom.h; sourceTree = "<group>"; };
6967B0521E279D8D00A129E2 /* GuideAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuideAtom.h; sourceTree = "<group>"; };
6967B0531E279D8D00A129E2 /* HeadersFootersAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeadersFootersAtom.h; sourceTree = "<group>"; };
6967B0541E279D8D00A129E2 /* InteractiveInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InteractiveInfoAtom.h; sourceTree = "<group>"; };
6967B0551E279D8D00A129E2 /* KinsokuAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KinsokuAtom.h; sourceTree = "<group>"; };
6967B0561E279D8D00A129E2 /* MasterPersistAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MasterPersistAtom.h; sourceTree = "<group>"; };
6967B0571E279D8D00A129E2 /* MasterTextPropAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MasterTextPropAtom.h; sourceTree = "<group>"; };
6967B0581E279D8D00A129E2 /* MetafileBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MetafileBlob.h; sourceTree = "<group>"; };
6967B0591E279D8D00A129E2 /* MouseTextInteractiveInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MouseTextInteractiveInfoAtom.h; sourceTree = "<group>"; };
6967B05A1E279D8D00A129E2 /* NamedShowSlidesAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NamedShowSlidesAtom.h; sourceTree = "<group>"; };
6967B05B1E279D8D00A129E2 /* NormalViewSetInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NormalViewSetInfoAtom.h; sourceTree = "<group>"; };
6967B05C1E279D8D00A129E2 /* NotesAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotesAtom.h; sourceTree = "<group>"; };
6967B05D1E279D8D00A129E2 /* NotesPersistAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotesPersistAtom.h; sourceTree = "<group>"; };
6967B05E1E279D8D00A129E2 /* NoZoomViewInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoZoomViewInfoAtom.h; sourceTree = "<group>"; };
6967B05F1E279D8D00A129E2 /* OutlineTextRefAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutlineTextRefAtom.h; sourceTree = "<group>"; };
6967B0601E279D8D00A129E2 /* PersistDirectoryAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PersistDirectoryAtom.h; sourceTree = "<group>"; };
6967B0611E279D8D00A129E2 /* PlaceHolderAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaceHolderAtom.h; sourceTree = "<group>"; };
6967B0621E279D8D00A129E2 /* RecordsIncluder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecordsIncluder.h; sourceTree = "<group>"; };
6967B0631E279D8D00A129E2 /* RoundTripColorMappingAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoundTripColorMappingAtom.h; sourceTree = "<group>"; };
6967B0641E279D8D00A129E2 /* RoundTripCompositeMainMasterId12Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoundTripCompositeMainMasterId12Atom.h; sourceTree = "<group>"; };
6967B0651E279D8D00A129E2 /* RoundTripNewPlaceholderId12Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoundTripNewPlaceholderId12Atom.h; sourceTree = "<group>"; };
6967B0661E279D8D00A129E2 /* RoundTripOriginalMainMasterId12Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoundTripOriginalMainMasterId12Atom.h; sourceTree = "<group>"; };
6967B0671E279D8D00A129E2 /* RoundTripThemeAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoundTripThemeAtom.h; sourceTree = "<group>"; };
6967B0681E279D8D00A129E2 /* ShapeFlags10Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeFlags10Atom.h; sourceTree = "<group>"; };
6967B0691E279D8D00A129E2 /* ShapeFlagsAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeFlagsAtom.h; sourceTree = "<group>"; };
6967B06A1E279D8D00A129E2 /* SlideAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideAtom.h; sourceTree = "<group>"; };
6967B06B1E279D8D00A129E2 /* SlideColorSchemeAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideColorSchemeAtom.h; sourceTree = "<group>"; };
6967B06C1E279D8D00A129E2 /* SlideContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideContainer.h; sourceTree = "<group>"; };
6967B06D1E279D8D00A129E2 /* SlideListWithText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideListWithText.h; sourceTree = "<group>"; };
6967B06E1E279D8D00A129E2 /* SlidePersistAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlidePersistAtom.h; sourceTree = "<group>"; };
6967B06F1E279D8D00A129E2 /* SlideViewInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideViewInfoAtom.h; sourceTree = "<group>"; };
6967B0701E279D8D00A129E2 /* SoundCollAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundCollAtom.h; sourceTree = "<group>"; };
6967B0711E279D8D00A129E2 /* SoundCollectionContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundCollectionContainer.h; sourceTree = "<group>"; };
6967B0721E279D8D00A129E2 /* SoundContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundContainer.h; sourceTree = "<group>"; };
6967B0731E279D8D00A129E2 /* SoundDataBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundDataBlob.h; sourceTree = "<group>"; };
6967B0741E279D8D00A129E2 /* SSDocInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSDocInfoAtom.h; sourceTree = "<group>"; };
6967B0751E279D8D00A129E2 /* SSlideLayoutAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSlideLayoutAtom.h; sourceTree = "<group>"; };
6967B0761E279D8D00A129E2 /* SSSlideInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSSlideInfoAtom.h; sourceTree = "<group>"; };
6967B0771E279D8D00A129E2 /* StyleTextPropAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleTextPropAtom.h; sourceTree = "<group>"; };
6967B0781E279D8D00A129E2 /* TextBookmarkAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBookmarkAtom.h; sourceTree = "<group>"; };
6967B0791E279D8D00A129E2 /* TextBytesAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBytesAtom.h; sourceTree = "<group>"; };
6967B07A1E279D8D00A129E2 /* TextCFExceptionAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCFExceptionAtom.h; sourceTree = "<group>"; };
6967B07B1E279D8D00A129E2 /* TextCharsAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCharsAtom.h; sourceTree = "<group>"; };
6967B07C1E279D8D00A129E2 /* TextFullSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextFullSettings.h; sourceTree = "<group>"; };
6967B07D1E279D8D00A129E2 /* TextHeaderAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextHeaderAtom.h; sourceTree = "<group>"; };
6967B07E1E279D8D00A129E2 /* TextInteractiveInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextInteractiveInfoAtom.h; sourceTree = "<group>"; };
6967B07F1E279D8D00A129E2 /* TextMasterStyleAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextMasterStyleAtom.h; sourceTree = "<group>"; };
6967B0801E279D8D00A129E2 /* TextPFExceptionAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextPFExceptionAtom.h; sourceTree = "<group>"; };
6967B0811E279D8D00A129E2 /* TextRulerAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextRulerAtom.h; sourceTree = "<group>"; };
6967B0821E279D8D00A129E2 /* TextSIExceptionAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextSIExceptionAtom.h; sourceTree = "<group>"; };
6967B0831E279D8D00A129E2 /* TextSpecInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextSpecInfoAtom.h; sourceTree = "<group>"; };
6967B0841E279D8D00A129E2 /* UserEditAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserEditAtom.h; sourceTree = "<group>"; };
6967B0851E279D8D00A129E2 /* VBAInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VBAInfoAtom.h; sourceTree = "<group>"; };
6967B0861E279D8D00A129E2 /* ViewInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewInfoAtom.h; sourceTree = "<group>"; };
6967B0871E279D8D00A129E2 /* ZoomViewInfoAtom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZoomViewInfoAtom.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
6967AFF81E279D3900A129E2 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
6967AFF21E279D3900A129E2 = {
isa = PBXGroup;
children = (
6967AFFD1E279D3900A129E2 /* PPTFormatLib */,
6967AFFC1E279D3900A129E2 /* Products */,
);
sourceTree = "<group>";
};
6967AFFC1E279D3900A129E2 /* Products */ = {
isa = PBXGroup;
children = (
6967AFFB1E279D3900A129E2 /* libPPTFormatLib.a */,
);
name = Products;
sourceTree = "<group>";
};
6967AFFD1E279D3900A129E2 /* PPTFormatLib */ = {
isa = PBXGroup;
children = (
6967B0071E279D8D00A129E2 /* PPTFormatLib.cpp */,
6967B0081E279D8D00A129E2 /* PPTFormatLib.h */,
6967B0091E279D8D00A129E2 /* PPTXWriter */,
6967B0101E279D8D00A129E2 /* Reader */,
6967B0211E279D8D00A129E2 /* Records */,
);
path = PPTFormatLib;
sourceTree = "<group>";
};
6967B0091E279D8D00A129E2 /* PPTXWriter */ = {
isa = PBXGroup;
children = (
6967B00A1E279D8D00A129E2 /* Converter.cpp */,
6967B00B1E279D8D00A129E2 /* Converter.h */,
6967B00C1E279D8D00A129E2 /* ImageManager.h */,
6967B00D1E279D8D00A129E2 /* ShapeWriter.cpp */,
6967B00E1E279D8D00A129E2 /* ShapeWriter.h */,
6967B00F1E279D8D00A129E2 /* StylesWriter.h */,
);
name = PPTXWriter;
path = ../../PPTXWriter;
sourceTree = "<group>";
};
6967B0101E279D8D00A129E2 /* Reader */ = {
isa = PBXGroup;
children = (
6967B0111E279D8D00A129E2 /* AudioOverlay.h */,
6967B0121E279D8D00A129E2 /* ClassesAtom.h */,
6967B0131E279D8D00A129E2 /* CommonZLib.h */,
6967B0141E279D8D00A129E2 /* PPTDocumentInfo.h */,
6967B0151E279D8D00A129E2 /* PPTDocumentInfoOneUser.cpp */,
6967B0161E279D8D00A129E2 /* PPTDocumentInfoOneUser.h */,
6967B0171E279D8D00A129E2 /* PPTFileDefines.h */,
6967B0181E279D8D00A129E2 /* PPTFileReader.h */,
6967B0191E279D8D00A129E2 /* ReadStructures.cpp */,
6967B01A1E279D8D00A129E2 /* ReadStructures.h */,
6967B01B1E279D8D00A129E2 /* Records.cpp */,
6967B01C1E279D8D00A129E2 /* Records.h */,
6967B01D1E279D8D00A129E2 /* Slide.h */,
6967B01E1E279D8D00A129E2 /* SlideInfo.h */,
6967B01F1E279D8D00A129E2 /* SlidePersist.cpp */,
6967B0201E279D8D00A129E2 /* SlidePersist.h */,
);
name = Reader;
path = ../../Reader;
sourceTree = "<group>";
};
6967B0211E279D8D00A129E2 /* Records */ = {
isa = PBXGroup;
children = (
6967B0221E279D8D00A129E2 /* AnimationInfoAtom.h */,
6967B0231E279D8D00A129E2 /* Animations */,
6967B0261E279D8D00A129E2 /* BlipEntityAtom.h */,
6967B0271E279D8D00A129E2 /* BookmarkEntityAtom.h */,
6967B0281E279D8D00A129E2 /* BookmarkSeedAtom.h */,
6967B0291E279D8D00A129E2 /* ColorSchemeAtom.h */,
6967B02A1E279D8D00A129E2 /* CString.h */,
6967B02B1E279D8D00A129E2 /* CurrentUserAtom.h */,
6967B02C1E279D8D00A129E2 /* DocRoutingSlipAtom.h */,
6967B02D1E279D8D00A129E2 /* DocumentAtom.h */,
6967B02E1E279D8D00A129E2 /* DocumentRecords.h */,
6967B02F1E279D8D00A129E2 /* DocumentTextInfo.h */,
6967B0301E279D8D00A129E2 /* Drawing */,
6967B0411E279D8D00A129E2 /* EndDocument.h */,
6967B0421E279D8D00A129E2 /* ExCDAudioContainer.h */,
6967B0431E279D8D00A129E2 /* ExControlAtom.h */,
6967B0441E279D8D00A129E2 /* ExHyperlinkAtom.h */,
6967B0451E279D8D00A129E2 /* ExMediaAtom.h */,
6967B0461E279D8D00A129E2 /* ExMIDIAudioContainer.h */,
6967B0471E279D8D00A129E2 /* ExObjListAtom.h */,
6967B0481E279D8D00A129E2 /* ExObjListContainer.h */,
6967B0491E279D8D00A129E2 /* ExObjRefAtom.h */,
6967B04A1E279D8D00A129E2 /* ExOleEmbedAtom.h */,
6967B04B1E279D8D00A129E2 /* ExOleLinkAtom.h */,
6967B04C1E279D8D00A129E2 /* ExOleObjAtom.h */,
6967B04D1E279D8D00A129E2 /* ExVideoContainer.h */,
6967B04E1E279D8D00A129E2 /* ExWAVAudioEmbeddedContainer.h */,
6967B04F1E279D8D00A129E2 /* ExWAVAudioLinkContainer.h */,
6967B0501E279D8D00A129E2 /* FontEntityAtom.h */,
6967B0511E279D8D00A129E2 /* GridSpacing10Atom.h */,
6967B0521E279D8D00A129E2 /* GuideAtom.h */,
6967B0531E279D8D00A129E2 /* HeadersFootersAtom.h */,
6967B0541E279D8D00A129E2 /* InteractiveInfoAtom.h */,
6967B0551E279D8D00A129E2 /* KinsokuAtom.h */,
6967B0561E279D8D00A129E2 /* MasterPersistAtom.h */,
6967B0571E279D8D00A129E2 /* MasterTextPropAtom.h */,
6967B0581E279D8D00A129E2 /* MetafileBlob.h */,
6967B0591E279D8D00A129E2 /* MouseTextInteractiveInfoAtom.h */,
6967B05A1E279D8D00A129E2 /* NamedShowSlidesAtom.h */,
6967B05B1E279D8D00A129E2 /* NormalViewSetInfoAtom.h */,
6967B05C1E279D8D00A129E2 /* NotesAtom.h */,
6967B05D1E279D8D00A129E2 /* NotesPersistAtom.h */,
6967B05E1E279D8D00A129E2 /* NoZoomViewInfoAtom.h */,
6967B05F1E279D8D00A129E2 /* OutlineTextRefAtom.h */,
6967B0601E279D8D00A129E2 /* PersistDirectoryAtom.h */,
6967B0611E279D8D00A129E2 /* PlaceHolderAtom.h */,
6967B0621E279D8D00A129E2 /* RecordsIncluder.h */,
6967B0631E279D8D00A129E2 /* RoundTripColorMappingAtom.h */,
6967B0641E279D8D00A129E2 /* RoundTripCompositeMainMasterId12Atom.h */,
6967B0651E279D8D00A129E2 /* RoundTripNewPlaceholderId12Atom.h */,
6967B0661E279D8D00A129E2 /* RoundTripOriginalMainMasterId12Atom.h */,
6967B0671E279D8D00A129E2 /* RoundTripThemeAtom.h */,
6967B0681E279D8D00A129E2 /* ShapeFlags10Atom.h */,
6967B0691E279D8D00A129E2 /* ShapeFlagsAtom.h */,
6967B06A1E279D8D00A129E2 /* SlideAtom.h */,
6967B06B1E279D8D00A129E2 /* SlideColorSchemeAtom.h */,
6967B06C1E279D8D00A129E2 /* SlideContainer.h */,
6967B06D1E279D8D00A129E2 /* SlideListWithText.h */,
6967B06E1E279D8D00A129E2 /* SlidePersistAtom.h */,
6967B06F1E279D8D00A129E2 /* SlideViewInfoAtom.h */,
6967B0701E279D8D00A129E2 /* SoundCollAtom.h */,
6967B0711E279D8D00A129E2 /* SoundCollectionContainer.h */,
6967B0721E279D8D00A129E2 /* SoundContainer.h */,
6967B0731E279D8D00A129E2 /* SoundDataBlob.h */,
6967B0741E279D8D00A129E2 /* SSDocInfoAtom.h */,
6967B0751E279D8D00A129E2 /* SSlideLayoutAtom.h */,
6967B0761E279D8D00A129E2 /* SSSlideInfoAtom.h */,
6967B0771E279D8D00A129E2 /* StyleTextPropAtom.h */,
6967B0781E279D8D00A129E2 /* TextBookmarkAtom.h */,
6967B0791E279D8D00A129E2 /* TextBytesAtom.h */,
6967B07A1E279D8D00A129E2 /* TextCFExceptionAtom.h */,
6967B07B1E279D8D00A129E2 /* TextCharsAtom.h */,
6967B07C1E279D8D00A129E2 /* TextFullSettings.h */,
6967B07D1E279D8D00A129E2 /* TextHeaderAtom.h */,
6967B07E1E279D8D00A129E2 /* TextInteractiveInfoAtom.h */,
6967B07F1E279D8D00A129E2 /* TextMasterStyleAtom.h */,
6967B0801E279D8D00A129E2 /* TextPFExceptionAtom.h */,
6967B0811E279D8D00A129E2 /* TextRulerAtom.h */,
6967B0821E279D8D00A129E2 /* TextSIExceptionAtom.h */,
6967B0831E279D8D00A129E2 /* TextSpecInfoAtom.h */,
6967B0841E279D8D00A129E2 /* UserEditAtom.h */,
6967B0851E279D8D00A129E2 /* VBAInfoAtom.h */,
6967B0861E279D8D00A129E2 /* ViewInfoAtom.h */,
6967B0871E279D8D00A129E2 /* ZoomViewInfoAtom.h */,
);
name = Records;
path = ../../Records;
sourceTree = "<group>";
};
6967B0231E279D8D00A129E2 /* Animations */ = {
isa = PBXGroup;
children = (
6967B0241E279D8D00A129E2 /* AnimationTypes.cpp */,
6967B0251E279D8D00A129E2 /* AnimationTypes.h */,
);
path = Animations;
sourceTree = "<group>";
};
6967B0301E279D8D00A129E2 /* Drawing */ = {
isa = PBXGroup;
children = (
6967B0311E279D8D00A129E2 /* ArtBlip.cpp */,
6967B0321E279D8D00A129E2 /* ArtBlip.h */,
6967B0331E279D8D00A129E2 /* BlipStoreContainer.h */,
6967B0341E279D8D00A129E2 /* BlipStoreEntry.h */,
6967B0351E279D8D00A129E2 /* ChildAnchor.h */,
6967B0361E279D8D00A129E2 /* ClientAnchor.h */,
6967B0371E279D8D00A129E2 /* DrawingContainer.h */,
6967B0381E279D8D00A129E2 /* DrawingGroup.h */,
6967B0391E279D8D00A129E2 /* DrawingRecord.h */,
6967B03A1E279D8D00A129E2 /* GroupShape.h */,
6967B03B1E279D8D00A129E2 /* GroupShapeContainer.h */,
6967B03C1E279D8D00A129E2 /* RegGroupItems.h */,
6967B03D1E279D8D00A129E2 /* Shape.h */,
6967B03E1E279D8D00A129E2 /* ShapeContainer.h */,
6967B03F1E279D8D00A129E2 /* ShapeProperties.h */,
6967B0401E279D8D00A129E2 /* TextBox.h */,
);
path = Drawing;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
6967AFFA1E279D3900A129E2 /* PPTFormatLib */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6967B0041E279D3900A129E2 /* Build configuration list for PBXNativeTarget "PPTFormatLib" */;
buildPhases = (
6967AFF71E279D3900A129E2 /* Sources */,
6967AFF81E279D3900A129E2 /* Frameworks */,
6967AFF91E279D3900A129E2 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = PPTFormatLib;
productName = PPTFormatLib;
productReference = 6967AFFB1E279D3900A129E2 /* libPPTFormatLib.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
6967AFF31E279D3900A129E2 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0820;
ORGANIZATIONNAME = OnlyOffce;
TargetAttributes = {
6967AFFA1E279D3900A129E2 = {
CreatedOnToolsVersion = 8.2;
DevelopmentTeam = 2WH24U26GJ;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 6967AFF61E279D3900A129E2 /* Build configuration list for PBXProject "PPTFormatLib" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 6967AFF21E279D3900A129E2;
productRefGroup = 6967AFFC1E279D3900A129E2 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
6967AFFA1E279D3900A129E2 /* PPTFormatLib */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
6967AFF71E279D3900A129E2 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6967B08F1E279D8D00A129E2 /* AnimationTypes.cpp in Sources */,
6967B08E1E279D8D00A129E2 /* SlidePersist.cpp in Sources */,
6967B0891E279D8D00A129E2 /* Converter.cpp in Sources */,
6967B0881E279D8D00A129E2 /* PPTFormatLib.cpp in Sources */,
6967B08D1E279D8D00A129E2 /* Records.cpp in Sources */,
6967B08A1E279D8D00A129E2 /* ShapeWriter.cpp in Sources */,
6967B08C1E279D8D00A129E2 /* ReadStructures.cpp in Sources */,
6967B08B1E279D8D00A129E2 /* PPTDocumentInfoOneUser.cpp in Sources */,
6967B0901E279D8D00A129E2 /* ArtBlip.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
6967B0021E279D3900A129E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
6967B0031E279D3900A129E2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
6967B0051E279D3900A129E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = 2WH24U26GJ;
GCC_PREPROCESSOR_DEFINITIONS = (
UNICODE,
_UNICODE,
_USE_LIBXML2_READER_,
_USE_XMLLITE_READER_,
USE_LITE_READER,
LIBXML_READER_ENABLED,
MAC,
unix,
_IOS,
DONT_WRITE_EMBEDDED_FONTS,
BUILD_CONFIG_FULL_VERSION,
_SVG_CONVERT_TO_IMAGE_,
_PRESENTATION_WRITER_,
ENABLE_PPT_TO_PPTX_CONVERT,
PPT_DEF,
PPTX_DEF,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/usr/include/,
/usr/include/libxml2/,
"$(PROJECT_DIR)/../../../Common/3dParty/boost/boost_1_58_0",
"$(PROJECT_DIR)/../../../DesktopEditor/xml/libxml2/include",
"$(PROJECT_DIR)/../../../DesktopEditor/freetype-2.5.2/include",
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Debug;
};
6967B0061E279D3900A129E2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = 2WH24U26GJ;
GCC_PREPROCESSOR_DEFINITIONS = (
UNICODE,
_UNICODE,
_USE_LIBXML2_READER_,
_USE_XMLLITE_READER_,
USE_LITE_READER,
LIBXML_READER_ENABLED,
MAC,
unix,
_IOS,
DONT_WRITE_EMBEDDED_FONTS,
BUILD_CONFIG_FULL_VERSION,
_SVG_CONVERT_TO_IMAGE_,
_PRESENTATION_WRITER_,
ENABLE_PPT_TO_PPTX_CONVERT,
PPT_DEF,
PPTX_DEF,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/usr/include/,
/usr/include/libxml2/,
"$(PROJECT_DIR)/../../../Common/3dParty/boost/boost_1_58_0",
"$(PROJECT_DIR)/../../../DesktopEditor/xml/libxml2/include",
"$(PROJECT_DIR)/../../../DesktopEditor/freetype-2.5.2/include",
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
6967AFF61E279D3900A129E2 /* Build configuration list for PBXProject "PPTFormatLib" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6967B0021E279D3900A129E2 /* Debug */,
6967B0031E279D3900A129E2 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6967B0041E279D3900A129E2 /* Build configuration list for PBXNativeTarget "PPTFormatLib" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6967B0051E279D3900A129E2 /* Debug */,
6967B0061E279D3900A129E2 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 6967AFF31E279D3900A129E2 /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:PPTFormatLib.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1 @@
DO NOT REMOVE FOLDER FOR XCODE

View File

@ -288,7 +288,9 @@ namespace NSPresentationEditor
strRels += strHyperlink + L"\"/>";
m_oWriter.WriteString(strRels);
}
return strRid;
}
AVSINLINE CString WriteHyperlinkImage(const std::wstring& strImage, bool bExternal = true)
{

View File

@ -0,0 +1,368 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
6967AFD41E2798DB00A129E2 /* ConvertDocx2Txt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967AFCC1E2798DB00A129E2 /* ConvertDocx2Txt.cpp */; };
6967AFD51E2798DB00A129E2 /* ConvertTxt2Docx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967AFCE1E2798DB00A129E2 /* ConvertTxt2Docx.cpp */; };
6967AFD61E2798DB00A129E2 /* TxtXmlFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967AFD21E2798DB00A129E2 /* TxtXmlFile.cpp */; };
6967AFE81E279C6F00A129E2 /* Encoding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967AFE11E279C6F00A129E2 /* Encoding.cpp */; };
6967AFE91E279C6F00A129E2 /* ToString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967AFE51E279C6F00A129E2 /* ToString.cpp */; };
6967AFF01E279C7700A129E2 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967AFEB1E279C7700A129E2 /* File.cpp */; };
6967AFF11E279C7700A129E2 /* TxtFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967AFED1E279C7700A129E2 /* TxtFile.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
6967AFBD1E2798B900A129E2 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "include/$(PRODUCT_NAME)";
dstSubfolderSpec = 16;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
6967AFBF1E2798B900A129E2 /* libTxtXmlFormatLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTxtXmlFormatLib.a; sourceTree = BUILT_PRODUCTS_DIR; };
6967AFCC1E2798DB00A129E2 /* ConvertDocx2Txt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConvertDocx2Txt.cpp; path = ../../../Source/ConvertDocx2Txt.cpp; sourceTree = "<group>"; };
6967AFCD1E2798DB00A129E2 /* ConvertDocx2Txt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConvertDocx2Txt.h; path = ../../../Source/ConvertDocx2Txt.h; sourceTree = "<group>"; };
6967AFCE1E2798DB00A129E2 /* ConvertTxt2Docx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConvertTxt2Docx.cpp; path = ../../../Source/ConvertTxt2Docx.cpp; sourceTree = "<group>"; };
6967AFCF1E2798DB00A129E2 /* ConvertTxt2Docx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConvertTxt2Docx.h; path = ../../../Source/ConvertTxt2Docx.h; sourceTree = "<group>"; };
6967AFD11E2798DB00A129E2 /* TxtXmlEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TxtXmlEvent.h; path = ../../../Source/TxtXmlEvent.h; sourceTree = "<group>"; };
6967AFD21E2798DB00A129E2 /* TxtXmlFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TxtXmlFile.cpp; path = ../../../Source/TxtXmlFile.cpp; sourceTree = "<group>"; };
6967AFD31E2798DB00A129E2 /* TxtXmlFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TxtXmlFile.h; path = ../../../Source/TxtXmlFile.h; sourceTree = "<group>"; };
6967AFE11E279C6F00A129E2 /* Encoding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Encoding.cpp; sourceTree = "<group>"; };
6967AFE21E279C6F00A129E2 /* Encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Encoding.h; sourceTree = "<group>"; };
6967AFE31E279C6F00A129E2 /* precompiled_utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = precompiled_utility.h; sourceTree = "<group>"; };
6967AFE41E279C6F00A129E2 /* StlUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StlUtils.h; sourceTree = "<group>"; };
6967AFE51E279C6F00A129E2 /* ToString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ToString.cpp; sourceTree = "<group>"; };
6967AFE61E279C6F00A129E2 /* ToString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ToString.h; sourceTree = "<group>"; };
6967AFE71E279C6F00A129E2 /* Utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utility.h; sourceTree = "<group>"; };
6967AFEB1E279C7700A129E2 /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = "<group>"; };
6967AFEC1E279C7700A129E2 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = File.h; sourceTree = "<group>"; };
6967AFED1E279C7700A129E2 /* TxtFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TxtFile.cpp; sourceTree = "<group>"; };
6967AFEE1E279C7700A129E2 /* TxtFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TxtFile.h; sourceTree = "<group>"; };
6967AFEF1E279C7700A129E2 /* TxtFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TxtFormat.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
6967AFBC1E2798B900A129E2 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
6967AFB61E2798B900A129E2 = {
isa = PBXGroup;
children = (
6967AFC11E2798B900A129E2 /* TxtXmlFormatLib */,
6967AFC01E2798B900A129E2 /* Products */,
);
sourceTree = "<group>";
};
6967AFC01E2798B900A129E2 /* Products */ = {
isa = PBXGroup;
children = (
6967AFBF1E2798B900A129E2 /* libTxtXmlFormatLib.a */,
);
name = Products;
sourceTree = "<group>";
};
6967AFC11E2798B900A129E2 /* TxtXmlFormatLib */ = {
isa = PBXGroup;
children = (
6967AFEA1E279C7700A129E2 /* TxtFormat */,
6967AFE01E279C6F00A129E2 /* Common */,
6967AFCC1E2798DB00A129E2 /* ConvertDocx2Txt.cpp */,
6967AFCD1E2798DB00A129E2 /* ConvertDocx2Txt.h */,
6967AFCE1E2798DB00A129E2 /* ConvertTxt2Docx.cpp */,
6967AFCF1E2798DB00A129E2 /* ConvertTxt2Docx.h */,
6967AFD11E2798DB00A129E2 /* TxtXmlEvent.h */,
6967AFD21E2798DB00A129E2 /* TxtXmlFile.cpp */,
6967AFD31E2798DB00A129E2 /* TxtXmlFile.h */,
);
path = TxtXmlFormatLib;
sourceTree = "<group>";
};
6967AFE01E279C6F00A129E2 /* Common */ = {
isa = PBXGroup;
children = (
6967AFE11E279C6F00A129E2 /* Encoding.cpp */,
6967AFE21E279C6F00A129E2 /* Encoding.h */,
6967AFE31E279C6F00A129E2 /* precompiled_utility.h */,
6967AFE41E279C6F00A129E2 /* StlUtils.h */,
6967AFE51E279C6F00A129E2 /* ToString.cpp */,
6967AFE61E279C6F00A129E2 /* ToString.h */,
6967AFE71E279C6F00A129E2 /* Utility.h */,
);
name = Common;
path = ../../../Source/Common;
sourceTree = "<group>";
};
6967AFEA1E279C7700A129E2 /* TxtFormat */ = {
isa = PBXGroup;
children = (
6967AFEB1E279C7700A129E2 /* File.cpp */,
6967AFEC1E279C7700A129E2 /* File.h */,
6967AFED1E279C7700A129E2 /* TxtFile.cpp */,
6967AFEE1E279C7700A129E2 /* TxtFile.h */,
6967AFEF1E279C7700A129E2 /* TxtFormat.h */,
);
name = TxtFormat;
path = ../../../Source/TxtFormat;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
6967AFBE1E2798B900A129E2 /* TxtXmlFormatLib */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6967AFC81E2798B900A129E2 /* Build configuration list for PBXNativeTarget "TxtXmlFormatLib" */;
buildPhases = (
6967AFBB1E2798B900A129E2 /* Sources */,
6967AFBC1E2798B900A129E2 /* Frameworks */,
6967AFBD1E2798B900A129E2 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = TxtXmlFormatLib;
productName = TxtXmlFormatLib;
productReference = 6967AFBF1E2798B900A129E2 /* libTxtXmlFormatLib.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
6967AFB71E2798B900A129E2 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0820;
ORGANIZATIONNAME = OnlyOffce;
TargetAttributes = {
6967AFBE1E2798B900A129E2 = {
CreatedOnToolsVersion = 8.2;
DevelopmentTeam = 2WH24U26GJ;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 6967AFBA1E2798B900A129E2 /* Build configuration list for PBXProject "TxtXmlFormatLib" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 6967AFB61E2798B900A129E2;
productRefGroup = 6967AFC01E2798B900A129E2 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
6967AFBE1E2798B900A129E2 /* TxtXmlFormatLib */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
6967AFBB1E2798B900A129E2 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6967AFE91E279C6F00A129E2 /* ToString.cpp in Sources */,
6967AFE81E279C6F00A129E2 /* Encoding.cpp in Sources */,
6967AFF11E279C7700A129E2 /* TxtFile.cpp in Sources */,
6967AFD61E2798DB00A129E2 /* TxtXmlFile.cpp in Sources */,
6967AFF01E279C7700A129E2 /* File.cpp in Sources */,
6967AFD51E2798DB00A129E2 /* ConvertTxt2Docx.cpp in Sources */,
6967AFD41E2798DB00A129E2 /* ConvertDocx2Txt.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
6967AFC61E2798B900A129E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
6967AFC71E2798B900A129E2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
6967AFC91E2798B900A129E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = 2WH24U26GJ;
GCC_PREPROCESSOR_DEFINITIONS = (
UNICODE,
_UNICODE,
_USE_LIBXML2_READER_,
_USE_XMLLITE_READER_,
USE_LITE_READER,
LIBXML_READER_ENABLED,
MAC,
unix,
_IOS,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/usr/include/,
/usr/include/libxml2/,
"$(PROJECT_DIR)/../../../../Common/3dParty/boost/boost_1_58_0",
"$(PROJECT_DIR)/../../../../DesktopEditor/xml/libxml2/include",
"$(PROJECT_DIR)/../../../../DesktopEditor/freetype-2.5.2/include",
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Debug;
};
6967AFCA1E2798B900A129E2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = 2WH24U26GJ;
GCC_PREPROCESSOR_DEFINITIONS = (
UNICODE,
_UNICODE,
_USE_LIBXML2_READER_,
_USE_XMLLITE_READER_,
USE_LITE_READER,
LIBXML_READER_ENABLED,
MAC,
unix,
_IOS,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/usr/include/,
/usr/include/libxml2/,
"$(PROJECT_DIR)/../../../../Common/3dParty/boost/boost_1_58_0",
"$(PROJECT_DIR)/../../../../DesktopEditor/xml/libxml2/include",
"$(PROJECT_DIR)/../../../../DesktopEditor/freetype-2.5.2/include",
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
6967AFBA1E2798B900A129E2 /* Build configuration list for PBXProject "TxtXmlFormatLib" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6967AFC61E2798B900A129E2 /* Debug */,
6967AFC71E2798B900A129E2 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6967AFC81E2798B900A129E2 /* Build configuration list for PBXNativeTarget "TxtXmlFormatLib" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6967AFC91E2798B900A129E2 /* Debug */,
6967AFCA1E2798B900A129E2 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 6967AFB71E2798B900A129E2 /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:TxtXmlFormatLib.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1 @@
DO NOT REMOVE FOLDER FOR XCODE

View File

@ -66,7 +66,7 @@ int DXF::serialize(std::wostream & stream)
{
CP_XML_NODE(L"dxf")
{
xfprops.serialize(CP_XML_STREAM());
xfprops.serialize(CP_XML_STREAM(), true);
}
}
return 0;

View File

@ -111,6 +111,8 @@ int Legend::serialize(std::wostream & _stream, int size)
dy = dy * size;
}
}
CP_XML_NODE(L"c:layout");
CP_XML_NODE(L"c:overlay") {CP_XML_ATTR(L"val", 0);}
}
else
{

View File

@ -79,8 +79,8 @@ int Pos::serialize(std::wostream & _stream)
{
Frame* Frame_ = dynamic_cast<Frame*>(m_Frame.get());
bAutoPosition = !Frame_->fAutoPosition;
bAutoSize = !Frame_->fAutoSize;
bAutoPosition = Frame_->fAutoPosition;
bAutoSize = Frame_->fAutoSize;
}
double x = x1 / 4000.;
double y = y1 / 4000.;
@ -103,8 +103,8 @@ int Pos::serialize(std::wostream & _stream)
{
CP_XML_NODE(L"c:layoutTarget"){CP_XML_ATTR(L"val", m_iLayoutTarget == 1 ? L"outer" : L"inner");}
}
if (m_iLinkObject == 1 && mdTopLt == 2 && mdBotRt == 2)
x += 0.5 + (w > 0 ? w : 0);
//if (m_iLinkObject == 1 && mdTopLt == 2 && mdBotRt == 2 && x == 0)
// x += 0.5 - (w > 0 ? w / 2 : 0);
//if (m_iLinkObject == 2) x += 0.5 + (w > 0 ? w : 0);
//if (m_iLinkObject == 3) y += 0 + (h > 0 ? h : 0);

View File

@ -47,7 +47,6 @@ public:
~Pos();
BaseObjectPtr clone();
void readFields(CFRecord& record);
@ -69,6 +68,7 @@ public:
int m_iLayoutTarget;
short m_iLinkObject;
BaseObjectPtr m_Frame;
};

View File

@ -219,7 +219,7 @@ int TxO::serialize_rPr (std::wostream & _stream, int iFmt, std::wstring namespac
if (!pGlobalWorkbookInfoPtr->m_arFonts) return 0;
int sz = pGlobalWorkbookInfoPtr->m_arFonts->size();
if (iFmt - 1 > sz || iFmt < 1) return 0;
if (iFmt - 1 >= sz || iFmt < 1) return 0;
Font * font = dynamic_cast<Font*>(pGlobalWorkbookInfoPtr->m_arFonts->at(iFmt-1).get());

View File

@ -93,7 +93,6 @@ void DXFN::load(CFRecord& record)
if(ibitAtrNum)
{
dxfnum.setIsUserDefined(fIfmtUser);
record >> dxfnum;
}
if(ibitAtrFnt)

View File

@ -39,18 +39,6 @@ namespace XLS
{
void DXFNum::setIsUserDefined(const bool is_user_defined)
{
is_user_defined_ = is_user_defined;
}
const bool DXFNum::getIsUserDefined() const
{
return true == is_user_defined_;
}
BiffStructurePtr DXFNum::clone()
{
return BiffStructurePtr(new DXFNum(*this));
@ -58,11 +46,13 @@ BiffStructurePtr DXFNum::clone()
void DXFNum::load(CFRecord& record)
{
if ((is_user_defined_) && (*is_user_defined_))
if (!parent) return;
if (parent->fIfmtUser)
{
record >> user_defined;
}
else
if (!parent->ifmtNinch)//else
{
record >> fmt_id;
}
@ -71,7 +61,7 @@ void DXFNum::load(CFRecord& record)
int DXFNum::serialize(std::wostream & stream)
{
if (parent->ifmtNinch && parent->fIfmtUser) return 0;
if (!parent) return 0;
CP_XML_WRITER(stream)
{
@ -79,7 +69,8 @@ int DXFNum::serialize(std::wostream & stream)
{
if (!parent->ifmtNinch)
CP_XML_ATTR(L"numFmtId", fmt_id.ifmt);
if (!parent->fIfmtUser)
if (parent->fIfmtUser)
CP_XML_ATTR(L"formatCode", /*xml::utils::replace_text_to_xml*/(user_defined.fmt.value()));
}
}

View File

@ -50,12 +50,8 @@ public:
virtual void load(CFRecord& record);
int serialize(std::wostream & stream);
void setIsUserDefined(const bool is_user_defined);
const bool getIsUserDefined() const;
_CP_OPT(bool) is_user_defined_;
DXFNumIFmt fmt_id;

View File

@ -169,6 +169,23 @@ static void serialize_val_prop(std::wostream & stream, const std::wstring & name
}
}
}
static void serialize_val_attr(CP_ATTR_NODE, const std::wstring & name, BiffStructurePtr & val)
{
if (val == NULL) return;
if (name.empty()) return;
BIFF_DWORD* dword = dynamic_cast<BIFF_DWORD*>(val.get());
if (dword) CP_XML_ATTR(name.c_str(), *dword->value());
BIFF_WORD* word = dynamic_cast<BIFF_WORD*>(val.get());
if (word) CP_XML_ATTR(name.c_str(), *word->value());
BIFF_BYTE* byte_ = dynamic_cast<BIFF_BYTE*>(val.get());
if (byte_) CP_XML_ATTR(name.c_str(), *byte_->value());
LPWideString* str_ = dynamic_cast<LPWideString*>(val.get());
if (str_) CP_XML_ATTR(name.c_str(), xml::utils::replace_text_to_xml(str_->value()));
}
static void serialize_border_prop(std::wostream & stream, const std::wstring & name, BiffStructurePtr & val)
{
if (name.empty()) return;
@ -206,39 +223,49 @@ static void serialize_border_prop(std::wostream & stream, const std::wstring & n
void XFProp::serialize_attr(CP_ATTR_NODE)
{
if (xfPropType == 0)
switch(xfPropType)
{
BIFF_BYTE* byte_ = dynamic_cast<BIFF_BYTE*>(xfPropDataBlob.get());
if (!byte_) return;
case 0x0000:
{
BIFF_BYTE* byte_ = dynamic_cast<BIFF_BYTE*>(xfPropDataBlob.get());
if (!byte_) return;
switch(*byte_)
{
case 2: CP_XML_ATTR(L"patternType", L"pct50"); break; //50% gray
case 3: CP_XML_ATTR(L"patternType", L"pct75"); break; //75% gray
case 4: CP_XML_ATTR(L"patternType", L"pct25"); break; //25% gray
case 5: CP_XML_ATTR(L"patternType", L"horzStripe"); break; //Horizontal stripe
case 6: CP_XML_ATTR(L"patternType", L"vertStripe"); break; //Vertical stripe
case 7: CP_XML_ATTR(L"patternType", L"reverseDiagStripe"); break; //Reverse diagonal stripe
case 8: CP_XML_ATTR(L"patternType", L"diagStripe"); break; //Diagonal stripe
case 9: CP_XML_ATTR(L"patternType", L"diagCross"); break; //Diagonal crosshatch
case 10: CP_XML_ATTR(L"patternType", L"trellis"); break; //Thick Diagonal crosshatch
case 11: CP_XML_ATTR(L"patternType", L"thinHorzStripe"); break; //Thin horizontal stripe
case 12: CP_XML_ATTR(L"patternType", L"thinVertStripe"); break; //Thin vertical stripe
case 13: CP_XML_ATTR(L"patternType", L"thinReverseDiagStripe"); break; //Thin reverse diagonal stripe
case 14: CP_XML_ATTR(L"patternType", L"thinDiagStripe"); break; //Thin diagonal stripe
case 15: CP_XML_ATTR(L"patternType", L"thinHorzCross"); break; //Thin horizontal crosshatch
case 16: CP_XML_ATTR(L"patternType", L"thinDiagCross"); break; //Thin diagonal crosshatch
case 17: CP_XML_ATTR(L"patternType", L"gray125"); break; //12.5% gray
case 18: CP_XML_ATTR(L"patternType", L"gray0625"); break; //6.25% gray
default:
CP_XML_ATTR(L"patternType", L"solid");
}
switch(*byte_)
{
case 2: CP_XML_ATTR(L"patternType", L"pct50"); break; //50% gray
case 3: CP_XML_ATTR(L"patternType", L"pct75"); break; //75% gray
case 4: CP_XML_ATTR(L"patternType", L"pct25"); break; //25% gray
case 5: CP_XML_ATTR(L"patternType", L"horzStripe"); break; //Horizontal stripe
case 6: CP_XML_ATTR(L"patternType", L"vertStripe"); break; //Vertical stripe
case 7: CP_XML_ATTR(L"patternType", L"reverseDiagStripe"); break; //Reverse diagonal stripe
case 8: CP_XML_ATTR(L"patternType", L"diagStripe"); break; //Diagonal stripe
case 9: CP_XML_ATTR(L"patternType", L"diagCross"); break; //Diagonal crosshatch
case 10: CP_XML_ATTR(L"patternType", L"trellis"); break; //Thick Diagonal crosshatch
case 11: CP_XML_ATTR(L"patternType", L"thinHorzStripe"); break; //Thin horizontal stripe
case 12: CP_XML_ATTR(L"patternType", L"thinVertStripe"); break; //Thin vertical stripe
case 13: CP_XML_ATTR(L"patternType", L"thinReverseDiagStripe"); break; //Thin reverse diagonal stripe
case 14: CP_XML_ATTR(L"patternType", L"thinDiagStripe"); break; //Thin diagonal stripe
case 15: CP_XML_ATTR(L"patternType", L"thinHorzCross"); break; //Thin horizontal crosshatch
case 16: CP_XML_ATTR(L"patternType", L"thinDiagCross"); break; //Thin diagonal crosshatch
case 17: CP_XML_ATTR(L"patternType", L"gray125"); break; //12.5% gray
case 18: CP_XML_ATTR(L"patternType", L"gray0625"); break; //6.25% gray
CP_XML_ATTR(L"patternType", L"solid");
}
}break;
case 0x0003:
{
XFPropGradient * grad_ = dynamic_cast<XFPropGradient*>(xfPropDataBlob.get());
if (grad_) grad_->serialize_attr(CP_GET_XML_NODE());
}break;
case 0x0026:
{
serialize_val_attr(CP_GET_XML_NODE(), L"formatCode", xfPropDataBlob);
}break;
case 0x0029:
{
serialize_val_attr(CP_GET_XML_NODE(), L"numFmtId", xfPropDataBlob);
}break;
}
if (xfPropType == 3)
{
XFPropGradient * grad_ = dynamic_cast<XFPropGradient*>(xfPropDataBlob.get());
if (grad_) grad_->serialize_attr(CP_GET_XML_NODE());
}
}
int XFProp::serialize(std::wostream & stream)
{

View File

@ -52,9 +52,8 @@ public:
virtual void load(CFRecord& record);
int serialize(std::wostream & stream);
void serialize_attr(CP_ATTR_NODE);
int serialize (std::wostream & stream);
void serialize_attr (CP_ATTR_NODE);
unsigned short xfPropType;
unsigned short cb;

View File

@ -110,7 +110,7 @@ void XFProps::load(CFRecord& record)
}
}
}
int XFProps::serialize(std::wostream & stream)
int XFProps::serialize(std::wostream & stream, bool dxf)
{
CP_XML_WRITER(stream)
{
@ -130,7 +130,14 @@ int XFProps::serialize(std::wostream & stream)
{
for (int i = 0; i < arXFPropNumFmt.size(); i++)
{
arXFPropNumFmt[i].serialize(CP_XML_STREAM());
if (dxf)
{
arXFPropNumFmt[i].serialize_attr(CP_GET_XML_NODE());
}
else
{
arXFPropNumFmt[i].serialize(CP_XML_STREAM());
}
}
}
}

View File

@ -52,7 +52,8 @@ public:
unsigned short cprops;
int serialize(std::wostream & stream);
int serialize(std::wostream & stream){ return serialize(stream, false) ; }
int serialize(std::wostream & stream, bool dxf);
std::vector<XFProp> arXFPropFont;
std::vector<XFProp> arXFPropNumFmt;

View File

@ -66,7 +66,10 @@ public:
BaseObjectPtr m_DataLabExtContents;
BaseObjectPtr m_TEXTPROPS;
short m_iLinkObject;
short m_iLinkObject;
bool m_bUsed;
};
} // namespace XLS

View File

@ -57,7 +57,9 @@ namespace XLS
ATTACHEDLABEL::ATTACHEDLABEL()
{
m_iLinkObject = -1;
m_iLinkObject = -1;
m_bUsed = false;
}
@ -348,19 +350,26 @@ int ATTACHEDLABEL::serialize_rPr (std::wostream & _stream, int iFmt, bool rtl, b
color = font->icv;
color_ext = font->color_ext;
if ((text_props) && (!text_props->fAutoColor))
if (text_props)
{
if (text_props->icvText != 0xff)
if (text_props->fAutoColor)
{
font->icv = text_props->icvText; //biff8
font->color_ext.enabled = false;
font->icv = 0xff;
}
else
{
font->color_ext.enabled = true;
font->color_ext.xclrType = 2;
font->color_ext.xclrValue = (text_props->rgbText.red << 16) +
(text_props->rgbText.green << 8) + (text_props->rgbText.blue);
if (text_props->icvText != 0xff)
{
font->icv = text_props->icvText; //biff8
}
else
{
font->color_ext.enabled = true;
font->color_ext.xclrType = 2;
font->color_ext.xclrValue = (text_props->rgbText.red << 16) +
(text_props->rgbText.green << 8) + (text_props->rgbText.blue);
}
}
}

View File

@ -262,12 +262,28 @@ int AXES::serialize(std::wostream & _stream, bool secondary)
}
CP_XML_NODE(node_ax_type)
{
if (i < m_arATTACHEDLABEL.size())
ATTACHEDLABEL *label = NULL;
for ( int h = 0 ; h < m_arATTACHEDLABEL.size(); h++)
{
ATTACHEDLABEL *l_= dynamic_cast<ATTACHEDLABEL *> (m_arATTACHEDLABEL[h].get() );
if (l_->m_iLinkObject == 2 && l_->m_bUsed == false && (dv || ser))
{
label = l_;
l_->m_bUsed = true;
break;
}
if (l_->m_iLinkObject == 3 && l_->m_bUsed == false && iv)
{
label = l_;
l_->m_bUsed = true;
break;
}
}
if (label)
{
CP_XML_NODE(L"c:title")
{
ATTACHEDLABEL *label = dynamic_cast<ATTACHEDLABEL *> (m_arATTACHEDLABEL[i].get() );
label->serialize(CP_XML_STREAM());
}

View File

@ -198,7 +198,7 @@ int AXS::serialize(std::wostream & _stream)
axis_line_format->serialize(CP_XML_STREAM());
}
}
if (m_FontX)
if ((m_FontX) || ((tick) && (!tick->fAutoRot)))
{
CP_XML_NODE(L"c:txPr")
{

View File

@ -435,12 +435,16 @@ void XlsConverter::convert(XLS::WorksheetSubstream* sheet)
convert((XLS::OBJECTS*)sheet->m_OBJECTS.get(), sheet);
if (sheet->m_arNote.size() > 0 && xls_global_info->Version < 0x0600)
if (!sheet->m_arNote.empty() && xls_global_info->Version < 0x0600)
{
xlsx_context->get_drawing_context().start_drawing(0);
for (int i = 0 ; i < sheet->m_arNote.size(); i++)
{
convert(dynamic_cast<XLS::Note*>(sheet->m_arNote[i].get()));
xlsx_context->get_drawing_context().start_drawing(0x0019);
convert(dynamic_cast<XLS::Note*>(sheet->m_arNote[i].get()));
xlsx_context->get_drawing_context().end_drawing();
}
xlsx_context->get_drawing_context().end_group();
}
if (sheet->m_PAGESETUP)
@ -1704,11 +1708,6 @@ void XlsConverter::convert(XLS::Note* note)
note->note_sh.calculate();
if (xls_global_info->Version < 0x0600)
{
xlsx_context->get_comments_context().start_comment();
}
xlsx_context->get_comments_context().set_ref (note->note_sh.ref_, note->note_sh.col, note->note_sh.row);
xlsx_context->get_comments_context().set_author (note->note_sh.stAuthor);
xlsx_context->get_comments_context().set_visibly(note->note_sh.fShow);
@ -1720,9 +1719,8 @@ void XlsConverter::convert(XLS::Note* note)
if (xls_global_info->Version < 0x0600)
{
//todooo размеры произвольные .. можно сделать оценку по размеру строки
xlsx_context->get_drawing_context().set_child_anchor(120, 64, note->note_sh.x_/ 12700. , note->note_sh.y_/ 12700.);
xlsx_context->get_comments_context().set_content(std::wstring(L"<t>") + note->note_sh.stText.value() + std::wstring(L"</t>"));
xlsx_context->get_comments_context().end_comment();
xlsx_context->get_drawing_context().set_child_anchor(note->note_sh.x_ , note->note_sh.y_, 120 * 12700., 64 * 12700.);
xlsx_context->get_drawing_context().set_text(std::wstring(L"<t>") + note->note_sh.stText.value() + std::wstring(L"</t>"));
}
}

View File

@ -63,8 +63,6 @@ public:
void serialize(std::wostream & strm)
{
//std::sort(xlsx_comment_.begin(), xlsx_comment_.end(), sort_()); - излишне
CP_XML_WRITER(strm)
{
CP_XML_NODE(L"comments")
@ -73,27 +71,27 @@ public:
CP_XML_NODE(L"authors")
{
BOOST_FOREACH(std::wstring const & a, author_list_)
for (int i = 0 ; i < author_list_.size(); i++)
{
CP_XML_NODE(L"author")
{
CP_XML_STREAM() << a;
CP_XML_STREAM() << author_list_[i];
}
}
}
CP_XML_NODE(L"commentList")
{
BOOST_FOREACH(_xlsx_comment const & c, xlsx_comment_)
for (int i = 0 ; i < xlsx_comment_.size(); i++)
{
CP_XML_NODE(L"comment")
{
CP_XML_ATTR(L"ref", c.ref_);
CP_XML_ATTR(L"authorId", c.author_);
CP_XML_ATTR(L"ref", xlsx_comment_[i].ref_);
CP_XML_ATTR(L"authorId", xlsx_comment_[i].author_);
CP_XML_NODE(L"text")
{
CP_XML_STREAM() << c.content_;
CP_XML_STREAM() << xlsx_comment_[i].content_;
}
}
}
@ -106,14 +104,16 @@ public:
{
return ( xlsx_comment_.empty());
}
void add(_xlsx_comment & c)
{
bool find = false;
for (long i=0;i<author_list_.size();i++)
for (long i = 0; i < author_list_.size(); i++)
{
if (c.author_ == author_list_[i])
{
find=true;
find = true;
c.author_ = boost::lexical_cast<std::wstring>(i);
break;
}

View File

@ -70,13 +70,13 @@ class xlsx_comments
public:
xlsx_comments();
~xlsx_comments();
static xlsx_comments_ptr create();
public:
void add(_xlsx_comment & d);
bool empty() const;
void serialize(std::wostream & strm);
void serialize(std::wostream & strm);
static xlsx_comments_ptr create();
private:
class Impl;

View File

@ -340,7 +340,7 @@ bool xlsx_drawing_context::start_drawing(int type)
external_items::Type xlsx_drawing_context::getType()
{
if (current_drawing_states == NULL) return external_items::typeUnknown;
if (current_drawing_states->size() < 1) return external_items::typeUnknown;
if (current_drawing_states->empty()) return external_items::typeUnknown;
return current_drawing_states->back()->type;
}
@ -366,7 +366,8 @@ void xlsx_drawing_context::start_comment()
current_drawing_states->push_back(create_drawing_state());
current_drawing_states->back()->type = external_items::typeComment;
current_drawing_states->back()->type = external_items::typeComment;
//current_drawing_states->back()->vmlwrite_mode_ = true; это только для HF !!!
count_object++;
@ -435,29 +436,29 @@ void xlsx_drawing_context::start_shape(int type)
void xlsx_drawing_context::set_id(int id)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->id = id;
}
void xlsx_drawing_context::set_FlipH()
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->flipH = true;
}
void xlsx_drawing_context::set_FlipV()
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->flipV = true;
}
void xlsx_drawing_context::set_shape_id(int id)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (current_drawing_states->back()->bTextBox) return;
@ -465,13 +466,15 @@ void xlsx_drawing_context::set_shape_id(int id)
}
void xlsx_drawing_context::set_object_visible (bool val)
{
if (current_drawing_states == NULL);
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->object.visible = val;
}
void xlsx_drawing_context::set_object_anchor (int col, int row)
{
if (current_drawing_states == NULL);
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->object.col = col;
current_drawing_states->back()->object.row = row;
@ -484,8 +487,9 @@ void xlsx_drawing_context::set_object_id(int val)
void xlsx_drawing_context::end_drawing()
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->size() < 1) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (current_drawing_states->back()->type == external_items::typeGroup) return;
end_drawing(current_drawing_states->back());
@ -566,6 +570,7 @@ void xlsx_drawing_context::end_drawing(_drawing_state_ptr & drawing_state)
void xlsx_drawing_context::serialize_group()
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_drawing_state_ptr & drawing_state = current_drawing_states->front();
std::wstringstream strm;
@ -719,14 +724,18 @@ void xlsx_drawing_context::serialize_shape_comment(_drawing_state_ptr & drawing_
CP_XML_NODE(L"x:MoveWithCells"){}
CP_XML_NODE(L"x:SizeWithCells"){}
std::wstringstream strmAnchor;
strmAnchor << drawing_state->sheet_anchor.colFrom << L", " << (int)(2 * drawing_state->sheet_anchor.xFrom / 12700.) << L", "
<< drawing_state->sheet_anchor.rwFrom << L", " << (int)(2 * drawing_state->sheet_anchor.yFrom / 12700.) << L", "
<< drawing_state->sheet_anchor.colTo << L", " << (int)(2 * drawing_state->sheet_anchor.xTo / 12700.) << L", "
<< drawing_state->sheet_anchor.rwTo << L", " << (int)(2 * drawing_state->sheet_anchor.yTo / 12700.);
if (!strmAnchor.str().empty())
{
CP_XML_NODE(L"x:Anchor"){CP_XML_CONTENT(strmAnchor.str());}
if (drawing_state->sheet_anchor.xFrom >= 0 && drawing_state->sheet_anchor.yFrom > 0)
{//old xls don't have this
std::wstringstream strmAnchor;
strmAnchor
<< drawing_state->sheet_anchor.colFrom << L", " << (int)(2 * drawing_state->sheet_anchor.xFrom / 12700.) << L", "
<< drawing_state->sheet_anchor.rwFrom << L", " << (int)(2 * drawing_state->sheet_anchor.yFrom / 12700.) << L", "
<< drawing_state->sheet_anchor.colTo << L", " << (int)(2 * drawing_state->sheet_anchor.xTo / 12700.) << L", "
<< drawing_state->sheet_anchor.rwTo << L", " << (int)(2 * drawing_state->sheet_anchor.yTo / 12700.);
if (!strmAnchor.str().empty())
{
CP_XML_NODE(L"x:Anchor"){CP_XML_CONTENT(strmAnchor.str());}
}
}
CP_XML_NODE(L"x:AutoFill") {CP_XML_CONTENT("False");}
CP_XML_NODE(L"x:Row") {CP_XML_CONTENT(drawing_state->object.row);}
@ -1742,6 +1751,7 @@ void xlsx_drawing_context::set_sheet_anchor(int colFrom, int xFrom, int rwFrom,
void xlsx_drawing_context::set_child_anchor(int x, int y, int cx, int cy)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->child_anchor.x = x;
current_drawing_states->back()->child_anchor.y = y;
@ -1751,6 +1761,7 @@ void xlsx_drawing_context::set_child_anchor(int x, int y, int cx, int cy)
void xlsx_drawing_context::set_group_anchor(int x, int y, int cx, int cy)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->group_anchor.x = x;
current_drawing_states->back()->group_anchor.y = y;
@ -1760,6 +1771,8 @@ void xlsx_drawing_context::set_group_anchor(int x, int y, int cx, int cy)
void xlsx_drawing_context::set_absolute_anchor(double x, double y, double cx, double cy)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (current_drawing_states->back()->type_anchor != 0) return;
current_drawing_states->back()->absolute_anchor.x = x;
@ -1773,12 +1786,14 @@ void xlsx_drawing_context::set_absolute_anchor(double x, double y, double cx, do
void xlsx_drawing_context::set_fill_texture_mode(int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_mode = (_texture_mode)val;
}
void xlsx_drawing_context::set_fill_texture(const std::wstring & str)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (str.empty()) return;
@ -1788,6 +1803,7 @@ void xlsx_drawing_context::set_fill_texture(const std::wstring & str)
void xlsx_drawing_context::set_crop_top (double val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[1] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true;
@ -1795,6 +1811,7 @@ void xlsx_drawing_context::set_crop_top (double val)
void xlsx_drawing_context::set_crop_bottom(double val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[3] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true;
@ -1802,6 +1819,7 @@ void xlsx_drawing_context::set_crop_bottom(double val)
void xlsx_drawing_context::set_crop_left (double val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[0] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true;
@ -1809,6 +1827,7 @@ void xlsx_drawing_context::set_crop_left (double val)
void xlsx_drawing_context::set_crop_right (double val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.texture_crop[2] = val;
current_drawing_states->back()->fill.texture_crop_enabled = true;
@ -1816,12 +1835,14 @@ void xlsx_drawing_context::set_crop_right (double val)
void xlsx_drawing_context::set_rotation (double val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->rotation = val;
}
void xlsx_drawing_context::set_line_color (int nColor, const std::wstring & sColor)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.fill.color.sRGB = sColor;
current_drawing_states->back()->line.fill.color.nRGB = nColor;
@ -1829,6 +1850,7 @@ void xlsx_drawing_context::set_line_color (int nColor, const std::wstring & sCol
void xlsx_drawing_context::set_line_color (int index, int type)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color;
if (type == 3)
@ -1853,18 +1875,21 @@ void xlsx_drawing_context::set_line_color (int index, int type)
void xlsx_drawing_context::set_fill_angle (double val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.angle = val;
}
void xlsx_drawing_context::set_fill_focus (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.focus = val;
}
void xlsx_drawing_context::set_fill_color (int nColor, const std::wstring & sColor, bool background)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (background)
{
@ -1880,6 +1905,7 @@ void xlsx_drawing_context::set_fill_color (int nColor, const std::wstring & sCol
void xlsx_drawing_context::set_fill_color (int index, int type, bool background)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color;
if (type == 3)
@ -1904,7 +1930,7 @@ void xlsx_drawing_context::set_fill_color (int index, int type, bool background)
void xlsx_drawing_context::set_fill_opacity (double val, bool background)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (background) current_drawing_states->back()->fill.opacity2 = val;
else current_drawing_states->back()->fill.opacity = val;
@ -1912,7 +1938,7 @@ void xlsx_drawing_context::set_fill_opacity (double val, bool background)
void xlsx_drawing_context::add_fill_colors(double position, const std::wstring & col)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color;
color.sRGB = col;
@ -1921,6 +1947,7 @@ void xlsx_drawing_context::add_fill_colors(double position, const std::wstring &
void xlsx_drawing_context::add_fill_colors(double position, int index, int type)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
_color color;
color.index = index;
@ -1931,6 +1958,7 @@ void xlsx_drawing_context::add_fill_colors(double position, int index, int type)
void xlsx_drawing_context::set_fill_type (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->fill.type = (_fill_type) val;
}
@ -1938,6 +1966,7 @@ void xlsx_drawing_context::set_fill_type (int val)
void xlsx_drawing_context::set_line_dash(int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
switch (val)
{
@ -1958,6 +1987,7 @@ void xlsx_drawing_context::set_line_dash(int val)
void xlsx_drawing_context::set_line_type (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
switch(val)
{
@ -1970,6 +2000,7 @@ void xlsx_drawing_context::set_line_type (int val)
void xlsx_drawing_context::set_line_style (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
switch(val)
{
@ -1984,6 +2015,7 @@ void xlsx_drawing_context::set_line_style (int val)
void xlsx_drawing_context::set_line_width (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.width = val;
}
@ -1991,48 +2023,58 @@ void xlsx_drawing_context::set_line_width (int val)
void xlsx_drawing_context::set_line_arrow(bool val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.enabled = val;
}
void xlsx_drawing_context::set_arrow_start (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.start = val;
}
void xlsx_drawing_context::set_arrow_end (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.end = val;
}
void xlsx_drawing_context::set_arrow_start_width (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.start_width = val;
}
void xlsx_drawing_context::set_arrow_end_width (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.end_width = val;
}
void xlsx_drawing_context::set_arrow_start_length (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.start_length = val;
}
void xlsx_drawing_context::set_arrow_end_length (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->line.arrow.end_length = val;
}
//----------------------------------------------------------------------
void xlsx_drawing_context::set_fill_old_version (_UINT32 val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
unsigned char backColorIdx = GETBITS(val, 0, 7);
unsigned char patternColorIdx = GETBITS(val, 8,15);
unsigned char pattern = GETBITS(val,16,23);
@ -2086,6 +2128,9 @@ void xlsx_drawing_context::set_line_old_version (_UINT32 val)
}
void xlsx_drawing_context::set_flag_old_version(_UINT16 val, _UINT16 val2)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
unsigned short flips_flag = 0;
if (current_drawing_states->back()->shape_id == MSOSPT::msosptArc)
{
@ -2144,6 +2189,7 @@ void xlsx_drawing_context::set_flag_old_version(_UINT16 val, _UINT16 val2)
void xlsx_drawing_context::set_hyperlink(const std::wstring & link, const std::wstring & display, bool is_external)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
std::wstring sId = std::wstring(L"hId") + boost::lexical_cast<std::wstring>(hlinks_.size()+1);
std::wstring link_correct = link;
@ -2161,72 +2207,84 @@ void xlsx_drawing_context::set_hyperlink(const std::wstring & link, const std::w
void xlsx_drawing_context::set_wordart_text(const std::wstring & text)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.text = text;
}
void xlsx_drawing_context::set_wordart_font(const std::wstring & val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.font = val;
}
void xlsx_drawing_context::set_wordart_size (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.size = val;
}
void xlsx_drawing_context::set_text_align (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.align = val;
}
void xlsx_drawing_context::set_text_vert_align (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.vert_align = val;
}
void xlsx_drawing_context::set_text_vertical (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.vertical = val;
}
void xlsx_drawing_context::set_text_margin(RECT & val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.margins = val;
}
void xlsx_drawing_context::set_text_fit_shape(bool val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.fit_shape = val;
}
void xlsx_drawing_context::set_wordart_bold (bool val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.bold = val;
}
void xlsx_drawing_context::set_wordart_italic (bool val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.italic = val;
}
void xlsx_drawing_context::set_wordart_underline (bool val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.underline = val;
}
void xlsx_drawing_context::set_wordart_strike(bool val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.strike = val;
}
@ -2234,86 +2292,101 @@ void xlsx_drawing_context::set_wordart_strike(bool val)
void xlsx_drawing_context::set_wordart_vertical (bool val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.vertical = val;
}
void xlsx_drawing_context::set_wordart_spacing (double val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->wordart.spacing = val;
}
void xlsx_drawing_context::set_text (const std::wstring & text)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.content = text;
}
void xlsx_drawing_context::set_text_wrap (int val)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->text.wrap = val;
}
void xlsx_drawing_context::set_custom_rect(_rect & rect)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_rect = rect;
}
void xlsx_drawing_context::set_properties(const std::wstring & str)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->shape = str;
}
void xlsx_drawing_context::set_custom_verticles (std::vector<ODRAW::MSOPOINT> & points)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_verticles = points;
}
void xlsx_drawing_context::set_custom_guides (std::vector<ODRAW::MSOSG> & guides)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
if (current_drawing_states->back()->shape_id == MSOSPT::msosptNotchedCircularArrow) return;
current_drawing_states->back()->custom_guides = guides;
}
void xlsx_drawing_context::set_custom_segments (std::vector<ODRAW::MSOPATHINFO> & segments)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_segments = segments;
}
void xlsx_drawing_context::set_custom_adjustHandles(std::vector<ODRAW::ADJH> & handles)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_adjustHandles = handles;
}
void xlsx_drawing_context::set_custom_adjustValues(std::vector<_CP_OPT(int)> & values)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_adjustValues = values;
}
void xlsx_drawing_context::set_custom_path (int type_path)
{
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->custom_path = type_path;
}
//----------------------------------------------------------------------------------------------------------
bool xlsx_drawing_context::get_mode_vmlwrite ()
{//comment, shapes in header/footer, ....
if (current_drawing_states == NULL) return false;
if (current_drawing_states == NULL) return false;
if (current_drawing_states->empty()) return false;
return current_drawing_states->back()->vmlwrite_mode_;
}
void xlsx_drawing_context::set_mode_vmlwrite (bool val)
{//comment, shapes in header/footer, ....
if (current_drawing_states == NULL) return;
if (current_drawing_states == NULL) return;
if (current_drawing_states->empty()) return;
current_drawing_states->back()->vmlwrite_mode_ = val;
}

View File

@ -750,6 +750,8 @@
#define ASC_COAUTH_EVENT_TYPE_PARTICIPANTS_CHANGED 20101
#define ASC_COAUTH_EVENT_TYPE_LOST_CONNECTION 20102
#define ASC_COAUTH_EVENT_TYPE_DROP_CONNECTION 20103
#define ASC_COAUTH_EVENT_TYPE_WORKBOOK_LOCKED 20104
#define ASC_COAUTH_EVENT_TYPE_WORKSHEET_LOCKED 20105
#define ASC_COAUTH_EVENT_TYPE_INSERT_URL_IMAGE 21000
#define ASC_COAUTH_EVENT_TYPE_LOAD_URL_IMAGE 21001

View File

@ -768,7 +768,7 @@ namespace NSDoctRenderer
_LOGGING_ERROR_(L"change", strException);
char buffer[50];
sprintf(buffer, "index=\"%d\"", pNative->m_nCurrentChangesNumber);
sprintf(buffer, "index=\"%d\"", pNative->m_nCurrentChangesNumber - 1);
std::string s(buffer);
strError = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)s.c_str(), (LONG)s.length());
bIsBreak = true;

File diff suppressed because it is too large Load Diff

209
DocxRenderer/DocxRenderer.h Normal file
View File

@ -0,0 +1,209 @@
/*
* (c) Copyright Ascensio System SIA 2010-2016
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#ifndef _PDF_WRITER_PDFRENDERER_H
#define _PDF_WRITER_PDFRENDERER_H
#include "../DesktopEditor/graphics/IRenderer.h"
#include <string>
#include <vector>
#include <algorithm>
#ifndef DOCXRENDERER_USE_DYNAMIC_LIBRARY
#define DOCXRENDERER_DECL_EXPORT
#else
#include "../DesktopEditor/common/base_export.h"
#define DOCXRENDERER_DECL_EXPORT Q_DECL_EXPORT
#endif
class CFontManager;
class CApplicationFonts;
namespace NSDocxRenderer
{
enum TextAssociationType
{
TextAssociationTypeDefault = 0,
TextAssociationTypeLine = 1,
TextAssociationTypeNoFrames = 2,
TextAssociationTypeBlock = 3
};
}
class DOCXRENDERER_DECL_EXPORT CDocxRenderer : public IRenderer
{
public:
CDocxRenderer(CApplicationFonts* pAppFonts);
~CDocxRenderer();
void CreateFile(const std::wstring& wsPath);
void Close();
void SetTextAssociationType(const NSDocxRenderer::TextAssociationType& eType);
void SetTempFolder(const std::wstring& wsPath);
//----------------------------------------------------------------------------------------
// Тип рендерера
//----------------------------------------------------------------------------------------
virtual HRESULT get_Type(LONG* lType);
//----------------------------------------------------------------------------------------
// Функции для работы со страницей
//----------------------------------------------------------------------------------------
virtual HRESULT NewPage();
virtual HRESULT get_Height(double* dHeight);
virtual HRESULT put_Height(const double& dHeight);
virtual HRESULT get_Width(double* dWidth);
virtual HRESULT put_Width(const double& dWidth);
virtual HRESULT get_DpiX(double* dDpiX);
virtual HRESULT get_DpiY(double* dDpiY);
//----------------------------------------------------------------------------------------
// Функции для работы с Pen
//----------------------------------------------------------------------------------------
virtual HRESULT get_PenColor(LONG* lColor);
virtual HRESULT put_PenColor(const LONG& lColor);
virtual HRESULT get_PenAlpha(LONG* lAlpha);
virtual HRESULT put_PenAlpha(const LONG& lAlpha);
virtual HRESULT get_PenSize(double* dSize);
virtual HRESULT put_PenSize(const double& dSize);
virtual HRESULT get_PenDashStyle(BYTE* nDashStyle);
virtual HRESULT put_PenDashStyle(const BYTE& nDashStyle);
virtual HRESULT get_PenLineStartCap(BYTE* nCapStyle);
virtual HRESULT put_PenLineStartCap(const BYTE& nCapStyle);
virtual HRESULT get_PenLineEndCap(BYTE* nCapStyle);
virtual HRESULT put_PenLineEndCap(const BYTE& nCapStyle);
virtual HRESULT get_PenLineJoin(BYTE* nJoinStyle);
virtual HRESULT put_PenLineJoin(const BYTE& nJoinStyle);
virtual HRESULT get_PenDashOffset(double* dOffset);
virtual HRESULT put_PenDashOffset(const double& dOffset);
virtual HRESULT get_PenAlign(LONG* lAlign);
virtual HRESULT put_PenAlign(const LONG& lAlign);
virtual HRESULT get_PenMiterLimit(double* dMiter);
virtual HRESULT put_PenMiterLimit(const double& dMiter);
virtual HRESULT PenDashPattern(double* pPattern, LONG lCount);
//----------------------------------------------------------------------------------------
// Функции для работы с Brush
//----------------------------------------------------------------------------------------
virtual HRESULT get_BrushType(LONG* lType);
virtual HRESULT put_BrushType(const LONG& lType);
virtual HRESULT get_BrushColor1(LONG* lColor);
virtual HRESULT put_BrushColor1(const LONG& lColor);
virtual HRESULT get_BrushAlpha1(LONG* lAlpha);
virtual HRESULT put_BrushAlpha1(const LONG& lAlpha);
virtual HRESULT get_BrushColor2(LONG* lColor);
virtual HRESULT put_BrushColor2(const LONG& lColor);
virtual HRESULT get_BrushAlpha2(LONG* lAlpha);
virtual HRESULT put_BrushAlpha2(const LONG& lAlpha);
virtual HRESULT get_BrushTexturePath(std::wstring* wsPath);
virtual HRESULT put_BrushTexturePath(const std::wstring& wsPath);
virtual HRESULT get_BrushTextureMode(LONG* lMode);
virtual HRESULT put_BrushTextureMode(const LONG& lMode);
virtual HRESULT get_BrushTextureAlpha(LONG* lAlpha);
virtual HRESULT put_BrushTextureAlpha(const LONG& lAlpha);
virtual HRESULT get_BrushLinearAngle(double* dAngle);
virtual HRESULT put_BrushLinearAngle(const double& dAngle);
virtual HRESULT BrushRect(const INT& nVal, const double& dLeft, const double& dTop, const double& dWidth, const double& dHeight);
virtual HRESULT BrushBounds(const double& dLeft, const double& dTop, const double& dWidth, const double& dHeight);
virtual HRESULT put_BrushGradientColors(LONG* pColors, double* pPositions, LONG lCount);
//----------------------------------------------------------------------------------------
// Функции для работы со шрифтами
//----------------------------------------------------------------------------------------
virtual HRESULT get_FontName(std::wstring* wsName);
virtual HRESULT put_FontName(const std::wstring& wsName);
virtual HRESULT get_FontPath(std::wstring* wsPath);
virtual HRESULT put_FontPath(const std::wstring& wsPath);
virtual HRESULT get_FontSize(double* dSize);
virtual HRESULT put_FontSize(const double& dSize);
virtual HRESULT get_FontStyle(LONG* lStyle);
virtual HRESULT put_FontStyle(const LONG& lStyle);
virtual HRESULT get_FontStringGID(INT* bGid);
virtual HRESULT put_FontStringGID(const INT& bGid);
virtual HRESULT get_FontCharSpace(double* dSpace);
virtual HRESULT put_FontCharSpace(const double& dSpace);
virtual HRESULT get_FontFaceIndex(int* lFaceIndex);
virtual HRESULT put_FontFaceIndex(const int& lFaceIndex);
//----------------------------------------------------------------------------------------
// Функции для вывода текста
//----------------------------------------------------------------------------------------
virtual HRESULT CommandDrawTextCHAR (const LONG& lUnicode, const double& dX, const double& dY, const double& dW, const double& dH);
virtual HRESULT CommandDrawTextExCHAR(const LONG& lUnicode, const LONG& lGid, const double& dX, const double& dY, const double& dW, const double& dH);
virtual HRESULT CommandDrawText (const std::wstring& wsUnicodeText, const double& dX, const double& dY, const double& dW, const double& dH);
virtual HRESULT CommandDrawTextEx (const std::wstring& wsUnicodeText, const unsigned int* pGids, const unsigned int nGidsCount, const double& dX, const double& dY, const double& dW, const double& dH);
//----------------------------------------------------------------------------------------
// Маркеры команд
//----------------------------------------------------------------------------------------
virtual HRESULT BeginCommand(const DWORD& lType);
virtual HRESULT EndCommand(const DWORD& lType);
//----------------------------------------------------------------------------------------
// Функции для работы с патом
//----------------------------------------------------------------------------------------
virtual HRESULT PathCommandMoveTo(const double& dX, const double& dY);
virtual HRESULT PathCommandLineTo(const double& dX, const double& dY);
virtual HRESULT PathCommandLinesTo(double* pPoints, const int& nCount);
virtual HRESULT PathCommandCurveTo(const double& dX1, const double& dY1, const double& dX2, const double& dY2, const double& dXe, const double& dYe);
virtual HRESULT PathCommandCurvesTo(double* pPoints, const int& nCount);
virtual HRESULT PathCommandArcTo(const double& dX, const double& dY, const double& dW, const double& dH, const double& dStartAngle, const double& dSweepAngle);
virtual HRESULT PathCommandClose();
virtual HRESULT PathCommandEnd();
virtual HRESULT DrawPath(const LONG& lType);
virtual HRESULT PathCommandStart();
virtual HRESULT PathCommandGetCurrentPoint(double* dX, double* dY);
virtual HRESULT PathCommandTextCHAR (const LONG& lUnicode, const double& dX, const double& dY, const double& dW, const double& dH);
virtual HRESULT PathCommandTextExCHAR(const LONG& lUnicode, const LONG& lGid, const double& dX, const double& dY, const double& dW, const double& dH);
virtual HRESULT PathCommandText (const std::wstring& wsUnicodeText, const double& dX, const double& dY, const double& dW, const double& dH);
virtual HRESULT PathCommandTextEx (const std::wstring& wsUnicodeText, const unsigned int* pGids, const unsigned int nGidsCount, const double& dX, const double& dY, const double& dW, const double& dH);
//----------------------------------------------------------------------------------------
// Функции для вывода изображений
//----------------------------------------------------------------------------------------
virtual HRESULT DrawImage(IGrObject* pImage, const double& dX, const double& dY, const double& dW, const double& dH);
virtual HRESULT DrawImageFromFile(const std::wstring& wsImagePath, const double& dX, const double& dY, const double& dW, const double& dH, const BYTE& nAlpha = 255);
//----------------------------------------------------------------------------------------
// Функции для выставления преобразования
//----------------------------------------------------------------------------------------
virtual HRESULT SetTransform(const double& dM11, const double& dM12, const double& dM21, const double& dM22, const double& dX, const double& dY);
virtual HRESULT GetTransform(double* dM11, double* dM12, double* dM21, double* dM22, double* dX, double* dY);
virtual HRESULT ResetTransform();
//----------------------------------------------------------------------------------------
// Тип клипа
//----------------------------------------------------------------------------------------
virtual HRESULT get_ClipMode(LONG* lMode);
virtual HRESULT put_ClipMode(const LONG& lMode);
//----------------------------------------------------------------------------------------
// Дополнительные функции
//----------------------------------------------------------------------------------------
virtual HRESULT CommandLong(const LONG& lType, const LONG& lCommand);
virtual HRESULT CommandDouble(const LONG& lType, const double& dCommand);
virtual HRESULT CommandString(const LONG& lType, const std::wstring& sCommand);
private:
CDocxRenderer_Private* m_pInternal;
};
#endif // _PDF_WRITER_PDFRENDERER_H

View File

@ -0,0 +1,53 @@
QT -= core gui
VERSION = 1.0.0.4
TARGET = DocxRenderer
TEMPLATE = lib
CONFIG += shared
CONFIG += plugin
CONFIG += core_static_link_libstd
CORE_ROOT_DIR = $$PWD/..
PWD_ROOT_DIR = $$PWD
include(../Common/base.pri)
DEFINES += DOCXRENDERER_USE_DYNAMIC_LIBRARY
CONFIG += build_all_zlib build_zlib_as_sources
include(../OfficeUtils/OfficeUtils.pri)
CONFIG += build_cximage_zlib_disable
include(../DesktopEditor/Qt_build/graphics/project/graphics.pri)
include(../DesktopEditor/xml/build/qt/libxml2.pri)
#UnicodeConverter
LIBS += -L$$CORE_BUILDS_LIBRARIES_PATH -lUnicodeConverter
core_windows {
LIBS += -lgdi32 \
-ladvapi32 \
-luser32 \
-lshell32
}
HEADERS += \
src/resources/resources.h
HEADERS += \
src/logic/Common.h \
src/logic/Document.h \
src/logic/ElementImage.h \
src/logic/ElementParagraph.h \
src/logic/ElementShape.h \
src/logic/FontManager.h \
src/logic/FontManagerBase.h \
src/logic/Page.h
HEADERS += \
DocxRenderer.h
SOURCES += \
DocxRenderer.cpp

View File

@ -0,0 +1,518 @@
#pragma once
#ifndef AVSINLINE
#if defined(_MSC_VER)
#define AVSINLINE __forceinline
#else
#define AVSINLINE inline
#endif
#endif
#include "../../Common/TemporaryCS.h"
#include "../Graphics/Matrix.h"
#include "../Graphics/Structures.h"
#include "StringWriter.h"
#include "CalculatorCRC32.h"
namespace NSDocxRenderer
{
AVSINLINE LONG ConvertColor(LONG lBGR)
{
return (0x00FFFFFF & (((lBGR & 0xFF) << 16) | (lBGR & 0x0000FF00) | ((lBGR >> 16) & 0xFF)));
}
AVSINLINE void CorrectString(CString& strValue)
{
strValue.Replace(_T("&"), _T("&amp;"));
strValue.Replace(_T("'"), _T("&apos;"));
strValue.Replace(_T("<"), _T("&lt;"));
strValue.Replace(_T(">"), _T("&gt;"));
strValue.Replace(_T("\""), _T("&quot;"));
}
class CBaseItem
{
public:
enum ElemType
{
etParagraph = 0,
etImage = 1,
etShape = 2
};
ElemType m_eType;
CBaseItem()
{
m_eType = etShape;
}
virtual void ToXml(NSDocxRenderer::CStringWriter& oWriter) = 0;
};
class CImageManager
{
public:
CAtlMap<CString, CImageInfo> m_mapImagesFile;
CAtlMap<DWORD, CImageInfo> m_mapImageData;
CString m_strDstMedia;
LONG m_lMaxSizeImage;
LONG m_lNextIDImage;
CCalculatorCRC32 m_oCRC;
public:
CImageManager()
{
m_strDstMedia = _T("");
m_lMaxSizeImage = 800;
m_lNextIDImage = 0;
}
AVSINLINE void NewDocument()
{
m_strDstMedia = _T("");
m_lMaxSizeImage = 800;
m_lNextIDImage = 0;
m_mapImageData.RemoveAll();
m_mapImagesFile.RemoveAll();
}
public:
CImageInfo WriteImage(IUnknown* punkImage, double& x, double& y, double& width, double& height)
{
if (height < 0)
{
FlipY(punkImage);
height = -height;
y -= height;
}
return GenerateImageID(punkImage);
}
CImageInfo WriteImage(CString& strFile, double& x, double& y, double& width, double& height)
{
return GenerateImageID(strFile);
}
protected:
inline void CopyFile(CString& strFileSrc, CString& strFileDst)
{
CDirectory::CopyFile(strFileSrc, strFileDst, NULL, NULL);
}
void SaveImage(CString& strFileSrc, CImageInfo& oInfo)
{
CString strLoadXml = _T("<transforms><ImageFile-LoadImage sourcepath=\"") + strFileSrc + _T("\"/></transforms>");
ImageStudio::IImageTransforms* pTransform = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL, CLSCTX_INPROC_SERVER, ImageStudio::IID_IImageTransforms, (void**)&pTransform);
VARIANT_BOOL vbRes = VARIANT_FALSE;
BSTR bsLoad = strLoadXml.AllocSysString();
pTransform->SetXml(bsLoad, &vbRes);
SysFreeString(bsLoad);
pTransform->Transform(&vbRes);
VARIANT var;
var.punkVal = NULL;
pTransform->GetResult(0, &var);
if (NULL == var.punkVal)
{
RELEASEINTERFACE(pTransform);
return;
}
MediaCore::IAVSUncompressedVideoFrame* pFrame = NULL;
var.punkVal->QueryInterface(MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&pFrame);
RELEASEINTERFACE((var.punkVal));
if (NULL == pFrame)
{
RELEASEINTERFACE(pTransform);
return;
}
LONG lWidth = 0;
LONG lHeight = 0;
pFrame->get_Width(&lWidth);
pFrame->get_Height(&lHeight);
oInfo.m_eType = GetImageType(pFrame);
RELEASEINTERFACE(pFrame);
CString strSaveItem = _T("");
strSaveItem.Format(_T("\\image%d."), oInfo.m_lID);
if (itJPG == oInfo.m_eType)
{
strSaveItem = _T("<ImageFile-SaveAsJpeg destinationpath=\"") + m_strDstMedia + strSaveItem + _T("jpg\" format=\"888\"/>");
}
else
{
strSaveItem = _T("<ImageFile-SaveAsPng destinationpath=\"") + m_strDstMedia + strSaveItem + _T("png\" format=\"888\"/>");
}
CString strXml = _T("");
if ((lWidth <= m_lMaxSizeImage) && (lHeight <= m_lMaxSizeImage))
{
strXml = _T("<transforms>") + strSaveItem + _T("</transforms>");
}
else
{
LONG lW = 0;
LONG lH = 0;
double dAspect = (double)lWidth / lHeight;
if (lWidth >= lHeight)
{
lW = m_lMaxSizeImage;
lH = (LONG)((double)lW / dAspect);
}
else
{
lH = m_lMaxSizeImage;
lW = (LONG)(dAspect * lH);
}
CString strResize = _T("");
strResize.Format(_T("<ImageTransform-TransformResize width=\"%d\" height=\"%d\"/>"), lW, lH);
strXml = _T("<transforms>") + strResize + strSaveItem + _T("</transforms>");
}
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
BSTR bsXml = strXml.AllocSysString();
pTransform->SetXml(bsXml, &vbSuccess);
SysFreeString(bsXml);
pTransform->Transform(&vbSuccess);
RELEASEINTERFACE(pTransform);
}
void SaveImage(IUnknown* punkImage, CImageInfo& oInfo)
{
MediaCore::IAVSUncompressedVideoFrame* pFrame = NULL;
punkImage->QueryInterface(MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&pFrame);
if (NULL == pFrame)
return;
LONG lWidth = 0;
LONG lHeight = 0;
pFrame->get_Width(&lWidth);
pFrame->get_Height(&lHeight);
oInfo.m_eType = GetImageType(pFrame);
RELEASEINTERFACE(pFrame);
ImageStudio::IImageTransforms* pTransform = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL ,CLSCTX_INPROC_SERVER, ImageStudio::IID_IImageTransforms, (void**)&pTransform);
VARIANT var;
var.vt = VT_UNKNOWN;
var.punkVal = punkImage;
pTransform->SetSource(0, var);
CString strSaveItem = _T("");
strSaveItem.Format(_T("\\image%d."), oInfo.m_lID);
if (itJPG == oInfo.m_eType)
{
strSaveItem = _T("<ImageFile-SaveAsJpeg destinationpath=\"") + m_strDstMedia + strSaveItem + _T("jpg\" format=\"888\"/>");
}
else
{
strSaveItem = _T("<ImageFile-SaveAsPng destinationpath=\"") + m_strDstMedia + strSaveItem + _T("png\" format=\"888\"/>");
}
CString strXml = _T("");
if ((lWidth <= m_lMaxSizeImage) && (lHeight <= m_lMaxSizeImage))
{
strXml = _T("<transforms>") + strSaveItem + _T("</transforms>");
}
else
{
LONG lW = 0;
LONG lH = 0;
double dAspect = (double)lWidth / lHeight;
if (lWidth >= lHeight)
{
lW = m_lMaxSizeImage;
lH = (LONG)((double)lW / dAspect);
}
else
{
lH = m_lMaxSizeImage;
lW = (LONG)(dAspect * lH);
}
CString strResize = _T("");
strResize.Format(_T("<ImageTransform-TransformResize width=\"%d\" height=\"%d\"/>"), lW, lH);
strXml = _T("<transforms>") + strResize + strSaveItem + _T("</transforms>");
}
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
BSTR bsXml = strXml.AllocSysString();
pTransform->SetXml(bsXml, &vbSuccess);
SysFreeString(bsXml);
pTransform->Transform(&vbSuccess);
RELEASEINTERFACE(pTransform);
}
CImageInfo GenerateImageID(IUnknown* punkData)
{
CImageInfo oInfo;
if (NULL == punkData)
return oInfo;
MediaCore::IAVSUncompressedVideoFrame* pFrame = NULL;
punkData->QueryInterface(MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&pFrame);
BYTE* pBuffer = NULL;
LONG lLen = 0;
pFrame->get_Buffer(&pBuffer);
pFrame->get_BufferSize(&lLen);
DWORD dwSum = m_oCRC.Calc(pBuffer, lLen);
CAtlMap<DWORD, CImageInfo>::CPair* pPair = m_mapImageData.Lookup(dwSum);
if (NULL == pPair)
{
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
++m_lNextIDImage;
oInfo.m_lID = m_lNextIDImage;
SaveImage(punkData, oInfo);
m_mapImageData.SetAt(dwSum, oInfo);
}
else
{
oInfo = pPair->m_value;
}
RELEASEINTERFACE(pFrame);
return oInfo;
}
CImageInfo GenerateImageID(CString& strFileName)
{
CImageInfo oInfo;
CAtlMap<CString, CImageInfo>::CPair* pPair = m_mapImagesFile.Lookup(strFileName);
if (NULL == pPair)
{
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
++m_lNextIDImage;
oInfo.m_lID = m_lNextIDImage;
SaveImage(strFileName, oInfo);
m_mapImagesFile.SetAt(strFileName, oInfo);
}
else
{
oInfo = pPair->m_value;
}
return oInfo;
}
ImageType GetImageType(MediaCore::IAVSUncompressedVideoFrame* pFrame)
{
LONG lWidth = 0;
LONG lHeight = 0;
BYTE* pBuffer = NULL;
pFrame->get_Width(&lWidth);
pFrame->get_Height(&lHeight);
pFrame->get_Buffer(&pBuffer);
BYTE* pBufferMem = pBuffer + 3;
LONG lCountPix = lWidth * lHeight;
for (LONG i = 0; i < lCountPix; ++i, pBufferMem += 4)
{
if (255 != *pBufferMem)
return itPNG;
}
return itJPG;
}
void FlipY(IUnknown* punkImage)
{
if (NULL == punkImage)
return;
MediaCore::IAVSUncompressedVideoFrame* pFrame = NULL;
punkImage->QueryInterface(MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&pFrame);
if (NULL == pFrame)
return;
BYTE* pBuffer = NULL;
LONG lWidth = 0;
LONG lHeight = 0;
LONG lStride = 0;
pFrame->get_Buffer(&pBuffer);
pFrame->get_Width(&lWidth);
pFrame->get_Height(&lHeight);
pFrame->get_Stride(0, &lStride);
if (lStride < 0)
lStride = -lStride;
if ((lWidth * 4) != lStride)
{
RELEASEINTERFACE(pFrame);
return;
}
BYTE* pBufferMem = new BYTE[lStride];
BYTE* pBufferEnd = pBuffer + lStride * (lHeight - 1);
LONG lCountV = lHeight / 2;
for (LONG lIndexV = 0; lIndexV < lCountV; ++lIndexV)
{
memcpy(pBufferMem, pBuffer, lStride);
memcpy(pBuffer, pBufferEnd, lStride);
memcpy(pBufferEnd, pBufferMem, lStride);
pBuffer += lStride;
pBufferEnd -= lStride;
}
RELEASEARRAYOBJECTS(pBufferMem);
RELEASEINTERFACE(pFrame);
}
void FlipX(IUnknown* punkImage)
{
if (NULL == punkImage)
return;
MediaCore::IAVSUncompressedVideoFrame* pFrame = NULL;
punkImage->QueryInterface(MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&pFrame);
if (NULL == pFrame)
return;
BYTE* pBuffer = NULL;
LONG lWidth = 0;
LONG lHeight = 0;
LONG lStride = 0;
pFrame->get_Buffer(&pBuffer);
pFrame->get_Width(&lWidth);
pFrame->get_Height(&lHeight);
pFrame->get_Stride(0, &lStride);
if (lStride < 0)
lStride = -lStride;
if ((lWidth * 4) != lStride)
{
RELEASEINTERFACE(pFrame);
return;
}
DWORD* pBufferDWORD = (DWORD*)pBuffer;
LONG lW2 = lWidth / 2;
for (LONG lIndexV = 0; lIndexV < lHeight; ++lIndexV)
{
DWORD* pMem1 = pBufferDWORD;
DWORD* pMem2 = pBufferDWORD + lWidth - 1;
LONG lI = 0;
while (lI < lW2)
{
DWORD dwMem = *pMem1;
*pMem1++ = *pMem2;
*pMem2-- = dwMem;
}
}
RELEASEINTERFACE(pFrame);
}
};
}
namespace NSDocxRenderer
{
// 2-byte number
inline short little_endian_2_big_endian( short s )
{
return ( ( s >> 8) & 0xff ) + ( ( s << 8 ) & 0xff00 );
}
/*========================================================================================================*/
// 4-byte number
inline int little_endian_2_big_endian( int i )
{
return ( ( i & 0xff ) << 24 ) + ( ( i & 0xff00 ) << 8 ) + ( ( i & 0xff0000 ) >> 8 ) + ( ( i >> 24 ) & 0xff );
}
AVSINLINE CString ToHexString( unsigned int ui )
{
CString strRes = _T("");
strRes.Format(_T("%08X"), ui);
return strRes;
}
/*========================================================================================================*/
AVSINLINE CString ToHexString( short s )
{
CString strRes = _T("");
strRes.Format(_T("%04X"), s);
return strRes;
}
/*========================================================================================================*/
AVSINLINE CString ToHexString( unsigned short us )
{
CString strRes = _T("");
strRes.Format(_T("%04X"), us);
return strRes;
}
/*========================================================================================================*/
AVSINLINE CString ToHexString( char c )
{
CString strRes = _T("");
strRes.Format(_T("%02X"), c);
return strRes;
}
/*========================================================================================================*/
AVSINLINE CString ToHexString( BYTE uc )
{
CString strRes = _T("");
strRes.Format(_T("%02X"), uc);
return strRes;
}
/*========================================================================================================*/
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,87 @@
#pragma once
#include "Common.h"
namespace NSDocxRenderer
{
static _bstr_t g_bstr_image_1 = L"<w:r><w:pict><v:shape id=\"\" type=\"\" style=\"position:absolute;";
static _bstr_t g_bstr_image_2 = L"z-index:-1;mso-position-horizontal-relative:page;mso-position-vertical-relative:page\" filled=\"f\">";
static _bstr_t g_bstr_image_3 = L"</v:shape></w:pict></w:r>";
static CString g_string_image_position = _T("margin-left:%.2lfmm;margin-top:%.2lfmm;width:%.2lfmm;height:%.2lfmm;");
static CString g_string_image_position_rotate = _T("margin-left:%.2lfmm;margin-top:%.2lfmm;width:%.2lfmm;height:%.2lfmm;rotation:%d;");
static CString g_string_image_rid = _T("<v:imagedata r:id=\"rId%d\" o:title=\"\"/>");
class CImage : public CBaseItem
{
public:
CString m_strPath;
LONG m_lID;
double m_dLeft;
double m_dTop;
double m_dWidth;
double m_dHeight;
double m_dRotate;
public:
CImage()
{
m_eType = etImage;
m_strPath = _T("");
m_lID = -1;
}
CImage(const CImage& oSrc)
{
*this = oSrc;
}
CImage(const CImageInfo& oInfo, const CString& strDstMedia)
{
m_eType = etImage;
m_strPath = strDstMedia;
m_lID = oInfo.m_lID;
}
CImage& operator=(const CImage& oSrc)
{
m_eType = etImage;
m_strPath = oSrc.m_strPath;
m_lID = oSrc.m_lID;
m_dLeft = oSrc.m_dLeft;
m_dTop = oSrc.m_dTop;
m_dWidth = oSrc.m_dWidth;
m_dHeight = oSrc.m_dHeight;
m_dRotate = oSrc.m_dRotate;
return *this;
}
virtual void ToXml(NSDocxRenderer::CStringWriter& oWriter)
{
oWriter.WriteString(g_bstr_image_1);
if (0.0 == m_dRotate)
{
CString strPosition = _T("");
strPosition.Format(g_string_image_position, m_dLeft, m_dTop, m_dWidth, m_dHeight);
oWriter.WriteString(strPosition);
}
else
{
CString strPosition = _T("");
strPosition.Format(g_string_image_position_rotate, m_dLeft, m_dTop, m_dWidth, m_dHeight, (int)m_dRotate);
oWriter.WriteString(strPosition);
}
oWriter.WriteString(g_bstr_image_2);
CString strRid = _T("");
strRid.Format(g_string_image_rid, 10 + m_lID);
oWriter.WriteString(strRid);
oWriter.WriteString(g_bstr_image_3);
}
};
}

View File

@ -0,0 +1,669 @@
#pragma once
#include "Common.h"
//#include "../../Common/DocxFormat/Source/DocxFormat/Logic/Paragraph.h"
#include "FontManager.h"
namespace NSDocxRenderer
{
const double c_dMMToDx = 72 * 20 / 25.4;
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> T <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> IsBigger, IsBiggerOrEqual
template<typename T>
void SortElements(CAtlArray<T*>& oArray)
{
int nSize = (int)oArray.GetCount();
// handle 0, 1 and 2 elements
if (nSize <= 1)
return;
if (nSize == 2)
{
if (oArray[0]->IsBigger(oArray[1]))
{
T* pTemp = oArray[0];
oArray[0] = oArray[1];
oArray[1] = pTemp;
}
return;
}
T* tTemp;
// arrange elements as tree with greater elements appearing first
int nIndex = (nSize >> 1) - 1, nCurr = 0, nNext = 0;
int nLast = nSize - 1;
int nHalf = nSize >> 1;
do
{
// save element at start of chain
tTemp = oArray[nIndex];
nCurr = nIndex;
while (nCurr < nHalf)
{
nNext = (nCurr << 1) + 1;
if (nNext < nLast && (oArray[nNext + 1]->IsBigger(oArray[nNext])))
nNext++;
if (tTemp->IsBiggerOrEqual(oArray[nNext]))
break;
// promote element in chain
oArray[nCurr] = oArray[nNext];
nCurr = nNext;
}
// restore element at end of chain
oArray[nCurr] = tTemp;
}
while (nIndex--);
// sequentially reduce tree size by removing maximum element and rebalancing
nIndex = nSize;
while (--nIndex)
{
// save element at start of chain
tTemp = oArray[nIndex];
oArray[nIndex] = oArray[0];
nCurr = 0;
nLast = nIndex - 1;
nHalf = nIndex >> 1;
while (nCurr < nHalf)
{
nNext = (nCurr << 1) + 1;
if (nNext < nLast && (oArray[nNext + 1]->IsBigger(oArray[nNext])))
nNext++;
if (tTemp->IsBiggerOrEqual(oArray[nNext]))
break;
// promote element in chain
oArray[nCurr] = oArray[nNext];
nCurr = nNext;
}
// restore element at end of chain
oArray[nCurr] = tTemp;
}
}
static _bstr_t g_bstr_text_run_Start = L"<w:r><w:rPr>";
static _bstr_t g_bstr_text_run_PropEnd = L"</w:rPr>";
static _bstr_t g_bstr_text_run_End = L"</w:r>";
static _bstr_t g_bstr_text_run_text1 = L"<w:t xml:space=\"preserve\">";
static _bstr_t g_bstr_text_run_text2 = L"</w:t>";
static _bstr_t g_bstr_text_bold_true = L"<w:b w:val=\"true\"/>";
static _bstr_t g_bstr_text_italic_true = L"<w:i w:val=\"true\"/>";
static CString g_string_text_font_size = _T("<w:sz w:val=\"%d\"/><w:szCs w:val=\"%d\"/>");
static CString g_string_text_font_name = _T("<w:rFonts w:ascii=\"%s\" w:hAnsi=\"%s\" w:cs=\"%s\"/>");
static CString g_string_text_color = _T("<w:color w:val=\"%06x\"/>");
static CString g_string_text_paragraph_noframes = _T("<w:pPr><w:spacing w:before=\"%d\" w:line=\"%d\" w:lineRule=\"exact\"/><w:ind w:left=\"%d\"/></w:pPr>");
static _bstr_t g_bstr_text_par_start = L"<w:p>";
static _bstr_t g_bstr_text_par_end = L"</w:p>";
static CString g_string_spacing_character = _T("<w:spacing w:val=\"%d\"/>");
static CString g_string_spacing_character2 = _T("<w:spacing w:val=\"%.3lfpt\"/>");
static CString g_string_par_props_mode2 = _T("<w:pPr><w:framePr w:hAnchor=\"page\" w:vAnchor=\"page\" w:x=\"%d\" w:y=\"%d\"/></w:pPr>");
AVSINLINE void DeleteSpaces(CString& strText)
{
int nLen = strText.GetLength();
int nStart = 0;
while ((nStart < nLen) && (TCHAR(' ') == strText[nStart]))
++nStart;
if (nStart == nLen)
{
strText = _T("");
return;
}
int nEnd = nLen - 1;
while ((nEnd > nStart) && (TCHAR(' ') == strText[nEnd]))
--nEnd;
strText = strText.Mid(nStart, nEnd - nStart + 1);
}
class CContText
{
public:
NSStructures::CFont m_oFont;
NSStructures::CBrush m_oBrush;
CString m_strPickFontName;
LONG m_lPickFontStyle;
CString m_strText;
CString m_strGidText;
double m_dX;
double m_dY;
double m_dWidth;
double m_dHeight;
double m_dWidthWithoutSpaces;
double m_dLeftWithoutSpaces;
double m_dPosition;
double m_dSpaceWidthMM;
double m_dCalculateWidth;
public:
CContText()
{
m_strText = _T("");
m_strGidText = _T("");
m_strPickFontName = _T("");
m_lPickFontStyle = 0;
m_dX = 0;
m_dY = 0;
m_dWidth = 0;
m_dHeight = 0;
m_dWidthWithoutSpaces = 0;
m_dLeftWithoutSpaces = 0;
m_dPosition = 0;
m_dSpaceWidthMM = 0;
m_dCalculateWidth = 0;
}
~CContText()
{
}
AVSINLINE void Clear()
{
}
CContText(const CContText& oSrc)
{
*this = oSrc;
}
CContText& operator=(const CContText& oSrc)
{
m_oFont = oSrc.m_oFont;
m_oBrush = oSrc.m_oBrush;
m_strText = oSrc.m_strText;
m_strGidText = oSrc.m_strGidText;
m_strPickFontName = oSrc.m_strPickFontName;
m_lPickFontStyle = oSrc.m_lPickFontStyle;
m_dX = oSrc.m_dX;
m_dY = oSrc.m_dY;
m_dWidth = oSrc.m_dWidth;
m_dHeight = oSrc.m_dHeight;
m_dWidthWithoutSpaces = oSrc.m_dWidthWithoutSpaces;
m_dLeftWithoutSpaces = oSrc.m_dLeftWithoutSpaces;
m_dPosition = oSrc.m_dPosition;
m_dSpaceWidthMM = oSrc.m_dSpaceWidthMM;
m_dCalculateWidth = oSrc.m_dCalculateWidth;
return *this;
}
AVSINLINE bool IsBigger(const CContText* oSrc)
{
return (m_dX > oSrc->m_dX) ? true : false;
}
AVSINLINE bool IsBiggerOrEqual(const CContText* oSrc)
{
return (m_dX >= oSrc->m_dX) ? true : false;
}
AVSINLINE void Write(NSDocxRenderer::CStringWriter& oWriter, CFontManagerLight* pManagerLight, bool bIsAddSpace = false)
{
oWriter.WriteString(g_bstr_text_run_Start);
if (m_dWidth != m_dWidthWithoutSpaces)
{
DeleteSpaces(m_strText);
m_dWidth = m_dWidthWithoutSpaces;
}
if (_T("") == m_strPickFontName)
{
if (m_oFont.Bold)
oWriter.WriteString(g_bstr_text_bold_true);
if (m_oFont.Italic)
oWriter.WriteString(g_bstr_text_italic_true);
if (bIsAddSpace)
{
m_dWidth += m_dSpaceWidthMM;
m_strText += _T(" ");
}
}
else
{
if (0x01 == (0x01 & m_lPickFontStyle))
oWriter.WriteString(g_bstr_text_bold_true);
if (0x02 == (0x02 & m_lPickFontStyle))
oWriter.WriteString(g_bstr_text_italic_true);
if (bIsAddSpace)
{
m_dWidth += pManagerLight->GetSpaceWidth();
m_strText += _T(" ");
}
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
double ___dSize = (double)((LONG)(m_oFont.Size * 2)) / 2;
pManagerLight->LoadFont(m_strPickFontName, m_lPickFontStyle, ___dSize, FALSE);
double dWidth = pManagerLight->MeasureStringWidth(m_strText);
if (fabs(dWidth - m_dWidth) > 2)
{
double dSpacing = (m_dWidth - dWidth) / (m_strText.GetLength() + 1);
dSpacing *= c_dMMToDx;
CString strSpacing = _T("");
strSpacing.Format(g_string_spacing_character, (LONG)dSpacing);
oWriter.WriteString(strSpacing);
}
}
CString strSize = _T("");
LONG lSize = (LONG)(2 * m_oFont.Size);
strSize.Format(g_string_text_font_size, lSize, lSize);
oWriter.WriteString(strSize);
CString strName = _T("");
if (_T("") == m_strPickFontName)
strName.Format(g_string_text_font_name, m_oFont.Name, m_oFont.Name, m_oFont.Name);
else
strName.Format(g_string_text_font_name, m_strPickFontName, m_strPickFontName, m_strPickFontName);
oWriter.WriteString(strName);
CString strColor = _T("");
strColor.Format(g_string_text_color, ConvertColor(m_oBrush.Color1));
oWriter.WriteString(strColor);
oWriter.WriteString(g_bstr_text_run_PropEnd);
oWriter.WriteString(g_bstr_text_run_text1);
CString strText = m_strText;
CorrectString(strText);
oWriter.WriteString(strText);
oWriter.WriteString(g_bstr_text_run_text2);
oWriter.WriteString(g_bstr_text_run_End);
}
AVSINLINE void WriteTo(double dSpacingMM, NSDocxRenderer::CStringWriter& oWriter, CFontManagerLight* pManagerLight)
{
oWriter.WriteString(g_bstr_text_run_Start);
double dSpaceMMSize = m_dSpaceWidthMM;
if (_T("") == m_strPickFontName)
{
if (m_oFont.Bold)
oWriter.WriteString(g_bstr_text_bold_true);
if (m_oFont.Italic)
oWriter.WriteString(g_bstr_text_italic_true);
}
else
{
if (0x01 == (0x01 & m_lPickFontStyle))
oWriter.WriteString(g_bstr_text_bold_true);
if (0x02 == (0x02 & m_lPickFontStyle))
oWriter.WriteString(g_bstr_text_italic_true);
dSpaceMMSize = pManagerLight->GetSpaceWidth();
}
CString strSize = _T("");
LONG lSize = (LONG)(2 * m_oFont.Size);
strSize.Format(g_string_text_font_size, lSize, lSize);
oWriter.WriteString(strSize);
CString strName = _T("");
if (_T("") == m_strPickFontName)
strName.Format(g_string_text_font_name, m_oFont.Name, m_oFont.Name, m_oFont.Name);
else
strName.Format(g_string_text_font_name, m_strPickFontName, m_strPickFontName, m_strPickFontName);
oWriter.WriteString(strName);
CString strColor = _T("");
strColor.Format(g_string_text_color, ConvertColor(m_oBrush.Color1));
oWriter.WriteString(strColor);
LONG lSpacing = (LONG)((dSpacingMM - dSpaceMMSize) * c_dMMToDx);
CString strSpacing = _T("");
strSpacing.Format(g_string_spacing_character, lSpacing);
oWriter.WriteString(strSpacing);
oWriter.WriteString(g_bstr_text_run_PropEnd);
oWriter.WriteString(g_bstr_text_run_text1);
CString strText = _T(" ");
oWriter.WriteString(strText);
oWriter.WriteString(g_bstr_text_run_text2);
oWriter.WriteString(g_bstr_text_run_End);
}
};
class CTextLine
{
public:
CAtlArray<CContText*> m_arConts;
double m_dBaselinePos;
double m_dBaselineOffset;
double m_dX;
double m_dY;
double m_dWidth;
double m_dHeight;
public:
CTextLine() : m_arConts()
{
m_dBaselinePos = 0;
m_dX = 0;
m_dY = 0;
m_dWidth = 0;
m_dHeight = 0;
}
AVSINLINE void Clear()
{
size_t nCount = m_arConts.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CContText* pText = m_arConts[i];
RELEASEOBJECT(pText);
}
m_arConts.RemoveAll();
}
~CTextLine()
{
Clear();
}
CTextLine(const CTextLine& oSrc)
{
*this = oSrc;
}
CTextLine& operator=(const CTextLine& oSrc)
{
Clear();
size_t nCount = oSrc.m_arConts.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
m_arConts.Add(new CContText(*oSrc.m_arConts[i]));
}
m_dBaselinePos = oSrc.m_dBaselinePos;
m_dX = oSrc.m_dX;
m_dY = oSrc.m_dY;
m_dWidth = oSrc.m_dWidth;
m_dHeight = oSrc.m_dHeight;
}
AVSINLINE void AddCont(CContText* pCont, double dBaselineOffset)
{
if (0 == m_arConts.GetCount())
m_dBaselineOffset = dBaselineOffset;
if ( ( pCont->m_dX > 0 ) && ( ( m_dX == 0 ) || ( pCont->m_dX < m_dX ) ) )
m_dX = pCont->m_dX;
if (m_dHeight < pCont->m_dHeight)
m_dHeight = pCont->m_dHeight;
m_arConts.Add(pCont);
}
AVSINLINE bool IsBigger(const CTextLine* oSrc)
{
return (m_dBaselinePos > oSrc->m_dBaselinePos) ? true : false;
}
AVSINLINE bool IsBiggerOrEqual(const CTextLine* oSrc)
{
return (m_dBaselinePos >= oSrc->m_dBaselinePos) ? true : false;
}
AVSINLINE void SortConts()
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> m_dX
SortElements(m_arConts);
}
void Merge(CTextLine* pTextLine)
{
size_t nCount = pTextLine->m_arConts.GetCount();
if (0 != nCount)
{
if (pTextLine->m_dX < m_dX)
{
m_dX = pTextLine->m_dX;
}
if (pTextLine->m_dBaselinePos < m_dBaselinePos)
{
m_dHeight = (m_dBaselinePos - pTextLine->m_dBaselinePos + pTextLine->m_dHeight);
}
else
{
m_dHeight = (pTextLine->m_dBaselinePos - m_dBaselinePos + m_dHeight);
}
double dSubPosition = m_dBaselinePos - pTextLine->m_dBaselinePos;
for (size_t i = 0; i < nCount; ++i)
{
pTextLine->m_arConts[i]->m_dPosition = dSubPosition;
m_arConts.Add(pTextLine->m_arConts[i]);
}
}
}
void ToXml(NSDocxRenderer::CStringWriter& oWriter, CFontManagerLight* pManagerLight)
{
size_t nCountConts = m_arConts.GetCount();
if (0 == nCountConts)
return;
CContText* pPrev = m_arConts[0];
double dDelta = 0;
for (size_t i = 1; i < nCountConts; ++i)
{
CContText* pCurrent = m_arConts[i];
if (0 == pCurrent->m_dWidthWithoutSpaces)
continue;
dDelta = pCurrent->m_dLeftWithoutSpaces - (pPrev->m_dLeftWithoutSpaces + pPrev->m_dWidthWithoutSpaces);
if (dDelta < 0.5)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (font/brush)
pPrev->Write(oWriter, pManagerLight);
pPrev = pCurrent;
}
//else if (dDelta < 2 * pPrev->m_dSpaceWidthMM)
//{
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
// pPrev->Write(oWriter, pManagerLight, true);
// pPrev = pCurrent;
//}
else
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pPrev->Write(oWriter, pManagerLight);
pPrev->WriteTo(dDelta, oWriter, pManagerLight);
pPrev = pCurrent;
}
}
pPrev->Write(oWriter, pManagerLight);
}
};
class CParagraph : public CBaseItem
{
public:
// text frame properties
bool m_bIsTextFrameProperties;
// geometry paragraph
double m_dLeft;
double m_dTop;
double m_dWidth;
double m_dHeight;
CFontManagerLight* m_pManagerLight;
double m_dSpaceBefore;
TextAssociationType m_eTextAssociationType;
CAtlArray<CTextLine*> m_arLines;
public:
CParagraph(const TextAssociationType& eType) : m_arLines()
{
m_eType = etParagraph;
m_bIsTextFrameProperties = false;
m_dLeft = 0.0;
m_dTop = 0.0;
m_dWidth = 0.0;
m_dHeight = 0.0;
m_dSpaceBefore = 0.0;
m_pManagerLight = NULL;
m_eTextAssociationType = eType;
}
CParagraph(const CParagraph& oSrc)
{
*this = oSrc;
}
~CParagraph()
{
Clear();
}
AVSINLINE void Clear()
{
size_t nCount = m_arLines.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CTextLine* pText = m_arLines[i];
RELEASEOBJECT(pText);
}
m_arLines.RemoveAll();
m_pManagerLight = NULL;
}
CParagraph& operator=(const CParagraph& oSrc)
{
m_eType = etParagraph;
m_bIsTextFrameProperties = oSrc.m_bIsTextFrameProperties;
m_dLeft = oSrc.m_dLeft;
m_dTop = oSrc.m_dTop;
m_dWidth = oSrc.m_dWidth;
m_dHeight = oSrc.m_dHeight;
m_dSpaceBefore = oSrc.m_dSpaceBefore;
m_eTextAssociationType = oSrc.m_eTextAssociationType;
Clear();
size_t nCount = oSrc.m_arLines.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
m_arLines.Add(new CTextLine(*oSrc.m_arLines[i]));
}
m_pManagerLight = oSrc.m_pManagerLight;
return *this;
}
virtual void ToXml(NSDocxRenderer::CStringWriter& oWriter)
{
oWriter.WriteString(g_bstr_text_par_start);
switch (m_eTextAssociationType)
{
case TextAssociationTypeDefault:
case TextAssociationTypeLine:
{
LONG lX = (LONG)(m_dLeft * c_dMMToDx);
LONG lY = (LONG)(m_dTop * c_dMMToDx);
CString strTextProps = _T("");
strTextProps.Format(g_string_par_props_mode2, lX, lY);
oWriter.WriteString(strTextProps);
break;
}
case TextAssociationTypeBlock:
{
LONG lX = (LONG)(m_dLeft * c_dMMToDx);
LONG lY = (LONG)(m_dTop * c_dMMToDx);
CString strTextProps = _T("");
strTextProps.Format(g_string_par_props_mode2, lX, lY);
oWriter.WriteString(strTextProps);
break;
}
case TextAssociationTypeNoFrames:
{
LONG lSpaceBefore = (LONG)(m_dSpaceBefore * c_dMMToDx);
LONG lHeight = (LONG)(m_dHeight * c_dMMToDx);
LONG lLeft = (LONG)(m_dLeft * c_dMMToDx);
CString strParProperties = _T("");
strParProperties.Format(g_string_text_paragraph_noframes, lSpaceBefore, lHeight, lLeft);
oWriter.WriteString(strParProperties);
break;
}
default:
break;
}
size_t nCount = m_arLines.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CTextLine* pTextLine = m_arLines[i];
pTextLine->SortConts();
pTextLine->ToXml(oWriter, m_pManagerLight);
}
oWriter.WriteString(g_bstr_text_par_end);
}
};
}

View File

@ -0,0 +1,385 @@
#pragma once
#include "Common.h"
namespace NSDocxRenderer
{
static _bstr_t g_vml_bstr_ClosePath = L"x";
static _bstr_t g_vml_bstr_EndPath = L"e";
static _bstr_t g_vml_bstr_NoFill = L"nf";
static _bstr_t g_vml_bstr_NoStroke = L"ns";
static CString g_vml_string_MoveTo = _T("m%d,%d");
static CString g_vml_string_LineTo = _T("l%d,%d");
static CString g_vml_string_CurveTo = _T("c%d,%d %d,%d %d,%d");
static _bstr_t g_bstr_shape1 = L"<w:r><w:pict><v:shape id=\"\" o:spid=\"\" style=\"position:absolute;";
static _bstr_t g_bstr_shape2 = L"z-index:-1;mso-position-horizontal-relative:page;mso-position-vertical-relative:page;\"";
static CString g_string_shape_position = _T("margin-left:%.2lfmm;margin-top:%.2lfmm;width:%.2lfmm;height:%.2lfmm;");
static CString g_string_shape_geometry = _T(" coordsize=\"%d,%d\" path=\"%s\" fillcolor=\"#%06x\" strokecolor=\"#%06x\" strokeweight=\"%.2lfmm\">");
static CString g_string_tx_rid = _T("<v:imagedata r:id=\"rId%d\" o:title=\"\"/>");
static CString g_string_fill_opacity = _T("<v:fill opacity=\"%.2lf\"/>");
static CString g_string_stroke_opacity = _T("<v:stroke opacity=\"%.2lf\"/>");
static _bstr_t g_bstr_shape3 = L"<w10:wrap anchorx=\"page\" anchory=\"page\"/></v:shape></w:pict></w:r>";
class CVectorGraphics
{
public:
double* m_pData;
size_t m_lSize;
double* m_pDataCur;
size_t m_lSizeCur;
public:
double m_dLeft;
double m_dTop;
double m_dRight;
double m_dBottom;
public:
CVectorGraphics()
{
m_pData = NULL;
m_lSize = 0;
m_pDataCur = m_pData;
m_lSizeCur = m_lSize;
End();
}
~CVectorGraphics()
{
RELEASEMEM(m_pData);
}
AVSINLINE void AddSize(size_t nSize)
{
if (NULL == m_pData)
{
m_lSize = max(nSize, 500);
m_pData = (double*)malloc(m_lSize * sizeof(double));
m_lSizeCur = 0;
m_pDataCur = m_pData;
return;
}
if ((m_lSizeCur + nSize) > m_lSize)
{
while ((m_lSizeCur + nSize) > m_lSize)
{
m_lSize *= 2;
}
double* pRealloc = (double*)realloc(m_pData, m_lSize * sizeof(double));
if (NULL != pRealloc)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pData = pRealloc;
m_pDataCur = m_pData + m_lSizeCur;
}
else
{
double* pMalloc = (double*)malloc(m_lSize * sizeof(double));
memcpy(pMalloc, m_pData, m_lSizeCur * sizeof(double));
free(m_pData);
m_pData = pMalloc;
m_pDataCur = m_pData + m_lSizeCur;
}
}
}
public:
AVSINLINE void MoveTo(const double& x1, const double& y1)
{
AddSize(3);
*m_pDataCur = 0; ++m_pDataCur;
*m_pDataCur = x1; ++m_pDataCur;
*m_pDataCur = y1; ++m_pDataCur;
m_lSizeCur += 3;
CheckPoint(x1, y1);
}
AVSINLINE void LineTo(const double& x1, const double& y1)
{
AddSize(3);
*m_pDataCur = 1; ++m_pDataCur;
*m_pDataCur = x1; ++m_pDataCur;
*m_pDataCur = y1; ++m_pDataCur;
m_lSizeCur += 3;
CheckPoint(x1, y1);
}
AVSINLINE void CurveTo(const double& x1, const double& y1, const double& x2, const double& y2, const double& x3, const double& y3)
{
AddSize(7);
*m_pDataCur = 2; ++m_pDataCur;
*m_pDataCur = x1; ++m_pDataCur;
*m_pDataCur = y1; ++m_pDataCur;
*m_pDataCur = x2; ++m_pDataCur;
*m_pDataCur = y2; ++m_pDataCur;
*m_pDataCur = x3; ++m_pDataCur;
*m_pDataCur = y3; ++m_pDataCur;
m_lSizeCur += 7;
CheckPoint(x1, y1);
CheckPoint(x2, y2);
CheckPoint(x3, y3);
}
AVSINLINE void Close()
{
AddSize(1);
*m_pDataCur = 3; ++m_pDataCur;
m_lSizeCur += 1;
}
AVSINLINE size_t GetCurSize()
{
return m_lSizeCur;
}
AVSINLINE void Clear()
{
RELEASEMEM(m_pData);
m_pData = NULL;
m_lSize = 0;
m_pDataCur = m_pData;
m_lSizeCur = 0;
}
AVSINLINE void ClearNoAttack()
{
m_pDataCur = m_pData;
m_lSizeCur = 0;
}
AVSINLINE void End()
{
ClearNoAttack();
m_dLeft = 0xFFFFFF;
m_dTop = 0xFFFFFF;
m_dRight = -0xFFFFFF;
m_dBottom = -0xFFFFFF;
}
AVSINLINE void CheckPoint(const double& x, const double& y)
{
if (m_dLeft > x)
m_dLeft = x;
if (m_dRight < x)
m_dRight = x;
if (m_dTop > y)
m_dTop = y;
if (m_dBottom < y)
m_dBottom = y;
}
};
class CShape : public CBaseItem
{
public:
CString m_strPath;
NSStructures::CBrush m_oBrush;
NSStructures::CPen m_oPen;
double m_dLeft;
double m_dTop;
double m_dWidth;
double m_dHeight;
bool m_bIsFill;
bool m_bIsStroke;
LONG m_lCoordSizeX;
LONG m_lCoordSizeY;
LONG m_lTxId;
public:
CShape()
{
m_dLeft = 0;
m_dTop = 0;
m_dWidth = 0;
m_dHeight = 0;
m_bIsFill = false;
m_bIsStroke = false;
m_lCoordSizeX = 100000;
m_lCoordSizeY = 100000;
m_lTxId = -1;
}
CShape(const CShape& oSrc)
{
*this = oSrc;
}
CShape& operator=(const CShape& oSrc)
{
m_eType = etShape;
m_strPath = oSrc.m_strPath;
m_oBrush = oSrc.m_oBrush;
m_oPen = oSrc.m_oPen;
m_dLeft = oSrc.m_dLeft;
m_dTop = oSrc.m_dTop;
m_dWidth = oSrc.m_dWidth;
m_dHeight = oSrc.m_dHeight;
m_bIsFill = oSrc.m_bIsFill;
m_bIsStroke = oSrc.m_bIsStroke;
m_lTxId = oSrc.m_lTxId;
return *this;
}
void CreateFromVectorData(CVectorGraphics* pVector, NSDocxRenderer::CStringWriter& oWriter, const LONG& lCoordSize, LONG lType)
{
m_dLeft = pVector->m_dLeft;
m_dTop = pVector->m_dTop;
m_dWidth = pVector->m_dRight - m_dLeft;
m_dHeight = pVector->m_dBottom - m_dTop;
m_lCoordSizeX = lCoordSize;
m_lCoordSizeY = lCoordSize;
size_t nCount = pVector->GetCurSize();
double* pData = pVector->m_pData;
while (nCount > 0)
{
double dType = *pData++;
if (0 == dType)
{
LONG lX = (LONG)((*pData - m_dLeft) * lCoordSize / m_dWidth);
++pData;
LONG lY = (LONG)((*pData - m_dTop) * lCoordSize / m_dHeight);
++pData;
CString strPath = _T("");
strPath.Format(g_vml_string_MoveTo, lX, lY);
oWriter.WriteString(strPath);
nCount -= 3;
}
else if (1 == dType)
{
LONG lX = (LONG)((*pData - m_dLeft) * lCoordSize / m_dWidth);
++pData;
LONG lY = (LONG)((*pData - m_dTop) * lCoordSize / m_dHeight);
++pData;
CString strPath = _T("");
strPath.Format(g_vml_string_LineTo, lX, lY);
oWriter.WriteString(strPath);
nCount -= 3;
}
else if (2 == dType)
{
LONG lX1 = (LONG)((*pData - m_dLeft) * lCoordSize / m_dWidth);
++pData;
LONG lY1 = (LONG)((*pData - m_dTop) * lCoordSize / m_dHeight);
++pData;
LONG lX2 = (LONG)((*pData - m_dLeft) * lCoordSize / m_dWidth);
++pData;
LONG lY2 = (LONG)((*pData - m_dTop) * lCoordSize / m_dHeight);
++pData;
LONG lX3 = (LONG)((*pData - m_dLeft) * lCoordSize / m_dWidth);
++pData;
LONG lY3 = (LONG)((*pData - m_dTop) * lCoordSize / m_dHeight);
++pData;
CString strPath = _T("");
strPath.Format(g_vml_string_CurveTo, lX1, lY1, lX2, lY2, lX3, lY3);
oWriter.WriteString(strPath);
nCount -= 7;
}
else
{
oWriter.WriteString(g_vml_bstr_ClosePath);
--nCount;
}
}
if (0x00 == (lType & 0x01))
oWriter.WriteString(g_vml_bstr_NoStroke);
if (0x00 == (lType >> 8))
oWriter.WriteString(g_vml_bstr_NoFill);
oWriter.WriteString(g_vml_bstr_EndPath);
m_strPath = oWriter.GetData();
oWriter.ClearNoAttack();
}
virtual void ToXml(NSDocxRenderer::CStringWriter& oWriter)
{
oWriter.WriteString(g_bstr_shape1);
CString strPosition = _T("");
strPosition.Format(g_string_shape_position, m_dLeft, m_dTop, m_dWidth, m_dHeight);
oWriter.WriteString(strPosition);
oWriter.WriteString(strPosition);
oWriter.WriteString(g_bstr_shape2);
CString strStyle = _T("");
strStyle.Format(g_string_shape_geometry, m_lCoordSizeX, m_lCoordSizeY, m_strPath, ConvertColor(m_oBrush.Color1), ConvertColor(m_oPen.Color), m_oPen.Size);
oWriter.WriteString(strStyle);
if (c_BrushTypeTexture == m_oBrush.Type)
{
CString strImage = _T("");
strImage.Format(g_string_tx_rid, 10 + m_lTxId);
oWriter.WriteString(strImage);
if (0xFF != m_oBrush.TextureAlpha)
{
CString strFillOpacity = _T("");
strFillOpacity.Format(g_string_fill_opacity, (double)m_oBrush.TextureAlpha / 255.0);
oWriter.WriteString(strFillOpacity);
}
}
else
{
if (0xFF != m_oBrush.Alpha1)
{
CString strFillOpacity = _T("");
strFillOpacity.Format(g_string_fill_opacity, (double)m_oBrush.Alpha1 / 255.0);
oWriter.WriteString(strFillOpacity);
}
if (0xFF != m_oPen.Alpha)
{
CString strPenOpacity = _T("");
strPenOpacity.Format(g_string_stroke_opacity, (double)m_oPen.Alpha / 255.0);
oWriter.WriteString(strPenOpacity);
}
}
oWriter.WriteString(g_bstr_shape3);
}
};
}

View File

@ -0,0 +1,354 @@
#pragma once
#include "Common.h"
#include "FontManagerBase.h"
namespace NSDocxRenderer
{
using namespace NSFontManager;
const double c_dDpiX = 72.0;
const double c_dDpiY = 72.0;
enum TextAssociationType
{
TextAssociationTypeDefault = 0,
TextAssociationTypeLine = 1,
TextAssociationTypeNoFrames = 2,
TextAssociationTypeBlock = 3
};
class CFontTableEntry
{
public:
CString m_strFamilyName;
CString m_strPANOSE;
LONG m_lStyle;
CAtlArray<DWORD> m_arSignature;
bool m_bIsFixedWidth;
public:
CFontTableEntry() : m_arSignature()
{
m_strFamilyName = _T("");
m_strPANOSE = _T("");
m_lStyle = 0;
m_bIsFixedWidth = false;
}
~CFontTableEntry()
{
}
CFontTableEntry(const CFontTableEntry& oSrc)
{
*this = oSrc;
}
CFontTableEntry& operator =(const CFontTableEntry& oSrc)
{
m_strFamilyName = oSrc.m_strFamilyName;
m_strPANOSE = oSrc.m_strPANOSE;
m_lStyle = oSrc.m_lStyle;
m_arSignature.Copy(oSrc.m_arSignature);
m_bIsFixedWidth = oSrc.m_bIsFixedWidth;
return *this;
}
};
class CFontTable
{
public:
CAtlMap<CString, CFontTableEntry> m_mapTable;
public:
CFontTable() : m_mapTable()
{
}
};
class CFontManager : public CFontManagerBase
{
public:
NSStructures::CFont* m_pFont;
NSDocxRenderer::CMatrix* m_pTransform;
double m_dSpaceWidthMM;
public:
CFontTable m_oFontTable;
public:
CFontManager() : m_pFont(NULL), CFontManagerBase()
{
m_pTransform = NULL;
m_dSpaceWidthMM = 0;
}
virtual ~CFontManager()
{
}
public:
AVSINLINE void Init()
{
m_oFontTable.m_mapTable.RemoveAll();
}
AVSINLINE void AddFontToMap()
{
CAtlMap<CString, CFontTableEntry>::CPair* pPair = m_oFontTable.m_mapTable.Lookup(m_oFont.m_strFamilyName);
if (NULL == pPair)
{
CFontTableEntry oEntry;
oEntry.m_strFamilyName = m_oFont.m_strFamilyName;
oEntry.m_strPANOSE = m_oFont.m_strPANOSE;
oEntry.m_lStyle = m_oFont.m_lStyle;
oEntry.m_bIsFixedWidth = m_oFont.m_bIsFixedWidth;
oEntry.m_arSignature.Copy(m_oFont.m_arSignature);
m_oFontTable.m_mapTable.SetAt(m_oFont.m_strFamilyName, oEntry);
}
}
public:
virtual void LoadFont(long lFaceIndex = 0, bool bNeedAddToMap = true)
{
if (NULL == m_pManager)
return;
double dSize = m_pFont->Size;
double dSizeFont = dSize * ((m_pTransform->m_agg_mtx.sx + m_pTransform->m_agg_mtx.sy) / 2);
double dPix = m_pFont->CharSpace / c_dPixToMM;
m_pFont->Size = dSizeFont;
if (m_pFont->IsEqual2(&m_oFont.m_oFont))
{
m_pFont->Size = dSize;
m_pManager->SetCharSpacing(dPix);
m_pManager->SetStringGID(m_oFont.m_oFont.StringGID);
return;
}
m_oFont.m_oFont = *m_pFont;
m_pFont->Size = dSize;
bool bIsPath = false;
if (_T("") == m_pFont->Path)
{
CFontManagerBase::LoadFontByName(m_oFont.m_oFont.Name, m_oFont.m_oFont.Size, m_oFont.m_oFont.GetStyle(), c_dDpiX, c_dDpiY);
}
else
{
CFontManagerBase::LoadFontByFile(m_oFont.m_oFont.Path, m_oFont.m_oFont.Size, c_dDpiX, c_dDpiY, lFaceIndex);
m_pFont->SetStyle(m_oFont.m_lStyle);
m_oFont.m_oFont.SetStyle(m_oFont.m_lStyle);
bIsPath = true;
}
long lGid = 0;
m_pManager->GetStringGID(&lGid);
m_pManager->SetStringGID(FALSE);
m_pManager->LoadString(L" ", 0, 0);
float _x = 0;
float _y = 0;
float _w = 0;
float _h = 0;
m_pManager->MeasureString2(&_x, &_y, &_w, &_h);
m_dSpaceWidthMM = (double)_w * c_dPixToMM;
if (0 >= m_dSpaceWidthMM)
{
m_dSpaceWidthMM = 1.0;
}
m_pManager->SetStringGID(lGid);
LoadFontMetrics();
LoadFontParams(bIsPath);
if (bNeedAddToMap)
AddFontToMap();
}
AVSINLINE void MeasureString(const CString& strText, double x, double y, double& dBoxX, double& dBoxY, double& dBoxWidth, double& dBoxHeight, MeasureType measureType)
{
BSTR bsText = strText.AllocSysString();
MeasureString(bsText, x, y, dBoxX, dBoxY, dBoxWidth, dBoxHeight, measureType);
SysFreeString(bsText);
}
AVSINLINE void MeasureStringUNICODE(const CString& strText, double x, double y, double& dBoxX, double& dBoxY, double& dBoxWidth, double& dBoxHeight, MeasureType measureType)
{
m_pManager->SetStringGID(FALSE);
MeasureString(strText, x, y, dBoxX, dBoxY, dBoxWidth, dBoxHeight, measureType);
m_pManager->SetStringGID(TRUE);
}
AVSINLINE void MeasureStringUNICODE(BSTR strText, double x, double y, double& dBoxX, double& dBoxY, double& dBoxWidth, double& dBoxHeight, MeasureType measureType)
{
m_pManager->SetStringGID(FALSE);
MeasureString(strText, x, y, dBoxX, dBoxY, dBoxWidth, dBoxHeight, measureType);
m_pManager->SetStringGID(TRUE);
}
void MeasureString(BSTR bsText, double x, double y, double& dBoxX, double& dBoxY, double& dBoxWidth, double& dBoxHeight, MeasureType measureType)
{
LoadFont();
dBoxX = 0;
dBoxY = 0;
dBoxWidth = 0;
dBoxHeight = 0;
if (NULL == m_pManager)
return;
m_pManager->LoadString(bsText, (float)x, (float)y);
float fx = 0;
float fy = 0;
float fwidth = 0;
float fheight = 0;
if (MeasureTypeGlyph == measureType)
{
m_pManager->MeasureString(&fx, &fy, &fwidth, &fheight);
}
else if (MeasureTypePosition == measureType)
{
m_pManager->MeasureString2(&fx, &fy, &fwidth, &fheight);
}
dBoxX = (double)fx;
dBoxY = (double)fy;
dBoxWidth = (double)fwidth;
dBoxHeight = (double)fheight;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dBoxX *= c_dPixToMM;
dBoxY *= c_dPixToMM;
dBoxWidth *= c_dPixToMM;
dBoxHeight *= c_dPixToMM;
}
__forceinline double GetBaseLineOffset()
{
LoadFont();
double d1 = 3 * (m_oFont.m_dLineSpacing - m_oFont.m_dDescent) - m_oFont.m_dAscent;
d1 /= 2.0;
d1 *= (m_oFont.m_oFont.Size / m_oFont.m_dEmHeight);
return d1;
}
__forceinline double GetFontHeight()
{
return c_dPtToMM * (m_oFont.m_dLineSpacing * m_oFont.m_oFont.Size ) / m_oFont.m_dEmHeight;
}
__forceinline void SetStringGid(const LONG& lGid)
{
if (NULL != m_pManager)
m_pManager->SetStringGID(lGid);
}
__forceinline void GenerateFontName2(CString& strText)
{
bool bIsNeedAddToMap = CFontManagerBase::GenerateFontName(strText);
if (bIsNeedAddToMap)
{
CAtlMap<CString, CFontTableEntry>::CPair* pPair = m_oFontTable.m_mapTable.Lookup(m_strCurrentPickFont);
if (NULL == pPair)
{
CFontTableEntry oEntry;
oEntry.m_strFamilyName = m_strCurrentPickFont;
oEntry.m_strPANOSE = m_oFont.m_strPANOSE;
oEntry.m_lStyle = m_oFont.m_lStyle;
oEntry.m_bIsFixedWidth = m_oFont.m_bIsFixedWidth;
oEntry.m_arSignature.Copy(m_oFont.m_arSignature);
m_oFontTable.m_mapTable.SetAt(m_oFont.m_oFont.Path, oEntry);
}
}
}
};
class CFontManagerLight
{
private:
CString m_strFontName;
LONG m_lFontStyle;
double m_dSize;
double m_dSpaceWidth;
AVSGraphics::IASCFontManager* m_pManager;
public:
CFontManagerLight()
{
m_strFontName = _T("");
m_lFontStyle = 0;
m_dSize = 0;
m_dSpaceWidth = 0;
m_pManager = NULL;
CoCreateInstance(AVSGraphics::CLSID_CASCFontManager, NULL, CLSCTX_ALL, AVSGraphics::IID_IASCFontManager, (void**)&m_pManager);
m_pManager->Initialize(L"");
m_pManager->SetDefaultFont(L"Arial");
}
~CFontManagerLight()
{
RELEASEINTERFACE(m_pManager);
}
AVSINLINE double GetSpaceWidth()
{
return m_dSpaceWidth;
}
public:
AVSINLINE void LoadFont(CString& strFontName, LONG& lStyle, double& dSize, const BOOL& bIsGID)
{
if ((strFontName == m_strFontName) && (lStyle == m_lFontStyle) && (dSize == m_dSize))
{
m_pManager->SetStringGID(bIsGID);
return;
}
m_strFontName = strFontName;
m_lFontStyle = lStyle;
m_dSize = dSize;
BSTR bsName = m_strFontName.AllocSysString();
m_pManager->LoadFontByName(bsName, (float)m_dSize, m_lFontStyle, c_dDpiX, c_dDpiY);
SysFreeString(bsName);
CString strSpace = _T(" ");
m_dSpaceWidth = MeasureStringWidth(strSpace);
m_pManager->SetStringGID(bIsGID);
}
AVSINLINE double MeasureStringWidth(CString& sText)
{
BSTR bsText = sText.AllocSysString();
m_pManager->LoadString(bsText, (float)0, (float)0);
SysFreeString(bsText);
float fx = 0;
float fy = 0;
float fwidth = 0;
float fheight = 0;
m_pManager->MeasureString2(&fx, &fy, &fwidth, &fheight);
return fwidth * c_dPixToMM;
}
};
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,762 @@
#pragma once
#include "ElementShape.h"
#include "ElementParagraph.h"
#include "ElementImage.h"
namespace NSDocxRenderer
{
const double STANDART_STRING_HEIGHT_MM = 4.2333333333333334;
const double THE_SAME_STRING_Y_PRECISION_MM = 0.01;
static _bstr_t g_bstr_sectStart = L"<w:p><w:pPr><w:sectPr>";
static _bstr_t g_bstr_lastSect = L"<w:type w:val=\"continuous\"/>";
static _bstr_t g_bstr_sectEnd = L"<w:pgMar w:top=\"0\" w:right=\"0\" w:bottom=\"0\" w:left=\"0\"/></w:sectPr><w:spacing w:line=\"1\" w:lineRule=\"exact\"/></w:pPr></w:p>";
static CString g_string_sectSizeVer = _T("<w:pgSz w:w=\"%d\" w:h=\"%d\" w:orient=\"portrait\"/>");
static CString g_string_sectSizeHor = _T("<w:pgSz w:w=\"%d\" w:h=\"%d\" w:orient=\"landscape\"/>");
static _bstr_t g_bstr_drawingParStart = L"<w:p><w:pPr><w:spacing w:line=\"1\" w:lineRule=\"exact\"/></w:pPr>";
static _bstr_t g_bstr_ParEnd = L"</w:p>";
static CString g_bstr_lastsection1 = L"<w:sectPr>";
static CString g_bstr_lastsection2 = L"<w:pgMar w:top=\"0\" w:right=\"0\" w:bottom=\"0\" w:left=\"0\" w:header=\"0\" w:footer=\"0\" w:gutter=\"0\"/></w:sectPr>";
AVSINLINE bool IsUnicodeSymbol( WCHAR symbol )
{
bool result = false;
if ( ( 0x0009 == symbol ) || ( 0x000A == symbol ) || ( 0x000D == symbol ) ||
( ( 0x0020 <= symbol ) && ( 0xD7FF >= symbol ) ) || ( ( 0xE000 <= symbol ) && ( symbol <= 0xFFFD ) ) ||
( ( 0x10000 <= symbol ) && symbol ) )
{
result = true;
}
return result;
}
class CPage
{
public:
NSStructures::CFont* m_pFont;
NSStructures::CPen* m_pPen;
NSStructures::CBrush* m_pBrush;
NSStructures::CShadow* m_pShadow;
NSStructures::CEdgeText* m_pEdgeText;
NSDocxRenderer::CMatrix* m_pTransform;
AVSGraphics::IASCGraphicSimpleComverter* m_pSimpleGraphicsConverter;
CVectorGraphics m_oVector;
double m_dWidth;
double m_dHeight;
LONG m_lCurrentCommand;
CAtlArray<CBaseItem*> m_arGraphicItems;
CAtlArray<CParagraph*> m_arParagraphs;
CAtlArray<CTextLine*> m_arTextLine;
CTextLine* m_pCurrentLine;
CFontManager m_oManager;
CFontManagerLight m_oManagerLight;
TextAssociationType m_eTextAssociationType;
NSDocxRenderer::CStringWriter m_oWriterVML;
bool m_bIsDeleteTextClipPage;
public:
CPage() : m_oManager(), m_oManagerLight()
{
m_pFont = NULL;
m_pBrush = NULL;
m_pPen = NULL;
m_pShadow = NULL;
m_pEdgeText = NULL;
m_pTransform = NULL;
m_pSimpleGraphicsConverter = NULL;
m_dWidth = 0;
m_dHeight = 0;
m_pCurrentLine = NULL;
m_eTextAssociationType = TextAssociationTypeNoFrames;
m_bIsDeleteTextClipPage = true;
}
public:
AVSINLINE void Init(NSStructures::CFont* pFont, NSStructures::CPen* pPen, NSStructures::CBrush* pBrush,
NSStructures::CShadow* pShadow, NSStructures::CEdgeText* pEdge, NSDocxRenderer::CMatrix* pMatrix, AVSGraphics::IASCGraphicSimpleComverter* pSimple)
{
m_pFont = pFont;
m_pPen = pPen;
m_pBrush = pBrush;
m_pShadow = pShadow;
m_pEdgeText = pEdge;
m_pTransform = pMatrix;
m_pSimpleGraphicsConverter = pSimple;
m_oManager.m_pFont = m_pFont;
m_oManager.m_pTransform = m_pTransform;
m_pCurrentLine = NULL;
m_oWriterVML.AddSize(1000, 1000);
}
AVSINLINE void Clear()
{
size_t nCount = 0;
nCount = m_arTextLine.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CTextLine* pTemp = m_arTextLine[i];
RELEASEOBJECT(pTemp);
}
m_arTextLine.RemoveAll();
nCount = m_arGraphicItems.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CBaseItem* pTemp = m_arGraphicItems[i];
RELEASEOBJECT(pTemp);
}
m_arGraphicItems.RemoveAll();
nCount = m_arParagraphs.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CParagraph* pTemp = m_arParagraphs[i];
RELEASEOBJECT(pTemp);
}
m_arParagraphs.RemoveAll();
m_pCurrentLine = NULL;
m_oWriterVML.ClearNoAttack();
}
~CPage()
{
Clear();
}
AVSINLINE void SetCurrentLineByBaseline(const double& dBaseLinePos)
{
if ((NULL == m_pCurrentLine) || (TextAssociationTypeDefault == m_eTextAssociationType))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pCurrentLine = new CTextLine();
m_pCurrentLine->m_dBaselinePos = dBaseLinePos;
m_arTextLine.Add(m_pCurrentLine);
return;
}
if (fabs(m_pCurrentLine->m_dBaselinePos - dBaseLinePos) <= THE_SAME_STRING_Y_PRECISION_MM)
{
return;
}
size_t nCount = m_arTextLine.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
if (fabs(m_arTextLine[i]->m_dBaselinePos - dBaseLinePos) <= THE_SAME_STRING_Y_PRECISION_MM)
{
m_pCurrentLine = m_arTextLine[i];
return;
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m_pCurrentLine = new CTextLine();
m_pCurrentLine->m_dBaselinePos = dBaseLinePos;
m_arTextLine.Add(m_pCurrentLine);
return;
}
// image commands
AVSINLINE void WriteImage(CImageInfo& oInfo, double& fX, double& fY, double& fWidth, double& fHeight)
{
CImage* pImage = new CImage(oInfo, _T(""));
double dRotation = m_pTransform->z_Rotation();
if (fabs(dRotation) < 5.0)
{
double x1 = fX;
double y1 = fY;
double x2 = fX + fWidth;
double y2 = fY + fHeight;
m_pTransform->TransformPoint(x1, y1);
m_pTransform->TransformPoint(x2, y2);
if (x1 <= x2)
{
pImage->m_dLeft = x1;
pImage->m_dWidth = x2 - x1;
}
else
{
pImage->m_dLeft = x2;
pImage->m_dWidth = x1 - x2;
}
if (y1 <= y2)
{
pImage->m_dTop = y1;
pImage->m_dHeight = y2 - y1;
}
else
{
pImage->m_dTop = y2;
pImage->m_dHeight = y1 - y2;
}
pImage->m_dRotate = 0.0;
}
else
{
double x1 = fX;
double y1 = fY;
double x2 = fX + fWidth;
double y2 = fY + fHeight;
NSDocxRenderer::CMatrix oTemp = *m_pTransform;
double dCx = (x1 + x2) / 2;
double dCy = (y1 + y2) / 2;
m_pTransform->TransformPoint(dCx, dCy);
oTemp.RotateAt(-dRotation, dCx, dCy, Aggplus::MatrixOrderAppend);
oTemp.TransformPoint(x1, y1);
oTemp.TransformPoint(x2, y2);
if (x1 <= x2)
{
pImage->m_dLeft = x1;
pImage->m_dWidth = x2 - x1;
}
else
{
pImage->m_dLeft = x2;
pImage->m_dWidth = x1 - x2;
}
if (y1 <= y2)
{
pImage->m_dTop = y1;
pImage->m_dHeight = y2 - y1;
}
else
{
pImage->m_dTop = y2;
pImage->m_dHeight = y1 - y2;
}
pImage->m_dRotate = dRotation;
}
m_arGraphicItems.Add(pImage);
}
// path commands
AVSINLINE void MoveTo(double& dX, double& dY)
{
m_pTransform->TransformPoint(dX, dY);
m_oVector.MoveTo(dX, dY);
}
AVSINLINE void LineTo(double& dX, double& dY)
{
m_pTransform->TransformPoint(dX, dY);
m_oVector.LineTo(dX, dY);
}
AVSINLINE void CurveTo(double& x1, double& y1, double& x2, double& y2, double& x3, double& y3)
{
m_pTransform->TransformPoint(x1, y1);
m_pTransform->TransformPoint(x2, y2);
m_pTransform->TransformPoint(x3, y3);
m_oVector.CurveTo(x1, y1, x2, y2, x3, y3);
}
AVSINLINE void Start()
{
}
AVSINLINE void End()
{
m_oVector.End();
m_oWriterVML.ClearNoAttack();
}
AVSINLINE void Close()
{
m_oVector.Close();
}
AVSINLINE void DrawPath(LONG lType, LONG lTxId)
{
if ((m_oVector.m_dLeft <= m_oVector.m_dRight) && (m_oVector.m_dTop <= m_oVector.m_dBottom))
{
CShape* pShape = new CShape();
pShape->m_lTxId = lTxId;
pShape->m_oPen = *m_pPen;
pShape->m_oBrush = *m_pBrush;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
double dScaleTransform = (m_pTransform->m_agg_mtx.sx + m_pTransform->m_agg_mtx.sy) / 2.0;
pShape->m_oPen.Size *= dScaleTransform;
if ((lType & 0x01) == 0x00)
{
if ((fabs(m_oVector.m_dLeft - m_oVector.m_dRight) < 0.3) || (fabs(m_oVector.m_dTop - m_oVector.m_dBottom) < 0.3))
{
lType = 0x01;
pShape->m_bIsStroke = true;
pShape->m_oPen.Color = m_pBrush->Color1;
pShape->m_oPen.Alpha = m_pBrush->Alpha1;
//pShape->m_oPen.Size = max(pShape->m_oPen.Size, 1);
}
}
pShape->CreateFromVectorData(&m_oVector, m_oWriterVML, 100000, lType);
m_arGraphicItems.Add(pShape);
}
}
AVSINLINE void WriteText(BSTR bsText, BSTR bsGid, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, bool bIsPDFAnalyzer)
{
double dTextX = fX;
double dTextY = fY;
double dTextR = fX + fWidth;
double dTextB = fY + fHeight;
m_pTransform->TransformPoint(dTextX, dTextY);
m_pTransform->TransformPoint(dTextR, dTextB);
double dTextW = dTextR - dTextX;
double dTextH = dTextB - dTextY;
CString strText = _T("");
if ((bsText != NULL) && (bsGid != NULL))
{
UINT lLen = SysStringLen(bsText);
for (unsigned int i = 0; i < lLen; ++i)
{
if ( IsUnicodeSymbol( bsText[i] ) )
{
strText += bsText[i];
}
else
{
strText += _T(" ");
}
}
}
else
{
strText = (CString)bsText;
}
bool bIsPath = ((NULL == bsGid) && !bIsPDFAnalyzer) ? false : true;
m_oManager.LoadFont(0, !bIsPath);
if (bIsPath)
m_oManager.GenerateFontName2(strText);
if ((0 == dTextW) || (dTextW > 5 * m_oManager.m_dSpaceWidthMM))
{
double _x = 0;
double _y = 0;
double _w = 0;
double _h = 0;
if (NULL != bsGid)
{
m_oManager.SetStringGid(1);
m_oManager.MeasureString(bsGid, dTextX, dTextY, _x, _y, _w, _h, CFontManager::MeasureTypePosition);
}
else
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> xps)
m_oManager.SetStringGid(0);
m_oManager.MeasureString(bsText, dTextX, dTextY, _x, _y, _w, _h, CFontManager::MeasureTypePosition);
}
dTextW = _w;
//dTextW *= c_dPixToMM;
}
double dBaseLinePos = dTextY + fBaseLineOffset;
dTextH = m_oManager.GetFontHeight();
SetCurrentLineByBaseline(dBaseLinePos);
CContText* pLastCont = NULL;
size_t nCountConts = m_pCurrentLine->m_arConts.GetCount();
if (nCountConts != 0)
pLastCont = m_pCurrentLine->m_arConts[nCountConts - 1];
if (NULL == pLastCont)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
CContText* pCont = new CContText();
pCont->m_dX = dTextX;
pCont->m_dY = dBaseLinePos;
pCont->m_dWidth = dTextW;
pCont->m_dHeight = dTextH;
if (_T(" ") == strText)
{
pCont->m_dWidthWithoutSpaces = 0;
pCont->m_dLeftWithoutSpaces = dTextX + dTextW;
}
else
{
pCont->m_dWidthWithoutSpaces = dTextW;
pCont->m_dLeftWithoutSpaces = dTextX;
}
pCont->m_strText = strText;
pCont->m_oFont = m_oManager.m_oFont.m_oFont;
pCont->m_oBrush = *m_pBrush;
if (bIsPath)
{
pCont->m_strPickFontName = m_oManager.m_strCurrentPickFont;
pCont->m_lPickFontStyle = m_oManager.m_lCurrentPictFontStyle;
}
pCont->m_dSpaceWidthMM = m_oManager.m_dSpaceWidthMM;
m_pCurrentLine->AddCont(pCont, m_oManager.m_oFont.m_dBaselineOffset);
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//if (m_lCurrentCommand == c_nTextType && pLastCont->m_oFont.IsEqual(&m_oManager.m_oFontOld) && pLastCont->m_oBrush.IsEqual(m_pBrush))
//{
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// pLastCont->m_strText += strText;
// pLastCont->m_dWidth = (dTextX + dTextW - pLastCont->m_dX);
// return;
//}
double dRight = pLastCont->m_dX + pLastCont->m_dWidth;
if (pLastCont->m_oFont.IsEqual(&m_oManager.m_oFont.m_oFont) && pLastCont->m_oBrush.IsEqual(m_pBrush))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (fabs(dRight - dTextX) < 0.5)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
pLastCont->m_strText += strText;
pLastCont->m_dWidth = (dTextX + dTextW - pLastCont->m_dX);
if (_T(" ") != strText)
{
if (0 == pLastCont->m_dWidthWithoutSpaces)
pLastCont->m_dLeftWithoutSpaces = dTextX;
pLastCont->m_dWidthWithoutSpaces = dTextX + dTextW - pLastCont->m_dLeftWithoutSpaces;
}
else if (0 == pLastCont->m_dWidthWithoutSpaces)
{
pLastCont->m_dLeftWithoutSpaces = dTextX + dTextW;
}
return;
}
else if ((dRight < dTextX) && ((dTextX - dRight) < m_oManager.m_dSpaceWidthMM))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pLastCont->m_strText += (_T(" ") + strText);
pLastCont->m_dWidth = (dTextX + dTextW - pLastCont->m_dX);
if (_T(" ") != strText)
{
if (0 == pLastCont->m_dWidthWithoutSpaces)
pLastCont->m_dLeftWithoutSpaces = dTextX;
pLastCont->m_dWidthWithoutSpaces = dTextX + dTextW - pLastCont->m_dLeftWithoutSpaces;
}
else if (0 == pLastCont->m_dWidthWithoutSpaces)
{
pLastCont->m_dLeftWithoutSpaces = dTextX + dTextW;
}
return;
}
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> (<28><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>)
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
CContText* pCont = new CContText();
pCont->m_dX = dTextX;
pCont->m_dY = dBaseLinePos;
pCont->m_dWidth = dTextW;
pCont->m_dHeight = dTextH;
if (_T(" ") == strText)
{
pCont->m_dWidthWithoutSpaces = 0;
pCont->m_dLeftWithoutSpaces = dTextX + dTextW;
}
else
{
pCont->m_dWidthWithoutSpaces = dTextW;
pCont->m_dLeftWithoutSpaces = dTextX;
}
pCont->m_strText = strText;
pCont->m_oFont = m_oManager.m_oFont.m_oFont;
pCont->m_oBrush = *m_pBrush;
if (bIsPath)
{
pCont->m_strPickFontName = m_oManager.m_strCurrentPickFont;
pCont->m_lPickFontStyle = m_oManager.m_lCurrentPictFontStyle;
}
pCont->m_dSpaceWidthMM = m_oManager.m_dSpaceWidthMM;
m_pCurrentLine->AddCont(pCont, m_oManager.m_oFont.m_dBaselineOffset);
}
void Build()
{
if (m_bIsDeleteTextClipPage)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
size_t nCount = m_arTextLine.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CTextLine* pTextLine = m_arTextLine[i];
double _top = pTextLine->m_dBaselinePos - pTextLine->m_dHeight;
double _bottom = pTextLine->m_dBaselinePos;
if (_top >= m_dHeight || _bottom <= 0)
{
m_arTextLine.RemoveAt(i);
--i;
--nCount;
}
}
}
switch (m_eTextAssociationType)
{
case TextAssociationTypeDefault:
case TextAssociationTypeLine:
{
size_t nCount = m_arTextLine.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CTextLine* pTextLine = m_arTextLine[i];
CParagraph* pParagraph = new CParagraph(m_eTextAssociationType);
pParagraph->m_pManagerLight = &m_oManagerLight;
pParagraph->m_bIsTextFrameProperties = true;
pParagraph->m_dLeft = pTextLine->m_dX;
pParagraph->m_dTop = pTextLine->m_dBaselinePos - pTextLine->m_dHeight + pTextLine->m_dBaselineOffset;
pParagraph->m_arLines.Add(pTextLine);
m_arParagraphs.Add(pParagraph);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m_arTextLine.RemoveAll();
break;
}
case TextAssociationTypeBlock:
{
size_t nCount = m_arTextLine.GetCount();
if (0 == nCount)
break;
CTextLine* pFirstLine = m_arTextLine[0];
CParagraph* pParagraph = new CParagraph(m_eTextAssociationType);
pParagraph->m_pManagerLight = &m_oManagerLight;
pParagraph->m_bIsTextFrameProperties = true;
pParagraph->m_dLeft = pFirstLine->m_dX;
pParagraph->m_dTop = pFirstLine->m_dBaselinePos - pFirstLine->m_dHeight + pFirstLine->m_dBaselineOffset;
pParagraph->m_arLines.Add(pFirstLine);
m_arParagraphs.Add(pParagraph);
for (size_t i = 1; i < nCount; ++i)
{
CTextLine* pTextLine = m_arTextLine[i];
CParagraph* pParagraph = new CParagraph(m_eTextAssociationType);
pParagraph->m_pManagerLight = &m_oManagerLight;
pParagraph->m_bIsTextFrameProperties = true;
if (((fabs(pTextLine->m_dBaselinePos - pTextLine->m_dHeight - pFirstLine->m_dBaselinePos) > STANDART_STRING_HEIGHT_MM) && (pTextLine->m_dX == pFirstLine->m_dX)) ||
((pTextLine->m_dX != pFirstLine->m_dX) && (pTextLine->m_dBaselinePos != pFirstLine->m_dBaselinePos)))
{
pParagraph->m_dLeft = pTextLine->m_dX;
pParagraph->m_dTop = pTextLine->m_dBaselinePos - pTextLine->m_dHeight + pTextLine->m_dBaselineOffset;
}
else
{
pParagraph->m_dLeft = pFirstLine->m_dX;
pParagraph->m_dTop = pFirstLine->m_dBaselinePos - pFirstLine->m_dHeight + pFirstLine->m_dBaselineOffset;
}
pFirstLine = pTextLine;
pParagraph->m_arLines.Add(pTextLine);
m_arParagraphs.Add(pParagraph);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
m_arTextLine.RemoveAll();
break;
}
case TextAssociationTypeNoFrames:
{
SortElements(m_arTextLine);
Merge(STANDART_STRING_HEIGHT_MM / 3);
double previousStringOffset = 0;
size_t nCount = m_arTextLine.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
CTextLine* pTextLine = m_arTextLine[i];
CParagraph* pParagraph = new CParagraph(m_eTextAssociationType);
pParagraph->m_pManagerLight = &m_oManagerLight;
pParagraph->m_bIsTextFrameProperties = false;
pParagraph->m_dLeft = pTextLine->m_dX;
double dBeforeSpacing = (pTextLine->m_dBaselinePos - previousStringOffset - pTextLine->m_dHeight + pTextLine->m_dBaselineOffset);
pParagraph->m_dSpaceBefore = max(dBeforeSpacing, 0);
double dHeight = 1;
if (pTextLine->m_dHeight != 0)
{
dHeight = pTextLine->m_dHeight;
if (dBeforeSpacing < 0)
dHeight += dBeforeSpacing;
}
pParagraph->m_dHeight = dHeight;
previousStringOffset = pTextLine->m_dBaselinePos + pTextLine->m_dBaselineOffset;
pParagraph->m_arLines.Add(pTextLine);
m_arParagraphs.Add(pParagraph);
}
m_arTextLine.RemoveAll();
break;
}
}
}
void Merge(double dAffinity)
{
size_t nCount = m_arTextLine.GetCount();
if (1 < nCount)
{
CTextLine* pPrev = m_arTextLine[0];
for (size_t i = 1; i < nCount; ++i)
{
CTextLine* pNext = m_arTextLine[i];
if (fabs(pNext->m_dBaselinePos - pPrev->m_dBaselinePos) < dAffinity)
{
pPrev->Merge(pNext);
pNext->m_arConts.RemoveAll();
RELEASEOBJECT(pNext);
m_arTextLine.RemoveAt(i);
--i;
--nCount;
continue;
}
pPrev = pNext;
}
}
}
void Write(NSDocxRenderer::CStringWriter& oWriter)
{
// drawings
size_t nCountDrawings = m_arGraphicItems.GetCount();
if (0 != nCountDrawings)
{
oWriter.WriteString(g_bstr_drawingParStart);
for (size_t i = 0; i < nCountDrawings; ++i)
{
m_arGraphicItems[i]->ToXml(oWriter);
}
oWriter.WriteString(g_bstr_ParEnd);
}
size_t nCountParagraphs = m_arParagraphs.GetCount();
for (size_t i = 0; i < nCountParagraphs; ++i)
{
m_arParagraphs[i]->ToXml(oWriter);
}
}
AVSINLINE void WriteSectionToFile(bool bLastPage, NSDocxRenderer::CStringWriter& oWriter)
{
// section
LONG lWidthDx = (LONG)(m_dWidth * c_dMMToDx);
LONG lHeightDx = (LONG)(m_dHeight * c_dMMToDx);
if (!bLastPage)
oWriter.WriteString(g_bstr_sectStart);
else
oWriter.WriteString(g_bstr_lastsection1);
if (lWidthDx >= lHeightDx)
{
CString strSize = _T("");
strSize.Format(g_string_sectSizeHor, lWidthDx, lHeightDx);
oWriter.WriteString(strSize);
}
else
{
CString strSize = _T("");
strSize.Format(g_string_sectSizeVer, lWidthDx, lHeightDx);
oWriter.WriteString(strSize);
}
if (!bLastPage)
oWriter.WriteString(g_bstr_sectEnd);
else
oWriter.WriteString(g_bstr_lastsection2);
}
};
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,851 @@
// AVSDocxRenderer.cpp : Implementation of CAVSDocxRenderer
#include "stdafx.h"
#include "ASCDocxRenderer.h"
// CAVSDocxRenderer
STDMETHODIMP CAVSDocxRenderer::get_Type(LONG* lType)
{
return S_OK;
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::NewPage()
{
return m_oDocument.NewPage();
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_Height(double* dHeight)
{
return m_oDocument.get_Height(dHeight);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_Height(double dHeight)
{
return m_oDocument.put_Height(dHeight);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_Width(double* dWidth)
{
return m_oDocument.get_Width(dWidth);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_Width(double dWidth)
{
return m_oDocument.put_Width(dWidth);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_DpiX(double* dDpiX)
{
return m_oDocument.get_DpiX(dDpiX);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_DpiY(double* dDpiY)
{
return m_oDocument.get_DpiY(dDpiY);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetPen(BSTR bsXML)
{
return m_oDocument.SetPen(bsXML);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenColor(LONG* lColor)
{
return m_oDocument.get_PenColor(lColor);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenColor(LONG lColor)
{
return m_oDocument.put_PenColor(lColor);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenAlpha(LONG* lAlpha)
{
return m_oDocument.get_PenAlpha(lAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenAlpha(LONG lAlpha)
{
return m_oDocument.put_PenAlpha(lAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenSize(double* dSize)
{
return m_oDocument.get_PenSize(dSize);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenSize(double dSize)
{
return m_oDocument.put_PenSize(dSize);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenDashStyle(BYTE* val)
{
return m_oDocument.get_PenDashStyle(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenDashStyle(BYTE val)
{
return m_oDocument.put_PenDashStyle(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenLineStartCap(BYTE* val)
{
return m_oDocument.get_PenLineStartCap(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenLineStartCap(BYTE val)
{
return m_oDocument.put_PenLineStartCap(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenLineEndCap(BYTE* val)
{
return m_oDocument.get_PenLineEndCap(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenLineEndCap(BYTE val)
{
return m_oDocument.put_PenLineEndCap(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenLineJoin(BYTE* val)
{
return m_oDocument.get_PenLineJoin(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenLineJoin(BYTE val)
{
return m_oDocument.put_PenLineJoin(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenDashOffset(double* val)
{
return m_oDocument.get_PenDashOffset(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenDashOffset(double val)
{
return m_oDocument.put_PenDashOffset(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenAlign(LONG* val)
{
return m_oDocument.get_PenAlign(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenAlign(LONG val)
{
return m_oDocument.put_PenAlign(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_PenMiterLimit(double* val)
{
return m_oDocument.get_PenMiterLimit(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_PenMiterLimit(double val)
{
return m_oDocument.put_PenMiterLimit(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PenDashPattern(SAFEARRAY* pPattern)
{
return m_oDocument.PenDashPattern(pPattern);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetBrush(BSTR bsXML)
{
return m_oDocument.SetBrush(bsXML);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushType(LONG* lType)
{
return m_oDocument.get_BrushType(lType);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushType(LONG lType)
{
return m_oDocument.put_BrushType(lType);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushColor1(LONG* lColor)
{
return m_oDocument.get_BrushColor1(lColor);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushColor1(LONG lColor)
{
return m_oDocument.put_BrushColor1(lColor);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushAlpha1(LONG* lAlpha)
{
return m_oDocument.get_BrushAlpha1(lAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushAlpha1(LONG lAlpha)
{
return m_oDocument.put_BrushAlpha1(lAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushColor2(LONG* lColor)
{
return m_oDocument.get_BrushColor2(lColor);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushColor2(LONG lColor)
{
return m_oDocument.put_BrushColor2(lColor);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushAlpha2(LONG* lAlpha)
{
return m_oDocument.get_BrushAlpha2(lAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushAlpha2(LONG lAlpha)
{
return m_oDocument.put_BrushAlpha2(lAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushTexturePath(BSTR* bsPath)
{
return m_oDocument.get_BrushTexturePath(bsPath);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushTexturePath(BSTR bsPath)
{
return m_oDocument.put_BrushTexturePath(bsPath);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushTextureMode(LONG* lMode)
{
return m_oDocument.get_BrushTextureMode(lMode);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushTextureMode(LONG lMode)
{
return m_oDocument.put_BrushTextureMode(lMode);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushTextureAlpha(LONG* lTxAlpha)
{
return m_oDocument.get_BrushTextureAlpha(lTxAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushTextureAlpha(LONG lTxAlpha)
{
return m_oDocument.put_BrushTextureAlpha(lTxAlpha);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_BrushLinearAngle(double* dAngle)
{
return m_oDocument.get_BrushLinearAngle(dAngle);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_BrushLinearAngle(double dAngle)
{
return m_oDocument.put_BrushLinearAngle(dAngle);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::BrushRect(BOOL val, double left, double top, double width, double height)
{
return m_oDocument.BrushRect(val, left, top, width, height);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetFont(BSTR bsXML)
{
return m_oDocument.SetFont(bsXML);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_FontName(BSTR* bsName)
{
return m_oDocument.get_FontName(bsName);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_FontName(BSTR bsName)
{
return m_oDocument.put_FontName(bsName);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_FontPath(BSTR* bsName)
{
return m_oDocument.get_FontPath(bsName);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_FontPath(BSTR bsName)
{
return m_oDocument.put_FontPath(bsName);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_FontSize(double* dSize)
{
return m_oDocument.get_FontSize(dSize);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_FontSize(double dSize)
{
return m_oDocument.put_FontSize(dSize);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_FontStyle(LONG* lStyle)
{
return m_oDocument.get_FontStyle(lStyle);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_FontStyle(LONG lStyle)
{
return m_oDocument.put_FontStyle(lStyle);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_FontStringGID(BOOL* bGID)
{
return m_oDocument.get_FontStringGID(bGID);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_FontStringGID(BOOL bGID)
{
return m_oDocument.put_FontStringGID(bGID);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_FontCharSpace(double* dSpace)
{
return m_oDocument.get_FontCharSpace(dSpace);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_FontCharSpace(double dSpace)
{
return m_oDocument.put_FontCharSpace(dSpace);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetShadow(BSTR bsXML)
{
return m_oDocument.SetShadow(bsXML);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_ShadowDistanceX(double* val)
{
return m_oDocument.get_ShadowDistanceX(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_ShadowDistanceX(double val)
{
return m_oDocument.put_ShadowDistanceX(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_ShadowDistanceY(double* val)
{
return m_oDocument.get_ShadowDistanceY(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_ShadowDistanceY(double val)
{
return m_oDocument.put_ShadowDistanceY(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_ShadowBlurSize(double* val)
{
return m_oDocument.get_ShadowBlurSize(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_ShadowBlurSize(double val)
{
return m_oDocument.put_ShadowBlurSize(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_ShadowColor(LONG* val)
{
return m_oDocument.get_ShadowColor(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_ShadowColor(LONG val)
{
return m_oDocument.put_ShadowColor(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_ShadowAlpha(LONG* val)
{
return m_oDocument.get_ShadowAlpha(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_ShadowAlpha(LONG val)
{
return m_oDocument.put_ShadowAlpha(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_ShadowVisible(BOOL* val)
{
return m_oDocument.get_ShadowVisible(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_ShadowVisible(BOOL val)
{
return m_oDocument.put_ShadowVisible(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetEdgeText(BSTR bsXML)
{
return m_oDocument.SetEdgeText(bsXML);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_EdgeVisible(LONG* val)
{
return m_oDocument.get_EdgeVisible(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_EdgeVisible(LONG val)
{
return m_oDocument.put_EdgeVisible(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_EdgeColor(LONG* val)
{
return m_oDocument.get_EdgeColor(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_EdgeColor(LONG val)
{
return m_oDocument.put_EdgeColor(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_EdgeAlpha(LONG* val)
{
return m_oDocument.get_EdgeAlpha(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_EdgeAlpha(LONG val)
{
return m_oDocument.put_EdgeAlpha(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_EdgeDist(double* val)
{
return m_oDocument.get_EdgeDist(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_EdgeDist(double val)
{
return m_oDocument.put_EdgeDist(val);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::CommandDrawText(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset)
{
return m_oDocument.CommandDrawText(bsText, fX, fY, fWidth, fHeight, fBaseLineOffset);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::CommandDrawTextEx(BSTR bsUnicodeText, BSTR bsGidText, BSTR bsSourceCodeText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, DWORD lFlags)
{
return m_oDocument.CommandDrawTextEx(bsUnicodeText, bsGidText, bsSourceCodeText, fX, fY, fWidth, fHeight, fBaseLineOffset, lFlags);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::BeginCommand(DWORD lType)
{
return m_oDocument.BeginCommand(lType);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::EndCommand(DWORD lType)
{
return m_oDocument.EndCommand(lType);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandMoveTo(double fX, double fY)
{
return m_oDocument.PathCommandMoveTo(fX, fY);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandLineTo(double fX, double fY)
{
return m_oDocument.PathCommandLineTo(fX, fY);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandLinesTo(SAFEARRAY* pPoints)
{
return m_oDocument.PathCommandLinesTo(pPoints);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandCurveTo(double fX1, double fY1, double fX2, double fY2, double fX3, double fY3)
{
return m_oDocument.PathCommandCurveTo(fX1, fY1, fX2, fY2, fX3, fY3);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandCurvesTo(SAFEARRAY* pPoints)
{
return m_oDocument.PathCommandCurvesTo(pPoints);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandArcTo(double fX, double fY, double fWidth, double fHeight, double fStartAngle, double fSweepAngle)
{
return m_oDocument.PathCommandArcTo(fX, fY, fWidth, fHeight, fStartAngle, fSweepAngle);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandClose()
{
return m_oDocument.PathCommandClose();
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandEnd()
{
return m_oDocument.PathCommandEnd();
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::DrawPath(long nType)
{
return m_oDocument.DrawPath(nType);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandStart()
{
return m_oDocument.PathCommandStart();
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandGetCurrentPoint(double* fX, double* fY)
{
return m_oDocument.PathCommandGetCurrentPoint( fX, fY );
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::GetCommandParams(double* dAngle, double* dLeft, double* dTop, double* dWidth, double* dHeight, DWORD* lFlags)
{
return m_oDocument.GetCommandParams( dAngle, dLeft, dTop, dWidth, dHeight, lFlags );
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetCommandParams(double dAngle, double dLeft, double dTop, double dWidth, double dHeight, DWORD lFlags)
{
return m_oDocument.SetCommandParams( dAngle, dLeft, dTop, dWidth, dHeight, lFlags );
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::DrawImage(IUnknown* pInterface, double fX, double fY, double fWidth, double fHeight)
{
return m_oDocument.DrawImage( pInterface, fX, fY, fWidth, fHeight);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::DrawImageFromFile(BSTR bstrVal, double fX, double fY, double fWidth, double fHeight)
{
return m_oDocument.DrawImageFromFile( bstrVal, fX, fY, fWidth, fHeight);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetAdditionalParam(BSTR ParamName, VARIANT ParamValue)
{
CString sParamName = ParamName;
if ( _T("SourceRendererType") == sParamName && VT_I4 == ParamValue.vt )
{
m_oDocument.m_bIsNeedPDFTextAnalyzer = ( ParamValue.lVal == c_nPDFWriter ? true : false );
}
return S_OK;
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::GetAdditionalParam(BSTR ParamName, VARIANT* ParamValue)
{
return S_OK;
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::SetTransform(double dA, double dB, double dC, double dD, double dE, double dF)
{
return m_oDocument.SetTransform( dA, dB, dC, dD, dE, dF );
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::GetTransform(double *pdA, double *pdB, double *pdC, double *pdD, double *pdE, double *pdF)
{
return m_oDocument.GetTransform( pdA, pdB, pdC, pdD, pdE, pdF );
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::ResetTransform(void)
{
return m_oDocument.ResetTransform();
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::get_ClipMode(LONG* plMode)
{
return m_oDocument.get_ClipMode(plMode);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::put_ClipMode(LONG lMode)
{
return m_oDocument.put_ClipMode(lMode);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandText(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset)
{
return m_oDocument.PathCommandText(bsText, fX, fY, fWidth, fHeight, fBaseLineOffset);
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::PathCommandTextEx(BSTR bsUnicodeText, BSTR bsGidText, BSTR bsSourceCodeText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, DWORD lFlags)
{
return m_oDocument.PathCommandTextEx( bsUnicodeText, bsGidText, bsSourceCodeText, fX, fY, fWidth, fHeight, fBaseLineOffset, lFlags );
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::Initialize(BSTR bsXMLOptions)
{
BaseInitialize(bsXMLOptions);
IUnknown* punkRenderer = NULL;
this->QueryInterface(IID_IUnknown, (void**)&punkRenderer);
m_oDocument.CreateDocument(punkRenderer, m_strTempFileDir);
RELEASEINTERFACE(punkRenderer);
return S_OK;
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::Save()
{
m_oDocument.Close();
return S_OK;
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::CreateOfficeFile(BSTR bsXMLOptions)
{
BaseInitialize(bsXMLOptions);
IUnknown* punkRenderer = NULL;
this->QueryInterface(IID_IUnknown, (void**)&punkRenderer);
m_oDocument.CreateDocument(punkRenderer, m_strTempFileDir);
RELEASEINTERFACE(punkRenderer);
return S_OK;
}
/*========================================================================================================*/
STDMETHODIMP CAVSDocxRenderer::CloseFile()
{
m_oDocument.Close();
return S_OK;
}
/*========================================================================================================*/

View File

@ -0,0 +1,239 @@
// AVSDocxRenderer.h : Declaration of the CAVSDocxRenderer
#pragma once
#include "stdafx.h"
#include "resource.h" // main symbols
#include "Logic/Document.h"
#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
#endif
// IAVSDocxRenderer
[object, uuid("5BEC40F1-CA4F-4275-BCC8-D4ABF47D896D"), dual, pointer_default(unique)]
__interface IAVSDocxRenderer : IASCRenderer
{
[id(11001)] HRESULT Initialize([in]BSTR bsXMLOptions);
[id(11002)] HRESULT Save();
};
[object, uuid("84411C25-B8A1-4f16-A37A-9C142FBE8D26"), dual, pointer_default(unique)]
__interface IAVSDocxRenderer2 : IDispatch
{
[id(12001)] HRESULT CreateOfficeFile([in]BSTR bstrFileName);
[id(12002)] HRESULT CloseFile();
};
// CAVSDocxRenderer
[coclass, default(IAVSDocxRenderer), threading(apartment), vi_progid("AVSOfficeDocxRenderer.AVSDocxRenderer"), progid("AVSOfficeDocxRenderer.AVSDocxRenderer.1"), version(1.0), uuid("77B37E21-16F0-4BCC-8901-DFD89B962174")]
class ATL_NO_VTABLE CAVSDocxRenderer :
public IAVSDocxRenderer,
public IAVSDocxRenderer2
{
public:
CAVSDocxRenderer()
{
}
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
m_strDstFilePath = _T("");
m_strTempFileDir = _T("");
m_strTempFileName = _T("");
InitializeCriticalSection(&m_oCS);
return S_OK;
}
void FinalRelease()
{
CloseFile();
DeleteCriticalSection(&m_oCS);
}
public:
// IASCRenderer Methods
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------------------------------------------------------------
STDMETHOD(get_Type)(LONG* lType);
//-------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --------------------------------------------------
STDMETHOD(NewPage)();
STDMETHOD(get_Height)(double* dHeight);
STDMETHOD(put_Height)(double dHeight);
STDMETHOD(get_Width)(double* dWidth);
STDMETHOD(put_Width)(double dWidth);
STDMETHOD(get_DpiX)(double* dDpiX);
STDMETHOD(get_DpiY)(double* dDpiY);
//-------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ----------------------------------------------
STDMETHOD(SetPen)(BSTR bsXML);
STDMETHOD(get_PenColor)(LONG* lColor);
STDMETHOD(put_PenColor)(LONG lColor);
STDMETHOD(get_PenAlpha)(LONG* lAlpha);
STDMETHOD(put_PenAlpha)(LONG lAlpha);
STDMETHOD(get_PenSize)(double* dSize);
STDMETHOD(put_PenSize)(double dSize);
STDMETHOD(get_PenDashStyle)(BYTE* val);
STDMETHOD(put_PenDashStyle)(BYTE val);
STDMETHOD(get_PenLineStartCap)(BYTE* val);
STDMETHOD(put_PenLineStartCap)(BYTE val);
STDMETHOD(get_PenLineEndCap)(BYTE* val);
STDMETHOD(put_PenLineEndCap)(BYTE val);
STDMETHOD(get_PenLineJoin)(BYTE* val);
STDMETHOD(put_PenLineJoin)(BYTE val);
STDMETHOD(get_PenDashOffset)(double* val);
STDMETHOD(put_PenDashOffset)(double val);
STDMETHOD(get_PenAlign)(LONG* val);
STDMETHOD(put_PenAlign)(LONG val);
STDMETHOD(get_PenMiterLimit)(double* val);
STDMETHOD(put_PenMiterLimit)(double val);
STDMETHOD(PenDashPattern)(SAFEARRAY* pPattern);
STDMETHOD(SetBrush)(BSTR bsXML);
STDMETHOD(get_BrushType)(LONG* lType);
STDMETHOD(put_BrushType)(LONG lType);
STDMETHOD(get_BrushColor1)(LONG* lColor);
STDMETHOD(put_BrushColor1)(LONG lColor);
STDMETHOD(get_BrushAlpha1)(LONG* lAlpha);
STDMETHOD(put_BrushAlpha1)(LONG lAlpha);
STDMETHOD(get_BrushColor2)(LONG* lColor);
STDMETHOD(put_BrushColor2)(LONG lColor);
STDMETHOD(get_BrushAlpha2)(LONG* lAlpha);
STDMETHOD(put_BrushAlpha2)(LONG lAlpha);
STDMETHOD(get_BrushTexturePath)(BSTR* bsPath);
STDMETHOD(put_BrushTexturePath)(BSTR bsPath);
STDMETHOD(get_BrushTextureMode)(LONG* lMode);
STDMETHOD(put_BrushTextureMode)(LONG lMode);
STDMETHOD(get_BrushTextureAlpha)(LONG* lTxAlpha);
STDMETHOD(put_BrushTextureAlpha)(LONG lTxAlpha);
STDMETHOD(get_BrushLinearAngle)(double* dAngle);
STDMETHOD(put_BrushLinearAngle)(double dAngle);
STDMETHOD(BrushRect)(BOOL val, double left, double top, double width, double height);
STDMETHOD(SetFont)(BSTR bsXML);
STDMETHOD(get_FontName)(BSTR* bsName);
STDMETHOD(put_FontName)(BSTR bsName);
STDMETHOD(get_FontPath)(BSTR* bsName);
STDMETHOD(put_FontPath)(BSTR bsName);
STDMETHOD(get_FontSize)(double* dSize);
STDMETHOD(put_FontSize)(double dSize);
STDMETHOD(get_FontStyle)(LONG* lStyle);
STDMETHOD(put_FontStyle)(LONG lStyle);
STDMETHOD(get_FontStringGID)(BOOL* bGID);
STDMETHOD(put_FontStringGID)(BOOL bGID);
STDMETHOD(get_FontCharSpace)(double* dSpace);
STDMETHOD(put_FontCharSpace)(double dSpace);
STDMETHOD(SetShadow)(BSTR bsXML);
STDMETHOD(get_ShadowDistanceX)(double* val);
STDMETHOD(put_ShadowDistanceX)(double val);
STDMETHOD(get_ShadowDistanceY)(double* val);
STDMETHOD(put_ShadowDistanceY)(double val);
STDMETHOD(get_ShadowBlurSize)(double* val);
STDMETHOD(put_ShadowBlurSize)(double val);
STDMETHOD(get_ShadowColor)(LONG* val);
STDMETHOD(put_ShadowColor)(LONG val);
STDMETHOD(get_ShadowAlpha)(LONG* val);
STDMETHOD(put_ShadowAlpha)(LONG val);
STDMETHOD(get_ShadowVisible)(BOOL* val);
STDMETHOD(put_ShadowVisible)(BOOL val);
STDMETHOD(SetEdgeText)(BSTR bsXML);
STDMETHOD(get_EdgeVisible)(LONG* val);
STDMETHOD(put_EdgeVisible)(LONG val);
STDMETHOD(get_EdgeColor)(LONG* val);
STDMETHOD(put_EdgeColor)(LONG val);
STDMETHOD(get_EdgeAlpha)(LONG* val);
STDMETHOD(put_EdgeAlpha)(LONG val);
STDMETHOD(get_EdgeDist)(double* val);
STDMETHOD(put_EdgeDist)(double val);
//-------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --------------------------------------------------------
STDMETHOD(CommandDrawText)(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset);
STDMETHOD(CommandDrawTextEx)(BSTR bsUnicodeText, BSTR bsGidText, BSTR bsSourceCodeText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, DWORD lFlags);
//-------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ---------------------------------------------------------------
STDMETHOD(BeginCommand)(DWORD lType);
STDMETHOD(EndCommand)(DWORD lType);
//-------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Graphics Path -----------------------------------------------
STDMETHOD(PathCommandMoveTo)(double fX, double fY);
STDMETHOD(PathCommandLineTo)(double fX, double fY);
STDMETHOD(PathCommandLinesTo)(SAFEARRAY* pPoints);
STDMETHOD(PathCommandCurveTo)(double fX1, double fY1, double fX2, double fY2, double fX3, double fY3);
STDMETHOD(PathCommandCurvesTo)(SAFEARRAY* pPoints);
STDMETHOD(PathCommandArcTo)(double fX, double fY, double fWidth, double fHeight, double fStartAngle, double fSweepAngle);
STDMETHOD(PathCommandClose)();
STDMETHOD(PathCommandEnd)();
STDMETHOD(DrawPath)(long nType);
STDMETHOD(PathCommandStart)();
STDMETHOD(PathCommandGetCurrentPoint)(double* fX, double* fY);
STDMETHOD(PathCommandText)(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset);
STDMETHOD(PathCommandTextEx)(BSTR bsUnicodeText, BSTR bsGidText, BSTR bsSourceCodeText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, DWORD lFlags);
STDMETHOD(GetCommandParams)(double* dAngle, double* dLeft, double* dTop, double* dWidth, double* dHeight, DWORD* lFlags);
STDMETHOD(SetCommandParams)(double dAngle, double dLeft, double dTop, double dWidth, double dHeight, DWORD lFlags);
//-------- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --------------------------------------------------
STDMETHOD(DrawImage)(IUnknown* pInterface, double fX, double fY, double fWidth, double fHeight);
STDMETHOD(DrawImageFromFile)(BSTR bstrVal, double fX, double fY, double fWidth, double fHeight);
//------------------------------------------------------------------------------------------
STDMETHOD(SetAdditionalParam)(BSTR ParamName, VARIANT ParamValue);
STDMETHOD(GetAdditionalParam)(BSTR ParamName, VARIANT* ParamValue);
STDMETHOD(SetTransform)(double dA, double dB, double dC, double dD, double dE, double dF);
STDMETHOD(GetTransform)(double *pdA, double *pdB, double *pdC, double *pdD, double *pdE, double *pdF);
STDMETHOD(ResetTransform)(void);
STDMETHOD(get_ClipMode)(LONG* plMode);
STDMETHOD(put_ClipMode)(LONG lMode);
public:
//IAVSDocxRenderer Methods
STDMETHOD(Initialize)(BSTR bsXMLOptions);
STDMETHOD(Save)();
public:
//IAVSDocxRenderer2 Methods
STDMETHOD(CreateOfficeFile)(BSTR bsFileName);
STDMETHOD(CloseFile)();
private:
AVSGraphics::IASCFontManager* m_pFontManager;
NSDocxRenderer::CDocument m_oDocument;
CRITICAL_SECTION m_oCS;
CString m_strDstFilePath;
CString m_strTempFileDir;
CString m_strTempFileName;
void BaseInitialize(BSTR bsXMLOptions)
{
m_oDocument.m_oCurrentPage.m_eTextAssociationType = NSDocxRenderer::TextAssociationTypeNoFrames;
XmlUtils::CXmlReader oXmlReader;
if( TRUE == oXmlReader.OpenFromXmlString( bsXMLOptions ) )
{
if( TRUE == oXmlReader.ReadRootNode( _T( "DocxRenderer" ) ) )
{
m_strTempFileDir = oXmlReader.ReadNodeAttributeOrValue( _T( "destinationpath" ) );
CString textFormatting = oXmlReader.ReadNodeAttributeOrValue( _T( "textformatting" ) );
if ( !textFormatting.IsEmpty() )
{
m_oDocument.m_oCurrentPage.m_eTextAssociationType = (NSDocxRenderer::TextAssociationType)XmlUtils::GetInteger(textFormatting);
}
}
}
}
};

View File

@ -0,0 +1,286 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
6967B0CB1E27A25D00A129E2 /* HtmlFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6967B0C91E27A25D00A129E2 /* HtmlFile.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
6967B0BB1E27A22E00A129E2 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "include/$(PRODUCT_NAME)";
dstSubfolderSpec = 16;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
6967B0BD1E27A22E00A129E2 /* libHtmlFile.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHtmlFile.a; sourceTree = BUILT_PRODUCTS_DIR; };
6967B0C91E27A25D00A129E2 /* HtmlFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HtmlFile.cpp; path = ../../../HtmlFile.cpp; sourceTree = "<group>"; };
6967B0CA1E27A25D00A129E2 /* HtmlFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HtmlFile.h; path = ../../../HtmlFile.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
6967B0BA1E27A22E00A129E2 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
6967B0B41E27A22E00A129E2 = {
isa = PBXGroup;
children = (
6967B0BF1E27A22E00A129E2 /* HtmlFile */,
6967B0BE1E27A22E00A129E2 /* Products */,
);
sourceTree = "<group>";
};
6967B0BE1E27A22E00A129E2 /* Products */ = {
isa = PBXGroup;
children = (
6967B0BD1E27A22E00A129E2 /* libHtmlFile.a */,
);
name = Products;
sourceTree = "<group>";
};
6967B0BF1E27A22E00A129E2 /* HtmlFile */ = {
isa = PBXGroup;
children = (
6967B0C91E27A25D00A129E2 /* HtmlFile.cpp */,
6967B0CA1E27A25D00A129E2 /* HtmlFile.h */,
);
path = HtmlFile;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
6967B0BC1E27A22E00A129E2 /* HtmlFile */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6967B0C61E27A22E00A129E2 /* Build configuration list for PBXNativeTarget "HtmlFile" */;
buildPhases = (
6967B0B91E27A22E00A129E2 /* Sources */,
6967B0BA1E27A22E00A129E2 /* Frameworks */,
6967B0BB1E27A22E00A129E2 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = HtmlFile;
productName = HtmlFile;
productReference = 6967B0BD1E27A22E00A129E2 /* libHtmlFile.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
6967B0B51E27A22E00A129E2 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0820;
ORGANIZATIONNAME = OnlyOffce;
TargetAttributes = {
6967B0BC1E27A22E00A129E2 = {
CreatedOnToolsVersion = 8.2;
DevelopmentTeam = 2WH24U26GJ;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 6967B0B81E27A22E00A129E2 /* Build configuration list for PBXProject "HtmlFile" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 6967B0B41E27A22E00A129E2;
productRefGroup = 6967B0BE1E27A22E00A129E2 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
6967B0BC1E27A22E00A129E2 /* HtmlFile */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
6967B0B91E27A22E00A129E2 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6967B0CB1E27A25D00A129E2 /* HtmlFile.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
6967B0C41E27A22E00A129E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
6967B0C51E27A22E00A129E2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
6967B0C71E27A22E00A129E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = 2WH24U26GJ;
GCC_PREPROCESSOR_DEFINITIONS = (
NOMINMAX,
_IOS,
LINUX,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/usr/include/,
/usr/include/libxml2/,
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Debug;
};
6967B0C81E27A22E00A129E2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEVELOPMENT_TEAM = 2WH24U26GJ;
GCC_PREPROCESSOR_DEFINITIONS = (
NOMINMAX,
_IOS,
LINUX,
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/usr/include/,
/usr/include/libxml2/,
);
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
6967B0B81E27A22E00A129E2 /* Build configuration list for PBXProject "HtmlFile" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6967B0C41E27A22E00A129E2 /* Debug */,
6967B0C51E27A22E00A129E2 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6967B0C61E27A22E00A129E2 /* Build configuration list for PBXNativeTarget "HtmlFile" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6967B0C71E27A22E00A129E2 /* Debug */,
6967B0C81E27A22E00A129E2 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 6967B0B51E27A22E00A129E2 /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:HtmlFile.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1 @@
DO NOT REMOVE FOLDER FOR XCODE

View File

@ -669,6 +669,26 @@ namespace NExtractTools
NSFile::CFileBinary::Remove(sPdfBinFile);
return nRes;
}
std::wstring getExtentionByRasterFormat(int format)
{
std::wstring sExt;
switch(format)
{
case 1:
sExt = L".bmp";
break;
case 2:
sExt = L".gif";
break;
case 3:
sExt = L".jpg";
break;
default:
sExt = L".png";
break;
}
return sExt;
}
//doct_bin -> image
int doct_bin2image(NSDoctRenderer::DoctRendererFormat::FormatFile eFromType, const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, bool bPaid, const std::wstring &sThemeDir, InputParams& params)
{
@ -731,9 +751,7 @@ namespace NExtractTools
{
sThumbnailDir = sTemp + FILE_SEPARATOR_STR + L"thumbnails";
FileSystem::Directory::CreateDirectory(sThumbnailDir);
std::wstring::size_type pos = sTo.find_last_of('.');
std::wstring sExt = std::wstring::npos == pos ? L"" : sTo.substr(pos);
imageWriter.m_sFileName = sThumbnailDir + FILE_SEPARATOR_STR + L"image" + sExt;
imageWriter.m_sFileName = sThumbnailDir + FILE_SEPARATOR_STR + L"image" + getExtentionByRasterFormat(imageWriter.m_nRasterFormat);
}
BYTE* pData;
DWORD nBytesCount;
@ -1747,9 +1765,7 @@ namespace NExtractTools
{
sThumbnailDir = sTemp + FILE_SEPARATOR_STR + L"thumbnails";
FileSystem::Directory::CreateDirectory(sThumbnailDir);
std::wstring::size_type pos = sTo.find_last_of('.');
sFileToExt = std::wstring::npos == pos ? L"" : sTo.substr(pos);
sFileToExt = getExtentionByRasterFormat(nRasterFormat);
}
int nPagesCount = pReader->GetPagesCount();
if (bIsOnlyFirst)
@ -1879,7 +1895,7 @@ namespace NExtractTools
NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT;
nRes = doct_bin2pdf(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params);
}
else if(AVS_OFFICESTUDIO_FILE_IMAGE == nFormatTo)
else if(0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo))
{
NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::DOCT;
nRes = doct_bin2image(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params);
@ -2047,7 +2063,7 @@ namespace NExtractTools
NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::XLST;
nRes = doct_bin2pdf(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params);
}
else if(AVS_OFFICESTUDIO_FILE_IMAGE == nFormatTo)
else if(0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo))
{
NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::XLST;
nRes = doct_bin2image(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params);
@ -2176,7 +2192,7 @@ namespace NExtractTools
NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT;
nRes = doct_bin2pdf(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params);
}
else if(AVS_OFFICESTUDIO_FILE_IMAGE == nFormatTo)
else if(0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo))
{
NSDoctRenderer::DoctRendererFormat::FormatFile eFromType = NSDoctRenderer::DoctRendererFormat::FormatFile::PPTT;
nRes = doct_bin2image(eFromType, sFrom, sTo, sTemp, bPaid, sThemeDir, params);
@ -2306,7 +2322,7 @@ namespace NExtractTools
oHtmlRenderer.CloseFile();
RELEASEOBJECT(pReader);
}
else if(AVS_OFFICESTUDIO_FILE_IMAGE == nFormatTo)
else if(0 != (AVS_OFFICESTUDIO_FILE_IMAGE & nFormatTo))
{
IOfficeDrawingFile* pReader = NULL;
nRes = PdfDjvuXpsToImage(&pReader, sFrom, nFormatFrom, sTo, sTemp, params, &oApplicationFonts);

View File

@ -293,6 +293,10 @@ namespace NExtractTools
}
oBuilder.WriteString(_T("</Changes>"));
oBuilder.WriteString(sMailMerge);
if (NULL != params.m_oThumbnail && (NULL == params.m_oThumbnail->first || true == *params.m_oThumbnail->first))
{
oBuilder.WriteString(_T("<OnlyOnePage>1</OnlyOnePage>"));
}
oBuilder.WriteString(_T("</Settings>"));
return oBuilder.GetData();
}