178 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
// NoesisGUI - http://www.noesisengine.com
 | 
						|
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
 | 
						|
#ifndef __GUI_TEXTELEMENT_H__
 | 
						|
#define __GUI_TEXTELEMENT_H__
 | 
						|
 | 
						|
 | 
						|
#include <NsCore/Noesis.h>
 | 
						|
#include <NsCore/Ptr.h>
 | 
						|
#include <NsCore/ReflectionDeclare.h>
 | 
						|
#include <NsGui/FrameworkElement.h>
 | 
						|
#include <NsGui/CoreApi.h>
 | 
						|
#include <NsCore/String.h>
 | 
						|
 | 
						|
 | 
						|
namespace Noesis
 | 
						|
{
 | 
						|
 | 
						|
class DependencyObject;
 | 
						|
class DependencyProperty;
 | 
						|
class Brush;
 | 
						|
class FontFamily;
 | 
						|
enum FontStretch: int32_t;
 | 
						|
enum FontStyle: int32_t;
 | 
						|
enum FontWeight: int32_t;
 | 
						|
struct Typography;
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Defines text attached properties.
 | 
						|
///
 | 
						|
/// http://msdn.microsoft.com/en-us/library/system.windows.documents.textelement.aspx
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
class NS_GUI_CORE_API TextElement: public FrameworkElement
 | 
						|
{
 | 
						|
public:
 | 
						|
    TextElement();
 | 
						|
    virtual ~TextElement() = 0;
 | 
						|
 | 
						|
    /// Gets or sets the Brush used to fill the background of the content area
 | 
						|
    //@{
 | 
						|
    Brush* GetBackground() const;
 | 
						|
    void SetBackground(Brush* background);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the uniform spacing between characters, in units of 1/1000 of an em
 | 
						|
    //@{
 | 
						|
    int32_t GetCharacterSpacing() const;
 | 
						|
    void SetCharacterSpacing(int32_t spacing);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the preferred top-level font family for the content of the element
 | 
						|
    //@{
 | 
						|
    FontFamily* GetFontFamily() const;
 | 
						|
    void SetFontFamily(FontFamily* family);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the font size for the content of the element
 | 
						|
    //@{
 | 
						|
    float GetFontSize() const;
 | 
						|
    void SetFontSize(float size);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the font stretct for the content of the element
 | 
						|
    //@{
 | 
						|
    FontStretch GetFontStretch() const;
 | 
						|
    void SetFontStretch(FontStretch stretch);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the font style for the content of the element
 | 
						|
    //@{
 | 
						|
    FontStyle GetFontStyle() const;
 | 
						|
    void SetFontStyle(FontStyle style);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the top-level font weight for the content of the element
 | 
						|
    //@{
 | 
						|
    FontWeight GetFontWeight() const;
 | 
						|
    void SetFontWeight(FontWeight weight);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the Brush to apply to the content of the element
 | 
						|
    //@{
 | 
						|
    Brush* GetForeground() const;
 | 
						|
    void SetForeground(Brush* foreground);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the Brush used to stroke the text
 | 
						|
    //@{
 | 
						|
    Brush* GetStroke() const;
 | 
						|
    void SetStroke(Brush* stroke);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the width (in pixels) of the text stroke
 | 
						|
    //@{
 | 
						|
    float GetStrokeThickness() const;
 | 
						|
    void SetStrokeThickness(float strokeThickness);
 | 
						|
    //@}
 | 
						|
 | 
						|
    // As ATTACHED PROPERTIES
 | 
						|
 | 
						|
    /// Gets or sets the preferred top-level font family for the content of the element
 | 
						|
    //@{
 | 
						|
    static FontFamily* GetFontFamily(const DependencyObject* element);
 | 
						|
    static void SetFontFamily(DependencyObject* element, FontFamily* family);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the font size for the content of the element
 | 
						|
    //@{
 | 
						|
    static float GetFontSize(const DependencyObject* element);
 | 
						|
    static void SetFontSize(DependencyObject* element, float size);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the font stretch for the content of the element
 | 
						|
    //@{
 | 
						|
    static FontStretch GetFontStretch(const DependencyObject* element);
 | 
						|
    static void SetFontStretch(DependencyObject* element, FontStretch stretch);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the font style for the content of the element
 | 
						|
    //@{
 | 
						|
    static FontStyle GetFontStyle(const DependencyObject* element);
 | 
						|
    static void SetFontStyle(DependencyObject* element, FontStyle style);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the top-level font weight for the content of the element
 | 
						|
    //@{
 | 
						|
    static FontWeight GetFontWeight(const DependencyObject* element);
 | 
						|
    static void SetFontWeight(DependencyObject* element, FontWeight weight);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the Brush to apply to the content of the element
 | 
						|
    //@{
 | 
						|
    static Brush* GetForeground(const DependencyObject* element);
 | 
						|
    static void SetForeground(DependencyObject* element, Brush* foreground);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the Brush used to stroke the text
 | 
						|
    //@{
 | 
						|
    static Brush* GetStroke(const DependencyObject* element);
 | 
						|
    static void SetStroke(DependencyObject* element, Brush* stroke);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets the width (in pixels) of the text stroke
 | 
						|
    //@{
 | 
						|
    static float GetStrokeThickness(const DependencyObject* element);
 | 
						|
    static void SetStrokeThickness(DependencyObject* element, float strokeThickness);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets the currently effective typography variations for the text contents of this TextElement
 | 
						|
    /// \prop
 | 
						|
    Typography GetTypography() const;
 | 
						|
 | 
						|
public:
 | 
						|
    /// Dependency properties
 | 
						|
    //@{
 | 
						|
    static const DependencyProperty* BackgroundProperty;
 | 
						|
    static const DependencyProperty* CharacterSpacingProperty;
 | 
						|
    static const DependencyProperty* FontFamilyProperty;
 | 
						|
    static const DependencyProperty* FontSizeProperty;
 | 
						|
    static const DependencyProperty* FontStretchProperty;
 | 
						|
    static const DependencyProperty* FontStyleProperty;
 | 
						|
    static const DependencyProperty* FontWeightProperty;
 | 
						|
    static const DependencyProperty* ForegroundProperty;
 | 
						|
    static const DependencyProperty* StrokeProperty;
 | 
						|
    static const DependencyProperty* StrokeThicknessProperty;
 | 
						|
    //@}
 | 
						|
 | 
						|
    NS_DECLARE_REFLECTION(TextElement, FrameworkElement)
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#endif
 |