1 #import <Foundation/Foundation.h>
2 
3 #ifndef RNTextProperties_h
4 #define RNTextProperties_h
5 
6 typedef NS_ENUM(NSInteger, RNSVGAlignmentBaseline) {
7   RNSVGAlignmentBaselineBaseline,
8   RNSVGAlignmentBaselineTextBottom,
9   RNSVGAlignmentBaselineAlphabetic,
10   RNSVGAlignmentBaselineIdeographic,
11   RNSVGAlignmentBaselineMiddle,
12   RNSVGAlignmentBaselineCentral,
13   RNSVGAlignmentBaselineMathematical,
14   RNSVGAlignmentBaselineTextTop,
15   RNSVGAlignmentBaselineBottom,
16   RNSVGAlignmentBaselineCenter,
17   RNSVGAlignmentBaselineTop,
18   /*
19    SVG implementations may support the following aliases in order to support legacy content:
20 
21    text-before-edge = text-top
22    text-after-edge = text-bottom
23    */
24   RNSVGAlignmentBaselineTextBeforeEdge,
25   RNSVGAlignmentBaselineTextAfterEdge,
26   // SVG 1.1
27   RNSVGAlignmentBaselineBeforeEdge,
28   RNSVGAlignmentBaselineAfterEdge,
29   RNSVGAlignmentBaselineHanging,
30   RNSVGAlignmentBaselineDEFAULT = RNSVGAlignmentBaselineBaseline
31 };
32 
33 static NSString *const RNSVGAlignmentBaselineStrings[] = {
34     @"baseline",        @"text-bottom", @"alphabetic", @"ideographic", @"middle",  @"central",
35     @"mathematical",    @"text-top",    @"bottom",     @"center",      @"top",     @"text-before-edge",
36     @"text-after-edge", @"before-edge", @"after-edge", @"hanging",     @"central", @"mathematical",
37     @"text-top",        @"bottom",      @"center",     @"top",         nil};
38 
39 NSString *RNSVGAlignmentBaselineToString(enum RNSVGAlignmentBaseline fw);
40 
41 enum RNSVGAlignmentBaseline RNSVGAlignmentBaselineFromString(NSString *s);
42 
43 typedef NS_ENUM(NSInteger, RNSVGFontStyle) {
44   RNSVGFontStyleNormal,
45   RNSVGFontStyleItalic,
46   RNSVGFontStyleOblique,
47   RNSVGFontStyleDEFAULT = RNSVGFontStyleNormal,
48 };
49 
50 static NSString *const RNSVGFontStyleStrings[] = {@"normal", @"italic", @"oblique", nil};
51 
52 NSString *RNSVGFontStyleToString(enum RNSVGFontStyle fw);
53 
54 enum RNSVGFontStyle RNSVGFontStyleFromString(NSString *s);
55 
56 typedef NS_ENUM(NSInteger, RNSVGFontVariantLigatures) {
57   RNSVGFontVariantLigaturesNormal,
58   RNSVGFontVariantLigaturesNone,
59   RNSVGFontVariantLigaturesDEFAULT = RNSVGFontVariantLigaturesNormal,
60 };
61 
62 static NSString *const RNSVGFontVariantLigaturesStrings[] = {@"normal", @"none", nil};
63 
64 NSString *RNSVGFontVariantLigaturesToString(enum RNSVGFontVariantLigatures fw);
65 
66 enum RNSVGFontVariantLigatures RNSVGFontVariantLigaturesFromString(NSString *s);
67 
68 typedef NS_ENUM(NSInteger, RNSVGFontWeight) {
69   // Absolute
70   RNSVGFontWeightNormal,
71   RNSVGFontWeightBold,
72   RNSVGFontWeight100,
73   RNSVGFontWeight200,
74   RNSVGFontWeight300,
75   RNSVGFontWeight400,
76   RNSVGFontWeight500,
77   RNSVGFontWeight600,
78   RNSVGFontWeight700,
79   RNSVGFontWeight800,
80   RNSVGFontWeight900,
81   // Relative
82   RNSVGFontWeightBolder,
83   RNSVGFontWeightLighter,
84   RNSVGFontWeightDEFAULT = RNSVGFontWeightNormal,
85 };
86 
87 static NSString *const RNSVGFontWeightStrings[] = {
88     @"normal",
89     @"bold",
90     @"100",
91     @"200",
92     @"300",
93     @"400",
94     @"500",
95     @"600",
96     @"700",
97     @"800",
98     @"900",
99     @"bolder",
100     @"lighter",
101     nil};
102 
103 static int const RNSVGAbsoluteFontWeights[] = {400, 700, 100, 200, 300, 400, 500, 600, 700, 800, 900};
104 
105 static RNSVGFontWeight const RNSVGFontWeights[] = {
106     RNSVGFontWeight100,
107     RNSVGFontWeight100,
108     RNSVGFontWeight200,
109     RNSVGFontWeight300,
110     RNSVGFontWeightNormal,
111     RNSVGFontWeight500,
112     RNSVGFontWeight600,
113     RNSVGFontWeightBold,
114     RNSVGFontWeight800,
115     RNSVGFontWeight900,
116     RNSVGFontWeight900};
117 
118 NSString *RNSVGFontWeightToString(enum RNSVGFontWeight fw);
119 
120 NSInteger RNSVGFontWeightFromString(NSString *s);
121 
122 typedef NS_ENUM(NSInteger, RNSVGTextAnchor) {
123   RNSVGTextAnchorStart,
124   RNSVGTextAnchorMiddle,
125   RNSVGTextAnchorEnd,
126   RNSVGTextAnchorDEFAULT = RNSVGTextAnchorStart,
127 };
128 
129 static NSString *const RNSVGTextAnchorStrings[] = {@"start", @"middle", @"end", nil};
130 
131 NSString *RNSVGTextAnchorToString(enum RNSVGTextAnchor fw);
132 
133 enum RNSVGTextAnchor RNSVGTextAnchorFromString(NSString *s);
134 
135 typedef NS_ENUM(NSInteger, RNSVGTextDecoration) {
136   RNSVGTextDecorationNone,
137   RNSVGTextDecorationUnderline,
138   RNSVGTextDecorationOverline,
139   RNSVGTextDecorationLineThrough,
140   RNSVGTextDecorationBlink,
141   RNSVGTextDecorationDEFAULT = RNSVGTextDecorationNone,
142 };
143 
144 static NSString *const RNSVGTextDecorationStrings[] =
145     {@"None", @"Underline", @"Overline", @"LineThrough", @"Blink", nil};
146 
147 NSString *RNSVGTextDecorationToString(enum RNSVGTextDecoration fw);
148 
149 enum RNSVGTextDecoration RNSVGTextDecorationFromString(NSString *s);
150 
151 typedef NS_ENUM(NSInteger, RNSVGTextLengthAdjust) {
152   RNSVGTextLengthAdjustSpacing,
153   RNSVGTextLengthAdjustSpacingAndGlyphs,
154   RNSVGTextLengthAdjustDEFAULT = RNSVGTextLengthAdjustSpacing,
155 };
156 
157 static NSString *const RNSVGTextLengthAdjustStrings[] = {@"spacing", @"spacingAndGlyphs", nil};
158 
159 NSString *RNSVGTextLengthAdjustToString(enum RNSVGTextLengthAdjust fw);
160 
161 enum RNSVGTextLengthAdjust RNSVGTextLengthAdjustFromString(NSString *s);
162 
163 typedef NS_ENUM(NSInteger, RNSVGTextPathMethod) {
164   RNSVGTextPathMethodAlign,
165   RNSVGTextPathMethodStretch,
166   RNSVGTextPathMethodDEFAULT = RNSVGTextPathMethodAlign,
167 };
168 
169 static NSString *const RNSVGTextPathMethodStrings[] = {@"align", @"stretch", nil};
170 
171 NSString *RNSVGTextPathMethodToString(enum RNSVGTextPathMethod fw);
172 
173 enum RNSVGTextPathMethod RNSVGTextPathMethodFromString(NSString *s);
174 
175 typedef NS_ENUM(NSInteger, RNSVGTextPathMidLine) {
176   RNSVGTextPathMidLineSharp,
177   RNSVGTextPathMidLineSmooth,
178   RNSVGTextPathMidLineDEFAULT = RNSVGTextPathMidLineSharp,
179 };
180 
181 static NSString *const RNSVGTextPathMidLineStrings[] = {@"sharp", @"smooth", nil};
182 
183 NSString *RNSVGTextPathMidLineToString(enum RNSVGTextPathMidLine fw);
184 
185 enum RNSVGTextPathMidLine RNSVGTextPathMidLineFromString(NSString *s);
186 
187 typedef NS_ENUM(NSInteger, RNSVGTextPathSide) {
188   RNSVGTextPathSideLeft,
189   RNSVGTextPathSideRight,
190   RNSVGTextPathSideDEFAULT = RNSVGTextPathSideLeft,
191 };
192 
193 static NSString *const RNSVGTextPathSideStrings[] = {@"left", @"right", nil};
194 
195 NSString *RNSVGTextPathSideToString(enum RNSVGTextPathSide fw);
196 
197 enum RNSVGTextPathSide RNSVGTextPathSideFromString(NSString *s);
198 
199 typedef NS_ENUM(NSInteger, RNSVGTextPathSpacing) {
200   RNSVGTextPathSpacingAutoSpacing,
201   RNSVGTextPathSpacingExact,
202   RNSVGTextPathSpacingDEFAULT = RNSVGTextPathSpacingAutoSpacing,
203 };
204 
205 static NSString *const RNSVGTextPathSpacingStrings[] = {@"auto", @"exact", nil};
206 
207 NSString *RNSVGTextPathSpacingToString(enum RNSVGTextPathSpacing fw);
208 
209 enum RNSVGTextPathSpacing RNSVGTextPathSpacingFromString(NSString *s);
210 
211 #endif
212