[Libreoffice-commits] core.git: xmloff/source
Tomaž Vajngerl
tomaz.vajngerl at collabora.co.uk
Wed Jun 27 10:57:31 UTC 2018
xmloff/source/style/XMLFontAutoStylePool.cxx | 146 ++++++++++++++-------------
1 file changed, 79 insertions(+), 67 deletions(-)
New commits:
commit eeef4ab2f4abb7c7b2eef193849029437d46c551
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Sun Jun 24 23:26:41 2018 +0200
xmloff: cleanup XMLFontAutoStylePool, use range for, std::pair
Change-Id: I5c775b8bc5cef3e14404f119e1ffb06334022003
Reviewed-on: https://gerrit.libreoffice.org/56506
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/xmloff/source/style/XMLFontAutoStylePool.cxx b/xmloff/source/style/XMLFontAutoStylePool.cxx
index 016419d02f12..1c13ea75cff4 100644
--- a/xmloff/source/style/XMLFontAutoStylePool.cxx
+++ b/xmloff/source/style/XMLFontAutoStylePool.cxx
@@ -287,9 +287,9 @@ OUString FontItalicToString(FontItalic eWeight)
void XMLFontAutoStylePool::exportXML()
{
- SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_OFFICE,
- XML_FONT_FACE_DECLS,
- true, true );
+ SvXMLElementExport aElem(GetExport(), XML_NAMESPACE_OFFICE,
+ XML_FONT_FACE_DECLS,
+ true, true);
Any aAny;
OUString sTmp;
XMLFontFamilyNamePropHdl aFamilyNameHdl;
@@ -298,118 +298,130 @@ void XMLFontAutoStylePool::exportXML()
XMLFontEncodingPropHdl aEncHdl;
const SvXMLUnitConverter& rUnitConv = GetExport().GetMM100UnitConverter();
- std::map< OUString, OUString > fontFilesMap; // our url to document url
+ std::map<OUString, OUString> fontFilesMap; // our url to document url
sal_uInt32 nCount = m_pFontAutoStylePool->size();
- for( sal_uInt32 i=0; i<nCount; i++ )
+
+ for (sal_uInt32 i = 0; i < nCount; i++)
{
- const XMLFontAutoStylePoolEntry_Impl *pEntry = (*m_pFontAutoStylePool)[ i ];
+ const XMLFontAutoStylePoolEntry_Impl* pEntry = (*m_pFontAutoStylePool)[i];
- GetExport().AddAttribute( XML_NAMESPACE_STYLE,
- XML_NAME, pEntry->GetName() );
+ GetExport().AddAttribute(XML_NAMESPACE_STYLE, XML_NAME, pEntry->GetName());
aAny <<= pEntry->GetFamilyName();
- if( aFamilyNameHdl.exportXML( sTmp, aAny, rUnitConv ) )
- GetExport().AddAttribute( XML_NAMESPACE_SVG,
- XML_FONT_FAMILY, sTmp );
+ if (aFamilyNameHdl.exportXML(sTmp, aAny, rUnitConv))
+ GetExport().AddAttribute(XML_NAMESPACE_SVG,
+ XML_FONT_FAMILY, sTmp);
const OUString& rStyleName = pEntry->GetStyleName();
- if( !rStyleName.isEmpty() )
- GetExport().AddAttribute( XML_NAMESPACE_STYLE,
- XML_FONT_ADORNMENTS,
- rStyleName );
+ if (!rStyleName.isEmpty())
+ GetExport().AddAttribute(XML_NAMESPACE_STYLE,
+ XML_FONT_ADORNMENTS,
+ rStyleName);
aAny <<= static_cast<sal_Int16>(pEntry->GetFamily());
- if( aFamilyHdl.exportXML( sTmp, aAny, rUnitConv ) )
- GetExport().AddAttribute( XML_NAMESPACE_STYLE,
- XML_FONT_FAMILY_GENERIC, sTmp );
-
+ if (aFamilyHdl.exportXML(sTmp, aAny, rUnitConv))
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_STYLE,
+ XML_FONT_FAMILY_GENERIC, sTmp);
+ }
aAny <<= static_cast<sal_Int16>(pEntry->GetPitch());
- if( aPitchHdl.exportXML( sTmp, aAny, rUnitConv ) )
- GetExport().AddAttribute( XML_NAMESPACE_STYLE,
- XML_FONT_PITCH, sTmp );
+ if (aPitchHdl.exportXML(sTmp, aAny, rUnitConv))
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_STYLE,
+ XML_FONT_PITCH, sTmp);
+ }
aAny <<= static_cast<sal_Int16>(pEntry->GetEncoding());
- if( aEncHdl.exportXML( sTmp, aAny, rUnitConv ) )
- GetExport().AddAttribute( XML_NAMESPACE_STYLE,
- XML_FONT_CHARSET, sTmp );
+ if (aEncHdl.exportXML( sTmp, aAny, rUnitConv))
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_STYLE,
+ XML_FONT_CHARSET, sTmp);
+ }
- SvXMLElementExport aElement( GetExport(), XML_NAMESPACE_STYLE,
- XML_FONT_FACE,
- true, true );
+ SvXMLElementExport aElement(GetExport(), XML_NAMESPACE_STYLE,
+ XML_FONT_FACE, true, true);
if (m_bTryToEmbedFonts)
{
- const bool bExportFlat( GetExport().getExportFlags() & SvXMLExportFlags::EMBEDDED );
- std::vector< EmbeddedFontInfo > aEmbeddedFonts;
- static const FontWeight weight[] = { WEIGHT_NORMAL, WEIGHT_BOLD, WEIGHT_NORMAL, WEIGHT_BOLD };
- static const FontItalic italic[] = { ITALIC_NONE, ITALIC_NONE, ITALIC_NORMAL, ITALIC_NORMAL };
- assert( SAL_N_ELEMENTS( weight ) == SAL_N_ELEMENTS( italic ));
+ const bool bExportFlat(GetExport().getExportFlags() & SvXMLExportFlags::EMBEDDED);
+ std::vector<EmbeddedFontInfo> aEmbeddedFonts;
+ static const std::vector<std::pair<FontWeight, FontItalic>> aCombinations =
+ {
+ { WEIGHT_NORMAL, ITALIC_NONE },
+ { WEIGHT_BOLD, ITALIC_NONE },
+ { WEIGHT_NORMAL, ITALIC_NORMAL },
+ { WEIGHT_BOLD, ITALIC_NORMAL },
+ };
- for (unsigned int j = 0; j < SAL_N_ELEMENTS(weight); ++j)
+ for (auto const & aCombinationPair : aCombinations)
{
// Embed font if at least viewing is allowed (in which case the opening app must check
// the font license rights too and open either read-only or not use the font for editing).
- OUString fileUrl = EmbeddedFontsHelper::fontFileUrl( pEntry->GetFamilyName(), pEntry->GetFamily(),
- italic[ j ], weight[ j ], pEntry->GetPitch(),
- EmbeddedFontsHelper::FontRights::ViewingAllowed );
- if( fileUrl.isEmpty())
+ OUString sFileUrl = EmbeddedFontsHelper::fontFileUrl(
+ pEntry->GetFamilyName(), pEntry->GetFamily(),
+ aCombinationPair.second, aCombinationPair.first, pEntry->GetPitch(),
+ EmbeddedFontsHelper::FontRights::ViewingAllowed);
+ if (sFileUrl.isEmpty())
continue;
- if( !fontFilesMap.count( fileUrl ))
+
+ if (!fontFilesMap.count(sFileUrl))
{
- const OUString docUrl = bExportFlat ? lcl_checkFontFile( fileUrl ) : embedFontFile( fileUrl );
- if( !docUrl.isEmpty())
- fontFilesMap[ fileUrl ] = docUrl;
+ const OUString docUrl = bExportFlat ?
+ lcl_checkFontFile(sFileUrl) : embedFontFile(sFileUrl);
+ if (!docUrl.isEmpty())
+ fontFilesMap[sFileUrl] = docUrl;
else
continue; // --> failed to embed
}
EmbeddedFontInfo aEmbeddedFont;
- aEmbeddedFont.aURL = fileUrl;
- aEmbeddedFont.eWeight = weight[j];
- aEmbeddedFont.eItalic = italic[j];
+ aEmbeddedFont.aURL = sFileUrl;
+ aEmbeddedFont.eWeight = aCombinationPair.first;
+ aEmbeddedFont.eItalic = aCombinationPair.second;
aEmbeddedFonts.push_back(aEmbeddedFont);
}
if (!aEmbeddedFonts.empty())
{
- SvXMLElementExport fontFaceSrc( GetExport(), XML_NAMESPACE_SVG,
- XML_FONT_FACE_SRC, true, true );
- for( auto it = aEmbeddedFonts.begin();
- it != aEmbeddedFonts.end();
- ++it )
+ SvXMLElementExport fontFaceSrc(GetExport(), XML_NAMESPACE_SVG, XML_FONT_FACE_SRC, true, true);
+ for (EmbeddedFontInfo const & rEmbeddedFont : aEmbeddedFonts)
{
- if (fontFilesMap.count(it->aURL))
+ if (fontFilesMap.count(rEmbeddedFont.aURL))
{
- if( !bExportFlat )
+ if (!bExportFlat)
{
- GetExport().AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, fontFilesMap[it->aURL]);
- GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, "simple" );
+ GetExport().AddAttribute(XML_NAMESPACE_XLINK, XML_HREF,
+ fontFilesMap[rEmbeddedFont.aURL]);
+ GetExport().AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, "simple");
}
// Help consumers of our output by telling them which
// font file is which one.
- GetExport().AddAttribute( XML_NAMESPACE_LO_EXT, XML_FONT_STYLE, FontItalicToString(it->eItalic) );
- GetExport().AddAttribute( XML_NAMESPACE_LO_EXT, XML_FONT_WEIGHT, FontWeightToString(it->eWeight) );
+ GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_FONT_STYLE,
+ FontItalicToString(rEmbeddedFont.eItalic));
+ GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_FONT_WEIGHT,
+ FontWeightToString(rEmbeddedFont.eWeight));
- SvXMLElementExport fontFaceUri( GetExport(), XML_NAMESPACE_SVG,
- XML_FONT_FACE_URI, true, true );
+ SvXMLElementExport fontFaceUri(GetExport(), XML_NAMESPACE_SVG,
+ XML_FONT_FACE_URI, true, true);
- if( bExportFlat )
+ if (bExportFlat)
{
- const uno::Reference< ucb::XSimpleFileAccess > xFileAccess( ucb::SimpleFileAccess::create( GetExport().getComponentContext() ) );
+ const uno::Reference<ucb::XSimpleFileAccess> xFileAccess(
+ ucb::SimpleFileAccess::create(GetExport().getComponentContext()));
try
{
- const uno::Reference< io::XInputStream > xInput( xFileAccess->openFileRead( fontFilesMap[ it->aURL ] ) );
- XMLBase64Export aBase64Exp( GetExport() );
- aBase64Exp.exportOfficeBinaryDataElement( xInput );
+ const uno::Reference<io::XInputStream> xInput(xFileAccess->openFileRead(fontFilesMap[rEmbeddedFont.aURL]));
+ XMLBase64Export aBase64Exp(GetExport());
+ aBase64Exp.exportOfficeBinaryDataElement(xInput);
}
- catch( const uno::Exception & )
+ catch (const uno::Exception &)
{
// opening the file failed, ignore
}
}
- GetExport().AddAttribute( XML_NAMESPACE_SVG, XML_STRING, "truetype" );
- SvXMLElementExport fontFaceFormat( GetExport(), XML_NAMESPACE_SVG,
- XML_FONT_FACE_FORMAT, true, true );
+ GetExport().AddAttribute(XML_NAMESPACE_SVG, XML_STRING, "truetype");
+ SvXMLElementExport fontFaceFormat(GetExport(), XML_NAMESPACE_SVG,
+ XML_FONT_FACE_FORMAT, true, true);
}
}
}
More information about the Libreoffice-commits
mailing list