mirror of
https://github.com/mcneel/opennurbs.git
synced 2026-03-05 14:39:41 +08:00
182 lines
5.1 KiB
C++
182 lines
5.1 KiB
C++
//
|
|
// Copyright (c) 1993-2015 Robert McNeel & Associates. All rights reserved.
|
|
// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
|
|
// McNeel & Associates.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
|
|
// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
|
|
// MERCHANTABILITY ARE HEREBY DISCLAIMED.
|
|
//
|
|
// For complete openNURBS copyright information see <http://www.opennurbs.org>.
|
|
//
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#if !defined(OPENNURBS_TEXT_STYLE_INC_)
|
|
#define OPENNURBS_TEXT_STYLE_INC_
|
|
|
|
|
|
class ON_CLASS ON_TextStyle : public ON_ModelComponent
|
|
{
|
|
ON_OBJECT_DECLARE(ON_TextStyle);
|
|
|
|
public:
|
|
static const ON_TextStyle Unset; // All values not set
|
|
static const ON_TextStyle Default; // index = -1, font set
|
|
static const ON_TextStyle ByLayer; // index = -2, no font
|
|
static const ON_TextStyle ByParent; // index = -3, no font
|
|
|
|
/*
|
|
Parameters:
|
|
model_component_reference - [in]
|
|
none_return_value - [in]
|
|
value to return if ON_TextStyle::Cast(model_component_ref.ModelComponent())
|
|
is nullptr
|
|
Returns:
|
|
If ON_TextStyle::Cast(model_component_ref.ModelComponent()) is not nullptr,
|
|
that pointer is returned. Otherwise, none_return_value is returned.
|
|
*/
|
|
static const ON_TextStyle* FromModelComponentRef(
|
|
const class ON_ModelComponentReference& model_component_reference,
|
|
const ON_TextStyle* none_return_value
|
|
);
|
|
|
|
ON_TextStyle();
|
|
~ON_TextStyle() = default;
|
|
ON_TextStyle(const ON_TextStyle&);
|
|
ON_TextStyle& operator=(const ON_TextStyle&);
|
|
|
|
private:
|
|
void Internal_Copy(
|
|
const ON_TextStyle& src
|
|
);
|
|
|
|
public:
|
|
/*
|
|
Returns:
|
|
The managed font for this text style.
|
|
Returns ON_Font::Default if the font is not set.
|
|
*/
|
|
const ON_Font& Font() const;
|
|
|
|
const ON_wString& FontDescription() const;
|
|
|
|
const wchar_t* FontDescriptionAsPointer() const;
|
|
|
|
const ON_wString& AppleFontName() const;
|
|
|
|
const wchar_t* AppleFontNameAsPointer() const;
|
|
|
|
/*
|
|
Parameters:
|
|
font_characteristics - [in]
|
|
*/
|
|
void SetFont(
|
|
const ON_Font* font_characteristics
|
|
);
|
|
void SetFont(
|
|
const ON_Font& font_characteristics
|
|
);
|
|
|
|
/*
|
|
Parameters:
|
|
font_description - [in]
|
|
If font_description is an empty string, then SetFont( alternate_font )
|
|
is called.
|
|
alternate_font - [in]
|
|
Font to use if the current runtime environment does not have a
|
|
font with a matching font description.
|
|
When alternate_font is nullptr, ON_Font::Default will be used as
|
|
the alternate font.
|
|
*/
|
|
void SetFontFromDescription(
|
|
const wchar_t* font_description,
|
|
const wchar_t* apple_font_name,
|
|
const ON_Font* alternate_font
|
|
);
|
|
|
|
void ClearFont();
|
|
|
|
bool FontIsSet() const;
|
|
|
|
void LockFont();
|
|
bool FontIsLocked() const;
|
|
|
|
/*
|
|
Description:
|
|
Get a string with the text style name and font description.
|
|
Parameters:
|
|
sSeparator - [in]
|
|
string that separates the text style name and the font description.
|
|
For example, if sSeparator = " - ", then
|
|
name_and_font_description = "<text style name> - <font description>".
|
|
name_and_font_description - [out]
|
|
Returns:
|
|
A pointer to the string in name_and_font_description. This pointer is never
|
|
nullptr.
|
|
*/
|
|
const wchar_t* GetNameAndFontDescription(
|
|
const wchar_t* sSeparator,
|
|
ON_wString& name_and_font_description
|
|
) const;
|
|
|
|
static bool EqualTextStyleFontAndName(
|
|
const ON_TextStyle& a,
|
|
const ON_TextStyle& b
|
|
);
|
|
|
|
private:
|
|
// V5 files had a single string used for different purposes
|
|
// on Windows and Apple platforms. These two strings are runtime
|
|
// information.
|
|
ON_wString m_font_description;
|
|
|
|
ON_wString m_apple_font_name;
|
|
|
|
// m_managed_font points to a managed ON_Font and is the font returned by Font().
|
|
const ON_Font* m_managed_font = nullptr;
|
|
|
|
enum : unsigned char {
|
|
font_bit = 1
|
|
};
|
|
|
|
unsigned char m_is_set_bits = 0;
|
|
unsigned char m_is_locked_bits = 0;
|
|
|
|
unsigned char m_reserved1 = 0;
|
|
unsigned int m_reserved2 = 0;
|
|
ON__UINT_PTR m_reserved_ptr_1 = 0;
|
|
ON__UINT_PTR m_reserved_ptr_2 = 0;
|
|
double m_reserved_double_0 = 0.0;
|
|
double m_reserved_double_1 = 0.0;
|
|
|
|
public:
|
|
// overrides virtual ON_Object::IsValid
|
|
bool IsValid( class ON_TextLog* text_log = nullptr ) const override;
|
|
|
|
// overrides virtual ON_Object::IsValid
|
|
void Dump( ON_TextLog& ) const override;
|
|
|
|
// On September 16, 2015 the "V5" ON_Font was split into
|
|
// ON_TextStyle (a document object) and
|
|
// ON_Font (a current runtime resource)
|
|
// = ON_VersionNumberConstruct(6, 0, 2015, 9, 16, 0)
|
|
// Versions of opennurbs before binary_archive_opennurbs_version
|
|
// serialized ON_TextStyle information in the V5 ON_Font format.
|
|
static const unsigned int binary_archive_opennurbs_version;
|
|
|
|
// overrides virtual ON_Object::Write
|
|
bool Write( ON_BinaryArchive& ) const override;
|
|
|
|
// overrides virtual ON_Object::Read
|
|
bool Read( ON_BinaryArchive& ) override;
|
|
|
|
};
|
|
|
|
#if defined(ON_DLL_TEMPLATE)
|
|
ON_DLL_TEMPLATE template class ON_CLASS ON_SimpleArray<ON_TextStyle*>;
|
|
ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_TextStyle>;
|
|
#endif
|
|
|
|
#endif
|