vcl: split classes out of metric.hxx
Change-Id: Id3b155abec7b7a2ff43d0a35e98709f5ee51c6b9 Reviewed-on: https://gerrit.libreoffice.org/21069 Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com> Tested-by: Chris Sherlock <chris.sherlock79@gmail.com>
This commit is contained in:
parent
f4dc8a869a
commit
21f152a523
@ -31,6 +31,7 @@
|
||||
#include <vcl/msgbox.hxx>
|
||||
#include <vcl/settings.hxx>
|
||||
#include <vcl/builderfactory.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <svl/stritem.hxx>
|
||||
|
||||
#include <cuires.hrc>
|
||||
|
169
include/vcl/fontcharmap.hxx
Normal file
169
include/vcl/fontcharmap.hxx
Normal file
@ -0,0 +1,169 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* 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_FONTCHARMAP_METRIC_HXX
|
||||
#define INCLUDED_FONTCHARMAP_METRIC_HXX
|
||||
|
||||
#include <vcl/dllapi.h>
|
||||
#include <vcl/font.hxx>
|
||||
#include <vcl/outdev.hxx>
|
||||
|
||||
#include <boost/intrusive_ptr.hpp>
|
||||
|
||||
class ImplFontCharMap;
|
||||
class CmapResult;
|
||||
|
||||
typedef sal_uInt32 sal_UCS4;
|
||||
typedef boost::intrusive_ptr< ImplFontCharMap > ImplFontCharMapPtr;
|
||||
typedef boost::intrusive_ptr< FontCharMap > FontCharMapPtr;
|
||||
|
||||
class VCL_DLLPUBLIC FontCharMap
|
||||
{
|
||||
public:
|
||||
/** A new FontCharMap is created based on a "default" map, which includes
|
||||
all codepoints in the Unicode BMP range, including surrogates.
|
||||
**/
|
||||
FontCharMap();
|
||||
FontCharMap( const CmapResult& rCR );
|
||||
~FontCharMap();
|
||||
|
||||
/** Get the default font character map
|
||||
|
||||
@returns the default font character map.
|
||||
*/
|
||||
static FontCharMapPtr GetDefaultMap( bool bSymbols=false );
|
||||
|
||||
/** Determines if the font character map is the "default". The default map
|
||||
includes all codepoints in the Unicode BMP range, including surrogates.
|
||||
|
||||
@returns true if default map, false if not default map.
|
||||
*/
|
||||
bool IsDefaultMap() const;
|
||||
|
||||
/** Does the font character map include the UCS4 character?
|
||||
|
||||
@returns true if character exists in font character map, false is not.
|
||||
*/
|
||||
bool HasChar( sal_UCS4 ) const;
|
||||
|
||||
/** Returns the number of chars supported by the font, which
|
||||
are inside the unicode range from cMin to cMax (inclusive).
|
||||
|
||||
@param cMin Lowest codepoint in range to be counted
|
||||
@param cMax Highest codepoitn in range to be counted
|
||||
|
||||
@returns number of characters in the font charmap between the two
|
||||
codepoints.
|
||||
*/
|
||||
int CountCharsInRange( sal_UCS4 cMin, sal_UCS4 cMax ) const;
|
||||
|
||||
/** Get the number of characters in the font character map.
|
||||
|
||||
@returns number of characters in the font character map.
|
||||
*/
|
||||
int GetCharCount() const;
|
||||
|
||||
/** Get the first character in the font character map.
|
||||
|
||||
@returns first character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetFirstChar() const;
|
||||
|
||||
/** Get the last character in the font character map.
|
||||
|
||||
@returns last character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetLastChar() const;
|
||||
|
||||
/** Get the next character in the font character map. This is important
|
||||
because character maps (e.g. the default map which holds the characters
|
||||
in the BMP plane) can have discontiguous ranges.
|
||||
|
||||
@param cChar Character from which to find next character
|
||||
|
||||
@returns next character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetNextChar( sal_UCS4 cChar ) const;
|
||||
|
||||
/** Get the previous character in the font character map. This is important
|
||||
because character maps (e.g. the default map which holds the characters
|
||||
in the BMP plane) can have discontiguous ranges.
|
||||
|
||||
@param cChar Character from which to find previous character
|
||||
|
||||
@returns previous character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetPrevChar( sal_UCS4 cChar ) const;
|
||||
|
||||
/** Get the index of a particular character in the font character map. The
|
||||
index is different from the codepoint, because font character maps can
|
||||
|
||||
determine the index.
|
||||
|
||||
@param cChar Character used to find index number
|
||||
|
||||
@returns Index of character in font character map.
|
||||
*/
|
||||
int GetIndexFromChar( sal_UCS4 cChar ) const;
|
||||
|
||||
/** Get the character at a particular index in the font character map. The
|
||||
index is different from the codepoint, because font character maps can
|
||||
|
||||
determine the character.
|
||||
|
||||
@param nCharIndex Index used to find the character
|
||||
|
||||
@returns Character in font character map.
|
||||
*/
|
||||
sal_UCS4 GetCharFromIndex( int nCharIndex ) const;
|
||||
|
||||
int GetGlyphIndex( sal_UCS4 ) const;
|
||||
|
||||
private:
|
||||
ImplFontCharMapPtr mpImplFontCharMap;
|
||||
|
||||
friend class ::OutputDevice;
|
||||
friend void intrusive_ptr_release(FontCharMap* pFontCharMap);
|
||||
friend void intrusive_ptr_add_ref(FontCharMap* pFontCharMap);
|
||||
|
||||
int findRangeIndex( sal_uInt32 ) const;
|
||||
|
||||
FontCharMap( ImplFontCharMapPtr pIFCMap );
|
||||
|
||||
sal_uInt32 mnRefCount;
|
||||
|
||||
// prevent assignment and copy construction
|
||||
FontCharMap( const FontCharMap& ) = delete;
|
||||
void operator=( const FontCharMap& ) = delete;
|
||||
};
|
||||
|
||||
inline void intrusive_ptr_add_ref(FontCharMap* pFontCharMap)
|
||||
{
|
||||
++pFontCharMap->mnRefCount;
|
||||
}
|
||||
|
||||
inline void intrusive_ptr_release(FontCharMap* pFontCharMap)
|
||||
{
|
||||
if (--pFontCharMap->mnRefCount == 0)
|
||||
delete pFontCharMap;
|
||||
}
|
||||
|
||||
#endif // INCLUDED_FONTCHARMAP_METRIC_HXX
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@ -80,167 +80,6 @@ inline std::basic_ostream<charT, traits> & operator <<(
|
||||
return stream;
|
||||
}
|
||||
|
||||
class VCL_DLLPUBLIC FontCharMap
|
||||
{
|
||||
public:
|
||||
/** A new FontCharMap is created based on a "default" map, which includes
|
||||
all codepoints in the Unicode BMP range, including surrogates.
|
||||
**/
|
||||
FontCharMap();
|
||||
FontCharMap( const CmapResult& rCR );
|
||||
~FontCharMap();
|
||||
|
||||
/** Get the default font character map
|
||||
|
||||
@returns the default font character map.
|
||||
*/
|
||||
static FontCharMapPtr GetDefaultMap( bool bSymbols=false );
|
||||
|
||||
/** Determines if the font character map is the "default". The default map
|
||||
includes all codepoints in the Unicode BMP range, including surrogates.
|
||||
|
||||
@returns true if default map, false if not default map.
|
||||
*/
|
||||
bool IsDefaultMap() const;
|
||||
|
||||
/** Does the font character map include the UCS4 character?
|
||||
|
||||
@returns true if character exists in font character map, false is not.
|
||||
*/
|
||||
bool HasChar( sal_UCS4 ) const;
|
||||
|
||||
/** Returns the number of chars supported by the font, which
|
||||
are inside the unicode range from cMin to cMax (inclusive).
|
||||
|
||||
@param cMin Lowest codepoint in range to be counted
|
||||
@param cMax Highest codepoitn in range to be counted
|
||||
|
||||
@returns number of characters in the font charmap between the two
|
||||
codepoints.
|
||||
*/
|
||||
int CountCharsInRange( sal_UCS4 cMin, sal_UCS4 cMax ) const;
|
||||
|
||||
/** Get the number of characters in the font character map.
|
||||
|
||||
@returns number of characters in the font character map.
|
||||
*/
|
||||
int GetCharCount() const;
|
||||
|
||||
/** Get the first character in the font character map.
|
||||
|
||||
@returns first character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetFirstChar() const;
|
||||
|
||||
/** Get the last character in the font character map.
|
||||
|
||||
@returns last character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetLastChar() const;
|
||||
|
||||
/** Get the next character in the font character map. This is important
|
||||
because character maps (e.g. the default map which holds the characters
|
||||
in the BMP plane) can have discontiguous ranges.
|
||||
|
||||
@param cChar Character from which to find next character
|
||||
|
||||
@returns next character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetNextChar( sal_UCS4 cChar ) const;
|
||||
|
||||
/** Get the previous character in the font character map. This is important
|
||||
because character maps (e.g. the default map which holds the characters
|
||||
in the BMP plane) can have discontiguous ranges.
|
||||
|
||||
@param cChar Character from which to find previous character
|
||||
|
||||
@returns previous character in the font character map.
|
||||
*/
|
||||
sal_UCS4 GetPrevChar( sal_UCS4 cChar ) const;
|
||||
|
||||
/** Get the index of a particular character in the font character map. The
|
||||
index is different from the codepoint, because font character maps can
|
||||
|
||||
determine the index.
|
||||
|
||||
@param cChar Character used to find index number
|
||||
|
||||
@returns Index of character in font character map.
|
||||
*/
|
||||
int GetIndexFromChar( sal_UCS4 cChar ) const;
|
||||
|
||||
/** Get the character at a particular index in the font character map. The
|
||||
index is different from the codepoint, because font character maps can
|
||||
|
||||
determine the character.
|
||||
|
||||
@param nCharIndex Index used to find the character
|
||||
|
||||
@returns Character in font character map.
|
||||
*/
|
||||
sal_UCS4 GetCharFromIndex( int nCharIndex ) const;
|
||||
|
||||
int GetGlyphIndex( sal_UCS4 ) const;
|
||||
|
||||
private:
|
||||
ImplFontCharMapPtr mpImplFontCharMap;
|
||||
|
||||
friend class ::OutputDevice;
|
||||
friend void intrusive_ptr_release(FontCharMap* pFontCharMap);
|
||||
friend void intrusive_ptr_add_ref(FontCharMap* pFontCharMap);
|
||||
|
||||
int findRangeIndex( sal_uInt32 ) const;
|
||||
|
||||
FontCharMap( ImplFontCharMapPtr pIFCMap );
|
||||
|
||||
sal_uInt32 mnRefCount;
|
||||
|
||||
// prevent assignment and copy construction
|
||||
FontCharMap( const FontCharMap& ) = delete;
|
||||
void operator=( const FontCharMap& ) = delete;
|
||||
};
|
||||
|
||||
inline void intrusive_ptr_add_ref(FontCharMap* pFontCharMap)
|
||||
{
|
||||
++pFontCharMap->mnRefCount;
|
||||
}
|
||||
|
||||
inline void intrusive_ptr_release(FontCharMap* pFontCharMap)
|
||||
{
|
||||
if (--pFontCharMap->mnRefCount == 0)
|
||||
delete pFontCharMap;
|
||||
}
|
||||
|
||||
class VCL_DLLPUBLIC TextRectInfo
|
||||
{
|
||||
friend class ::OutputDevice;
|
||||
|
||||
private:
|
||||
long mnMaxWidth;
|
||||
sal_uInt16 mnLineCount;
|
||||
bool mbEllipsis;
|
||||
|
||||
public:
|
||||
TextRectInfo();
|
||||
|
||||
long GetMaxLineWidth() const { return mnMaxWidth; }
|
||||
bool IsEllipses() const { return mbEllipsis; }
|
||||
|
||||
bool operator ==( const TextRectInfo& rInfo ) const
|
||||
{ return ((mnMaxWidth == rInfo.mnMaxWidth) &&
|
||||
(mnLineCount == rInfo.mnLineCount) &&
|
||||
(mbEllipsis == rInfo.mbEllipsis)); }
|
||||
bool operator !=( const TextRectInfo& rInfo ) const
|
||||
{ return !(TextRectInfo::operator==( rInfo )); }
|
||||
};
|
||||
|
||||
inline TextRectInfo::TextRectInfo()
|
||||
{
|
||||
mnMaxWidth = 0;
|
||||
mnLineCount = 0;
|
||||
mbEllipsis = false;
|
||||
}
|
||||
|
||||
#endif // INCLUDED_VCL_METRIC_HXX
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
57
include/vcl/textrectinfo.hxx
Normal file
57
include/vcl/textrectinfo.hxx
Normal file
@ -0,0 +1,57 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* 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_VCL_TEXTRECTINFO_HXX
|
||||
#define INCLUDED_VCL_TEXTRECTINFO_HXX
|
||||
|
||||
#include <vcl/outdev.hxx>
|
||||
|
||||
class VCL_DLLPUBLIC TextRectInfo
|
||||
{
|
||||
friend class ::OutputDevice;
|
||||
|
||||
private:
|
||||
long mnMaxWidth;
|
||||
sal_uInt16 mnLineCount;
|
||||
bool mbEllipsis;
|
||||
|
||||
public:
|
||||
TextRectInfo();
|
||||
|
||||
long GetMaxLineWidth() const { return mnMaxWidth; }
|
||||
bool IsEllipses() const { return mbEllipsis; }
|
||||
|
||||
bool operator ==( const TextRectInfo& rInfo ) const
|
||||
{ return ((mnMaxWidth == rInfo.mnMaxWidth) &&
|
||||
(mnLineCount == rInfo.mnLineCount) &&
|
||||
(mbEllipsis == rInfo.mbEllipsis)); }
|
||||
bool operator !=( const TextRectInfo& rInfo ) const
|
||||
{ return !(TextRectInfo::operator==( rInfo )); }
|
||||
};
|
||||
|
||||
inline TextRectInfo::TextRectInfo()
|
||||
{
|
||||
mnMaxWidth = 0;
|
||||
mnLineCount = 0;
|
||||
mbEllipsis = false;
|
||||
}
|
||||
|
||||
#endif // INCLUDED_VCL_TEXTRECTINFO_HXX
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@ -43,6 +43,7 @@
|
||||
#include <editeng/flstitem.hxx>
|
||||
#include <editeng/justifyitem.hxx>
|
||||
#include <sal/macros.h>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include "document.hxx"
|
||||
#include "docpool.hxx"
|
||||
#include "attrib.hxx"
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include <vcl/waitobj.hxx>
|
||||
#include <vcl/settings.hxx>
|
||||
#include <vcl/wall.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <sfx2/dispatch.hxx>
|
||||
#include <sfx2/sfx.hrc>
|
||||
#include <osl/diagnose.h>
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <vcl/outdev.hxx>
|
||||
#include <vcl/virdev.hxx>
|
||||
#include <vcl/metric.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <i18nutil/unicode.hxx>
|
||||
|
||||
// This should only be used when a commonly used font incorrectly declares its
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/settings.hxx>
|
||||
#include <vcl/builderfactory.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <svtools/colorcfg.hxx>
|
||||
|
||||
#include <rtl/textenc.h>
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "vcl/strhelper.hxx"
|
||||
#include "vcl/ppdparser.hxx"
|
||||
#include <vcl/embeddedfontshelper.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
#include "tools/urlobj.hxx"
|
||||
#include "tools/stream.hxx"
|
||||
|
@ -17,6 +17,9 @@
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
#include "gcach_ftyp.hxx"
|
||||
|
||||
#include "vcl/svapp.hxx"
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include <vcl/settings.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/sysdata.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <config_cairo_canvas.h>
|
||||
|
||||
#include "fontsubset.hxx"
|
||||
|
@ -18,6 +18,7 @@
|
||||
*/
|
||||
|
||||
#include <sal/types.h>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <basegfx/range/b2ibox.hxx>
|
||||
#include "headless/svpgdi.hxx"
|
||||
#include <config_cairo_canvas.h>
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "PhysicalFontFace.hxx"
|
||||
#include "impfont.hxx"
|
||||
#include <vcl/fontcapabilities.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_set>
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include <osl/file.hxx>
|
||||
#include <osl/process.h>
|
||||
|
||||
#include <vcl/metric.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
class VclFontCharMapTest : public test::BootstrapFixture
|
||||
{
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include <rtl/strbuf.hxx>
|
||||
|
||||
#include <vcl/metric.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/sysdata.hxx>
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include <basegfx/polygon/b2dpolygon.hxx>
|
||||
#include <basegfx/polygon/b2dpolypolygon.hxx>
|
||||
#include <memory>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
// MS Windows defines
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
#include <vcl/metric.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
#include <outfont.hxx>
|
||||
#include <impfont.hxx>
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include <vcl/edit.hxx>
|
||||
#include <vcl/settings.hxx>
|
||||
#include <vcl/sysdata.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
#include "sallayout.hxx"
|
||||
#include "svdata.hxx"
|
||||
|
@ -32,6 +32,7 @@
|
||||
|
||||
#include <comphelper/processfactory.hxx>
|
||||
|
||||
#include <vcl/textrectinfo.hxx>
|
||||
#include <vcl/outdev.hxx>
|
||||
#include <vcl/virdev.hxx>
|
||||
#include <vcl/bmpacc.hxx>
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <brdwin.hxx>
|
||||
#include <window.h>
|
||||
|
||||
#include <vcl/textrectinfo.hxx>
|
||||
#include <vcl/event.hxx>
|
||||
#include <vcl/decoview.hxx>
|
||||
#include <vcl/syswin.hxx>
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <brdwin.hxx>
|
||||
#include <window.h>
|
||||
|
||||
#include <vcl/textrectinfo.hxx>
|
||||
#include <vcl/metric.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/wrkwin.hxx>
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <vcl/settings.hxx>
|
||||
#include <vcl/sysdata.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
#include "generic/printergfx.hxx"
|
||||
#include "generic/genpspgraphics.h"
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include <vcl/printerinfomanager.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/metric.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
#include "fontmanager.hxx"
|
||||
#include "impfont.hxx"
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include <vcl/settings.hxx>
|
||||
#include <vcl/sysdata.hxx>
|
||||
#include <vcl/metric.hxx>
|
||||
#include <vcl/fontcharmap.hxx>
|
||||
|
||||
#include "fontsubset.hxx"
|
||||
#include "outdev.h"
|
||||
|
Loading…
x
Reference in New Issue
Block a user