Move fontconfig to kicommon for now to de-duplicate the font cache
This commit is contained in:
parent
c006482feb
commit
050f812f5e
|
@ -32,7 +32,6 @@ CMakeCache.txt
|
||||||
.cache/
|
.cache/
|
||||||
auto_renamed_to_cpp
|
auto_renamed_to_cpp
|
||||||
Testing
|
Testing
|
||||||
version.h
|
|
||||||
config.h
|
config.h
|
||||||
install_manifest.txt
|
install_manifest.txt
|
||||||
doxygen/out
|
doxygen/out
|
||||||
|
|
|
@ -68,6 +68,8 @@ add_library( singletop STATIC EXCLUDE_FROM_ALL
|
||||||
set( KICOMMON_SRCS
|
set( KICOMMON_SRCS
|
||||||
# Fonts
|
# Fonts
|
||||||
newstroke_font.cpp
|
newstroke_font.cpp
|
||||||
|
font/fontconfig.cpp
|
||||||
|
font/version_info.cpp
|
||||||
# Gal
|
# Gal
|
||||||
gal/color4d.cpp
|
gal/color4d.cpp
|
||||||
# Jobs
|
# Jobs
|
||||||
|
@ -124,6 +126,11 @@ target_link_libraries( kicommon
|
||||||
|
|
||||||
# needed by kiid to allow linking for Boost for the UUID against bcrypt (msys2 only)
|
# needed by kiid to allow linking for Boost for the UUID against bcrypt (msys2 only)
|
||||||
${EXTRA_LIBS}
|
${EXTRA_LIBS}
|
||||||
|
|
||||||
|
# outline font support
|
||||||
|
${FREETYPE_LIBRARIES}
|
||||||
|
${HarfBuzz_LIBRARIES}
|
||||||
|
${Fontconfig_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
include( ${KICAD_CMAKE_MODULE_PATH}/KiCadVersion.cmake )
|
include( ${KICAD_CMAKE_MODULE_PATH}/KiCadVersion.cmake )
|
||||||
|
@ -373,7 +380,6 @@ set( FONT_SRCS
|
||||||
font/stroke_font.cpp
|
font/stroke_font.cpp
|
||||||
font/outline_font.cpp
|
font/outline_font.cpp
|
||||||
font/outline_decomposer.cpp
|
font/outline_decomposer.cpp
|
||||||
font/fontconfig.cpp
|
|
||||||
font/text_attributes.cpp
|
font/text_attributes.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <boost/version.hpp>
|
#include <boost/version.hpp>
|
||||||
#include <kiplatform/app.h>
|
#include <kiplatform/app.h>
|
||||||
#include <font/outline_font.h>
|
#include <font/version_info.h>
|
||||||
|
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
|
@ -147,9 +147,9 @@ wxString GetVersionInfoData( const wxString& aTitle, bool aHtml, bool aBrief )
|
||||||
|
|
||||||
aMsg << indent4 << wxGetLibraryVersionInfo().GetVersionString() << eol;
|
aMsg << indent4 << wxGetLibraryVersionInfo().GetVersionString() << eol;
|
||||||
|
|
||||||
aMsg << indent4 << "FreeType " << KIFONT::OUTLINE_FONT::FreeTypeVersion() << eol;
|
aMsg << indent4 << "FreeType " << KIFONT::VERSION_INFO::FreeType() << eol;
|
||||||
aMsg << indent4 << "HarfBuzz " << KIFONT::OUTLINE_FONT::HarfBuzzVersion() << eol;
|
aMsg << indent4 << "HarfBuzz " << KIFONT::VERSION_INFO::HarfBuzz() << eol;
|
||||||
aMsg << indent4 << "FontConfig " << KIFONT::OUTLINE_FONT::FontConfigVersion() << eol;
|
aMsg << indent4 << "FontConfig " << KIFONT::VERSION_INFO::FontConfig() << eol;
|
||||||
|
|
||||||
if( !aBrief )
|
if( !aBrief )
|
||||||
aMsg << indent4 << GetKicadCurlVersion() << eol;
|
aMsg << indent4 << GetKicadCurlVersion() << eol;
|
||||||
|
|
|
@ -55,40 +55,6 @@ OUTLINE_FONT::OUTLINE_FONT() :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wxString OUTLINE_FONT::FreeTypeVersion()
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> guard( m_freeTypeMutex );
|
|
||||||
|
|
||||||
if( !m_freeType )
|
|
||||||
FT_Init_FreeType( &m_freeType );
|
|
||||||
|
|
||||||
FT_Int major = 0;
|
|
||||||
FT_Int minor = 0;
|
|
||||||
FT_Int patch = 0;
|
|
||||||
FT_Library_Version( m_freeType, &major, &minor, &patch );
|
|
||||||
|
|
||||||
return wxString::Format( "%d.%d.%d", major, minor, patch );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
wxString OUTLINE_FONT::HarfBuzzVersion()
|
|
||||||
{
|
|
||||||
return wxString::FromUTF8( HB_VERSION_STRING );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
wxString OUTLINE_FONT::FontConfigVersion()
|
|
||||||
{
|
|
||||||
return fontconfig::FONTCONFIG::Version();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
wxString OUTLINE_FONT::FontLibraryVersion()
|
|
||||||
{
|
|
||||||
return wxString::Format( "FreeType %s HarfBuzz %s", FreeTypeVersion(), HarfBuzzVersion() );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
OUTLINE_FONT* OUTLINE_FONT::LoadFont( const wxString& aFontName, bool aBold, bool aItalic )
|
OUTLINE_FONT* OUTLINE_FONT::LoadFont( const wxString& aFontName, bool aBold, bool aItalic )
|
||||||
{
|
{
|
||||||
std::unique_ptr<OUTLINE_FONT> font = std::make_unique<OUTLINE_FONT>();
|
std::unique_ptr<OUTLINE_FONT> font = std::make_unique<OUTLINE_FONT>();
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2021 Ola Rinta-Koski <gitlab@rinta-koski.net>
|
||||||
|
* Copyright (C) 2021-2023 Kicad Developers, see AUTHORS.txt for contributors.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, you may find one here:
|
||||||
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||||
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||||
|
* or you may write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <font/version_info.h>
|
||||||
|
#include <font/fontconfig.h>
|
||||||
|
#include <harfbuzz/hb.h>
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include <ft2build.h>
|
||||||
|
#else
|
||||||
|
#include <freetype2/ft2build.h>
|
||||||
|
#endif
|
||||||
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
|
using namespace KIFONT;
|
||||||
|
|
||||||
|
wxString VERSION_INFO::FreeType()
|
||||||
|
{
|
||||||
|
FT_Library library;
|
||||||
|
|
||||||
|
FT_Int major = 0;
|
||||||
|
FT_Int minor = 0;
|
||||||
|
FT_Int patch = 0;
|
||||||
|
FT_Init_FreeType( &library );
|
||||||
|
FT_Library_Version( library, &major, &minor, &patch );
|
||||||
|
FT_Done_FreeType( library );
|
||||||
|
|
||||||
|
return wxString::Format( "%d.%d.%d", major, minor, patch );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString VERSION_INFO::HarfBuzz()
|
||||||
|
{
|
||||||
|
return wxString::FromUTF8( HB_VERSION_STRING );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString VERSION_INFO::FontConfig()
|
||||||
|
{
|
||||||
|
return fontconfig::FONTCONFIG::Version();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString VERSION_INFO::FontLibrary()
|
||||||
|
{
|
||||||
|
return wxString::Format( "FreeType %s HarfBuzz %s", FreeType(), HarfBuzz() );
|
||||||
|
}
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include <fontconfig/fontconfig.h>
|
#include <fontconfig/fontconfig.h>
|
||||||
|
|
||||||
|
#include <kicommon.h>
|
||||||
#include <wx/string.h>
|
#include <wx/string.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
@ -34,7 +35,7 @@ namespace fontconfig
|
||||||
|
|
||||||
struct FONTCONFIG_PAT;
|
struct FONTCONFIG_PAT;
|
||||||
|
|
||||||
class FONTCONFIG
|
class KICOMMON_API FONTCONFIG
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FONTCONFIG();
|
FONTCONFIG();
|
||||||
|
@ -114,7 +115,7 @@ private:
|
||||||
} // namespace fontconfig
|
} // namespace fontconfig
|
||||||
|
|
||||||
|
|
||||||
fontconfig::FONTCONFIG* Fontconfig();
|
KICOMMON_API fontconfig::FONTCONFIG* Fontconfig();
|
||||||
|
|
||||||
|
|
||||||
#endif //KICAD_FONTCONFIG_H
|
#endif //KICAD_FONTCONFIG_H
|
||||||
|
|
|
@ -52,14 +52,6 @@ class OUTLINE_FONT : public FONT
|
||||||
public:
|
public:
|
||||||
OUTLINE_FONT();
|
OUTLINE_FONT();
|
||||||
|
|
||||||
static wxString FontConfigVersion();
|
|
||||||
|
|
||||||
static wxString FreeTypeVersion();
|
|
||||||
|
|
||||||
static wxString HarfBuzzVersion();
|
|
||||||
|
|
||||||
static wxString FontLibraryVersion();
|
|
||||||
|
|
||||||
bool IsOutline() const override { return true; }
|
bool IsOutline() const override { return true; }
|
||||||
|
|
||||||
bool IsBold() const override
|
bool IsBold() const override
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2021 Ola Rinta-Koski
|
||||||
|
* Copyright (C) 2021-2023 Kicad Developers, see AUTHORS.txt for contributors.
|
||||||
|
*
|
||||||
|
* Outline font class
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, you may find one here:
|
||||||
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||||
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||||
|
* or you may write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VERSION_INFO_H_
|
||||||
|
#define VERSION_INFO_H_
|
||||||
|
|
||||||
|
#include <kicommon.h>
|
||||||
|
#include <mutex>
|
||||||
|
#include <wx/string.h>
|
||||||
|
|
||||||
|
namespace KIFONT
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Container for library version helpers.
|
||||||
|
*/
|
||||||
|
class KICOMMON_API VERSION_INFO
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static wxString FontConfig();
|
||||||
|
|
||||||
|
static wxString FreeType();
|
||||||
|
|
||||||
|
static wxString HarfBuzz();
|
||||||
|
|
||||||
|
static wxString FontLibrary();
|
||||||
|
|
||||||
|
private:
|
||||||
|
// we are a static helper
|
||||||
|
VERSION_INFO() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
} //namespace KIFONT
|
||||||
|
|
||||||
|
#endif // VERSION_INFO_H_
|
Loading…
Reference in New Issue