[Libreoffice-commits] core.git: 3 commits - include/xmloff sw/inc sw/source xmloff/source
Caolán McNamara
caolanm at redhat.com
Tue Aug 20 03:38:22 PDT 2013
include/xmloff/XMLFontAutoStylePool.hxx | 1
sw/inc/SwRewriter.hxx | 10 +++--
sw/source/core/undo/SwRewriter.cxx | 52 +++++++++++++++++++++++++++-
sw/source/core/undo/undel.cxx | 36 +------------------
xmloff/source/text/txtexppr.cxx | 59 ++++++++++++++++++++++----------
5 files changed, 101 insertions(+), 57 deletions(-)
New commits:
commit 26dc5f2ee67342bd474640e1cc39b96d3220721b
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Aug 20 11:37:04 2013 +0100
Resolves: fdo#67665 font names filtered out on odp/odg export
Change-Id: Ia529992d15152db981379a1e0a4dec63b2dad40c
diff --git a/xmloff/source/text/txtexppr.cxx b/xmloff/source/text/txtexppr.cxx
index 7c978f8..12a72a5 100644
--- a/xmloff/source/text/txtexppr.cxx
+++ b/xmloff/source/text/txtexppr.cxx
@@ -217,25 +217,48 @@ void XMLTextExportPropertySetMapper::ContextFontFilter(
if( pFontCharsetState && (pFontCharsetState->maValue >>= nTmp ) )
eEnc = (rtl_TextEncoding)nTmp;
- OUString sName( ((SvXMLExport&)GetExport()).GetFontAutoStylePool()->Find(
- sFamilyName, sStyleName, nFamily, nPitch, eEnc ) );
- if( !sName.isEmpty() )
+ //Resolves: fdo#67665 The purpose here appears to be to replace
+ //FontFamilyName and FontStyleName etc with a single FontName property. The
+ //problem is that repeated calls to here will first set
+ //pFontFamilyNameState->mnIndex to -1 to indicate it is disabled, so the
+ //next time pFontFamilyNameState is not passed here at all, which gives an
+ //empty sFamilyName resulting in disabling pFontNameState->mnIndex to -1.
+ //That doesn't seem right to me.
+ //
+ //So assuming that the main purpose is just to convert the properties in
+ //the main when we can, and to leave them alone when we can't. And with a
+ //secondary purpose to filter out empty font properties, then is would
+ //appear to make sense to base attempting the conversion if we have
+ //both of the major facts of the font description
+ //
+ //An alternative solution is to *not* fill the FontAutoStylePool with
+ //every font in the document, but to partition the fonts into the
+ //hard-attribute fonts which go into that pool and the style-attribute
+ //fonts which go into some additional pool which get merged just for
+ //the purposes of writing the embedded fonts but are not queried by
+ //"Find" which restores the original logic.
+ if (pFontFamilyNameState || pFontStyleNameState)
{
- pFontNameState->maValue <<= sName;
- if( pFontFamilyNameState )
- pFontFamilyNameState->mnIndex = -1;
- if( pFontStyleNameState )
- pFontStyleNameState->mnIndex = -1;
- if( pFontFamilyState )
- pFontFamilyState->mnIndex = -1;
- if( pFontPitchState )
- pFontPitchState->mnIndex = -1;
- if( pFontCharsetState )
- pFontCharsetState->mnIndex = -1;
- }
- else
- {
- pFontNameState->mnIndex = -1;
+ OUString sName( ((SvXMLExport&)GetExport()).GetFontAutoStylePool()->Find(
+ sFamilyName, sStyleName, nFamily, nPitch, eEnc ) );
+ if( !sName.isEmpty() )
+ {
+ pFontNameState->maValue <<= sName;
+ if( pFontFamilyNameState )
+ pFontFamilyNameState->mnIndex = -1;
+ if( pFontStyleNameState )
+ pFontStyleNameState->mnIndex = -1;
+ if( pFontFamilyState )
+ pFontFamilyState->mnIndex = -1;
+ if( pFontPitchState )
+ pFontPitchState->mnIndex = -1;
+ if( pFontCharsetState )
+ pFontCharsetState->mnIndex = -1;
+ }
+ else
+ {
+ pFontNameState->mnIndex = -1;
+ }
}
if( pFontFamilyNameState && sFamilyName.isEmpty() )
commit dfee01afdff0223284d17a4ea2134bece2ef440a
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Aug 20 11:24:47 2013 +0100
this Find is not actually implemented
Change-Id: I0d8e8903bdc5943079c6ed9f123e2fca2f72467f
diff --git a/include/xmloff/XMLFontAutoStylePool.hxx b/include/xmloff/XMLFontAutoStylePool.hxx
index 8ee84d8..096eb3f 100644
--- a/include/xmloff/XMLFontAutoStylePool.hxx
+++ b/include/xmloff/XMLFontAutoStylePool.hxx
@@ -63,7 +63,6 @@ public:
FontFamily nFamily,
FontPitch nPitch,
rtl_TextEncoding eEnc )const;
- OUString Find( const OUString& rInternalName ) const;
void exportXML();
};
commit e47d90690c8fab3ec8b7fd7c1b79372251770f9d
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date: Sun Aug 18 12:03:34 2013 +0200
String to OUString, better location for class method
Change-Id: Ifde0d45e35fed94d4ef6cb93b2feda172fd6608b
diff --git a/sw/inc/SwRewriter.hxx b/sw/inc/SwRewriter.hxx
index bb53508..ecf28ce 100644
--- a/sw/inc/SwRewriter.hxx
+++ b/sw/inc/SwRewriter.hxx
@@ -21,7 +21,7 @@
#define _SW_REWRITER_HXX
#include <vector>
-#include <tools/string.hxx>
+#include <rtl/ustring.hxx>
#include <swdllapi.h>
enum SwUndoArg
@@ -31,7 +31,7 @@ enum SwUndoArg
UndoArg3
};
-typedef std::pair<SwUndoArg, String> SwRewriteRule;
+typedef std::pair<SwUndoArg, OUString> SwRewriteRule;
class SW_DLLPUBLIC SwRewriter
{
@@ -42,9 +42,11 @@ public:
SwRewriter(const SwRewriter & rSrc);
~SwRewriter();
- void AddRule(SwUndoArg eWhat, const String & rWith);
+ void AddRule(SwUndoArg eWhat, const OUString & rWith);
- String Apply(const String & rStr) const;
+ OUString Apply(const OUString & rStr) const;
+
+ static OUString GetPlaceHolder(SwUndoArg eId);
};
#endif // _SW_REWRITER_HXX
diff --git a/sw/source/core/undo/SwRewriter.cxx b/sw/source/core/undo/SwRewriter.cxx
index 60d094d..3d1b584 100644
--- a/sw/source/core/undo/SwRewriter.cxx
+++ b/sw/source/core/undo/SwRewriter.cxx
@@ -41,7 +41,7 @@ SwRewriter::~SwRewriter()
{
}
-void SwRewriter::AddRule(SwUndoArg eWhat, const String & rWith)
+void SwRewriter::AddRule(SwUndoArg eWhat, const OUString & rWith)
{
SwRewriteRule aRule(eWhat, rWith);
@@ -55,4 +55,54 @@ void SwRewriter::AddRule(SwUndoArg eWhat, const String & rWith)
mRules.push_back(aRule);
}
+namespace
+{
+
+const char UNDO_ARG1[] = "$1";
+const char UNDO_ARG2[] = "$2";
+const char UNDO_ARG3[] = "$3";
+
+}
+
+OUString SwRewriter::Apply(const OUString & rStr) const
+{
+ OUString aResult = rStr;
+ std::vector<SwRewriteRule>::const_iterator aIt;
+
+ for (aIt = mRules.begin(); aIt != mRules.end(); ++aIt)
+ {
+ switch (aIt->first)
+ {
+ case UndoArg1:
+ default:
+ aResult = aResult.replaceAll(UNDO_ARG1, aIt->second);
+ break;
+ case UndoArg2:
+ aResult = aResult.replaceAll(UNDO_ARG2, aIt->second);
+ break;
+ case UndoArg3:
+ aResult = aResult.replaceAll(UNDO_ARG3, aIt->second);
+ break;
+ }
+ }
+
+ return aResult;
+}
+
+OUString SwRewriter::GetPlaceHolder(SwUndoArg eId)
+{
+ switch (eId)
+ {
+ case UndoArg1:
+ return OUString(UNDO_ARG1);
+ case UndoArg2:
+ return OUString(UNDO_ARG2);
+ case UndoArg3:
+ return OUString(UNDO_ARG3);
+ default:
+ break;
+ }
+ return OUString(UNDO_ARG1);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index 2fbe933..c6ac06c 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -552,10 +552,6 @@ static bool lcl_IsSpecialCharacter(sal_Unicode nChar)
return false;
}
-const char UNDO_ARG1[] = "$1";
-const char UNDO_ARG2[] = "$2";
-const char UNDO_ARG3[] = "$3";
-
static String lcl_DenotedPortion(String rStr, xub_StrLen nStart,
xub_StrLen nEnd)
{
@@ -579,8 +575,7 @@ static String lcl_DenotedPortion(String rStr, xub_StrLen nStart,
case CH_TXTATR_INWORD:
case CH_TXTATR_BREAKWORD:
- aResult = OUString(UNDO_ARG2);
-
+ aResult = SwRewriter::GetPlaceHolder(UndoArg2);
break;
}
@@ -638,7 +633,7 @@ String DenoteSpecialCharacters(const String & rStr)
aResult += lcl_DenotedPortion(rStr, nStart, rStr.Len());
}
else
- aResult = OUString(UNDO_ARG2);
+ aResult = SwRewriter::GetPlaceHolder(UndoArg2);
return aResult;
}
@@ -686,7 +681,7 @@ SwRewriter SwUndoDelete::GetRewriter() const
}
else
{
- aStr = OUString(UNDO_ARG2);
+ aStr = SwRewriter::GetPlaceHolder(UndoArg2);
}
}
@@ -1082,29 +1077,4 @@ void SwUndoDelete::SetTableName(const String & rName)
sTableName = rName;
}
-String SwRewriter::Apply(const String & rStr) const
-{
- OUString aResult = rStr;
- std::vector<SwRewriteRule>::const_iterator aIt;
-
- for (aIt = mRules.begin(); aIt != mRules.end(); ++aIt)
- {
- switch (aIt->first)
- {
- case UndoArg1:
- default:
- aResult = aResult.replaceAll(UNDO_ARG1, aIt->second);
- break;
- case UndoArg2:
- aResult = aResult.replaceAll(UNDO_ARG2, aIt->second);
- break;
- case UndoArg3:
- aResult = aResult.replaceAll(UNDO_ARG3, aIt->second);
- break;
- }
- }
-
- return aResult;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list