123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- //
- // YYTextDebugOption.h
- // YYKit <https://github.com/ibireme/YYKit>
- //
- // Created by ibireme on 15/4/8.
- // Copyright (c) 2015 ibireme.
- //
- // This source code is licensed under the MIT-style license found in the
- // LICENSE file in the root directory of this source tree.
- //
- #import <UIKit/UIKit.h>
- @class YYTextDebugOption;
- NS_ASSUME_NONNULL_BEGIN
- /**
- The YYTextDebugTarget protocol defines the method a debug target should implement.
- A debug target can be add to the global container to receive the shared debug
- option changed notification.
- */
- @protocol YYTextDebugTarget <NSObject>
- @required
- /**
- When the shared debug option changed, this method would be called on main thread.
- It should return as quickly as possible. The option's property should not be changed
- in this method.
-
- @param option The shared debug option.
- */
- - (void)setDebugOption:(nullable YYTextDebugOption *)option;
- @end
- /**
- The debug option for YYText.
- */
- @interface YYTextDebugOption : NSObject <NSCopying>
- @property (nullable, nonatomic, strong) UIColor *baselineColor; ///< baseline color
- @property (nullable, nonatomic, strong) UIColor *CTFrameBorderColor; ///< CTFrame path border color
- @property (nullable, nonatomic, strong) UIColor *CTFrameFillColor; ///< CTFrame path fill color
- @property (nullable, nonatomic, strong) UIColor *CTLineBorderColor; ///< CTLine bounds border color
- @property (nullable, nonatomic, strong) UIColor *CTLineFillColor; ///< CTLine bounds fill color
- @property (nullable, nonatomic, strong) UIColor *CTLineNumberColor; ///< CTLine line number color
- @property (nullable, nonatomic, strong) UIColor *CTRunBorderColor; ///< CTRun bounds border color
- @property (nullable, nonatomic, strong) UIColor *CTRunFillColor; ///< CTRun bounds fill color
- @property (nullable, nonatomic, strong) UIColor *CTRunNumberColor; ///< CTRun number color
- @property (nullable, nonatomic, strong) UIColor *CGGlyphBorderColor; ///< CGGlyph bounds border color
- @property (nullable, nonatomic, strong) UIColor *CGGlyphFillColor; ///< CGGlyph bounds fill color
- - (BOOL)needDrawDebug; ///< `YES`: at least one debug color is visible. `NO`: all debug color is invisible/nil.
- - (void)clear; ///< Set all debug color to nil.
- /**
- Add a debug target.
-
- @discussion When `setSharedDebugOption:` is called, all added debug target will
- receive `setDebugOption:` in main thread. It maintains an unsafe_unretained
- reference to this target. The target must to removed before dealloc.
-
- @param target A debug target.
- */
- + (void)addDebugTarget:(id<YYTextDebugTarget>)target;
- /**
- Remove a debug target which is added by `addDebugTarget:`.
-
- @param target A debug target.
- */
- + (void)removeDebugTarget:(id<YYTextDebugTarget>)target;
- /**
- Returns the shared debug option.
-
- @return The shared debug option, default is nil.
- */
- + (nullable YYTextDebugOption *)sharedDebugOption;
- /**
- Set a debug option as shared debug option.
- This method must be called on main thread.
-
- @discussion When call this method, the new option will set to all debug target
- which is added by `addDebugTarget:`.
-
- @param option A new debug option (nil is valid).
- */
- + (void)setSharedDebugOption:(nullable YYTextDebugOption *)option;
- @end
- NS_ASSUME_NONNULL_END
|