| Index: ios/chrome/browser/ui/util/core_text_util.h
|
| diff --git a/ios/chrome/browser/ui/util/core_text_util.h b/ios/chrome/browser/ui/util/core_text_util.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..803c03f7844713fce9a8fb86069c081216adef6b
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/util/core_text_util.h
|
| @@ -0,0 +1,85 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef IOS_CHROME_BROWSER_UI_UTIL_CORE_TEXT_UTIL_H_
|
| +#define IOS_CHROME_BROWSER_UI_UTIL_CORE_TEXT_UTIL_H_
|
| +
|
| +#import <CoreText/CoreText.h>
|
| +#import <UIKit/UIKit.h>
|
| +
|
| +#import "base/mac/scoped_cftyperef.h"
|
| +
|
| +@class ManualTextFramer;
|
| +
|
| +namespace core_text_util {
|
| +
|
| +// Uses CTFrameSetter to create a CTFrameRef corresponding to |string| drawn
|
| +// within the path described by |bounds|.
|
| +base::ScopedCFTypeRef<CTFrameRef> CreateTextFrameForStringInBounds(
|
| + NSAttributedString* string,
|
| + CGRect bounds);
|
| +
|
| +// The CTFrames returned by CTFameSetter sometimes erroneously frame the same
|
| +// portion of the original string twice. In addition, these CTFrames may have
|
| +// innacurate ranges for RTL languages. This function returns true if the
|
| +// string range for |text_frame| returned by CTFrameGetVisibleStringRange() is
|
| +// properly framed with no repeats and if the string range length of
|
| +// |text_frame| matches the string range length of the frame generated by
|
| +// |manual_framer|, which more accurately handles creating string ranges for RTL
|
| +// strings. |string| is the attributed string from which |text_frame| and
|
| +// |manual_framer| were created.
|
| +bool IsTextFrameValid(CTFrameRef text_frame,
|
| + ManualTextFramer* manual_framer,
|
| + NSAttributedString* string);
|
| +
|
| +// Returns the width of the typographic bounds for |line|, excluding trailing
|
| +// whitespace.
|
| +CGFloat GetTrimmedLineWidth(CTLineRef line);
|
| +
|
| +// Returns the width of the typographic bounds for the glyphs in |range| for
|
| +// |run|.
|
| +CGFloat GetRunWidthWithRange(CTRunRef run, CFRange range);
|
| +
|
| +// Returns the width of the typographic bounds for the glyph in |run| at
|
| +// |glyph_idx|.
|
| +CGFloat GetGlyphWidth(CTRunRef run, CFIndex glyph_idx);
|
| +
|
| +// Returns the index of the first glyph in the leading direction in |range| for
|
| +// |run| that corresponds with a character that is a member of |set|. |string|
|
| +// is the string from which |run| was created, and is used to map from glyphs to
|
| +// characters. Returns kCFNotFound if no glyphs are found.
|
| +CFIndex GetGlyphIdxForCharInSet(CTRunRef run,
|
| + CFRange range,
|
| + NSAttributedString* string,
|
| + NSCharacterSet* set);
|
| +
|
| +// Returns the index of the character corresponding with the glyph at
|
| +// |glyph_idx| in |run|.
|
| +NSUInteger GetStringIdxForGlyphIdx(CTRunRef run, CFIndex glyph_idx);
|
| +
|
| +// Returns the string range associated with |run|.
|
| +NSRange GetStringRangeForRun(CTRunRef run);
|
| +
|
| +// Enumerates each attributes dictionary for |range| in |string| and executes
|
| +// |block| on the dictionary.
|
| +typedef void (^AttributesBlock)(NSDictionary* attributes);
|
| +void EnumerateAttributesInString(NSAttributedString* string,
|
| + NSRange range,
|
| + AttributesBlock block);
|
| +
|
| +// Returns the line height for |range| in |string|.
|
| +CGFloat GetLineHeight(NSAttributedString* string, NSRange range);
|
| +
|
| +// Returns the line spacing for |range| in |string|.
|
| +CGFloat GetLineSpacing(NSAttributedString* string, NSRange range);
|
| +
|
| +// Returns the effective text alignment for |string|.
|
| +NSTextAlignment GetEffectiveTextAlignment(NSAttributedString* string);
|
| +
|
| +// Returns the effective writing direction for |string|.
|
| +NSWritingDirection GetEffectiveWritingDirection(NSAttributedString* string);
|
| +
|
| +} // namespace core_text_util
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_UTIL_CORE_TEXT_UTIL_H_
|
|
|