[Libreoffice-commits] core.git: Branch 'feature/drop-findcmap' - 55 commits - chart2/source compilerplugins/clang configure.ac cppuhelper/source cppu/source cui/inc cui/source dbaccess/source desktop/source download.lst editeng/source external/liborcus framework/source icon-themes/breeze icon-themes/breeze_dark icon-themes/breeze_dark_svg icon-themes/breeze_svg icon-themes/colibre icon-themes/colibre_svg icon-themes/elementary icon-themes/elementary_svg icon-themes/karasa_jaga icon-themes/karasa_jaga_svg icon-themes/sifr icon-themes/sifr_dark icon-themes/sifr_dark_svg icon-themes/sifr_svg icon-themes/sukapura icon-themes/sukapura_svg include/com include/cppuhelper include/o3tl include/osl include/registry include/rtl include/sfx2 include/svtools include/svx include/typelib include/uno include/vcl oox/source RepositoryExternal.mk sal/rtl sc/inc sc/Library_scui.mk scp2/AutoInstall.mk scp2/inc scp2/source sc/qa sc/source sd/uiconfig sfx2/source solenv/bin solenv/flatpak-manifest.in solenv/gbuild sol env/gdb solenv/sanitizers starmath/source svtools/source svx/source sw/qa sw/source sw/uiconfig tools/source vcl/inc vcl/qt5 vcl/quartz vcl/source vcl/unx vcl/win winaccessibility/source writerfilter/source xmloff/source
Jan-Marek Glogowski (via logerrit)
logerrit at kemper.freedesktop.org
Sun Sep 13 14:00:26 UTC 2020
Rebased ref, commits from common ancestor:
commit 2ec677a76570722491a88c27ecdc3348389fa2f9
Author: Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Sun Sep 13 15:01:22 2020 +0200
Commit: Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Sun Sep 13 15:59:09 2020 +0200
WIN OSX Qt5 unify CreateFontSubset code
This is basically just some refactoring. Mots interestingly the
MacOS used to work with 257 glyphs. I couldn't find any
explaination for the 256 glyph limit. Sadly the PrintFontManager
is out of scope. That needs more inspection.
Change-Id: Ibfa0e905f5efeb7d4a609884d64b4ed2615a9d3d
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx
index 9d86421e4e10..08e1187d9cfe 100644
--- a/vcl/inc/salgdi.hxx
+++ b/vcl/inc/salgdi.hxx
@@ -622,6 +622,11 @@ protected:
static void GetGlyphWidths(const vcl::AbstractTrueTypeFont& rTTF,
const PhysicalFontFace& rFontFace, bool bVertical,
std::vector<sal_Int32>& rWidths, Ucs2UIntMap& rUnicodeEnc);
+
+ static bool CreateFontSubset(vcl::AbstractTrueTypeFont& aTTF, const OString& rSysPath,
+ const bool bVertical, const sal_GlyphId* pGlyphIds,
+ const sal_uInt8* pEncoding, sal_Int32* pGlyphWidths,
+ int nGlyphCount);
};
bool SalGraphics::IsNativeControlSupported(ControlType eType, ControlPart ePart)
diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx
index 26b09b8bdc26..0eb31aba3252 100644
--- a/vcl/qt5/Qt5Graphics_Text.cxx
+++ b/vcl/qt5/Qt5Graphics_Text.cxx
@@ -219,7 +219,6 @@ bool Qt5Graphics::CreateFontSubset(const OUString& rToFile, const PhysicalFontFa
const sal_GlyphId* pGlyphIds, const sal_uInt8* pEncoding,
sal_Int32* pGlyphWidths, int nGlyphCount, FontSubsetInfo& rInfo)
{
- // prepare the requested file name for writing the font-subset file
OUString aSysPath;
if (osl_File_E_None != osl_getSystemPathFromFileURL(rToFile.pData, &aSysPath.pData))
return false;
@@ -229,8 +228,6 @@ bool Qt5Graphics::CreateFontSubset(const OUString& rToFile, const PhysicalFontFa
const QFont aFont = pQt5FontFace->CreateFont();
const QRawFont aRawFont(QRawFont::fromFont(aFont));
const QFontInfo aFontInfo(aFont);
- const OString aToFile(OUStringToOString(aSysPath, osl_getThreadTextEncoding()));
- const int nOrigGlyphCount = nGlyphCount;
// get details about the subsetted font
rInfo.m_nFontType = FontType::SFNT_TTF;
@@ -245,49 +242,9 @@ bool Qt5Graphics::CreateFontSubset(const OUString& rToFile, const PhysicalFontFa
if (GetTTGlobalFontHeadInfo(&aTTF, nXmin, nYmin, nXmax, nYmax, nMacStyleFlags))
rInfo.m_aFontBBox = tools::Rectangle(Point(nXmin, nYmin), Point(nXmax, nYmax));
- sal_uInt16 aShortIDs[nGlyphCount + 1];
- sal_uInt8 aTempEncs[nGlyphCount + 1];
-
- int nNotDef = -1;
-
- for (int i = 0; i < nGlyphCount; ++i)
- {
- aTempEncs[i] = pEncoding[i];
-
- sal_GlyphId aGlyphId(pGlyphIds[i]);
- aShortIDs[i] = static_cast<sal_uInt16>(aGlyphId);
- if (!aGlyphId && nNotDef < 0)
- nNotDef = i; // first NotDef glyph found
- }
-
- if (nNotDef != 0)
- {
- // add fake NotDef glyph if needed
- if (nNotDef < 0)
- nNotDef = nGlyphCount++;
- // NotDef glyph must be in pos 0 => swap glyphids
- aShortIDs[nNotDef] = aShortIDs[0];
- aTempEncs[nNotDef] = aTempEncs[0];
- aShortIDs[0] = 0;
- aTempEncs[0] = 0;
- }
-
- std::unique_ptr<sal_uInt16[]> pGlyphMetrics
- = GetTTSimpleGlyphMetrics(&aTTF, aShortIDs, nGlyphCount, false);
- if (!pGlyphMetrics)
- return false;
-
- sal_uInt16 nNotDefAdv = pGlyphMetrics[0];
- pGlyphMetrics[0] = pGlyphMetrics[nNotDef];
- pGlyphMetrics[nNotDef] = nNotDefAdv;
-
- for (int i = 0; i < nOrigGlyphCount; ++i)
- pGlyphWidths[i] = pGlyphMetrics[i];
-
- // write subset into destination file
- vcl::SFErrCodes nRC
- = vcl::CreateTTFromTTGlyphs(&aTTF, aToFile.getStr(), aShortIDs, aTempEncs, nGlyphCount);
- return (nRC == vcl::SFErrCodes::Ok);
+ const OString aToFile(OUStringToOString(aSysPath, osl_getThreadTextEncoding()));
+ return SalGraphics::CreateFontSubset(aTTF, aToFile, false /* use FontSelectPattern? */,
+ pGlyphIds, pEncoding, pGlyphWidths, nGlyphCount);
}
const void* Qt5Graphics::GetEmbedFontData(const PhysicalFontFace*, long* /*pDataLen*/)
diff --git a/vcl/quartz/salgdicommon.cxx b/vcl/quartz/salgdicommon.cxx
index c72e8ee5cabd..5283d2cd2b85 100644
--- a/vcl/quartz/salgdicommon.cxx
+++ b/vcl/quartz/salgdicommon.cxx
@@ -145,7 +145,7 @@ static void AddPolyPolygonToPath( CGMutablePathRef xPath,
bool AquaSalGraphics::CreateFontSubset( const OUString& rToFile,
const PhysicalFontFace* pFontData,
const sal_GlyphId* pGlyphIds, const sal_uInt8* pEncoding,
- sal_Int32* pGlyphWidths, int nGlyphCount,
+ sal_Int32* pGlyphWidths, const int nGlyphCount,
FontSubsetInfo& rInfo )
{
// TODO: move more of the functionality here into the generic subsetter code
@@ -153,17 +153,13 @@ bool AquaSalGraphics::CreateFontSubset( const OUString& rToFile,
// prepare the requested file name for writing the font-subset file
OUString aSysPath;
if( osl_File_E_None != osl_getSystemPathFromFileURL( rToFile.pData, &aSysPath.pData ) )
- {
return false;
- }
// get the raw-bytes from the font to be subset
std::vector<unsigned char> aBuffer;
bool bCffOnly = false;
if( !GetRawFontData( pFontData, aBuffer, &bCffOnly ) )
- {
return false;
- }
const OString aToFile( OUStringToOString( aSysPath,
osl_getThreadTextEncoding()));
@@ -190,11 +186,10 @@ bool AquaSalGraphics::CreateFontSubset( const OUString& rToFile,
// prepare data for psprint's font subsetter
TrueTypeFont* pSftFont = nullptr;
- SFErrCodes nRC = ::OpenTTFontBuffer( static_cast<void*>(aBuffer.data()), aBuffer.size(), 0, &pSftFont);
- if( nRC != SFErrCodes::Ok )
- {
+ if (::OpenTTFontBuffer( static_cast<void*>(aBuffer.data()), aBuffer.size(), 0, &pSftFont)
+ != SFErrCodes::Ok)
return false;
- }
+
// get details about the subsetted font
TTGlobalFontInfo aTTInfo;
::GetTTGlobalFontInfo( pSftFont, &aTTInfo );
@@ -206,86 +201,23 @@ bool AquaSalGraphics::CreateFontSubset( const OUString& rToFile,
rInfo.m_nCapHeight = aTTInfo.yMax; // Well ...
rInfo.m_nAscent = aTTInfo.winAscent;
rInfo.m_nDescent = aTTInfo.winDescent;
+
// mac fonts usually do not have an OS2-table
// => get valid ascent/descent values from other tables
if( !rInfo.m_nAscent )
- {
rInfo.m_nAscent = +aTTInfo.typoAscender;
- }
if( !rInfo.m_nAscent )
- {
rInfo.m_nAscent = +aTTInfo.ascender;
- }
if( !rInfo.m_nDescent )
- {
rInfo.m_nDescent = +aTTInfo.typoDescender;
- }
if( !rInfo.m_nDescent )
- {
rInfo.m_nDescent = -aTTInfo.descender;
- }
-
- // subset glyphs and get their properties
- // take care that subset fonts require the NotDef glyph in pos 0
- int nOrigCount = nGlyphCount;
- sal_uInt16 aShortIDs[ 257 ];
- sal_uInt8 aTempEncs[ 257 ];
- int nNotDef = -1;
-
- assert( (nGlyphCount <= 256 && "too many glyphs for subsetting" ));
-
- for( int i = 0; i < nGlyphCount; ++i )
- {
- aTempEncs[i] = pEncoding[i];
-
- sal_GlyphId aGlyphId(pGlyphIds[i]);
- aShortIDs[i] = static_cast<sal_uInt16>( aGlyphId );
- if( !aGlyphId && nNotDef < 0 )
- {
- nNotDef = i; // first NotDef glyph found
- }
- }
-
- if( nNotDef != 0 )
- {
- // add fake NotDef glyph if needed
- if( nNotDef < 0 )
- {
- nNotDef = nGlyphCount++;
- }
- // NotDef glyph must be in pos 0 => swap glyphids
- aShortIDs[ nNotDef ] = aShortIDs[0];
- aTempEncs[ nNotDef ] = aTempEncs[0];
- aShortIDs[0] = 0;
- aTempEncs[0] = 0;
- }
-
- // TODO: where to get bVertical?
- const bool bVertical = false;
-
- // fill the pGlyphWidths array
- // while making sure that the NotDef glyph is at index==0
- std::unique_ptr<sal_uInt16[]> pGlyphMetrics = ::GetTTSimpleGlyphMetrics( pSftFont, aShortIDs,
- nGlyphCount, bVertical );
- if( !pGlyphMetrics )
- {
- return false;
- }
-
- sal_uInt16 nNotDefAdv = pGlyphMetrics[0];
- pGlyphMetrics[0] = pGlyphMetrics[nNotDef];
- pGlyphMetrics[nNotDef] = nNotDefAdv;
- for( int i = 0; i < nOrigCount; ++i )
- {
- pGlyphWidths[i] = pGlyphMetrics[i];
- }
- pGlyphMetrics.reset();
// write subset into destination file
- nRC = ::CreateTTFromTTGlyphs( pSftFont, aToFile.getStr(), aShortIDs,
- aTempEncs, nGlyphCount );
+ bool bRet = SalGraphics::CreateFontSubset(*pSftFont, aToFile, false /* use FontSelectPattern? */,
+ pGlyphIds, pEncoding, pGlyphWidths, nGlyphCount);
::CloseTTFont(pSftFont);
- return (nRC == SFErrCodes::Ok);
+ return bRet;
}
static void alignLinePoint( const SalPoint* i_pIn, float& o_fX, float& o_fY )
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index 777b2b1115e4..76f33fdbd44e 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -942,4 +942,75 @@ void SalGraphics::GetGlyphWidths(const vcl::AbstractTrueTypeFont& rTTF,
}
}
+bool SalGraphics::CreateFontSubset(vcl::AbstractTrueTypeFont& rTTF, const OString& rSysPath,
+ const bool bVertical, const sal_GlyphId* pGlyphIds,
+ const sal_uInt8* pEncoding, sal_Int32* pGlyphWidths,
+ const int nOrigGlyphCount)
+{
+ // Multiple questions:
+ // - Why is there a glyph limit?
+ // MacOS used to handle 257 glyphs...
+ // Also the much more complex PrintFontManager variant has this limit.
+ // Also the very first implementation has the limit in
+ // commit 8789ed701e98031f2a1657ea0dfd6f7a0b050992
+ // - Why doesn't the PrintFontManager care about the fake glpyh? It
+ // is used on all unx platforms to create the subset font.
+ // - Should the SAL_WARN actually be asserts, like on MacOS?
+ if (nOrigGlyphCount > 256)
+ {
+ SAL_WARN("vcl.fonts", "too many glyphs for subsetting");
+ return false;
+ }
+
+ int nGlyphCount = nOrigGlyphCount;
+ sal_uInt16 aShortIDs[256];
+ sal_uInt8 aTempEncs[256];
+
+ // handle the undefined / first font glyph
+ int nNotDef = -1, i;
+ for (i = 0; i < nGlyphCount; ++i)
+ {
+ aTempEncs[i] = pEncoding[i];
+ aShortIDs[i] = static_cast<sal_uInt16>(pGlyphIds[i]);
+ if (!aShortIDs[i])
+ if (nNotDef < 0)
+ nNotDef = i;
+ }
+
+ // nNotDef glyph must be in pos 0 => swap glyphids
+ if (nNotDef != 0)
+ {
+ if (nNotDef < 0)
+ {
+ if (nGlyphCount == 256)
+ {
+ SAL_WARN("vcl.fonts", "too many glyphs for subsetting");
+ return false;
+ }
+ nNotDef = nGlyphCount++;
+ }
+
+ aShortIDs[nNotDef] = aShortIDs[0];
+ aTempEncs[nNotDef] = aTempEncs[0];
+ aShortIDs[0] = 0;
+ aTempEncs[0] = 0;
+ }
+
+ std::unique_ptr<sal_uInt16[]> pMetrics
+ = GetTTSimpleGlyphMetrics(&rTTF, aShortIDs, nGlyphCount, bVertical);
+ if (!pMetrics)
+ return false;
+
+ sal_uInt16 nNotDefAdv = pMetrics[0];
+ pMetrics[0] = pMetrics[nNotDef];
+ pMetrics[nNotDef] = nNotDefAdv;
+ for (i = 0; i < nOrigGlyphCount; ++i)
+ pGlyphWidths[i] = pMetrics[i];
+ pMetrics.reset();
+
+ // write subset into destination file
+ return (CreateTTFromTTGlyphs(&rTTF, rSysPath.getStr(), aShortIDs, aTempEncs, nGlyphCount)
+ == vcl::SFErrCodes::Ok);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index bc7f83b8b6f2..b2f6a4019f06 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -1643,52 +1643,9 @@ bool WinSalGraphics::CreateFontSubset( const OUString& rToFile,
Point( aTTInfo.xMax, aTTInfo.yMax ) );
rInfo.m_nCapHeight = aTTInfo.yMax; // Well ...
- // subset TTF-glyphs and get their properties
- // take care that subset fonts require the NotDef glyph in pos 0
- int nOrigCount = nGlyphCount;
- sal_uInt16 aShortIDs[ 256 ];
- sal_uInt8 aTempEncs[ 256 ];
-
- int nNotDef=-1, i;
- for( i = 0; i < nGlyphCount; ++i )
- {
- aTempEncs[i] = pEncoding[i];
- aShortIDs[i] = static_cast<sal_uInt16>(pGlyphIds[i]);
- if (!aShortIDs[i])
- if( nNotDef < 0 )
- nNotDef = i; // first NotDef glyph found
- }
-
- if( nNotDef != 0 )
- {
- // add fake NotDef glyph if needed
- if( nNotDef < 0 )
- nNotDef = nGlyphCount++;
-
- // NotDef glyph must be in pos 0 => swap glyphids
- aShortIDs[ nNotDef ] = aShortIDs[0];
- aTempEncs[ nNotDef ] = aTempEncs[0];
- aShortIDs[0] = 0;
- aTempEncs[0] = 0;
- }
- SAL_WARN_IF( nGlyphCount >= 257, "vcl", "too many glyphs for subsetting" );
-
- // fill pWidth array
- std::unique_ptr<sal_uInt16[]> pMetrics =
- ::GetTTSimpleGlyphMetrics( aSftTTF.get(), aShortIDs, nGlyphCount, aIFSD.mbVertical );
- if( !pMetrics )
- return false;
- sal_uInt16 nNotDefAdv = pMetrics[0];
- pMetrics[0] = pMetrics[nNotDef];
- pMetrics[nNotDef] = nNotDefAdv;
- for( i = 0; i < nOrigCount; ++i )
- pGlyphWidths[i] = pMetrics[i];
- pMetrics.reset();
-
// write subset into destination file
- nRC = ::CreateTTFromTTGlyphs( aSftTTF.get(), aToFile.getStr(), aShortIDs,
- aTempEncs, nGlyphCount );
- return (nRC == SFErrCodes::Ok);
+ return SalGraphics::CreateFontSubset(*pSftFont, aToFile, aIFSD.mbVertical, pGlyphIds, pEncoding,
+ pGlyphWidths, nGlyphCount);
}
const void* WinSalGraphics::GetEmbedFontData(const PhysicalFontFace* pFont, long* pDataLen)
commit 46521ef8b87f8f494a2c5ac28ddf70c3533842c6
Author: Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Fri Sep 11 22:34:11 2020 +0200
Commit: Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Sun Sep 13 15:55:41 2020 +0200
Qt5 implement GetGlyphWidths
Basically implement it the same way then Windows and MacOS.
Change-Id: I643581af49aeb9274505e90e12acbe5bcf0c98fb
diff --git a/vcl/inc/sft.hxx b/vcl/inc/sft.hxx
index 86cb718809b3..bb582b06d6fc 100644
--- a/vcl/inc/sft.hxx
+++ b/vcl/inc/sft.hxx
@@ -680,7 +680,7 @@ class TrueTypeFont;
* @return true, if table data could be decoded
* @ingroup sft
*/
- VCL_DLLPUBLIC bool GetTTGlobalFontHeadInfo(AbstractTrueTypeFont *ttf, int& xMin, int& yMin, int& xMax, int& yMax, sal_uInt16& macStyle);
+ VCL_DLLPUBLIC bool GetTTGlobalFontHeadInfo(const AbstractTrueTypeFont *ttf, int& xMin, int& yMin, int& xMax, int& yMax, sal_uInt16& macStyle);
/**
* Returns fonts metrics.
diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx
index 39d117b8ca12..26b09b8bdc26 100644
--- a/vcl/qt5/Qt5Graphics_Text.cxx
+++ b/vcl/qt5/Qt5Graphics_Text.cxx
@@ -297,9 +297,13 @@ const void* Qt5Graphics::GetEmbedFontData(const PhysicalFontFace*, long* /*pData
void Qt5Graphics::FreeEmbedFontData(const void* /*pData*/, long /*nDataLen*/) {}
-void Qt5Graphics::GetGlyphWidths(const PhysicalFontFace* /*pPFF*/, bool /*bVertical*/,
- std::vector<sal_Int32>& /*rWidths*/, Ucs2UIntMap& /*rUnicodeEnc*/)
+void Qt5Graphics::GetGlyphWidths(const PhysicalFontFace* pFontFace, bool bVertical,
+ std::vector<sal_Int32>& rWidths, Ucs2UIntMap& rUnicodeEnc)
{
+ const Qt5FontFace* pQt5FontFace = static_cast<const Qt5FontFace*>(pFontFace);
+ const QRawFont aRawFont(QRawFont::fromFont(pQt5FontFace->CreateFont()));
+ Qt5TrueTypeFont aTTF(*pQt5FontFace, aRawFont);
+ SalGraphics::GetGlyphWidths(aTTF, *pFontFace, bVertical, rWidths, rUnicodeEnc);
}
namespace
diff --git a/vcl/source/fontsubset/sft.cxx b/vcl/source/fontsubset/sft.cxx
index 6aba6d6d48d2..9fcf26f97d9c 100644
--- a/vcl/source/fontsubset/sft.cxx
+++ b/vcl/source/fontsubset/sft.cxx
@@ -2004,7 +2004,7 @@ void GetTTFontMetrics(const uint8_t *pHhea, size_t nHhea,
}
}
-bool GetTTGlobalFontHeadInfo(AbstractTrueTypeFont *ttf, int& xMin, int& yMin, int& xMax, int& yMax, sal_uInt16& macStyle)
+bool GetTTGlobalFontHeadInfo(const AbstractTrueTypeFont *ttf, int& xMin, int& yMin, int& xMax, int& yMax, sal_uInt16& macStyle)
{
sal_uInt32 table_size;
const sal_uInt8* table = ttf->table(O_head, table_size);
commit d7550d97107bd12cf836692902ea70918b4c0e66
Author: Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Fri Sep 11 22:31:51 2020 +0200
Commit: Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Sun Sep 13 15:55:40 2020 +0200
Forward existing FontCharMap from PhysicalFontFace
Since removed code in the previous commit is primary used in
CreateFontSubset and GetGlyphWidths, you have a high chance, that
the CMAP was already used for displaying a font, so it's already
decoded and can be forwarded. Also the lookup should be faster in
general this way.
Change-Id: Icf4d8a1a84ff6ccdaccb7e870abe5df3837f9541
diff --git a/vcl/inc/sft.hxx b/vcl/inc/sft.hxx
index bcbf74b07aa1..86cb718809b3 100644
--- a/vcl/inc/sft.hxx
+++ b/vcl/inc/sft.hxx
@@ -470,11 +470,13 @@ class TrueTypeFont;
* @param nLen - size of memory buffer
* @param facenum - logical font number within a TTC file. This value is ignored
* for TrueType fonts
- * @param ttf - array of TrueTypeFonts
+ * @param ttf - returns the opened TrueTypeFont
+ * @param xCharMap - optional parsed character map
* @return value of SFErrCodes enum
* @ingroup sft
*/
- SFErrCodes VCL_DLLPUBLIC OpenTTFontBuffer(const void* pBuffer, sal_uInt32 nLen, sal_uInt32 facenum, TrueTypeFont** ttf);
+ SFErrCodes VCL_DLLPUBLIC OpenTTFontBuffer(const void* pBuffer, sal_uInt32 nLen, sal_uInt32 facenum,
+ TrueTypeFont** ttf, const FontCharMapRef xCharMap = nullptr);
#if !defined(_WIN32)
/**
* TrueTypeFont constructor.
@@ -483,11 +485,13 @@ class TrueTypeFont;
* @param fname - name of TrueType font file
* @param facenum - logical font number within a TTC file. This value is ignored
* for TrueType fonts
- * @param ttf - array of TrueTypeFonts
+ * @param ttf - returns the opened TrueTypeFont
+ * @param xCharMap - optional parsed character map
* @return value of SFErrCodes enum
* @ingroup sft
*/
- SFErrCodes VCL_DLLPUBLIC OpenTTFontFile(const char *fname, sal_uInt32 facenum, TrueTypeFont** ttf);
+ SFErrCodes VCL_DLLPUBLIC OpenTTFontFile(const char *fname, sal_uInt32 facenum, TrueTypeFont** ttf,
+ const FontCharMapRef xCharMap = nullptr);
#endif
bool VCL_DLLPUBLIC getTTCoverage(
@@ -728,7 +732,7 @@ protected:
SFErrCodes indexGlyphData();
public:
- AbstractTrueTypeFont(const char* fileName = nullptr);
+ AbstractTrueTypeFont(const char* fileName = nullptr, const FontCharMapRef xCharMap = nullptr);
virtual ~AbstractTrueTypeFont();
const char* fileName() const { return m_pFileName; }
@@ -765,7 +769,7 @@ public:
sal_uInt32 ntables;
- TrueTypeFont(const char* pFileName = nullptr);
+ TrueTypeFont(const char* pFileName = nullptr, const FontCharMapRef xCharMap = nullptr);
~TrueTypeFont() override;
SFErrCodes open(sal_uInt32 facenum);
diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx
index 1c137f37bfc4..39d117b8ca12 100644
--- a/vcl/qt5/Qt5Graphics_Text.cxx
+++ b/vcl/qt5/Qt5Graphics_Text.cxx
@@ -137,14 +137,15 @@ class Qt5TrueTypeFont : public vcl::AbstractTrueTypeFont
mutable QByteArray m_aFontTable[vcl::NUM_TAGS];
public:
- Qt5TrueTypeFont(const QRawFont& aRawFont);
+ Qt5TrueTypeFont(const Qt5FontFace& aFontFace, const QRawFont& aRawFont);
bool hasTable(sal_uInt32 ord) const override;
const sal_uInt8* table(sal_uInt32 ord, sal_uInt32& size) const override;
};
-Qt5TrueTypeFont::Qt5TrueTypeFont(const QRawFont& aRawFont)
- : m_aRawFont(aRawFont)
+Qt5TrueTypeFont::Qt5TrueTypeFont(const Qt5FontFace& aFontFace, const QRawFont& aRawFont)
+ : vcl::AbstractTrueTypeFont(nullptr, aFontFace.GetFontCharMap())
+ , m_aRawFont(aRawFont)
{
indexGlyphData();
}
@@ -224,7 +225,8 @@ bool Qt5Graphics::CreateFontSubset(const OUString& rToFile, const PhysicalFontFa
return false;
// get the raw-bytes from the font to be subset
- const QFont aFont = static_cast<const Qt5FontFace*>(pFontFace)->CreateFont();
+ const Qt5FontFace* pQt5FontFace = static_cast<const Qt5FontFace*>(pFontFace);
+ const QFont aFont = pQt5FontFace->CreateFont();
const QRawFont aRawFont(QRawFont::fromFont(aFont));
const QFontInfo aFontInfo(aFont);
const OString aToFile(OUStringToOString(aSysPath, osl_getThreadTextEncoding()));
@@ -237,7 +239,7 @@ bool Qt5Graphics::CreateFontSubset(const OUString& rToFile, const PhysicalFontFa
rInfo.m_nAscent = aRawFont.ascent();
rInfo.m_nDescent = aRawFont.descent();
- Qt5TrueTypeFont aTTF(aRawFont);
+ Qt5TrueTypeFont aTTF(*pQt5FontFace, aRawFont);
int nXmin, nYmin, nXmax, nYmax;
sal_uInt16 nMacStyleFlags;
if (GetTTGlobalFontHeadInfo(&aTTF, nXmin, nYmin, nXmax, nYmax, nMacStyleFlags))
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 2c1fdff16eec..1501043924b6 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -759,7 +759,8 @@ void AquaSalGraphics::GetGlyphWidths( const PhysicalFontFace* pFontData, bool bV
// use the font subsetter to get the widths
TrueTypeFont* pSftFont = nullptr;
- SFErrCodes nRC = ::OpenTTFontBuffer( static_cast<void*>(aBuffer.data()), aBuffer.size(), 0, &pSftFont);
+ SFErrCodes nRC = ::OpenTTFontBuffer(static_cast<void*>(aBuffer.data()), aBuffer.size(), 0, &pSftFont,
+ pFontData->GetFontCharMap());
if( nRC != SFErrCodes::Ok )
return;
diff --git a/vcl/source/fontsubset/sft.cxx b/vcl/source/fontsubset/sft.cxx
index 812c539d6700..6aba6d6d48d2 100644
--- a/vcl/source/fontsubset/sft.cxx
+++ b/vcl/source/fontsubset/sft.cxx
@@ -1021,7 +1021,8 @@ int CountTTCFonts(const char* fname)
}
#if !defined(_WIN32)
-SFErrCodes OpenTTFontFile( const char* fname, sal_uInt32 facenum, TrueTypeFont** ttf )
+SFErrCodes OpenTTFontFile(const char* fname, sal_uInt32 facenum, TrueTypeFont** ttf,
+ const FontCharMapRef xCharMap)
{
SFErrCodes ret;
int fd = -1;
@@ -1029,7 +1030,7 @@ SFErrCodes OpenTTFontFile( const char* fname, sal_uInt32 facenum, TrueTypeFont**
if (!fname || !*fname) return SFErrCodes::BadFile;
- *ttf = new TrueTypeFont(fname);
+ *ttf = new TrueTypeFont(fname, xCharMap);
if( ! *ttf )
return SFErrCodes::Memory;
@@ -1080,9 +1081,10 @@ cleanup:
}
#endif
-SFErrCodes OpenTTFontBuffer(const void* pBuffer, sal_uInt32 nLen, sal_uInt32 facenum, TrueTypeFont** ttf)
+SFErrCodes OpenTTFontBuffer(const void* pBuffer, sal_uInt32 nLen, sal_uInt32 facenum, TrueTypeFont** ttf,
+ const FontCharMapRef xCharMap)
{
- *ttf = new TrueTypeFont();
+ *ttf = new TrueTypeFont(nullptr, xCharMap);
if( *ttf == nullptr )
return SFErrCodes::Memory;
@@ -1111,13 +1113,14 @@ bool withinBounds(sal_uInt32 tdoffset, sal_uInt32 moreoffset, sal_uInt32 len, sa
}
}
-AbstractTrueTypeFont::AbstractTrueTypeFont(const char* pFileName)
+AbstractTrueTypeFont::AbstractTrueTypeFont(const char* pFileName, const FontCharMapRef xCharMap)
: m_pFileName(nullptr)
, m_nGlyphs(0xFFFFFFFF)
, m_pGlyphOffsets(nullptr)
, m_nHorzMetrics(0)
, m_nVertMetrics(0)
, m_nUnitsPerEm(0)
+ , m_xCharMap(xCharMap)
{
if (pFileName)
m_pFileName = strdup(pFileName);
@@ -1129,8 +1132,8 @@ AbstractTrueTypeFont::~AbstractTrueTypeFont()
free(m_pGlyphOffsets);
}
-TrueTypeFont::TrueTypeFont(const char* pFileName)
- : AbstractTrueTypeFont(pFileName)
+TrueTypeFont::TrueTypeFont(const char* pFileName, const FontCharMapRef xCharMap)
+ : AbstractTrueTypeFont(pFileName, xCharMap)
, fsize(-1)
, ptr(nullptr)
, psname(nullptr)
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index f5f69f3eab33..bc7f83b8b6f2 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -1543,7 +1543,7 @@ public:
~ScopedTrueTypeFont();
- SFErrCodes open(void const * pBuffer, sal_uInt32 nLen, sal_uInt32 nFaceNum);
+ SFErrCodes open(void const * pBuffer, sal_uInt32 nLen, sal_uInt32 nFaceNum, const FontCharMapRef xCharMap = nullptr);
TrueTypeFont * get() const { return m_pFont; }
TrueTypeFont* operator->() { return m_pFont; }
@@ -1561,10 +1561,10 @@ ScopedTrueTypeFont::~ScopedTrueTypeFont()
}
SFErrCodes ScopedTrueTypeFont::open(void const * pBuffer, sal_uInt32 nLen,
- sal_uInt32 nFaceNum)
+ sal_uInt32 nFaceNum, const FontCharMapRef xCharMap)
{
OSL_ENSURE(m_pFont == nullptr, "already open");
- return OpenTTFontBuffer(pBuffer, nLen, nFaceNum, &m_pFont);
+ return OpenTTFontBuffer(pBuffer, nLen, nFaceNum, &m_pFont, xCharMap);
}
bool WinSalGraphics::CreateFontSubset( const OUString& rToFile,
@@ -1629,7 +1629,7 @@ bool WinSalGraphics::CreateFontSubset( const OUString& rToFile,
nFaceNum = ~0U; // indicate "TTC font extracts only"
ScopedTrueTypeFont aSftTTF;
- SFErrCodes nRC = aSftTTF.open( xRawFontData.get(), xRawFontData.size(), nFaceNum );
+ SFErrCodes nRC = aSftTTF.open( xRawFontData.get(), xRawFontData.size(), nFaceNum, pFont->GetFontCharMap());
if( nRC != SFErrCodes::Ok )
return false;
@@ -1745,7 +1745,7 @@ void WinSalGraphics::GetGlyphWidths( const PhysicalFontFace* pFont,
nFaceNum = ~0U; // indicate "TTC font extracts only"
ScopedTrueTypeFont aSftTTF;
- SFErrCodes nRC = aSftTTF.open( xRawFontData.get(), xRawFontData.size(), nFaceNum );
+ SFErrCodes nRC = aSftTTF.open(xRawFontData.get(), xRawFontData.size(), nFaceNum, pFont->GetFontCharMap());
if( nRC != SFErrCodes::Ok )
return;
commit 4e7fe6521b306b02cf3e5925678d9cc711a5672b
Author: Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Fri Sep 11 22:07:12 2020 +0200
Commit: Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Sun Sep 13 15:55:40 2020 +0200
Replace FindCmap with ParseCMAP
This introduces a potential performance regression, because
FindCmap works on the existing font tables and just sets up
a lookup function, while ParseCMAP creates some optimized,
in-memory lookup table, which needs a bit more work, but
is faster in its usage, I think. At least the initial usage
is faster the old way, as the CMAPs aren't decoded at all.
As you can see, the old code is just used on Windows and
MacOS / iOS. Deep in the bowels of the PrintFontManager, the
CMAP is also decoded using ParseCMAP...
So I'm not sure this potential regression really exists. Most
fonts will already have a decoded CMAP, so my guess is this
is actually faster in the end. No idea, how to measure.
Change-Id: I52caac1264cd3ff11a2a3fa6e9c800f67f146a79
diff --git a/include/vcl/fontcharmap.hxx b/include/vcl/fontcharmap.hxx
index 2a4e1dd08ff1..f600c3e6849f 100644
--- a/include/vcl/fontcharmap.hxx
+++ b/include/vcl/fontcharmap.hxx
@@ -39,7 +39,11 @@ public:
all codepoints in the Unicode BMP range, including surrogates.
**/
FontCharMap();
+
+ /** A new FontCharMap is created based on the CmapResult
+ */
FontCharMap( const CmapResult& rCR );
+
virtual ~FontCharMap() override;
/** Get the default font character map
@@ -134,6 +138,8 @@ public:
int GetGlyphIndex( sal_UCS4 ) const;
+ bool isSymbolic() const;
+
private:
ImplFontCharMapRef mpImplFontCharMap;
diff --git a/vcl/inc/impfontcharmap.hxx b/vcl/inc/impfontcharmap.hxx
index eaa99dbe2d4d..287b663b4820 100644
--- a/vcl/inc/impfontcharmap.hxx
+++ b/vcl/inc/impfontcharmap.hxx
@@ -49,6 +49,7 @@ private:
const sal_uInt16* mpGlyphIds; // individual glyphid mappings
int mnRangeCount;
int mnCharCount; // covered codepoints
+ const bool m_bSymbolic;
};
bool VCL_DLLPUBLIC ParseCMAP( const unsigned char* pRawData, int nRawLength, CmapResult& );
diff --git a/vcl/inc/sft.hxx b/vcl/inc/sft.hxx
index 89853335db54..bcbf74b07aa1 100644
--- a/vcl/inc/sft.hxx
+++ b/vcl/inc/sft.hxx
@@ -42,6 +42,7 @@
#include <vcl/dllapi.h>
#include <vcl/fontcapabilities.hxx>
+#include <vcl/fontcharmap.hxx>
#include <i18nlangtag/lang.h>
#include <array>
@@ -650,19 +651,6 @@ class TrueTypeFont;
*/
VCL_DLLPUBLIC std::unique_ptr<sal_uInt16[]> GetTTSimpleGlyphMetrics(AbstractTrueTypeFont const *ttf, const sal_uInt16 *glyphArray, int nGlyphs, bool vertical);
-#if defined(_WIN32) || defined(MACOSX) || defined(IOS)
-/**
- * Maps a Unicode (UCS-2) character to a glyph ID and returns it. Missing glyph has
- * a glyphID of 0 so this function can be used to test if a character is encoded in the font.
- *
- * @param ttf pointer to the TrueTypeFont structure
- * @param ch Unicode (UCS-2) character
- * @return glyph ID, if the character is missing in the font, the return value is 0.
- * @ingroup sft
- */
- VCL_DLLPUBLIC sal_uInt16 MapChar(TrueTypeFont const *ttf, sal_uInt16 ch);
-#endif
-
/**
* Returns global font information about the TrueType font.
* @see TTGlobalFontInfo
@@ -734,6 +722,7 @@ class VCL_DLLPUBLIC AbstractTrueTypeFont
sal_uInt32 m_nHorzMetrics;
sal_uInt32 m_nVertMetrics; /* if not 0 => font has vertical metrics information */
sal_uInt32 m_nUnitsPerEm;
+ FontCharMapRef m_xCharMap;
protected:
SFErrCodes indexGlyphData();
@@ -748,6 +737,7 @@ public:
sal_uInt32 horzMetricCount() const { return m_nHorzMetrics; }
sal_uInt32 vertMetricCount() const { return m_nVertMetrics; }
sal_uInt32 unitsPerEm() const { return m_nUnitsPerEm; }
+ FontCharMapRef GetCharMap() const { return m_xCharMap; }
virtual bool hasTable(sal_uInt32 ord) const = 0;
virtual const sal_uInt8* table(sal_uInt32 ord, sal_uInt32& size) const = 0;
@@ -774,9 +764,6 @@ public:
sal_Unicode *usubfamily;
sal_uInt32 ntables;
- const sal_uInt8* cmap;
- int cmapType;
- sal_uInt32 (*mapper)(const sal_uInt8 *, sal_uInt32, sal_uInt32); /* character to glyphID translation function */
TrueTypeFont(const char* pFileName = nullptr);
~TrueTypeFont() override;
diff --git a/vcl/source/font/fontcharmap.cxx b/vcl/source/font/fontcharmap.cxx
index 61f22f48f141..05a800fe1af7 100644
--- a/vcl/source/font/fontcharmap.cxx
+++ b/vcl/source/font/fontcharmap.cxx
@@ -54,6 +54,7 @@ ImplFontCharMap::ImplFontCharMap( const CmapResult& rCR )
, mpGlyphIds( rCR.mpGlyphIds )
, mnRangeCount( rCR.mnRangeCount )
, mnCharCount( 0 )
+ , m_bSymbolic(rCR.mbSymbolic)
{
const sal_UCS4* pRangePtr = mpRangeCodes;
for( int i = mnRangeCount; --i >= 0; pRangePtr += 2 )
@@ -429,6 +430,8 @@ bool FontCharMap::IsDefaultMap() const
return mpImplFontCharMap->isDefaultMap();
}
+bool FontCharMap::isSymbolic() const { return mpImplFontCharMap->m_bSymbolic; }
+
int FontCharMap::GetCharCount() const
{
return mpImplFontCharMap->mnCharCount;
diff --git a/vcl/source/fontsubset/sft.cxx b/vcl/source/fontsubset/sft.cxx
index 6eabe8480608..812c539d6700 100644
--- a/vcl/source/fontsubset/sft.cxx
+++ b/vcl/source/fontsubset/sft.cxx
@@ -35,6 +35,7 @@
#include <unistd.h>
#endif
#include <sft.hxx>
+#include <impfontcharmap.hxx>
#include "ttcr.hxx"
#include "xlat.hxx"
#include <rtl/crc.h>
@@ -165,18 +166,6 @@ static sal_uInt32 GetUInt32(const sal_uInt8 *ptr, size_t offset)
return t;
}
-#if defined(OSL_BIGENDIAN)
-#define Int16FromMOTA(a) (a)
-#define Int32FromMOTA(a) (a)
-#else
-static sal_uInt16 Int16FromMOTA(sal_uInt16 a) {
- return static_cast<sal_uInt16>(static_cast<sal_uInt8>(a >> 8) | (static_cast<sal_uInt8>(a) << 8));
-}
-static sal_uInt32 Int32FromMOTA(sal_uInt32 a) {
- return ((a>>24)&0xFF) | (((a>>8)&0xFF00) | ((a&0xFF00)<<8) | ((a&0xFF)<<24));
-}
-#endif
-
static F16Dot16 fixedMul(F16Dot16 a, F16Dot16 b)
{
unsigned int a1, b1;
@@ -1014,332 +1003,6 @@ static void GetNames(TrueTypeFont *t)
}
}
-namespace {
-
-enum cmapType {
- CMAP_NOT_USABLE = -1,
- CMAP_MS_Symbol = 10,
- CMAP_MS_Unicode = 11,
- CMAP_MS_ShiftJIS = 12,
- CMAP_MS_PRC = 13,
- CMAP_MS_Big5 = 14,
- CMAP_MS_Wansung = 15,
- CMAP_MS_Johab = 16
-};
-
-}
-
-#define MISSING_GLYPH_INDEX 0
-
-static sal_uInt32 getGlyph0(const sal_uInt8* cmap, sal_uInt32, sal_uInt32 c) {
- if (c <= 255) {
- return *(cmap + 6 + c);
- } else {
- return MISSING_GLYPH_INDEX;
- }
-}
-
-namespace {
-
-struct subHeader2 {
- sal_uInt16 firstCode;
- sal_uInt16 entryCount;
- sal_uInt16 idDelta;
- sal_uInt16 idRangeOffset;
-};
-
-}
-
-static sal_uInt32 getGlyph2(const sal_uInt8 *cmap, const sal_uInt32 nMaxCmapSize, sal_uInt32 c) {
- sal_uInt16 const *CMAP2 = reinterpret_cast<sal_uInt16 const *>(cmap);
- sal_uInt8 theHighByte;
-
- sal_uInt8 theLowByte;
- subHeader2 const * subHeader2s;
- sal_uInt16 const * subHeader2Keys;
- sal_uInt16 firstCode;
- int k = -1;
- sal_uInt32 ToReturn;
-
- theHighByte = static_cast<sal_uInt8>((c >> 8) & 0x00ff);
- theLowByte = static_cast<sal_uInt8>(c & 0x00ff);
- subHeader2Keys = CMAP2 + 3;
- subHeader2s = reinterpret_cast<subHeader2 const *>(subHeader2Keys + 256);
- if(reinterpret_cast<sal_uInt8 const *>(&subHeader2Keys[theHighByte]) - cmap < int(nMaxCmapSize - 2))
- {
- k = Int16FromMOTA(subHeader2Keys[theHighByte]) / 8;
- // check if the subheader record fits into available space
- if(reinterpret_cast<sal_uInt8 const *>(&subHeader2s[k]) - cmap >= int(nMaxCmapSize - sizeof(subHeader2)))
- k = -1;
- }
-
- if(k == 0) {
- firstCode = Int16FromMOTA(subHeader2s[0].firstCode);
- if(theLowByte >= firstCode && theLowByte < (firstCode + Int16FromMOTA(subHeader2s[k].entryCount))) {
- sal_uInt16 const * pGlyph = (&(subHeader2s[0].idRangeOffset))
- + (Int16FromMOTA(subHeader2s[0].idRangeOffset)/2) /* + offset */
- + theLowByte /* + to_look */
- - firstCode
- ;
- if (reinterpret_cast<sal_uInt8 const *>(pGlyph) - cmap < int(nMaxCmapSize) - 4)
- return *pGlyph;
- else
- return MISSING_GLYPH_INDEX;
- } else {
- return MISSING_GLYPH_INDEX;
- }
- } else if (k > 0) {
- firstCode = Int16FromMOTA(subHeader2s[k].firstCode);
- if(theLowByte >= firstCode && theLowByte < (firstCode + Int16FromMOTA(subHeader2s[k].entryCount))) {
- ToReturn = *((&(subHeader2s[k].idRangeOffset))
- + (Int16FromMOTA(subHeader2s[k].idRangeOffset)/2)
- + theLowByte - firstCode);
- if(ToReturn == 0) {
- return MISSING_GLYPH_INDEX;
- } else {
- ToReturn += Int16FromMOTA(subHeader2s[k].idDelta);
- return (ToReturn & 0xFFFF);
- }
- } else {
- return MISSING_GLYPH_INDEX;
- }
- } else {
- return MISSING_GLYPH_INDEX;
- }
-}
-
-static sal_uInt32 getGlyph6(const sal_uInt8 *cmap, sal_uInt32, sal_uInt32 c) {
- sal_uInt16 firstCode, lastCode, count;
- sal_uInt16 const *CMAP6 = reinterpret_cast<sal_uInt16 const *>(cmap);
-
- firstCode = Int16FromMOTA(*(CMAP6 + 3));
- count = Int16FromMOTA(*(CMAP6 + 4));
- lastCode = firstCode + count - 1;
- if (c < firstCode || c > lastCode) {
- return MISSING_GLYPH_INDEX;
- } else {
- return *((CMAP6 + 5)/*glyphIdArray*/ + (c - firstCode));
- }
-}
-
-static sal_uInt16 GEbinsearch(sal_uInt16 const *ar, sal_uInt16 length, sal_uInt16 toSearch) {
- signed int low, high, lastfound = 0xffff;
- sal_uInt16 res;
- if(length == sal_uInt16(0) || length == sal_uInt16(0xFFFF)) {
- return sal_uInt16(0xFFFF);
- }
- low = 0;
- high = length - 1;
- while(high >= low) {
- int mid = (high + low)/2;
- res = Int16FromMOTA(*(ar+mid));
- if(res >= toSearch) {
- lastfound = mid;
- high = --mid;
- } else {
- low = ++mid;
- }
- }
- return static_cast<sal_uInt16>(lastfound);
-}
-
-static sal_uInt32 getGlyph4(const sal_uInt8 *cmap, const sal_uInt32 nMaxCmapSize, sal_uInt32 c) {
- sal_uInt16 i;
- int ToReturn;
- sal_uInt16 segCount;
- sal_uInt16 const * startCode;
- sal_uInt16 const * endCode;
- sal_uInt16 const * idDelta;
- /* sal_uInt16 * glyphIdArray; */
- sal_uInt16 const * idRangeOffset;
- /*sal_uInt16 * glyphIndexArray;*/
- sal_uInt16 const *CMAP4 = reinterpret_cast<sal_uInt16 const *>(cmap);
- /* sal_uInt16 GEbinsearch(sal_uInt16 *ar, sal_uInt16 length, sal_uInt16 toSearch); */
-
- segCount = Int16FromMOTA(*(CMAP4 + 3))/2;
- endCode = CMAP4 + 7;
- i = GEbinsearch(endCode, segCount, static_cast<sal_uInt16>(c));
-
- if (i == sal_uInt16(0xFFFF)) {
- return MISSING_GLYPH_INDEX;
- }
- startCode = endCode + segCount + 1;
-
- if((reinterpret_cast<sal_uInt8 const *>(&startCode[i]) - cmap >= int(nMaxCmapSize - 2)) || Int16FromMOTA(startCode[i]) > c) {
- return MISSING_GLYPH_INDEX;
- }
- idDelta = startCode + segCount;
- idRangeOffset = idDelta + segCount;
- /*glyphIndexArray = idRangeOffset + segCount;*/
-
- if((reinterpret_cast<sal_uInt8 const *>(&idRangeOffset[i]) - cmap < int(nMaxCmapSize - 2)) && Int16FromMOTA(idRangeOffset[i]) != 0) {
- sal_uInt16 const * pGlyphOffset = &(idRangeOffset[i]) + (Int16FromMOTA(idRangeOffset[i])/2 + (c - Int16FromMOTA(startCode[i])));
- if(reinterpret_cast<sal_uInt8 const *>(pGlyphOffset) - cmap >= int(nMaxCmapSize - 2))
- return MISSING_GLYPH_INDEX;
- c = Int16FromMOTA(*pGlyphOffset);
- }
-
- ToReturn = (Int16FromMOTA(idDelta[i]) + c) & 0xFFFF;
- return ToReturn;
-}
-
-static sal_uInt32 getGlyph12(const sal_uInt8 *pCmap, sal_uInt32, sal_uInt32 cChar) {
- const sal_uInt32* pCMAP12 = reinterpret_cast<const sal_uInt32*>(pCmap);
- int nLength = Int32FromMOTA( pCMAP12[1] );
- int nGroups = Int32FromMOTA( pCMAP12[3] );
- int nLower = 0;
- int nUpper = nGroups;
-
- if( nUpper > (nLength-16)/12 )
- nUpper = (nLength-16)/12;
-
- /* binary search in "segmented coverage" subtable */
- while( nLower < nUpper ) {
- int nIndex = (nLower + nUpper) / 2;
- const sal_uInt32* pEntry = &pCMAP12[ 4 + 3*nIndex ];
- sal_uInt32 cStart = Int32FromMOTA( pEntry[0] );
- sal_uInt32 cLast = Int32FromMOTA( pEntry[1] );
- if( cChar < cStart )
- nUpper = nIndex;
- else if( cChar > cLast )
- nLower = nIndex + 1;
- else { /* found matching entry! */
- sal_uInt32 nGlyph = Int32FromMOTA( pEntry[2] );
- nGlyph += cChar - cStart;
- return nGlyph;
- }
- }
-
- return MISSING_GLYPH_INDEX;
-}
-
-static void FindCmap(TrueTypeFont *ttf)
-{
- sal_uInt32 table_size;
- const sal_uInt8* table = ttf->table(O_cmap, table_size);
- if (table_size < 4)
- {
- SAL_WARN("vcl.fonts", "Parsing error in " << OUString::createFromAscii(ttf->fileName()) <<
- "cmap table size too short");
- return;
- }
- sal_uInt16 ncmaps = GetUInt16(table, 2);
- sal_uInt32 AppleUni = 0; // Apple Unicode
- sal_uInt32 ThreeZero = 0; /* MS Symbol */
- sal_uInt32 ThreeOne = 0; /* MS UCS-2 */
- sal_uInt32 ThreeTwo = 0; /* MS ShiftJIS */
- sal_uInt32 ThreeThree = 0; /* MS PRC */
- sal_uInt32 ThreeFour = 0; /* MS Big5 */
- sal_uInt32 ThreeFive = 0; /* MS Wansung */
- sal_uInt32 ThreeSix = 0; /* MS Johab */
-
- const sal_uInt32 remaining_table_size = table_size-4;
- const sal_uInt32 nMinRecordSize = 8;
- const sal_uInt32 nMaxRecords = remaining_table_size / nMinRecordSize;
- if (ncmaps > nMaxRecords)
- {
- SAL_WARN("vcl.fonts", "Parsing error in " << OUString::createFromAscii(ttf->fileName()) <<
- ": " << nMaxRecords << " max possible entries, but " <<
- ncmaps << " claimed, truncating");
- ncmaps = nMaxRecords;
- }
-
- for (unsigned int i = 0; i < ncmaps; i++) {
- /* sanity check, cmap entry must lie within table */
- sal_uInt32 nLargestFixedOffsetPos = 8 + i * 8;
- sal_uInt32 nMinSize = nLargestFixedOffsetPos + sizeof(sal_uInt32);
- if (nMinSize > table_size)
- {
- SAL_WARN( "vcl.fonts", "Font " << OUString::createFromAscii(ttf->fileName()) << " claimed to have "
- << ncmaps << " cmaps, but only space for " << i);
- break;
- }
-
- sal_uInt16 pID = GetUInt16(table, 4 + i * 8);
- sal_uInt16 eID = GetUInt16(table, 6 + i * 8);
- sal_uInt32 offset = GetUInt32(table, nLargestFixedOffsetPos);
-
- /* sanity check, cmap must lie within file */
- if( (table - ttf->ptr) + offset > static_cast<sal_uInt32>(ttf->fsize) )
- continue;
-
- /* Unicode tables in Apple fonts */
- if (pID == 0) {
- AppleUni = offset;
- }
-
- if (pID == 3) {
- switch (eID) {
- case 0: ThreeZero = offset; break;
- case 10: // UCS-4
- case 1: ThreeOne = offset; break;
- case 2: ThreeTwo = offset; break;
- case 3: ThreeThree = offset; break;
- case 4: ThreeFour = offset; break;
- case 5: ThreeFive = offset; break;
- case 6: ThreeSix = offset; break;
- }
- }
- }
-
- // fall back to AppleUnicode if there are no ThreeOne/Threezero tables
- if( AppleUni && !ThreeZero && !ThreeOne)
- ThreeOne = AppleUni;
-
- if (ThreeOne) {
- ttf->cmapType = CMAP_MS_Unicode;
- ttf->cmap = table + ThreeOne;
- } else if (ThreeTwo) {
- ttf->cmapType = CMAP_MS_ShiftJIS;
- ttf->cmap = table + ThreeTwo;
- } else if (ThreeThree) {
- ttf->cmapType = CMAP_MS_PRC;
- ttf->cmap = table + ThreeThree;
- } else if (ThreeFour) {
- ttf->cmapType = CMAP_MS_Big5;
- ttf->cmap = table + ThreeFour;
- } else if (ThreeFive) {
- ttf->cmapType = CMAP_MS_Wansung;
- ttf->cmap = table + ThreeFive;
- } else if (ThreeSix) {
- ttf->cmapType = CMAP_MS_Johab;
- ttf->cmap = table + ThreeSix;
- } else if (ThreeZero) {
- ttf->cmapType = CMAP_MS_Symbol;
- ttf->cmap = table + ThreeZero;
- } else {
- ttf->cmapType = CMAP_NOT_USABLE;
- ttf->cmap = nullptr;
- }
-
- if (ttf->cmapType != CMAP_NOT_USABLE) {
- if( (ttf->cmap - ttf->ptr + 2U) > static_cast<sal_uInt32>(ttf->fsize) ) {
- ttf->cmapType = CMAP_NOT_USABLE;
- ttf->cmap = nullptr;
- }
- }
-
- if (ttf->cmapType == CMAP_NOT_USABLE) return;
-
- switch (GetUInt16(ttf->cmap, 0)) {
- case 0: ttf->mapper = getGlyph0; break;
- case 2: ttf->mapper = getGlyph2; break;
- case 4: ttf->mapper = getGlyph4; break;
- case 6: ttf->mapper = getGlyph6; break;
- case 12: ttf->mapper= getGlyph12; break;
- default:
-#if OSL_DEBUG_LEVEL > 1
- /*- if the cmap table is really broken */
- SAL_WARN("vcl.fonts", ttf->fileName() << ": "
- << GetUInt16(ttf->cmap, 0)
- << " is not a recognized cmap format..");
-#endif
- ttf->cmapType = CMAP_NOT_USABLE;
- ttf->cmap = nullptr;
- ttf->mapper = nullptr;
- }
-}
-
/*- Public functions */
int CountTTCFonts(const char* fname)
@@ -1476,9 +1139,6 @@ TrueTypeFont::TrueTypeFont(const char* pFileName)
, subfamily(nullptr)
, usubfamily(nullptr)
, ntables(0)
- , cmap(nullptr)
- , cmapType(0)
- , mapper(nullptr)
{
}
@@ -1554,6 +1214,15 @@ SFErrCodes AbstractTrueTypeFont::indexGlyphData()
table = this->table(O_vhea, table_size);
m_nVertMetrics = (table && table_size >= 36) ? GetUInt16(table, 34) : 0;
+ if (!m_xCharMap.is())
+ {
+ CmapResult aCmapResult;
+ table = this->table(O_cmap, table_size);
+ if (!ParseCMAP(table, table_size, aCmapResult))
+ return SFErrCodes::TtFormat;
+ m_xCharMap = new FontCharMap(aCmapResult);
+ }
+
return SFErrCodes::Ok;
}
@@ -1695,16 +1364,11 @@ SFErrCodes TrueTypeFont::open(sal_uInt32 facenum)
/* At this point TrueTypeFont is constructed, now need to verify the font format
and read the basic font properties */
- /* The following tables are absolutely required:
- * maxp, head, name, cmap
- */
-
SFErrCodes ret = indexGlyphData();
if (ret != SFErrCodes::Ok)
return ret;
GetNames(this);
- FindCmap(this);
return SFErrCodes::Ok;
}
@@ -2268,33 +1932,6 @@ SFErrCodes CreateT42FromTTGlyphs(TrueTypeFont *ttf,
return SFErrCodes::Ok;
}
-#if defined(_WIN32) || defined(MACOSX) || defined(IOS)
-sal_uInt16 MapChar(TrueTypeFont const *ttf, sal_uInt16 ch)
-{
- switch (ttf->cmapType) {
- case CMAP_MS_Symbol:
- {
- const sal_uInt32 nMaxCmapSize = ttf->ptr + ttf->fsize - ttf->cmap;
- if( ttf->mapper == getGlyph0 && ( ch & 0xf000 ) == 0xf000 )
- ch &= 0x00ff;
- return static_cast<sal_uInt16>(ttf->mapper(ttf->cmap, nMaxCmapSize, ch ));
- }
-
- case CMAP_MS_Unicode: break;
- case CMAP_MS_ShiftJIS: ch = TranslateChar12(ch); break;
- case CMAP_MS_PRC: ch = TranslateChar13(ch); break;
- case CMAP_MS_Big5: ch = TranslateChar14(ch); break;
- case CMAP_MS_Wansung: ch = TranslateChar15(ch); break;
- case CMAP_MS_Johab: ch = TranslateChar16(ch); break;
- default: return 0;
- }
- const sal_uInt32 nMaxCmapSize = ttf->ptr + ttf->fsize - ttf->cmap;
- ch = static_cast<sal_uInt16>(ttf->mapper(ttf->cmap, nMaxCmapSize, ch));
- return ch;
-}
-#endif
-
-
std::unique_ptr<sal_uInt16[]> GetTTSimpleGlyphMetrics(AbstractTrueTypeFont const *ttf, const sal_uInt16 *glyphArray, int nGlyphs, bool vertical)
{
const sal_uInt8* pTable;
@@ -2391,7 +2028,7 @@ void GetTTGlobalFontInfo(TrueTypeFont *ttf, TTGlobalFontInfo *info)
info->subfamily = ttf->subfamily;
info->usubfamily = ttf->usubfamily;
info->psname = ttf->psname;
- info->symbolEncoded = (ttf->cmapType == CMAP_MS_Symbol);
+ info->symbolEncoded = ttf->GetCharMap()->isSymbolic();
sal_uInt32 table_size;
const sal_uInt8* table = ttf->table(O_OS2, table_size);
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index 1f80539eb8e9..777b2b1115e4 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -936,7 +936,7 @@ void SalGraphics::GetGlyphWidths(const vcl::AbstractTrueTypeFont& rTTF,
continue;
sal_Ucs nUcsChar = static_cast<sal_Ucs>(nChar);
- sal_uInt32 nGlyph = ::MapChar(&rTTF, nUcsChar);
+ sal_uInt32 nGlyph = xFCMap->GetGlyphIndex(nUcsChar);
if (nGlyph > 0)
rUnicodeEnc[nUcsChar] = nGlyph;
}
commit f139cbd8a2a98c0fa9754502d72834cbae8eadd8
Author: Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Fri Sep 11 17:24:59 2020 +0200
Commit: Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Sun Sep 13 15:55:40 2020 +0200
WIN OSX unify GetGlyphWidths code
Now that GetFontChatMap is a member of PhysicalFontFace, we can
copy the common part of both architectures into a SalGraphics
helper function.
Change-Id: Iad379ea690a1c5346b69b5042188506ccf575cc2
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx
index d2b92c65110f..9d86421e4e10 100644
--- a/vcl/inc/salgdi.hxx
+++ b/vcl/inc/salgdi.hxx
@@ -54,6 +54,11 @@ namespace basegfx {
class B2DPolyPolygon;
}
+namespace vcl
+{
+class AbstractTrueTypeFont;
+}
+
typedef sal_Unicode sal_Ucs; // TODO: use sal_UCS4 instead of sal_Unicode
typedef std::map< sal_Ucs, sal_uInt32 > Ucs2UIntMap;
@@ -613,6 +618,10 @@ protected:
std::unique_ptr<vcl::WidgetDrawInterface> m_pWidgetDraw;
vcl::WidgetDrawInterface* forWidget() { return m_pWidgetDraw ? m_pWidgetDraw.get() : this; }
+
+ static void GetGlyphWidths(const vcl::AbstractTrueTypeFont& rTTF,
+ const PhysicalFontFace& rFontFace, bool bVertical,
+ std::vector<sal_Int32>& rWidths, Ucs2UIntMap& rUnicodeEnc);
};
bool SalGraphics::IsNativeControlSupported(ControlType eType, ControlPart ePart)
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 4cab7731eca5..2c1fdff16eec 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -763,51 +763,7 @@ void AquaSalGraphics::GetGlyphWidths( const PhysicalFontFace* pFontData, bool bV
if( nRC != SFErrCodes::Ok )
return;
- const int nGlyphCount = pSftFont->glyphCount();
- if( nGlyphCount > 0 )
- {
- // get glyph metrics
- rGlyphWidths.resize(nGlyphCount);
- std::vector<sal_uInt16> aGlyphIds(nGlyphCount);
- for( int i = 0; i < nGlyphCount; i++ )
- {
- aGlyphIds[i] = static_cast<sal_uInt16>(i);
- }
-
- std::unique_ptr<sal_uInt16[]> pGlyphMetrics = ::GetTTSimpleGlyphMetrics( pSftFont, aGlyphIds.data(),
- nGlyphCount, bVertical );
- if( pGlyphMetrics )
- {
- for( int i = 0; i < nGlyphCount; ++i )
- {
- rGlyphWidths[i] = pGlyphMetrics[i];
- }
- pGlyphMetrics.reset();
- }
-
- rtl::Reference<CoreTextFontFace> rCTFontData(new CoreTextFontFace(*pFontData, pFontData->GetFontId()));
- FontCharMapRef xFCMap = rCTFontData->GetFontCharMap();
- SAL_WARN_IF( !xFCMap.is() || !xFCMap->GetCharCount(), "vcl", "no charmap" );
-
- // get unicode<->glyph encoding
- // TODO? avoid sft mapping by using the xFCMap itself
- int nCharCount = xFCMap->GetCharCount();
- sal_uInt32 nChar = xFCMap->GetFirstChar();
- for( ; --nCharCount >= 0; nChar = xFCMap->GetNextChar( nChar ) )
- {
- if( nChar > 0xFFFF ) // TODO: allow UTF-32 chars
- break;
-
- sal_Ucs nUcsChar = static_cast<sal_Ucs>(nChar);
- sal_uInt32 nGlyph = ::MapChar( pSftFont, nUcsChar );
- if( nGlyph > 0 )
- {
- rUnicodeEnc[ nUcsChar ] = nGlyph;
- }
- }
-
- xFCMap = nullptr;
- }
+ SalGraphics::GetGlyphWidths(*pSftFont, *pFontData, bVertical, rGlyphWidths, rUnicodeEnc);
::CloseTTFont( pSftFont );
}
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index 21844bff732a..1f80539eb8e9 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -28,8 +28,10 @@
#include <svsys.h>
#endif
#endif
+#include <PhysicalFontFace.hxx>
#include <salgdi.hxx>
#include <salframe.hxx>
+#include <sft.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <FileDefinitionWidgetDraw.hxx>
@@ -894,4 +896,50 @@ OUString SalGraphics::getRenderBackendName() const
return OUString();
}
+void SalGraphics::GetGlyphWidths(const vcl::AbstractTrueTypeFont& rTTF,
+ const PhysicalFontFace& rFontFace, const bool bVertical,
+ std::vector<sal_Int32>& rWidths, Ucs2UIntMap& rUnicodeEnc)
+{
+ rWidths.clear();
+ rUnicodeEnc.clear();
+
+ const int nGlyphCount = rTTF.glyphCount();
+ if (nGlyphCount <= 0)
+ return;
+
+ FontCharMapRef xFCMap = rFontFace.GetFontCharMap();
+ if (!xFCMap.is() || !xFCMap->GetCharCount())
+ {
+ SAL_WARN("vcl.fonts", "no charmap");
+ return;
+ }
+
+ rWidths.resize(nGlyphCount);
+ std::vector<sal_uInt16> aGlyphIds(nGlyphCount);
+ for (int i = 0; i < nGlyphCount; i++)
+ aGlyphIds[i] = static_cast<sal_uInt16>(i);
+
+ std::unique_ptr<sal_uInt16[]> pGlyphMetrics
+ = GetTTSimpleGlyphMetrics(&rTTF, aGlyphIds.data(), nGlyphCount, bVertical);
+ if (pGlyphMetrics)
+ {
+ for (int i = 0; i < nGlyphCount; ++i)
+ rWidths[i] = pGlyphMetrics[i];
+ pGlyphMetrics.reset();
+ }
+
+ int nCharCount = xFCMap->GetCharCount();
+ sal_uInt32 nChar = xFCMap->GetFirstChar();
+ for (; --nCharCount >= 0; nChar = xFCMap->GetNextChar(nChar))
+ {
+ if (nChar > 0xFFFF)
+ continue;
+
+ sal_Ucs nUcsChar = static_cast<sal_Ucs>(nChar);
+ sal_uInt32 nGlyph = ::MapChar(&rTTF, nUcsChar);
+ if (nGlyph > 0)
+ rUnicodeEnc[nUcsChar] = nGlyph;
+ }
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index 4dac58aaafb2..f5f69f3eab33 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -1749,44 +1749,7 @@ void WinSalGraphics::GetGlyphWidths( const PhysicalFontFace* pFont,
if( nRC != SFErrCodes::Ok )
return;
- int nGlyphs = aSftTTF->glyphCount();
- if( nGlyphs > 0 )
- {
- rWidths.resize(nGlyphs);
- std::vector<sal_uInt16> aGlyphIds(nGlyphs);
- for( int i = 0; i < nGlyphs; i++ )
- aGlyphIds[i] = sal_uInt16(i);
- std::unique_ptr<sal_uInt16[]> pMetrics = ::GetTTSimpleGlyphMetrics( aSftTTF.get(),
- aGlyphIds.data(),
- nGlyphs,
- bVertical );
- if( pMetrics )
- {
- for( int i = 0; i< nGlyphs; i++ )
- rWidths[i] = pMetrics[i];
- pMetrics.reset();
- rUnicodeEnc.clear();
- }
- const WinFontFace* pWinFont = static_cast<const WinFontFace*>(pFont);
- FontCharMapRef xFCMap = pWinFont->GetFontCharMap();
- SAL_WARN_IF( !xFCMap.is() || !xFCMap->GetCharCount(), "vcl", "no map" );
-
- int nCharCount = xFCMap->GetCharCount();
- sal_uInt32 nChar = xFCMap->GetFirstChar();
- for( int i = 0; i < nCharCount; i++ )
- {
- if( nChar < 0x00010000 )
- {
- sal_uInt16 nGlyph = ::MapChar( aSftTTF.get(),
- static_cast<sal_Ucs>(nChar));
- if( nGlyph )
- rUnicodeEnc[ static_cast<sal_Unicode>(nChar) ] = nGlyph;
- }
- nChar = xFCMap->GetNextChar( nChar );
- }
-
- xFCMap = nullptr;
- }
+ SalGraphics::GetGlyphWidths(*aSftTTF.get(), *pFont, bVertical, rWidths, rUnicodeEnc);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 15d4e7330fa23aa1fae5d903b1c3648248769ba4
Author: Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Mon Sep 7 23:56:20 2020 +0200
Commit: Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Sun Sep 13 15:55:40 2020 +0200
VCL register common functions in PhysicalFontFace
This makes GetFontCapabilities and GetFontChatMap members of the
PhysicalFontFace. These are implemented in all the real font face
classes anyway. Also provide dummies for the PDF buildin fonts.
Change-Id: Icb8cb14480ce1e020977b8f69892095d787982ce
diff --git a/vcl/inc/PhysicalFontFace.hxx b/vcl/inc/PhysicalFontFace.hxx
index 23af5be9169e..b6c0be37d99c 100644
--- a/vcl/inc/PhysicalFontFace.hxx
+++ b/vcl/inc/PhysicalFontFace.hxx
@@ -23,6 +23,7 @@
#include <salhelper/simplereferenceobject.hxx>
#include <rtl/ref.hxx>
#include <vcl/dllapi.h>
+#include <vcl/fontcharmap.hxx>
#include "fontattributes.hxx"
@@ -31,6 +32,11 @@ struct FontMatchStatus;
class FontSelectPattern;
class PhysicalFontFamily;
+namespace vcl
+{
+struct FontCapabilities;
+}
+
struct FontMatchStatus
{
public:
@@ -59,6 +65,8 @@ public:
int GetHeight() const { return mnHeight; }
int GetWidth() const { return mnWidth; }
virtual sal_IntPtr GetFontId() const = 0;
+ virtual FontCharMapRef GetFontCharMap() const = 0;
+ virtual bool GetFontCapabilities(vcl::FontCapabilities&) const = 0;
bool IsBetterMatch( const FontSelectPattern&, FontMatchStatus& ) const;
sal_Int32 CompareWithSize( const PhysicalFontFace& ) const;
diff --git a/vcl/inc/qt5/Qt5FontFace.hxx b/vcl/inc/qt5/Qt5FontFace.hxx
index f9853af0f8c9..9c893d4f88c8 100644
--- a/vcl/inc/qt5/Qt5FontFace.hxx
+++ b/vcl/inc/qt5/Qt5FontFace.hxx
@@ -48,8 +48,8 @@ public:
QFont CreateFont() const;
int GetFontTable(const char pTagName[5], unsigned char*) const;
- const FontCharMapRef& GetFontCharMap() const;
- bool GetFontCapabilities(vcl::FontCapabilities& rFontCapabilities) const;
+ FontCharMapRef GetFontCharMap() const override;
+ bool GetFontCapabilities(vcl::FontCapabilities&) const override;
bool HasChar(sal_uInt32 cChar) const;
rtl::Reference<LogicalFontInstance>
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index a5c74c17705c..8058b68378b6 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -67,8 +67,8 @@ public:
int GetFontTable( uint32_t nTagCode, unsigned char* ) const;
int GetFontTable( const char pTagName[5], unsigned char* ) const;
- FontCharMapRef GetFontCharMap() const;
- bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const;
+ FontCharMapRef GetFontCharMap() const override;
+ bool GetFontCapabilities(vcl::FontCapabilities&) const override;
bool HasChar( sal_uInt32 cChar ) const;
rtl::Reference<LogicalFontInstance> CreateFontInstance(const FontSelectPattern&) const override;
diff --git a/vcl/inc/unx/freetype_glyphcache.hxx b/vcl/inc/unx/freetype_glyphcache.hxx
index c375ba2ff5d4..4586c6fd2e6d 100644
--- a/vcl/inc/unx/freetype_glyphcache.hxx
+++ b/vcl/inc/unx/freetype_glyphcache.hxx
@@ -72,7 +72,8 @@ public:
void AnnounceFont( PhysicalFontCollection* );
- const FontCharMapRef& GetFontCharMap();
+ FontCharMapRef GetFontCharMap() const;
+ bool GetFontCapabilities(vcl::FontCapabilities&) const;
private:
friend class FreetypeManager;
@@ -87,7 +88,7 @@ private:
sal_IntPtr mnFontId;
FontAttributes maDevFontAttributes;
- FontCharMapRef mxFontCharMap;
+ mutable FontCharMapRef mxFontCharMap;
};
class FreetypeFontFace : public PhysicalFontFace
@@ -100,8 +101,16 @@ public:
virtual rtl::Reference<LogicalFontInstance> CreateFontInstance( const FontSelectPattern& ) const override;
virtual sal_IntPtr GetFontId() const override { return mpFreetypeFontInfo->GetFontId(); }
+
+ FontCharMapRef GetFontCharMap() const override { return mpFreetypeFontInfo->GetFontCharMap(); }
+ inline bool GetFontCapabilities(vcl::FontCapabilities&) const override;
};
+bool FreetypeFontFace::GetFontCapabilities(vcl::FontCapabilities& rFontCapabilities) const
+{
+ return mpFreetypeFontInfo->GetFontCapabilities(rFontCapabilities);
+}
+
class SAL_DLLPUBLIC_RTTI FreetypeFontInstance : public LogicalFontInstance
{
friend rtl::Reference<LogicalFontInstance> FreetypeFontFace::CreateFontInstance(const FontSelectPattern&) const;
diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h
index 5fe6645e7d2c..bf89853e1a8e 100644
--- a/vcl/inc/win/salgdi.h
+++ b/vcl/inc/win/salgdi.h
@@ -72,8 +72,8 @@ public:
BYTE GetCharSet() const { return meWinCharSet; }
BYTE GetPitchAndFamily() const { return mnPitchAndFamily; }
- FontCharMapRef GetFontCharMap() const;
- bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const;
+ FontCharMapRef GetFontCharMap() const override;
+ bool GetFontCapabilities(vcl::FontCapabilities&) const override;
private:
sal_IntPtr mnId;
diff --git a/vcl/qt5/Qt5FontFace.cxx b/vcl/qt5/Qt5FontFace.cxx
index d02e61955103..ce349099030a 100644
--- a/vcl/qt5/Qt5FontFace.cxx
+++ b/vcl/qt5/Qt5FontFace.cxx
@@ -162,7 +162,7 @@ Qt5FontFace::CreateFontInstance(const FontSelectPattern& rFSD) const
return new Qt5Font(*this, rFSD);
}
-const FontCharMapRef& Qt5FontFace::GetFontCharMap() const
+FontCharMapRef Qt5FontFace::GetFontCharMap() const
{
if (m_xCharMap.is())
return m_xCharMap;
diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx
index c533ad1d599a..1c137f37bfc4 100644
--- a/vcl/qt5/Qt5Graphics_Text.cxx
+++ b/vcl/qt5/Qt5Graphics_Text.cxx
@@ -72,15 +72,14 @@ FontCharMapRef Qt5Graphics::GetFontCharMap() const
{
if (!m_pTextStyle[0])
return FontCharMapRef(new FontCharMap());
- return static_cast<const Qt5FontFace*>(m_pTextStyle[0]->GetFontFace())->GetFontCharMap();
+ return m_pTextStyle[0]->GetFontFace()->GetFontCharMap();
}
bool Qt5Graphics::GetFontCapabilities(vcl::FontCapabilities& rFontCapabilities) const
{
if (!m_pTextStyle[0])
return false;
- return static_cast<const Qt5FontFace*>(m_pTextStyle[0]->GetFontFace())
- ->GetFontCapabilities(rFontCapabilities);
+ return m_pTextStyle[0]->GetFontFace()->GetFontCapabilities(rFontCapabilities);
}
void Qt5Graphics::GetDevFontList(PhysicalFontCollection* pPFC)
diff --git a/vcl/source/gdi/pdfbuildin_fonts.cxx b/vcl/source/gdi/pdfbuildin_fonts.cxx
index 41c208b93b67..bc7bc01004c0 100644
--- a/vcl/source/gdi/pdfbuildin_fonts.cxx
+++ b/vcl/source/gdi/pdfbuildin_fonts.cxx
@@ -43,6 +43,15 @@ OString BuildinFont::getNameObject() const
return aBuf.makeStringAndClear();
}
+FontCharMapRef BuildinFont::GetFontCharMap() const
+{
+ if (m_xFontCharMap.is())
+ return m_xFontCharMap;
+
+ m_xFontCharMap = new FontCharMap();
+ return m_xFontCharMap;
+}
+
FontAttributes BuildinFont::GetFontAttributes() const
{
FontAttributes aDFA;
@@ -103,7 +112,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
600, 600, 600, 600, 600, 600, 600, 600, // 232 - 239
600, 600, 600, 600, 600, 600, 600, 600, // 240 - 247
600, 600, 600, 600, 600, 600, 600, 600 // 248 - 255
- } },
+ },
+ nullptr },
{ "Courier", // family name
"Italic", // style
@@ -149,7 +159,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
600, 600, 600, 600, 600, 600, 600, 600, // 232 - 239
600, 600, 600, 600, 600, 600, 600, 600, // 240 - 247
600, 600, 600, 600, 600, 600, 600, 600 // 248 - 255
- } },
+ },
+ nullptr },
{ "Courier", // family name
"Bold", // style
@@ -195,7 +206,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
600, 600, 600, 600, 600, 600, 600, 600, // 232 - 239
600, 600, 600, 600, 600, 600, 600, 600, // 240 - 247
600, 600, 600, 600, 600, 600, 600, 600 // 248 - 255
- } },
+ },
+ nullptr },
{ "Courier", // family name
"Bold Italic", // style
@@ -241,7 +253,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
600, 600, 600, 600, 600, 600, 600, 600, // 232 - 239
600, 600, 600, 600, 600, 600, 600, 600, // 240 - 247
600, 600, 600, 600, 600, 600, 600, 600 // 248 - 255
- } },
+ },
+ nullptr },
{ "Helvetica", // family name
"Normal", // style
@@ -287,7 +300,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
556, 556, 556, 556, 278, 278, 278, 278, // 232 - 239
556, 556, 556, 556, 556, 556, 556, 584, // 240 - 247
611, 556, 556, 556, 556, 500, 556, 500 // 248 - 255
- } },
+ },
+ nullptr },
{ "Helvetica", // family name
"Italic", // style
@@ -333,7 +347,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
556, 556, 556, 556, 278, 278, 278, 278, // 232 - 239
556, 556, 556, 556, 556, 556, 556, 584, // 240 - 247
611, 556, 556, 556, 556, 500, 556, 500 // 248 - 255
- } },
+ },
+ nullptr },
{ "Helvetica", // family name
"Bold", // style
@@ -379,7 +394,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
556, 556, 556, 556, 278, 278, 278, 278, // 232 - 239
611, 611, 611, 611, 611, 611, 611, 584, // 240 - 247
611, 611, 611, 611, 611, 556, 611, 556 // 248 - 255
- } },
+ },
+ nullptr },
{ "Helvetica", // family name
"Bold Italic", // style
@@ -425,7 +441,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
556, 556, 556, 556, 278, 278, 278, 278, // 232 - 239
611, 611, 611, 611, 611, 611, 611, 584, // 240 - 247
611, 611, 611, 611, 611, 556, 611, 556 // 248 - 255
- } },
+ },
+ nullptr },
{ "Times", // family name
"Normal", // style
@@ -471,7 +488,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
444, 444, 444, 444, 278, 278, 278, 278, // 232 - 239
500, 500, 500, 500, 500, 500, 500, 564, // 240 - 247
500, 500, 500, 500, 500, 500, 500, 500 // 248 - 255
- } },
+ },
+ nullptr },
{ "Times", // family name
"Italic", // style
@@ -517,7 +535,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
444, 444, 444, 444, 278, 278, 278, 278, // 232 - 239
500, 500, 500, 500, 500, 500, 500, 675, // 240 - 247
500, 500, 500, 500, 500, 444, 500, 444 // 248 - 255
- } },
+ },
+ nullptr },
{ "Times", // family name
"Bold", // style
@@ -563,7 +582,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
444, 444, 444, 444, 278, 278, 278, 278, // 232 - 239
500, 556, 500, 500, 500, 500, 500, 570, // 240 - 247
500, 556, 556, 556, 556, 500, 556, 500 // 248 - 255
- } },
+ },
+ nullptr },
{ "Times", // family name
"Bold Italic", // style
@@ -609,7 +629,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
444, 444, 444, 444, 278, 278, 278, 278, // 232 - 239
500, 556, 500, 500, 500, 500, 500, 570, // 240 - 247
500, 556, 556, 556, 556, 444, 500, 444 // 248 - 255
- } },
+ },
+ nullptr },
// The font name "Symbol" is too generic and causes plenty of trouble.
// To ensure WYSIWIG the PDF-Base14 variant gets a not-confusable name
@@ -657,7 +678,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
384, 384, 384, 384, 494, 494, 494, 494, // 232 - 239
0, 329, 274, 686, 686, 686, 384, 384, // 240 - 247
384, 384, 384, 384, 494, 494, 494, 0 // 248 - 255
- } },
+ },
+ nullptr },
{ "ZapfDingbats", // family name
"Normal", // style
@@ -703,7 +725,8 @@ const BuildinFont BuildinFontFace::m_aBuildinFonts[14]
883, 836, 836, 867, 867, 696, 696, 874, // 232 - 239
0, 874, 760, 946, 771, 865, 771, 888, // 240 - 247
967, 888, 831, 873, 927, 970, 918, 0 // 248 - 255
- } }
+ },
+ nullptr }
};
@@ -735,6 +758,6 @@ BuildinFontFace::CreateFontInstance(const FontSelectPattern& rFSP) const
return new BuildinFontInstance(*this, rFSP);
}
-} // namespace vcl
+} // namespace vcl::pdf
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/gdi/pdfbuildin_fonts.hxx b/vcl/source/gdi/pdfbuildin_fonts.hxx
index 8e91cbcb95b4..b7bf17fdb405 100644
--- a/vcl/source/gdi/pdfbuildin_fonts.hxx
+++ b/vcl/source/gdi/pdfbuildin_fonts.hxx
@@ -38,8 +38,10 @@ struct BuildinFont
FontWeight const m_eWeight;
FontItalic const m_eItalic;
int const m_aWidths[256];
+ mutable FontCharMapRef m_xFontCharMap;
OString getNameObject() const;
+ FontCharMapRef GetFontCharMap() const;
FontAttributes GetFontAttributes() const;
};
@@ -55,7 +57,6 @@ public:
class BuildinFontFace final : public PhysicalFontFace
{
-private:
static const BuildinFont m_aBuildinFonts[14];
const BuildinFont& mrBuildin;
@@ -67,6 +68,8 @@ public:
const BuildinFont& GetBuildinFont() const { return mrBuildin; }
sal_IntPtr GetFontId() const override { return reinterpret_cast<sal_IntPtr>(&mrBuildin); }
+ FontCharMapRef GetFontCharMap() const override { return mrBuildin.GetFontCharMap(); }
+ bool GetFontCapabilities(vcl::FontCapabilities&) const override { return false; }
static const BuildinFont& Get(int nId) { return m_aBuildinFonts[nId]; }
};
diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
index 9ddf206572ac..6d8fec490c11 100644
--- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
@@ -670,7 +670,12 @@ FontCharMapRef FreetypeFont::GetFontCharMap() const
return mxFontInfo->GetFontCharMap();
}
-const FontCharMapRef& FreetypeFontInfo::GetFontCharMap()
+bool FreetypeFont::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const
+{
+ return mxFontInfo->GetFontCapabilities(rFontCapabilities);
+}
+
+FontCharMapRef FreetypeFontInfo::GetFontCharMap() const
{
// check if the charmap is already cached
if( mxFontCharMap.is() )
@@ -696,14 +701,14 @@ const FontCharMapRef& FreetypeFontInfo::GetFontCharMap()
return mxFontCharMap;
}
-bool FreetypeFont::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const
+bool FreetypeFontInfo::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const
{
bool bRet = false;
sal_uLong nLength = 0;
// load OS/2 table
- const FT_Byte* pOS2 = mxFontInfo->GetTable("OS/2", &nLength);
+ const FT_Byte* pOS2 = GetTable("OS/2", &nLength);
if (pOS2)
{
bRet = vcl::getTTCoverage(
commit ffcee12bc09dd1bfd713314788061273ca144efd
Author: George Bateman <george.bateman16 at gmail.com>
AuthorDate: Sun Sep 13 12:06:53 2020 +0000
Commit: Julien Nabet <serval2412 at yahoo.fr>
CommitDate: Sun Sep 13 15:36:51 2020 +0200
tdf#124176 Use #pragma once in dbaccess/source/ui
This commit was carried out by a Python script, source of which
is at https://bugs.documentfoundation.org/show_bug.cgi?id=124176#c97.
Change-Id: I7508acd84f2264ba807951d9b933b1ee76560c92
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102552
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>
diff --git a/dbaccess/source/ui/app/AppController.hxx b/dbaccess/source/ui/app/AppController.hxx
index 0fe4dcbca527..cf9306cdb3a2 100644
--- a/dbaccess/source/ui/app/AppController.hxx
+++ b/dbaccess/source/ui/app/AppController.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPCONTROLLER_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPCONTROLLER_HXX
+#pragma once
#include <AppElementType.hxx>
#include <callbacks.hxx>
@@ -538,6 +537,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPCONTROLLER_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/app/AppDetailPageHelper.hxx b/dbaccess/source/ui/app/AppDetailPageHelper.hxx
index ecc5048163bb..6268f713eb43 100644
--- a/dbaccess/source/ui/app/AppDetailPageHelper.hxx
+++ b/dbaccess/source/ui/app/AppDetailPageHelper.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILPAGEHELPER_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILPAGEHELPER_HXX
+#pragma once
#include <vector>
@@ -349,6 +348,5 @@ namespace dbaui
bool _bTable);
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILPAGEHELPER_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/app/AppDetailView.hxx b/dbaccess/source/ui/app/AppDetailView.hxx
index 5a181bd8e433..977bd015be02 100644
--- a/dbaccess/source/ui/app/AppDetailView.hxx
+++ b/dbaccess/source/ui/app/AppDetailView.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILVIEW_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILVIEW_HXX
+#pragma once
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/sdbc/XConnection.hpp>
@@ -315,6 +314,5 @@ namespace dbaui
void impl_fillTaskPaneData( ElementType _eType, TaskPaneData& _rData ) const;
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPDETAILVIEW_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/app/AppIconControl.hxx b/dbaccess/source/ui/app/AppIconControl.hxx
index e3b20b5ab8a9..9e7bf9ee42b0 100644
--- a/dbaccess/source/ui/app/AppIconControl.hxx
+++ b/dbaccess/source/ui/app/AppIconControl.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPICONCONTROL_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPICONCONTROL_HXX
+#pragma once
#include <sfx2/thumbnailview.hxx>
#include <sfx2/thumbnailviewitem.hxx>
@@ -66,6 +65,5 @@ namespace dbaui
sal_Int8 ExecuteDrop(const ExecuteDropEvent& rEvt);
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPICONCONTROL_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/app/AppSwapWindow.hxx b/dbaccess/source/ui/app/AppSwapWindow.hxx
index 9fcd3ba816af..b369564af21b 100644
--- a/dbaccess/source/ui/app/AppSwapWindow.hxx
+++ b/dbaccess/source/ui/app/AppSwapWindow.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPSWAPWINDOW_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPSWAPWINDOW_HXX
+#pragma once
#include <IClipBoardTest.hxx>
#include "AppIconControl.hxx"
@@ -84,6 +83,5 @@ namespace dbaui
bool onContainerSelected( ElementType _eType );
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPSWAPWINDOW_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/app/AppTitleWindow.hxx b/dbaccess/source/ui/app/AppTitleWindow.hxx
index e83a2ecbc815..c00bf99df1cb 100644
--- a/dbaccess/source/ui/app/AppTitleWindow.hxx
+++ b/dbaccess/source/ui/app/AppTitleWindow.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPTITLEWINDOW_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPTITLEWINDOW_HXX
+#pragma once
#include <ChildWindow.hxx>
@@ -63,6 +62,5 @@ namespace dbaui
void setTitle(const char* pTitleId);
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPTITLEWINDOW_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/app/AppView.hxx b/dbaccess/source/ui/app/AppView.hxx
index 5752d1d124d4..4cc68c04ef4a 100644
--- a/dbaccess/source/ui/app/AppView.hxx
+++ b/dbaccess/source/ui/app/AppView.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_APPVIEW_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_APPVIEW_HXX
+#pragma once
#include <dbaccess/dataview.hxx>
#include <com/sun/star/ucb/XContent.hpp>
@@ -300,6 +299,5 @@ namespace dbaui
std::unique_ptr<weld::TreeIter> getEntry(const Point& rPosPixel) const;
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_APPVIEW_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/app/subcomponentmanager.hxx b/dbaccess/source/ui/app/subcomponentmanager.hxx
index a2f56badc8b7..b14e96d68116 100644
--- a/dbaccess/source/ui/app/subcomponentmanager.hxx
+++ b/dbaccess/source/ui/app/subcomponentmanager.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_APP_SUBCOMPONENTMANAGER_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_APP_SUBCOMPONENTMANAGER_HXX
+#pragma once
#include <AppElementType.hxx>
@@ -118,6 +117,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_APP_SUBCOMPONENTMANAGER_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/browser/dbtreemodel.hxx b/dbaccess/source/ui/browser/dbtreemodel.hxx
index 42887fd00e3d..2ea11b900975 100644
--- a/dbaccess/source/ui/browser/dbtreemodel.hxx
+++ b/dbaccess/source/ui/browser/dbtreemodel.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_BROWSER_DBTREEMODEL_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_BROWSER_DBTREEMODEL_HXX
+#pragma once
#include <unodatbr.hxx>
#include <commontypes.hxx>
@@ -55,6 +54,4 @@ namespace dbaui
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_BROWSER_DBTREEMODEL_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/ConnectionHelper.hxx b/dbaccess/source/ui/dlg/ConnectionHelper.hxx
index ed58eac076c1..7129e1f5600b 100644
--- a/dbaccess/source/ui/dlg/ConnectionHelper.hxx
+++ b/dbaccess/source/ui/dlg/ConnectionHelper.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONHELPER_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONHELPER_HXX
+#pragma once
#include "adminpages.hxx"
#include <curledit.hxx>
@@ -101,6 +100,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONHELPER_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/ConnectionPage.hxx b/dbaccess/source/ui/dlg/ConnectionPage.hxx
index 3b514f86677e..19e76946254a 100644
--- a/dbaccess/source/ui/dlg/ConnectionPage.hxx
+++ b/dbaccess/source/ui/dlg/ConnectionPage.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONPAGE_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONPAGE_HXX
+#pragma once
#include "ConnectionHelper.hxx"
@@ -70,6 +69,4 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONPAGE_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/ConnectionPageSetup.hxx b/dbaccess/source/ui/dlg/ConnectionPageSetup.hxx
index f7cfe37ad2d6..b04fb194d36d 100644
--- a/dbaccess/source/ui/dlg/ConnectionPageSetup.hxx
+++ b/dbaccess/source/ui/dlg/ConnectionPageSetup.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONPAGESETUP_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_CONNECTIONPAGESETUP_HXX
+#pragma once
#include "ConnectionHelper.hxx"
#include "adminpages.hxx"
@@ -60,6 +59,4 @@ namespace dbaui
} // namespace dbaui
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx b/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx
index 057e7e584afd..d1974fa731b5 100644
--- a/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx
+++ b/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_DBSETUPCONNECTIONPAGES_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_DBSETUPCONNECTIONPAGES_HXX
+#pragma once
#include "ConnectionPageSetup.hxx"
@@ -268,6 +267,4 @@ namespace dbaui
} // namespace dbaui
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/DbAdminImpl.hxx b/dbaccess/source/ui/dlg/DbAdminImpl.hxx
index c7fbcdc6da20..22a61eceec80 100644
--- a/dbaccess/source/ui/dlg/DbAdminImpl.hxx
+++ b/dbaccess/source/ui/dlg/DbAdminImpl.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_DBADMINIMPL_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_DBADMINIMPL_HXX
+#pragma once
#include <sal/config.h>
@@ -165,6 +164,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_DBADMINIMPL_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/DriverSettings.hxx b/dbaccess/source/ui/dlg/DriverSettings.hxx
index 3fc4e9792653..be488c3bd1e3 100644
--- a/dbaccess/source/ui/dlg/DriverSettings.hxx
+++ b/dbaccess/source/ui/dlg/DriverSettings.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_DRIVERSETTINGS_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_DRIVERSETTINGS_HXX
+#pragma once
#include <sfx2/tabdlg.hxx>
@@ -77,6 +76,4 @@ namespace dbaui
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_DRIVERSETTINGS_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/TextConnectionHelper.hxx b/dbaccess/source/ui/dlg/TextConnectionHelper.hxx
index e002c77e8ba8..459260960e40 100644
--- a/dbaccess/source/ui/dlg/TextConnectionHelper.hxx
+++ b/dbaccess/source/ui/dlg/TextConnectionHelper.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_TEXTCONNECTIONHELPER_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_TEXTCONNECTIONHELPER_HXX
+#pragma once
#include "adminpages.hxx"
#include <charsetlistbox.hxx>
@@ -87,6 +86,4 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_TEXTCONNECTIONHELPER_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/UserAdmin.hxx b/dbaccess/source/ui/dlg/UserAdmin.hxx
index 09098e30a428..e9c2a13e7876 100644
--- a/dbaccess/source/ui/dlg/UserAdmin.hxx
+++ b/dbaccess/source/ui/dlg/UserAdmin.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_USERADMIN_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_USERADMIN_HXX
+#pragma once
#include <TableGrantCtrl.hxx>
#include "adminpages.hxx"
@@ -71,6 +70,5 @@ public:
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_USERADMIN_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/admincontrols.hxx b/dbaccess/source/ui/dlg/admincontrols.hxx
index 219f93f0e6dd..0f691cc51460 100644
--- a/dbaccess/source/ui/dlg/admincontrols.hxx
+++ b/dbaccess/source/ui/dlg/admincontrols.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_ADMINCONTROLS_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_ADMINCONTROLS_HXX
+#pragma once
#include "adminpages.hxx"
@@ -63,6 +62,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_ADMINCONTROLS_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/adminpages.hxx b/dbaccess/source/ui/dlg/adminpages.hxx
index 7948aec48816..e42ef6359525 100644
--- a/dbaccess/source/ui/dlg/adminpages.hxx
+++ b/dbaccess/source/ui/dlg/adminpages.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_ADMINPAGES_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_ADMINPAGES_HXX
+#pragma once
#include <sfx2/tabdlg.hxx>
#include <vcl/wizardmachine.hxx>
@@ -231,6 +230,4 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_ADMINPAGES_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/adodatalinks.hxx b/dbaccess/source/ui/dlg/adodatalinks.hxx
index d13203ad89eb..3cbbd18c3b6c 100644
--- a/dbaccess/source/ui/dlg/adodatalinks.hxx
+++ b/dbaccess/source/ui/dlg/adodatalinks.hxx
@@ -17,11 +17,9 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_ADODATALINKS_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_ADODATALINKS_HXX
+#pragma once
#include <rtl/ustring.hxx>
OUString getAdoDatalink(long hWnd, OUString const& oldLink);
-#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/advancedsettings.hxx b/dbaccess/source/ui/dlg/advancedsettings.hxx
index 80edec0d4a68..181ccbb84faf 100644
--- a/dbaccess/source/ui/dlg/advancedsettings.hxx
+++ b/dbaccess/source/ui/dlg/advancedsettings.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_ADVANCEDSETTINGS_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_ADVANCEDSETTINGS_HXX
+#pragma once
#include "adminpages.hxx"
#include <dsmeta.hxx>
@@ -114,6 +113,4 @@ namespace dbaui
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_ADVANCEDSETTINGS_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/dbfindex.hxx b/dbaccess/source/ui/dlg/dbfindex.hxx
index d0c23a416a5f..0349b6c58b75 100644
--- a/dbaccess/source/ui/dlg/dbfindex.hxx
+++ b/dbaccess/source/ui/dlg/dbfindex.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_DBFINDEX_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_DBFINDEX_HXX
+#pragma once
#include <vcl/weld.hxx>
#include <deque>
@@ -108,6 +107,4 @@ public:
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_DBFINDEX_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/detailpages.hxx b/dbaccess/source/ui/dlg/detailpages.hxx
index ff82ce06dbc5..07ea1bb1ab88 100644
--- a/dbaccess/source/ui/dlg/detailpages.hxx
+++ b/dbaccess/source/ui/dlg/detailpages.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_DETAILPAGES_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_DETAILPAGES_HXX
+#pragma once
#include "adminpages.hxx"
#include <charsetlistbox.hxx>
@@ -250,6 +249,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_DETAILPAGES_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/dsnItem.hxx b/dbaccess/source/ui/dlg/dsnItem.hxx
index 41103f8de4b8..4ae414881e57 100644
--- a/dbaccess/source/ui/dlg/dsnItem.hxx
+++ b/dbaccess/source/ui/dlg/dsnItem.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_DSNITEM_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_DSNITEM_HXX
+#pragma once
#include <svl/poolitem.hxx>
@@ -46,6 +45,4 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_DSNITEM_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/dsselect.hxx b/dbaccess/source/ui/dlg/dsselect.hxx
index f365eaf007ca..70aedf2e4d31 100644
--- a/dbaccess/source/ui/dlg/dsselect.hxx
+++ b/dbaccess/source/ui/dlg/dsselect.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_DSSELECT_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_DSSELECT_HXX
+#pragma once
#include <rtl/ustring.hxx>
#include <vcl/weld.hxx>
@@ -64,6 +63,4 @@ private:
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_DSSELECT_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/finteraction.hxx b/dbaccess/source/ui/dlg/finteraction.hxx
index fdc70b7fc49c..a487392a5958 100644
--- a/dbaccess/source/ui/dlg/finteraction.hxx
+++ b/dbaccess/source/ui/dlg/finteraction.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_FINTERACTION_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_FINTERACTION_HXX
+#pragma once
#include <cppuhelper/implbase.hxx>
#include <com/sun/star/task/XInteractionHandler.hpp>
@@ -52,6 +51,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_FINTERACTION_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/generalpage.hxx b/dbaccess/source/ui/dlg/generalpage.hxx
index e8af35387728..a5f854260fbf 100644
--- a/dbaccess/source/ui/dlg/generalpage.hxx
+++ b/dbaccess/source/ui/dlg/generalpage.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_GENERALPAGE_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_GENERALPAGE_HXX
+#pragma once
#include "adminpages.hxx"
#include <opendoccontrols.hxx>
@@ -183,6 +182,5 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_GENERALPAGE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/odbcconfig.hxx b/dbaccess/source/ui/dlg/odbcconfig.hxx
index 0b4a78452033..16177ad8a810 100644
--- a/dbaccess/source/ui/dlg/odbcconfig.hxx
+++ b/dbaccess/source/ui/dlg/odbcconfig.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_ODBCCONFIG_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_ODBCCONFIG_HXX
+#pragma once
#if defined(_WIN32) || (defined (UNX) && !defined(ANDROID) && !defined(IOS))
#define HAVE_ODBC_SUPPORT
@@ -104,6 +103,4 @@ public:
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_ODBCCONFIG_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/optionalboolitem.hxx b/dbaccess/source/ui/dlg/optionalboolitem.hxx
index 25aef5ceca3f..c500dfa2ac60 100644
--- a/dbaccess/source/ui/dlg/optionalboolitem.hxx
+++ b/dbaccess/source/ui/dlg/optionalboolitem.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_OPTIONALBOOLITEM_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_OPTIONALBOOLITEM_HXX
+#pragma once
#include <svl/poolitem.hxx>
@@ -49,6 +48,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_OPTIONALBOOLITEM_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/tablespage.hxx b/dbaccess/source/ui/dlg/tablespage.hxx
index de749eaeb806..483518b2ad40 100644
--- a/dbaccess/source/ui/dlg/tablespage.hxx
+++ b/dbaccess/source/ui/dlg/tablespage.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_DLG_TABLESPAGE_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_DLG_TABLESPAGE_HXX
+#pragma once
#include "adminpages.hxx"
#include <tabletree.hxx>
@@ -79,6 +78,4 @@ namespace dbaui
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_DLG_TABLESPAGE_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/AppElementType.hxx b/dbaccess/source/ui/inc/AppElementType.hxx
index bcc0d3052fc2..59105cf225f7 100644
--- a/dbaccess/source/ui/inc/AppElementType.hxx
+++ b/dbaccess/source/ui/inc/AppElementType.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_APPELEMENTTYPE_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_INC_APPELEMENTTYPE_HXX
+#pragma once
#include <com/sun/star/sdb/application/DatabaseObject.hpp>
@@ -50,6 +49,5 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_INC_APPELEMENTTYPE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/CollectionView.hxx b/dbaccess/source/ui/inc/CollectionView.hxx
index 7d693329fefc..c80e98f5e858 100644
--- a/dbaccess/source/ui/inc/CollectionView.hxx
+++ b/dbaccess/source/ui/inc/CollectionView.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_COLLECTIONVIEW_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_INC_COLLECTIONVIEW_HXX
+#pragma once
#include <vcl/weld.hxx>
#include <com/sun/star/ucb/XContent.hpp>
@@ -63,6 +62,4 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_INC_COLLECTIONVIEW_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/ColumnControlWindow.hxx b/dbaccess/source/ui/inc/ColumnControlWindow.hxx
index 587c47564cef..e896b3dda808 100644
--- a/dbaccess/source/ui/inc/ColumnControlWindow.hxx
+++ b/dbaccess/source/ui/inc/ColumnControlWindow.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_COLUMNCONTROLWINDOW_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_INC_COLUMNCONTROLWINDOW_HXX
+#pragma once
#include "FieldDescControl.hxx"
#include "TypeInfo.hxx"
@@ -79,6 +78,5 @@ namespace dbaui
};
} // namespace dbaui
-#endif // INCLUDED_DBACCESS_SOURCE_UI_INC_COLUMNCONTROLWINDOW_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/ConnectionLine.hxx b/dbaccess/source/ui/inc/ConnectionLine.hxx
index 89dd1dff21e0..954c7e02d3a3 100644
--- a/dbaccess/source/ui/inc/ConnectionLine.hxx
+++ b/dbaccess/source/ui/inc/ConnectionLine.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINE_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINE_HXX
+#pragma once
#include <tools/gen.hxx>
#include "ConnectionLineData.hxx"
@@ -68,6 +67,5 @@ namespace dbaui
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/ConnectionLineAccess.hxx b/dbaccess/source/ui/inc/ConnectionLineAccess.hxx
index 4365e7134053..83c01baadb1f 100644
--- a/dbaccess/source/ui/inc/ConnectionLineAccess.hxx
+++ b/dbaccess/source/ui/inc/ConnectionLineAccess.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINEACCESS_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINEACCESS_HXX
+#pragma once
#include "TableConnection.hxx"
#include <com/sun/star/accessibility/XAccessibleRelationSet.hpp>
@@ -88,6 +87,5 @@ namespace dbaui
virtual css::accessibility::AccessibleRelation SAL_CALL getRelationByType( sal_Int16 aRelationType ) override;
};
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINEACCESS_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/ConnectionLineData.hxx b/dbaccess/source/ui/inc/ConnectionLineData.hxx
index 4a3f16c86c77..10ad0bfddfd9 100644
--- a/dbaccess/source/ui/inc/ConnectionLineData.hxx
+++ b/dbaccess/source/ui/inc/ConnectionLineData.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINEDATA_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINEDATA_HXX
+#pragma once
#include "QEnumTypes.hxx"
#include <vector>
@@ -77,6 +76,5 @@ namespace dbaui
typedef ::rtl::Reference< OConnectionLineData > OConnectionLineDataRef;
typedef std::vector< OConnectionLineDataRef > OConnectionLineDataVec;
}
-#endif // INCLUDED_DBACCESS_SOURCE_UI_INC_CONNECTIONLINEDATA_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/DExport.hxx b/dbaccess/source/ui/inc/DExport.hxx
index fca471a84265..3e2804a654e0 100644
--- a/dbaccess/source/ui/inc/DExport.hxx
+++ b/dbaccess/source/ui/inc/DExport.hxx
@@ -16,8 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_DEXPORT_HXX
-#define INCLUDED_DBACCESS_SOURCE_UI_INC_DEXPORT_HXX
+#pragma once
#include <sal/config.h>
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list