Add support for stricken-through fonts.
Support stricken-through fonts in wxMSW and wxGTK (including special support in wxStaticText and wxTextCtrl). Closes #9907. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70446 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -227,6 +227,7 @@ public:
|
||||
virtual wxFontStyle GetStyle() const = 0;
|
||||
virtual wxFontWeight GetWeight() const = 0;
|
||||
virtual bool GetUnderlined() const = 0;
|
||||
virtual bool GetStrikethrough() const { return false; }
|
||||
virtual wxString GetFaceName() const = 0;
|
||||
virtual wxFontEncoding GetEncoding() const = 0;
|
||||
virtual const wxNativeFontInfo *GetNativeFontInfo() const = 0;
|
||||
@@ -244,6 +245,7 @@ public:
|
||||
virtual void SetWeight( wxFontWeight weight ) = 0;
|
||||
|
||||
virtual void SetUnderlined( bool underlined ) = 0;
|
||||
virtual void SetStrikethrough( bool WXUNUSED(strikethrough) ) {}
|
||||
virtual void SetEncoding(wxFontEncoding encoding) = 0;
|
||||
virtual bool SetFaceName( const wxString& faceName );
|
||||
void SetNativeFontInfo(const wxNativeFontInfo& info)
|
||||
@@ -356,6 +358,7 @@ WXDLLIMPEXP_CORE bool wxFromString(const wxString& str, wxFontBase* font);
|
||||
wxFont& MakeBold(); \
|
||||
wxFont& MakeItalic(); \
|
||||
wxFont& MakeUnderlined(); \
|
||||
wxFont& MakeStrikethrough(); \
|
||||
wxFont& MakeLarger() { return Scale(1.2f); } \
|
||||
wxFont& MakeSmaller() { return Scale(1/1.2f); } \
|
||||
wxFont& Scale(float x); \
|
||||
@@ -363,6 +366,7 @@ WXDLLIMPEXP_CORE bool wxFromString(const wxString& str, wxFontBase* font);
|
||||
wxFont Bold() const; \
|
||||
wxFont Italic() const; \
|
||||
wxFont Underlined() const; \
|
||||
wxFont Strikethrough() const; \
|
||||
wxFont Larger() const { return Scaled(1.2f); } \
|
||||
wxFont Smaller() const { return Scaled(1/1.2f); } \
|
||||
wxFont Scaled(float x) const
|
||||
|
@@ -172,6 +172,7 @@ public:
|
||||
wxFontStyle m_style;
|
||||
wxFontWeight m_weight;
|
||||
bool m_underlined;
|
||||
bool m_strikethrough;
|
||||
wxString m_faceName;
|
||||
wxFontEncoding m_encoding;
|
||||
public :
|
||||
@@ -187,6 +188,7 @@ public :
|
||||
wxFontStyle style;
|
||||
wxFontWeight weight;
|
||||
bool underlined;
|
||||
bool strikethrough;
|
||||
wxString faceName;
|
||||
wxFontEncoding encoding;
|
||||
#endif // platforms
|
||||
@@ -224,6 +226,7 @@ public:
|
||||
SetStyle((wxFontStyle)font.GetStyle());
|
||||
SetWeight((wxFontWeight)font.GetWeight());
|
||||
SetUnderlined(font.GetUnderlined());
|
||||
SetStrikethrough(font.GetStrikethrough());
|
||||
#if defined(__WXMSW__)
|
||||
if ( font.IsUsingSizeInPixels() )
|
||||
SetPixelSize(font.GetPixelSize());
|
||||
@@ -252,6 +255,7 @@ public:
|
||||
wxFontStyle GetStyle() const;
|
||||
wxFontWeight GetWeight() const;
|
||||
bool GetUnderlined() const;
|
||||
bool GetStrikethrough() const;
|
||||
wxString GetFaceName() const;
|
||||
wxFontFamily GetFamily() const;
|
||||
wxFontEncoding GetEncoding() const;
|
||||
@@ -261,6 +265,7 @@ public:
|
||||
void SetStyle(wxFontStyle style);
|
||||
void SetWeight(wxFontWeight weight);
|
||||
void SetUnderlined(bool underlined);
|
||||
void SetStrikethrough(bool strikethrough);
|
||||
bool SetFaceName(const wxString& facename);
|
||||
void SetFamily(wxFontFamily family);
|
||||
void SetEncoding(wxFontEncoding encoding);
|
||||
|
@@ -88,6 +88,7 @@ public:
|
||||
virtual wxFontWeight GetWeight() const;
|
||||
virtual wxString GetFaceName() const;
|
||||
virtual bool GetUnderlined() const;
|
||||
virtual bool GetStrikethrough() const;
|
||||
virtual wxFontEncoding GetEncoding() const;
|
||||
virtual const wxNativeFontInfo *GetNativeFontInfo() const;
|
||||
virtual bool IsFixedWidth() const;
|
||||
@@ -98,6 +99,7 @@ public:
|
||||
virtual void SetWeight(wxFontWeight weight);
|
||||
virtual bool SetFaceName( const wxString& faceName );
|
||||
virtual void SetUnderlined( bool underlined );
|
||||
virtual void SetStrikethrough(bool strikethrough);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
wxDECLARE_COMMON_FONT_METHODS();
|
||||
|
@@ -111,6 +111,21 @@ GtkWidget *GetSplitterWidget();
|
||||
GtkWidget *GetTextEntryWidget();
|
||||
GtkWidget *GetTreeWidget();
|
||||
|
||||
// Set Pango attributes corresponding to the given font for the span 0..len (or
|
||||
// without any bounds if len == 0) in the specified layout. Currently only
|
||||
// underlined and strike-through attributes are handled by this function.
|
||||
//
|
||||
// Special "addDummyAttrs" parameter is used to work around a bug in old Pango
|
||||
// versions in wxWindowDCImpl::DoDrawText(), see comment there.
|
||||
//
|
||||
// If neither of them is specified, returns false, otherwise sets up the
|
||||
// attributes and returns true.
|
||||
//
|
||||
// This function is implemented in src/gtk/dcclient.cpp.
|
||||
bool
|
||||
SetPangoAttrsForFont(const wxFont& font, PangoLayout* layout, size_t len = 0,
|
||||
bool addDummyAttrs = false);
|
||||
|
||||
} // wxGTKPrivate
|
||||
|
||||
#endif // _WX_GTK_PRIVATE_H_
|
||||
|
@@ -123,6 +123,7 @@ public:
|
||||
virtual wxFontStyle GetStyle() const;
|
||||
virtual wxFontWeight GetWeight() const;
|
||||
virtual bool GetUnderlined() const;
|
||||
virtual bool GetStrikethrough() const;
|
||||
virtual wxString GetFaceName() const;
|
||||
virtual wxFontEncoding GetEncoding() const;
|
||||
virtual const wxNativeFontInfo *GetNativeFontInfo() const;
|
||||
@@ -134,6 +135,7 @@ public:
|
||||
virtual void SetWeight(wxFontWeight weight);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetStrikethrough(bool strikethrough);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
wxDECLARE_COMMON_FONT_METHODS();
|
||||
|
@@ -171,11 +171,12 @@ enum wxTextAttrFlags
|
||||
wxTEXT_ATTR_FONT_WEIGHT = 0x00000010,
|
||||
wxTEXT_ATTR_FONT_ITALIC = 0x00000020,
|
||||
wxTEXT_ATTR_FONT_UNDERLINE = 0x00000040,
|
||||
wxTEXT_ATTR_FONT_STRIKETHROUGH = 0x08000000,
|
||||
wxTEXT_ATTR_FONT_ENCODING = 0x02000000,
|
||||
wxTEXT_ATTR_FONT_FAMILY = 0x04000000,
|
||||
wxTEXT_ATTR_FONT = \
|
||||
( wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT | \
|
||||
wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE | wxTEXT_ATTR_FONT_ENCODING | wxTEXT_ATTR_FONT_FAMILY ),
|
||||
wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE | wxTEXT_ATTR_FONT_STRIKETHROUGH | wxTEXT_ATTR_FONT_ENCODING | wxTEXT_ATTR_FONT_FAMILY ),
|
||||
|
||||
wxTEXT_ATTR_ALIGNMENT = 0x00000080,
|
||||
wxTEXT_ATTR_LEFT_INDENT = 0x00000100,
|
||||
@@ -317,6 +318,7 @@ public:
|
||||
void SetFontWeight(wxFontWeight fontWeight) { m_fontWeight = fontWeight; m_flags |= wxTEXT_ATTR_FONT_WEIGHT; }
|
||||
void SetFontFaceName(const wxString& faceName) { m_fontFaceName = faceName; m_flags |= wxTEXT_ATTR_FONT_FACE; }
|
||||
void SetFontUnderlined(bool underlined) { m_fontUnderlined = underlined; m_flags |= wxTEXT_ATTR_FONT_UNDERLINE; }
|
||||
void SetFontStrikethrough(bool strikethrough) { m_fontStrikethrough = strikethrough; m_flags |= wxTEXT_ATTR_FONT_STRIKETHROUGH; }
|
||||
void SetFontEncoding(wxFontEncoding encoding) { m_fontEncoding = encoding; m_flags |= wxTEXT_ATTR_FONT_ENCODING; }
|
||||
void SetFontFamily(wxFontFamily family) { m_fontFamily = family; m_flags |= wxTEXT_ATTR_FONT_FAMILY; }
|
||||
|
||||
@@ -355,6 +357,7 @@ public:
|
||||
wxFontStyle GetFontStyle() const { return m_fontStyle; }
|
||||
wxFontWeight GetFontWeight() const { return m_fontWeight; }
|
||||
bool GetFontUnderlined() const { return m_fontUnderlined; }
|
||||
bool GetFontStrikethrough() const { return m_fontStrikethrough; }
|
||||
const wxString& GetFontFaceName() const { return m_fontFaceName; }
|
||||
wxFontEncoding GetFontEncoding() const { return m_fontEncoding; }
|
||||
wxFontFamily GetFontFamily() const { return m_fontFamily; }
|
||||
@@ -389,6 +392,7 @@ public:
|
||||
bool HasFontSize() const { return HasFlag(wxTEXT_ATTR_FONT_SIZE); }
|
||||
bool HasFontItalic() const { return HasFlag(wxTEXT_ATTR_FONT_ITALIC); }
|
||||
bool HasFontUnderlined() const { return HasFlag(wxTEXT_ATTR_FONT_UNDERLINE); }
|
||||
bool HasFontStrikethrough() const { return HasFlag(wxTEXT_ATTR_FONT_STRIKETHROUGH); }
|
||||
bool HasFontFaceName() const { return HasFlag(wxTEXT_ATTR_FONT_FACE); }
|
||||
bool HasFontEncoding() const { return HasFlag(wxTEXT_ATTR_FONT_ENCODING); }
|
||||
bool HasFontFamily() const { return HasFlag(wxTEXT_ATTR_FONT_FAMILY); }
|
||||
@@ -500,6 +504,7 @@ private:
|
||||
wxFontWeight m_fontWeight;
|
||||
wxFontFamily m_fontFamily;
|
||||
bool m_fontUnderlined;
|
||||
bool m_fontStrikethrough;
|
||||
wxString m_fontFaceName;
|
||||
|
||||
// Character style
|
||||
|
Reference in New Issue
Block a user