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

Side by Side Diff: include/core/SkPaintOptionsAndroid.h

Issue 14761003: API modifications needed to upstream Android font changes. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: fix whitespace Created 7 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1
2 /*
3 * Copyright 2012 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10 #ifndef SkPaintOptionsAndroid_DEFINED
11 #define SkPaintOptionsAndroid_DEFINED
12
13 #ifdef SK_BUILD_FOR_ANDROID
14
15 #include "SkString.h"
16 #include "SkTypes.h"
17
18 class SkFlattenableReadBuffer;
19 class SkFlattenableWriteBuffer;
20
21 struct SkLanguageInfo {
22 SkLanguageInfo(const char* tag) : fTag(tag) { }
23 SkString fTag; //! BCP 47 language identifier
24 };
25
26 /** \class SkLanguage
27
28 The SkLanguage class represents a human written language, and is used by
29 text draw operations to determine which glyph to draw when drawing
30 characters with variants (ie Han-derived characters).
31 */
32 class SkLanguage {
33 public:
34 SkLanguage() : fInfo(getInfo("")) { }
35 SkLanguage(const char* tag) : fInfo(getInfo(tag)) { }
36 SkLanguage(const SkLanguage& b) : fInfo(b.fInfo) { }
37
38 /** Gets a BCP 47 language identifier for this SkLanguage.
39 @return a BCP 47 language identifier representing this language
40 */
41 const SkString& getTag() const { return fInfo->fTag; }
42
43 /** Performs BCP 47 fallback to return an SkLanguage one step more general.
44 @return an SkLanguage one step more general
45 */
46 SkLanguage getParent() const;
47
48 bool operator==(const SkLanguage& b) const {
49 return fInfo == b.fInfo;
50 }
51 bool operator!=(const SkLanguage& b) const {
52 return fInfo != b.fInfo;
53 }
54 bool operator<(const SkLanguage& b) const {
55 return fInfo < b.fInfo;
56 }
57 bool operator>(const SkLanguage& b) const {
58 return fInfo > b.fInfo;
59 }
60 SkLanguage& operator=(const SkLanguage& b) {
61 fInfo = b.fInfo;
62 return *this;
63 }
64
65 private:
66 const SkLanguageInfo* fInfo;
67
68 static const SkLanguageInfo* getInfo(const char* tag);
69 };
70
71 class SkPaintOptionsAndroid {
72 public:
73 SkPaintOptionsAndroid() {
74 fFontVariant = kDefault_Variant;
75 }
76
77 /** Return the paint's language value used for drawing text.
78 @return the paint's language value used for drawing text.
79 */
80 const SkLanguage& getLanguage() const { return fLanguage; }
81
82 /** Set the paint's language value used for drawing text.
83 @param language set the paint's language value for drawing text.
84 */
85 void setLanguage(const SkLanguage& language) { fLanguage = language; }
86 void setLanguage(const char* languageTag) { fLanguage = SkLanguage(languageT ag); }
87
88
89 enum FontVariant {
90 kDefault_Variant, // Currently setting yourself to Default gives you Comp act Variant
91 kCompact_Variant,
92 kElegant_Variant,
93 kLast_Variant = kElegant_Variant,
94 };
95
96 /** Return the font variant
97 @return the font variant used by this paint object
98 */
99 FontVariant getFontVariant() const { return fFontVariant; }
100
101 /** Set the font variant
102 @param fontVariant set the paint's font variant for choosing fonts
103 */
104 void setFontVariant(FontVariant fontVariant) {
105 SkASSERT((unsigned)fontVariant <= kLast_Variant);
106 fFontVariant = fontVariant;
107 }
108
109 void flatten(SkFlattenableWriteBuffer&) const;
110 void unflatten(SkFlattenableReadBuffer&);
111
112 private:
113 SkLanguage fLanguage;
114 FontVariant fFontVariant;
115 };
116
117 #endif // #ifdef SK_BUILD_FOR_ANDROID
118 #endif // #ifndef SkPaintOptionsAndroid_DEFINED
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698