@@ -95,15 +95,47 @@ class JsiSkParagraph
9595 std::vector<para::LineMetrics> metrics;
9696 getObject ()->getLineMetrics (metrics);
9797 auto returnValue = jsi::Array (runtime, metrics.size ());
98- auto height = 0 ;
98+
9999 for (size_t i = 0 ; i < metrics.size (); ++i) {
100- returnValue.setValueAtIndex (
101- runtime, i,
102- JsiSkRect::toValue (runtime, getContext (),
103- SkRect::MakeXYWH (metrics[i].fLeft , height,
104- metrics[i].fWidth ,
105- metrics[i].fHeight )));
106- height += metrics[i].fHeight ;
100+ auto lineMetrics = jsi::Object (runtime);
101+
102+ // Text indices
103+ lineMetrics.setProperty (runtime, " startIndex" ,
104+ static_cast <double >(metrics[i].fStartIndex ));
105+ lineMetrics.setProperty (runtime, " endIndex" ,
106+ static_cast <double >(metrics[i].fEndIndex ));
107+ lineMetrics.setProperty (runtime, " endExcludingWhitespaces" ,
108+ static_cast <double >(metrics[i].fEndExcludingWhitespaces ));
109+ lineMetrics.setProperty (runtime, " endIncludingNewline" ,
110+ static_cast <double >(metrics[i].fEndIncludingNewline ));
111+
112+ // Line break info
113+ lineMetrics.setProperty (runtime, " isHardBreak" ,
114+ metrics[i].fHardBreak );
115+
116+ // Vertical metrics
117+ lineMetrics.setProperty (runtime, " ascent" ,
118+ static_cast <double >(metrics[i].fAscent ));
119+ lineMetrics.setProperty (runtime, " descent" ,
120+ static_cast <double >(metrics[i].fDescent ));
121+ lineMetrics.setProperty (runtime, " height" ,
122+ static_cast <double >(metrics[i].fHeight ));
123+
124+ // Horizontal metrics
125+ lineMetrics.setProperty (runtime, " width" ,
126+ static_cast <double >(metrics[i].fWidth ));
127+ lineMetrics.setProperty (runtime, " left" ,
128+ static_cast <double >(metrics[i].fLeft ));
129+
130+ // Position
131+ lineMetrics.setProperty (runtime, " baseline" ,
132+ static_cast <double >(metrics[i].fBaseline ));
133+
134+ // Line number
135+ lineMetrics.setProperty (runtime, " lineNumber" ,
136+ static_cast <double >(metrics[i].fLineNumber ));
137+
138+ returnValue.setValueAtIndex (runtime, i, lineMetrics);
107139 }
108140 return returnValue;
109141 }
0 commit comments