///////////////////////////////////////////////////////////////////////////////
|
// Copyright (C) 2002-2016, Open Design Alliance (the "Alliance").
|
// All rights reserved.
|
//
|
// This software and its documentation and related materials are owned by
|
// the Alliance. The software may only be incorporated into application
|
// programs owned by members of the Alliance, subject to a signed
|
// Membership Agreement and Supplemental Software License Agreement with the
|
// Alliance. The structure and organization of this software are the valuable
|
// trade secrets of the Alliance and its suppliers. The software is also
|
// protected by copyright law and international treaty provisions. Application
|
// programs incorporating this software must include the following statement
|
// with their copyright notices:
|
//
|
// This application incorporates Teigha(R) software pursuant to a license
|
// agreement with Open Design Alliance.
|
// Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance.
|
// All rights reserved.
|
//
|
// By use of this software, its documentation or related materials, you
|
// acknowledge and accept the above terms.
|
///////////////////////////////////////////////////////////////////////////////
|
|
#ifndef _OdTtfDescriptor_h_Included_
|
#define _OdTtfDescriptor_h_Included_
|
|
#include "TD_PackPush.h"
|
|
#include "Gi/Gi.h"
|
#include "OdString.h"
|
|
/** \details
|
This class implements TrueType Descriptor objects which provide an interface to
|
the characteristics of a TrueType font.
|
|
<group Other_Classes>
|
*/
|
class FIRSTDLL_EXPORT OdTtfDescriptor
|
{
|
// Members
|
|
OdUInt32 m_nFlags;
|
OdString m_sFontFile;
|
OdString m_Typeface;
|
|
public:
|
// Constructor
|
|
OdTtfDescriptor() : m_nFlags(0)
|
{
|
}
|
|
/** \param typeface [in] Typeface.
|
\param bold [in] True if and only if a bold font.
|
\param italic [in] True if and only if an italic font.
|
\param charset [in] Character set.
|
\param pitchAndFamily [in] Pitch and Family.
|
|
\remarks
|
The two low-order bits of pitchAndFamily specify the pitch of the font.
|
Bits 4 through 7 of pitchAndFamily specify the font family.
|
|
*/
|
OdTtfDescriptor(const OdString& typeface, bool bold, bool italic, int charset, int pitchAndFamily)
|
: m_Typeface(typeface),m_nFlags(0)
|
{
|
setTtfFlags(bold, italic, charset, pitchAndFamily);
|
}
|
|
// Accessors /transformers
|
|
/** \details
|
Returns the filename of this TtfDescriptor object.
|
*/
|
const OdString &fileName() const { return m_sFontFile; }
|
|
/** \details
|
Returns the typeface of this TtfDescriptor object.
|
*/
|
const OdString &typeface() const { return m_Typeface; }
|
|
OdUInt32 getTtfFlags() const { return m_nFlags; }
|
|
/** \details
|
Clears the filename of this TtfDescriptor object.
|
*/
|
void clearFileName()
|
{
|
m_sFontFile.empty();
|
}
|
/** \details
|
Clears the typeface of this TtfDescriptor object.
|
*/
|
void clearTypeface()
|
{
|
m_Typeface.empty();
|
}
|
/** \details
|
Adds the specified typeface to this TtfDescriptor object.
|
*/
|
void addTypeface(OdChar typeface)
|
{
|
m_Typeface += typeface;
|
}
|
|
/** \details
|
Returns the flags of this TtfDescriptor object.
|
\param typeface [out] Receives the full name of the font.
|
\param bold [out] Receives true if and only if this is a bold font.
|
\param italic [out] Receives true if and only if this is an italic font.
|
\param charset [out] Receives the character set.
|
\param pitchAndFamily [out] Receives the Pitch and Family.
|
|
\remarks
|
The two low-order bits of pitchAndFamily specify the pitch of the font.
|
Bits 4 through 7 of pitchAndFamily specify the font family.
|
*/
|
void getTtfFlags(bool& bold, bool& italic, int& charset, int& pitchAndFamily) const
|
{
|
bold = isBold();
|
italic = isItalic();
|
charset = charSet();
|
pitchAndFamily = this->pitchAndFamily();
|
}
|
|
/** \details
|
Sets the filename of this TtfDescriptor object.
|
\param filename [in] Filename.
|
*/
|
void setFileName(const OdString& filename) { m_sFontFile = filename; }
|
/** \details
|
Sets the typeface of this TtfDescriptor object.
|
\param typeface [in] Typeface.
|
*/
|
void setTypeFace(const OdString& typeface) { m_Typeface = typeface; }
|
/** \details
|
Sets the flags of this TtfDescriptor object.
|
\param flags [in] Flags.
|
|
*/
|
void setTtfFlags(OdUInt32 flags) { m_nFlags = flags; }
|
/** \param bold [in] True if and only if a bold font.
|
\param italic [in] True if and only if an italic font.
|
\param charset [in] Character set.
|
\param pitchAndFamily [in] Pitch and Family.
|
|
\remarks
|
The two low-order bits of pitchAndFamily specify the pitch of the font.
|
Bits 4 through 7 of pitchAndFamily specify the font family.
|
*/
|
void setTtfFlags(bool bold, bool italic, int charset, int pitchAndFamily)
|
{
|
setBold(bold);
|
setItalic(italic);
|
setCharSet(charset);
|
setPitchAndFamily(pitchAndFamily);
|
}
|
|
/** \details
|
Sets the bold flag of this TtfDescriptor object.
|
\param bold [in] True if and only if a bold font.
|
*/
|
void setBold(bool bold) { SETBIT(m_nFlags, 0x02000000, bold); }
|
/** \details
|
Sets the italic flag of this TtfDescriptor object.
|
\param italic [in] True if and only if an italic font.
|
*/
|
void setItalic(bool italic) { SETBIT(m_nFlags, 0x01000000, italic); }
|
/** \details
|
Sets the character set of this TtfDescriptor object.
|
\param charset [in] Character set.
|
*/
|
void setCharSet(int charset) { m_nFlags = ((m_nFlags & 0xFFFF00FF) | ((charset << 8) & 0x0000FF00)); }
|
/** \details
|
Sets the pitch and family of this TtfDescriptor object.
|
\param pitchAndFamily [in] Pitch and Family.
|
|
\remarks
|
The two low-order bits of pitchAndFamily specify the pitch of the font.
|
Bits 4 through 7 of pitchAndFamily specify the font family.
|
*/
|
void setPitchAndFamily(int pitchAndFamily) { m_nFlags = ((m_nFlags & 0xFFFFFF00) | (pitchAndFamily & 0x000000FF)); }
|
|
/** \details
|
Returns true if and only if this TtfDescriptor is a bold font.
|
*/
|
bool isBold() const { return GETBIT(m_nFlags, 0x02000000); }
|
/** \details
|
Returns true if and only if this TtfDescriptor is an italic font.
|
*/
|
bool isItalic() const { return GETBIT(m_nFlags, 0x01000000); }
|
/** \details
|
Returns the character set for this TtfDescriptor object.
|
*/
|
OdUInt16 charSet() const { return OdUInt16((m_nFlags & 0x0000ff00) >> 8); }
|
/** \details
|
Returns the pitch and family of this TtfDescriptor object.
|
|
\remarks
|
The two low-order bits of pitchAndFamily specify the pitch of the font.
|
Bits 4 through 7 of pitchAndFamily specify the font family.
|
*/
|
int pitchAndFamily() const { return (m_nFlags & 0x000000ff); }
|
|
/** \details
|
Returns the pitch of this TtfDescriptor object.
|
*/
|
int getPitch() const { return (pitchAndFamily() & 0x00000003); }
|
/** \details
|
Returns the family of this TtfDescriptor object.
|
*/
|
int getFamily() const { return (pitchAndFamily() & 0x000000f0); }
|
};
|
|
#include "TD_PackPop.h"
|
|
#endif // _OdTtfDescriptor_h_Included_
|