mirror of
https://github.com/wu736139669/ManagerDemo.git
synced 2026-08-05 05:55:42 +00:00
336 lines
8.5 KiB
Objective-C
336 lines
8.5 KiB
Objective-C
//
|
|
// DTHTMLElement.h
|
|
// DTCoreText
|
|
//
|
|
// Created by Oliver Drobnik on 4/14/11.
|
|
// Copyright 2011 Drobnik.com. All rights reserved.
|
|
//
|
|
|
|
@class DTCoreTextParagraphStyle;
|
|
@class DTCoreTextFontDescriptor;
|
|
@class DTTextAttachment;
|
|
@class DTCSSListStyle;
|
|
|
|
#import "DTCoreTextConstants.h"
|
|
#import "DTHTMLParserNode.h"
|
|
#import "DTTextAttachment.h"
|
|
#import "DTCompatibility.h"
|
|
|
|
@class DTBreakHTMLElement;
|
|
|
|
/**
|
|
Class to represent a element (aka "tag") in a HTML document. Structure information - like parent or children - is inherited from its superclass <DTHTMLParserNode>.
|
|
*/
|
|
@interface DTHTMLElement : DTHTMLParserNode
|
|
{
|
|
DTCoreTextFontDescriptor *_fontDescriptor;
|
|
DTCoreTextParagraphStyle *_paragraphStyle;
|
|
DTTextAttachment *_textAttachment;
|
|
DTTextAttachmentVerticalAlignment _textAttachmentAlignment;
|
|
NSURL *_link;
|
|
NSString *_anchorName;
|
|
|
|
DTColor *_textColor;
|
|
DTColor *_backgroundColor;
|
|
|
|
DTColor *_backgroundStrokeColor;
|
|
CGFloat _backgroundStrokeWidth;
|
|
CGFloat _backgroundCornerRadius;
|
|
|
|
CTUnderlineStyle _underlineStyle;
|
|
|
|
NSString *_beforeContent;
|
|
|
|
NSString *_linkGUID;
|
|
|
|
BOOL _strikeOut;
|
|
NSInteger _superscriptStyle;
|
|
|
|
NSInteger _headerLevel;
|
|
|
|
NSArray *_shadows;
|
|
|
|
DTHTMLElementDisplayStyle _displayStyle;
|
|
DTHTMLElementFloatStyle _floatStyle;
|
|
|
|
BOOL _isColorInherited;
|
|
|
|
BOOL _preserveNewlines;
|
|
BOOL _containsAppleConvertedSpace;
|
|
|
|
DTHTMLElementFontVariant _fontVariant;
|
|
|
|
CGFloat _textScale;
|
|
CGSize _size;
|
|
|
|
NSMutableArray *_children;
|
|
|
|
NSDictionary *_styles;
|
|
|
|
BOOL _didOutput;
|
|
|
|
// margins/padding
|
|
DTEdgeInsets _margins;
|
|
DTEdgeInsets _padding;
|
|
|
|
// indent of lists
|
|
CGFloat _listIndent;
|
|
|
|
BOOL _shouldProcessCustomHTMLAttributes;
|
|
}
|
|
|
|
/**
|
|
@name Creating HTML Elements
|
|
*/
|
|
|
|
/**
|
|
Designed initializer, creates the appropriate element sub type
|
|
@param name The element name
|
|
@param attributes The attributes dictionary of the tag
|
|
@param options The parsing options dictionary
|
|
@returns the initialized element
|
|
*/
|
|
+ (DTHTMLElement *)elementWithName:(NSString *)name attributes:(NSDictionary *)attributes options:(NSDictionary *)options;
|
|
|
|
|
|
/**
|
|
@name Creating Attributed Strings
|
|
*/
|
|
|
|
/**
|
|
Creates an `NSAttributedString` that represents the receiver including all its children. This method is typically overwritten in subclasses of <DTHTMLElement> that respresent specific HTML elements.
|
|
@returns An attributed string that also contains the children
|
|
*/
|
|
- (NSAttributedString *)attributedString;
|
|
|
|
/**
|
|
The dictionary of Core Text attributes for creating an `NSAttributedString` representation for the receiver
|
|
@returns The dictionary of attributes
|
|
*/
|
|
- (NSDictionary *)attributesForAttributedStringRepresentation;
|
|
|
|
/**
|
|
Creates a <DTCSSListStyle> to match the CSS styles
|
|
*/
|
|
- (DTCSSListStyle *)listStyle;
|
|
|
|
|
|
/**
|
|
@name Getting Element Information
|
|
*/
|
|
|
|
/**
|
|
Font Descriptor describing the font state of the receiver
|
|
*/
|
|
@property (nonatomic, copy) DTCoreTextFontDescriptor *fontDescriptor;
|
|
|
|
/**
|
|
Paragraph Style describing the paragraph state of the receiver
|
|
*/
|
|
@property (nonatomic, copy) DTCoreTextParagraphStyle *paragraphStyle;
|
|
|
|
/**
|
|
Text Attachment of the receiver, or `nil` if there is no attachment
|
|
*/
|
|
@property (nonatomic, strong) DTTextAttachment *textAttachment;
|
|
|
|
/**
|
|
Hyperlink URL of the receiver, or `nil` if there is no hyperlink
|
|
*/
|
|
@property (nonatomic, copy) NSURL *link;
|
|
|
|
/**
|
|
Anchor name, used by hyperlinks, of the receiver that can be used to scroll to.
|
|
*/
|
|
@property (nonatomic, copy) NSString *anchorName;
|
|
|
|
/**
|
|
Foreground text color of the receiver
|
|
*/
|
|
@property (nonatomic, strong) DTColor *textColor;
|
|
|
|
/**
|
|
Background color of text in the receiver
|
|
*/
|
|
@property (nonatomic, strong) DTColor *backgroundColor;
|
|
|
|
/**
|
|
Background stroke color in the receiver
|
|
*/
|
|
@property (nonatomic, strong) DTColor *backgroundStrokeColor;
|
|
|
|
/**
|
|
Background stroke width in the receiver
|
|
*/
|
|
@property (nonatomic, assign) CGFloat backgroundStrokeWidth;
|
|
|
|
/**
|
|
Background stroke width in the receiver
|
|
*/
|
|
@property (nonatomic, assign) CGFloat backgroundCornerRadius;
|
|
|
|
/**
|
|
The custom letter spacing of the receiver, default is 0px
|
|
*/
|
|
@property (nonatomic, assign) CGFloat letterSpacing;
|
|
|
|
/**
|
|
Additional text to be inserted before the text content of the receiver
|
|
*/
|
|
@property (nonatomic, copy) NSString *beforeContent;
|
|
|
|
/**
|
|
Array of shadows attached to the text contents of the receiver
|
|
*/
|
|
@property (nonatomic, copy) NSArray *shadows;
|
|
|
|
/**
|
|
The underline style of the receiver, at present only none or single line are supported
|
|
*/
|
|
@property (nonatomic, assign) CTUnderlineStyle underlineStyle;
|
|
|
|
/**
|
|
The strike-out style of the receiver
|
|
*/
|
|
@property (nonatomic, assign) BOOL strikeOut;
|
|
|
|
/**
|
|
The superscript style of the receiver or 0 if it does not have superscript text.
|
|
*/
|
|
@property (nonatomic, assign) NSInteger superscriptStyle;
|
|
|
|
/**
|
|
The header level of the receiver, or 0 if it is not a header
|
|
*/
|
|
@property (nonatomic, assign) NSInteger headerLevel;
|
|
|
|
/**
|
|
The display style of the receiver.
|
|
*/
|
|
@property (nonatomic, assign) DTHTMLElementDisplayStyle displayStyle;
|
|
|
|
/**
|
|
Whether the receiver is marked as float. While floating is not currently supported this can be used to add additional paragraph breaks.
|
|
*/
|
|
@property (nonatomic, readonly) DTHTMLElementFloatStyle floatStyle;
|
|
|
|
/**
|
|
Specifies that the textColor was inherited. Assigning textColor sets this flag to `NO`
|
|
*/
|
|
@property (nonatomic, assign) BOOL isColorInherited;
|
|
|
|
/**
|
|
Specifies that whitespace and new lines should be preserved. Default is to compress white space.
|
|
*/
|
|
@property (nonatomic, assign) BOOL preserveNewlines;
|
|
|
|
/**
|
|
The current font variant of the receiver, normal or small caps.
|
|
*/
|
|
|
|
@property (nonatomic, assign) DTHTMLElementFontVariant fontVariant;
|
|
|
|
/**
|
|
The current unscaled font size (used when inheriting font size). You're probably looking for fontDescriptor.pointSize.
|
|
*/
|
|
@property (nonatomic, assign) CGFloat currentTextSize;
|
|
|
|
/**
|
|
The scale by which all fonts are scaled
|
|
*/
|
|
@property (nonatomic, assign) CGFloat textScale;
|
|
|
|
/**
|
|
The size of the receiver, either from width/height attributes or width/hight styles.
|
|
*/
|
|
@property (nonatomic, assign) CGSize size;
|
|
|
|
/**
|
|
The value of the CSS margins. Margin support is incomplete.
|
|
*/
|
|
@property (nonatomic, assign) DTEdgeInsets margins;
|
|
|
|
/** The value of the CSS padding. Padding are added to DTTextBlock instances for block-level elements.
|
|
*/
|
|
@property (nonatomic, assign) DTEdgeInsets padding;
|
|
|
|
/**
|
|
Specifies that whitespace contained in the receiver's text has been converted with Apple's algorithm.
|
|
*/
|
|
@property (nonatomic, assign) BOOL containsAppleConvertedSpace;
|
|
|
|
/**
|
|
Prevents adding custom HTML attributes to output
|
|
*/
|
|
@property (nonatomic, assign) BOOL shouldProcessCustomHTMLAttributes;
|
|
|
|
/**
|
|
@name Working with HTML Attributes
|
|
*/
|
|
|
|
/**
|
|
Retrieves an attribute with a given key
|
|
@param key The attribute name to retrieve
|
|
@returns the attribute string
|
|
*/
|
|
- (NSString *)attributeForKey:(NSString *)key;
|
|
|
|
/**
|
|
Copies and inherits relevant attributes from the given parent element
|
|
@param element The element to inherit attributes from
|
|
*/
|
|
- (void)inheritAttributesFromElement:(DTHTMLElement *)element;
|
|
|
|
/**
|
|
Interprets the tag attributes for e.g. writing direction. Usually you would call this after inheritAttributesFromElement:.
|
|
*/
|
|
- (void)interpretAttributes;
|
|
|
|
/**
|
|
The HTML attributes that should be attached to the generated attributed string. Typically all attributes that were processed by -interpretAttributes are in this list. All other attributes get added to the generated attributed string with the DTCustomAttributesAttribute key.
|
|
*/
|
|
+ (NSSet *)attributesToIgnoreForCustomAttributesAttribute;
|
|
|
|
/**
|
|
The CSS class names that are not to be added to the "class" custom attribute in the DTCustomAttributesAttribute key. Those are usually the class names
|
|
*/
|
|
@property(nonatomic, strong) NSSet *CSSClassNamesToIgnoreForCustomAttributes;
|
|
|
|
/**
|
|
@name Working with CSS Styles
|
|
*/
|
|
|
|
/**
|
|
Applies the style information contained in a styles dictionary to the receiver
|
|
@param styles A style dictionary
|
|
*/
|
|
- (void)applyStyleDictionary:(NSDictionary *)styles;
|
|
|
|
|
|
/**
|
|
@name HTML Node Hierarchy
|
|
*/
|
|
|
|
/**
|
|
Returns the parent element. That's the same as the parent node but with adjusted type for convenience.
|
|
*/
|
|
- (DTHTMLElement *)parentElement;
|
|
|
|
|
|
/**
|
|
@name Output State (Internal)
|
|
*/
|
|
|
|
/**
|
|
Internal state during string building to mark the receiver als having been flushed
|
|
*/
|
|
@property (nonatomic, assign) BOOL didOutput;
|
|
|
|
/**
|
|
Internal method that determins if this element still requires output, based on its own didOutput state and the didOutput state of its children
|
|
@returns `YES` if it still requires output
|
|
*/
|
|
- (BOOL)needsOutput;
|
|
|
|
@end
|