summaryrefslogtreecommitdiff
path: root/vcl/unx/source/gdi/xlfd_extd.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/source/gdi/xlfd_extd.hxx')
-rw-r--r--vcl/unx/source/gdi/xlfd_extd.hxx272
1 files changed, 272 insertions, 0 deletions
diff --git a/vcl/unx/source/gdi/xlfd_extd.hxx b/vcl/unx/source/gdi/xlfd_extd.hxx
new file mode 100644
index 000000000000..523f87fac477
--- /dev/null
+++ b/vcl/unx/source/gdi/xlfd_extd.hxx
@@ -0,0 +1,272 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef XLFD_EXTENDED_HXX
+#define XLFD_EXTENDED_HXX
+
+#include <salunx.h>
+#ifndef _VCL_VCLENUM_HXX
+#include <vcl/enum.hxx>
+#endif
+#ifndef _VCL_OUTFONT_HXX
+#include <vcl/outfont.hxx>
+#endif
+
+#include <vector>
+
+class Xlfd;
+class AttributeProvider;
+class ImplDevFontList;
+class ByteString;
+
+// --------------------------------------------------------------------------
+//
+// classes for Xlfd handling that contain more than a single encoding.
+// Members that may vary through different encodings are stored in
+// a mpEncodingInfo member. There are three different classes:
+// true scalable fonts (truetype and type1) scalable bitmap fonts
+// (the ugly ones) and bitmap fonts. The ExtendedXlfd stores all the members
+// that are specific to a font outline
+// ( e.g. adobe-times-roman-medium-r-normal- * -p- * )
+// and specifies the interface.
+//
+// --------------------------------------------------------------------------
+
+// base class
+
+class ExtendedXlfd : public ImplDevFontAttributes
+{
+ public:
+ ExtendedXlfd( bool bScalable );
+ virtual ~ExtendedXlfd();
+ virtual bool AddEncoding( const Xlfd* );
+ bool HasEncoding( rtl_TextEncoding ) const;
+ int GetEncodingIdx( rtl_TextEncoding nEncoding ) const;
+ unsigned short NumEncodings() const
+ { return mnEncodings; }
+ virtual int GetPixelSize() const
+ { return 0; }
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ rtl_TextEncoding nEncoding ) const ;
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ char* pMatricsString,
+ rtl_TextEncoding nEncoding ) const;
+
+ virtual ImplFontData* GetImplFontData() const = 0;
+ bool IsScalable() const { return mbScalable; }
+ virtual FontFamily GetFamilyType() const;
+ virtual FontWeight GetWeight() const;
+ virtual FontItalic GetSlant() const;
+ virtual FontWidth GetWidthType() const;
+ virtual FontPitch GetPitch() const;
+ virtual FontPitch GetPitch( rtl_TextEncoding ) const;
+ rtl_TextEncoding GetAsciiEncoding( int *pAsciiRange = NULL ) const;
+ rtl_TextEncoding GetEncoding() const;
+ rtl_TextEncoding GetEncoding( int i ) const;
+
+ int GetFontCodeRanges( sal_uInt32* pCodePairs ) const;
+
+ protected:
+ AttributeProvider* mpFactory;
+
+ public:
+ unsigned short mnFoundry;
+ unsigned short mnFamily;
+ unsigned short mnWeight;
+ unsigned short mnSlant;
+ unsigned short mnSetwidth;
+ bool mbScalable;
+
+ protected:
+ unsigned short mnEncodings;
+ unsigned short mnEncCapacity;
+ struct EncodingInfo {
+ unsigned char mcSpacing;
+ unsigned short mnResolutionX;
+ unsigned short mnResolutionY;
+ unsigned short mnAddstyle;
+ unsigned short mnCharset;
+ rtl_TextEncoding mnEncoding;
+
+ EncodingInfo& operator= ( const Xlfd *pXlfd );
+ } *mpEncodingInfo;
+};
+
+// class to handle scalable bitmap fonts
+
+class ScalableBitmapXlfd : public ExtendedXlfd {
+
+ public:
+ ScalableBitmapXlfd();
+ virtual ~ScalableBitmapXlfd();
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ rtl_TextEncoding nEncoding ) const;
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ char* pMatricsString,
+ rtl_TextEncoding nEncoding ) const;
+
+ virtual ImplFontData* GetImplFontData() const ;
+};
+
+// class to handle true bitmap fonts
+
+class ScalableXlfd;
+
+class BitmapXlfd : public ExtendedXlfd {
+
+ public:
+ BitmapXlfd();
+ ~BitmapXlfd();
+ bool AddEncoding( const Xlfd* );
+ virtual int GetPixelSize() const
+ { return mnPixelSize; }
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ rtl_TextEncoding nEncoding ) const;
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ char* pMatricsString,
+ rtl_TextEncoding nEncoding ) const;
+ virtual ImplFontData* GetImplFontData() const ;
+ protected:
+
+ unsigned short mnPixelSize;
+ unsigned short mnPointSize;
+ unsigned short mnAverageWidth;
+};
+
+// class to handle true scalable fonts
+
+class ScalableXlfd : public ExtendedXlfd {
+
+ friend class BitmapXlfd;
+
+ public:
+ ScalableXlfd();
+ virtual ~ScalableXlfd();
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ rtl_TextEncoding nEncoding ) const;
+
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ char* pMatricsString,
+ rtl_TextEncoding nEncoding ) const;
+ virtual ImplFontData* GetImplFontData() const ;
+};
+
+// class to maintain a list of fonts ( bitmap and scalable )
+
+class XlfdStorage {
+
+ public:
+ XlfdStorage();
+
+ void Dispose();
+ void Reset();
+
+ void Add( const ExtendedXlfd *pXlfd );
+ void Add( const XlfdStorage *pXlfd );
+ void AnnounceFonts( ImplDevFontList* ) const;
+
+ protected:
+
+ typedef ::std::vector<const ExtendedXlfd*> XlfdList;
+ XlfdList maXlfdList;
+};
+
+// list of fonts specific for bitmap fonts
+
+class BitmapXlfdStorage : public XlfdStorage {
+
+ public:
+
+ void AddBitmapFont( const Xlfd *pXlfd );
+};
+
+
+/* Virtual font for User Interface */
+
+class VirtualXlfd : public ExtendedXlfd
+{
+ private:
+
+ int GetFontQuality (unsigned short nFamily);
+
+ public:
+ VirtualXlfd();
+ virtual ~VirtualXlfd();
+ virtual bool AddEncoding( const Xlfd* );
+ void FilterInterfaceFont (const Xlfd *pXlfd);
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ rtl_TextEncoding nEncoding ) const ;
+ virtual void ToString( ByteString &rString,
+ unsigned short nPixelSize,
+ char* pMatricsString,
+ rtl_TextEncoding nEncoding ) const;
+
+ virtual ImplFontData* GetImplFontData() const ;
+ protected:
+
+ unsigned short mnExtCapacity;
+ struct ExtEncodingInfo {
+ unsigned short mnFoundry;
+ unsigned short mnFamily;
+ unsigned short mnWeight;
+ unsigned short mnSlant;
+ unsigned short mnSetwidth;
+
+ ExtEncodingInfo& operator= ( const Xlfd *pXlfd );
+ } *mpExtEncodingInfo;
+
+ friend class ExtEncodingInfo;
+};
+
+
+// class to describe a X11 physically available font face
+
+class ImplX11FontData : public ImplFontData
+{
+private:
+ enum { X11IFD_MAGIC = 0x111FDA1C };
+ const ExtendedXlfd& mrXlfd;
+
+public:
+ ImplX11FontData( const ExtendedXlfd&, int nHeight );
+ const ExtendedXlfd& GetExtendedXlfd() const { return mrXlfd; }
+ virtual ImplFontData* Clone() const { return new ImplX11FontData( *this ); }
+ virtual ImplFontEntry* CreateFontInstance( ImplFontSelectData& ) const;
+ virtual sal_IntPtr GetFontId() const;
+
+ static bool CheckFontData( const ImplFontData& r ) { return r.CheckMagic( X11IFD_MAGIC ); }
+};
+
+#endif /* XLFD_EXTENDED_HXX */