summaryrefslogtreecommitdiff
path: root/vcl/inc/fontinstance.hxx
diff options
context:
space:
mode:
authorChris Sherlock <chris.sherlock79@gmail.com>2016-01-08 21:04:23 +1100
committerChris Sherlock <chris.sherlock79@gmail.com>2016-01-08 23:43:50 +0000
commitad241f51fe6ae4f5dc37050cf3bea65fc4163084 (patch)
tree7cca06f686ac7254c63e6c12c5bc31be445ff02c /vcl/inc/fontinstance.hxx
parent47bac0de19fc4ca2c9d469b64fcbffe15bc4a0a3 (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.hxx69
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: */