diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2016-01-08 21:04:23 +1100 |
---|---|---|
committer | Chris Sherlock <chris.sherlock79@gmail.com> | 2016-01-08 23:43:50 +0000 |
commit | ad241f51fe6ae4f5dc37050cf3bea65fc4163084 (patch) | |
tree | 7cca06f686ac7254c63e6c12c5bc31be445ff02c /vcl/inc/fontinstance.hxx | |
parent | 47bac0de19fc4ca2c9d469b64fcbffe15bc4a0a3 (diff) |
vcl: change ImplFontEntry to LogicalFontInstance
There is a TODO in the code that suggests to do this, when I looked at the
collaboration diagram on Doxygen things made a LOT more sense.
Change-Id: If335498bb70872ffa5738cc5c17660faec84c35e
Reviewed-on: https://gerrit.libreoffice.org/21257
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
Diffstat (limited to 'vcl/inc/fontinstance.hxx')
-rw-r--r-- | vcl/inc/fontinstance.hxx | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vcl/inc/fontinstance.hxx b/vcl/inc/fontinstance.hxx new file mode 100644 index 000000000000..01f4c5900f75 --- /dev/null +++ b/vcl/inc/fontinstance.hxx @@ -0,0 +1,69 @@ +/* -*- 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_INC_FONTENTRY_HXX +#define INCLUDED_VCL_INC_FONTENTRY_HXX + +#include <sal/types.h> +#include <vcl/dllapi.h> + +#include "fontselect.hxx" +#include "fontattributes.hxx" + +#include <unordered_map> + +class ImplFontCache; +class ConvertChar; + +// TODO: allow sharing of metrics for related fonts + +class VCL_PLUGIN_PUBLIC LogicalFontInstance +{ +public: + explicit LogicalFontInstance( const FontSelectPattern& ); + virtual ~LogicalFontInstance(); + +public: // TODO: make data members private + ImplFontCache * m_pFontCache; + FontSelectPattern maFontSelData; // FontSelectionData + ImplFontAttributes maFontAttributes; // Font attributes + const ConvertChar* mpConversion; // used e.g. for StarBats->StarSymbol + + long mnLineHeight; + sal_uLong mnRefCount; + sal_uInt16 mnSetFontFlags; // Flags returned by SalGraphics::SetFont() + short mnOwnOrientation; // text angle if lower layers don't rotate text themselves + short mnOrientation; // text angle in 3600 system + bool mbInit; // true if maFontAttributes member is valid + + void AddFallbackForUnicode( sal_UCS4, FontWeight eWeight, const OUString& rFontName ); + bool GetFallbackForUnicode( sal_UCS4, FontWeight eWeight, OUString* pFontName ) const; + void IgnoreFallbackForUnicode( sal_UCS4, FontWeight eWeight, const OUString& rFontName ); + +private: + // cache of Unicode characters and replacement font names + // TODO: a fallback map can be shared with many other ImplFontEntries + // TODO: at least the ones which just differ in orientation, stretching or height + typedef ::std::unordered_map< ::std::pair<sal_UCS4,FontWeight>, OUString > UnicodeFallbackList; + UnicodeFallbackList* mpUnicodeFallbackList; +}; + +#endif // INCLUDED_VCL_INC_FONTENTRY_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |