Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: ios/chrome/browser/ui/util/core_text_util.h

Issue 2588733002: Upstream Chrome on iOS source code [9/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « ios/chrome/browser/ui/util/CRUILabel+AttributeUtils_unittest.mm ('k') | ios/chrome/browser/ui/util/core_text_util.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698