|
17 | 17 | #include "impeller/toolkit/interop/context.h"
|
18 | 18 | #include "impeller/toolkit/interop/dl_builder.h"
|
19 | 19 | #include "impeller/toolkit/interop/formats.h"
|
| 20 | +#include "impeller/toolkit/interop/glyph_info.h" |
20 | 21 | #include "impeller/toolkit/interop/image_filter.h"
|
| 22 | +#include "impeller/toolkit/interop/line_metrics.h" |
21 | 23 | #include "impeller/toolkit/interop/mask_filter.h"
|
22 | 24 | #include "impeller/toolkit/interop/object.h"
|
23 | 25 | #include "impeller/toolkit/interop/paint.h"
|
@@ -58,7 +60,9 @@ DEFINE_PEER_GETTER(ColorSource, ImpellerColorSource);
|
58 | 60 | DEFINE_PEER_GETTER(Context, ImpellerContext);
|
59 | 61 | DEFINE_PEER_GETTER(DisplayList, ImpellerDisplayList);
|
60 | 62 | DEFINE_PEER_GETTER(DisplayListBuilder, ImpellerDisplayListBuilder);
|
| 63 | +DEFINE_PEER_GETTER(GlyphInfo, ImpellerGlyphInfo); |
61 | 64 | DEFINE_PEER_GETTER(ImageFilter, ImpellerImageFilter);
|
| 65 | +DEFINE_PEER_GETTER(LineMetrics, ImpellerLineMetrics); |
62 | 66 | DEFINE_PEER_GETTER(MaskFilter, ImpellerMaskFilter);
|
63 | 67 | DEFINE_PEER_GETTER(Paint, ImpellerPaint);
|
64 | 68 | DEFINE_PEER_GETTER(Paragraph, ImpellerParagraph);
|
@@ -1272,6 +1276,12 @@ uint32_t ImpellerParagraphGetLineCount(ImpellerParagraph paragraph) {
|
1272 | 1276 | return GetPeer(paragraph)->GetLineCount();
|
1273 | 1277 | }
|
1274 | 1278 |
|
| 1279 | +IMPELLER_EXTERN_C |
| 1280 | +ImpellerRange ImpellerParagraphGetWordBoundary(ImpellerParagraph paragraph, |
| 1281 | + size_t code_unit_index) { |
| 1282 | + return GetPeer(paragraph)->GetWordBoundary(code_unit_index); |
| 1283 | +} |
| 1284 | + |
1275 | 1285 | IMPELLER_EXTERN_C
|
1276 | 1286 | ImpellerTypographyContext ImpellerTypographyContextNew() {
|
1277 | 1287 | auto context = Create<TypographyContext>();
|
@@ -1309,4 +1319,154 @@ bool ImpellerTypographyContextRegisterFont(ImpellerTypographyContext context,
|
1309 | 1319 | family_name_alias);
|
1310 | 1320 | }
|
1311 | 1321 |
|
| 1322 | +IMPELLER_EXTERN_C |
| 1323 | +ImpellerLineMetrics ImpellerParagraphGetLineMetrics( |
| 1324 | + ImpellerParagraph paragraph) { |
| 1325 | + return GetPeer(paragraph)->GetLineMetrics().GetC(); |
| 1326 | +} |
| 1327 | + |
| 1328 | +IMPELLER_EXTERN_C |
| 1329 | +ImpellerGlyphInfo ImpellerParagraphCreateGlyphInfoAtCodeUnitIndexNew( |
| 1330 | + ImpellerParagraph paragraph, |
| 1331 | + size_t code_unit_index) { |
| 1332 | + return GetPeer(paragraph) |
| 1333 | + ->GetGlyphInfoAtCodeUnitIndex(code_unit_index) |
| 1334 | + .Leak(); |
| 1335 | +} |
| 1336 | + |
| 1337 | +IMPELLER_EXTERN_C |
| 1338 | +ImpellerGlyphInfo ImpellerParagraphCreateGlyphInfoAtParagraphCoordinatesNew( |
| 1339 | + ImpellerParagraph paragraph, |
| 1340 | + double x, |
| 1341 | + double y) { |
| 1342 | + return GetPeer(paragraph) |
| 1343 | + ->GetClosestGlyphInfoAtParagraphCoordinates(x, y) |
| 1344 | + .Leak(); |
| 1345 | +} |
| 1346 | + |
| 1347 | +//------------------------------------------------------------------------------ |
| 1348 | +// Line Metrics |
| 1349 | +//------------------------------------------------------------------------------ |
| 1350 | + |
| 1351 | +IMPELLER_EXTERN_C |
| 1352 | +void ImpellerLineMetricsRetain(ImpellerLineMetrics line_metrics) { |
| 1353 | + ObjectBase::SafeRetain(line_metrics); |
| 1354 | +} |
| 1355 | + |
| 1356 | +IMPELLER_EXTERN_C |
| 1357 | +void ImpellerLineMetricsRelease(ImpellerLineMetrics line_metrics) { |
| 1358 | + ObjectBase::SafeRelease(line_metrics); |
| 1359 | +} |
| 1360 | + |
| 1361 | +IMPELLER_EXTERN_C |
| 1362 | +double ImpellerLineMetricsGetUnscaledAscent(ImpellerLineMetrics metrics, |
| 1363 | + size_t line) { |
| 1364 | + return GetPeer(metrics)->GetUnscaledAscent(line); |
| 1365 | +} |
| 1366 | + |
| 1367 | +IMPELLER_EXTERN_C |
| 1368 | +double ImpellerLineMetricsGetAscent(ImpellerLineMetrics metrics, size_t line) { |
| 1369 | + return GetPeer(metrics)->GetAscent(line); |
| 1370 | +} |
| 1371 | + |
| 1372 | +IMPELLER_EXTERN_C |
| 1373 | +double ImpellerLineMetricsGetDescent(ImpellerLineMetrics metrics, size_t line) { |
| 1374 | + return GetPeer(metrics)->GetDescent(line); |
| 1375 | +} |
| 1376 | + |
| 1377 | +IMPELLER_EXTERN_C |
| 1378 | +double ImpellerLineMetricsGetBaseline(ImpellerLineMetrics metrics, |
| 1379 | + size_t line) { |
| 1380 | + return GetPeer(metrics)->GetBaseline(line); |
| 1381 | +} |
| 1382 | + |
| 1383 | +IMPELLER_EXTERN_C |
| 1384 | +bool ImpellerLineMetricsIsHardbreak(ImpellerLineMetrics metrics, size_t line) { |
| 1385 | + return GetPeer(metrics)->IsHardbreak(line); |
| 1386 | +} |
| 1387 | + |
| 1388 | +IMPELLER_EXTERN_C |
| 1389 | +double ImpellerLineMetricsGetWidth(ImpellerLineMetrics metrics, size_t line) { |
| 1390 | + return GetPeer(metrics)->GetWidth(line); |
| 1391 | +} |
| 1392 | + |
| 1393 | +IMPELLER_EXTERN_C |
| 1394 | +double ImpellerLineMetricsGetHeight(ImpellerLineMetrics metrics, size_t line) { |
| 1395 | + return GetPeer(metrics)->GetHeight(line); |
| 1396 | +} |
| 1397 | + |
| 1398 | +IMPELLER_EXTERN_C |
| 1399 | +double ImpellerLineMetricsGetLeft(ImpellerLineMetrics metrics, size_t line) { |
| 1400 | + return GetPeer(metrics)->GetLeft(line); |
| 1401 | +} |
| 1402 | + |
| 1403 | +IMPELLER_EXTERN_C |
| 1404 | +size_t ImpellerLineMetricsGetCodeUnitStartIndex(ImpellerLineMetrics metrics, |
| 1405 | + size_t line) { |
| 1406 | + return GetPeer(metrics)->GetCodeUnitStartIndex(line); |
| 1407 | +} |
| 1408 | + |
| 1409 | +IMPELLER_EXTERN_C |
| 1410 | +size_t ImpellerLineMetricsGetCodeUnitEndIndex(ImpellerLineMetrics metrics, |
| 1411 | + size_t line) { |
| 1412 | + return GetPeer(metrics)->GetCodeUnitEndIndex(line); |
| 1413 | +} |
| 1414 | + |
| 1415 | +IMPELLER_EXTERN_C |
| 1416 | +size_t ImpellerLineMetricsGetCodeUnitEndIndexExcludingWhitespace( |
| 1417 | + ImpellerLineMetrics metrics, |
| 1418 | + size_t line) { |
| 1419 | + return GetPeer(metrics)->GetCodeUnitEndIndexExcludingWhitespace(line); |
| 1420 | +} |
| 1421 | + |
| 1422 | +IMPELLER_EXTERN_C |
| 1423 | +size_t ImpellerLineMetricsGetCodeUnitEndIndexIncludingNewline( |
| 1424 | + ImpellerLineMetrics metrics, |
| 1425 | + size_t line) { |
| 1426 | + return GetPeer(metrics)->GetCodeUnitEndIndexIncludingNewline(line); |
| 1427 | +} |
| 1428 | + |
| 1429 | +//------------------------------------------------------------------------------ |
| 1430 | +// Glyph Info |
| 1431 | +//------------------------------------------------------------------------------ |
| 1432 | + |
| 1433 | +IMPELLER_EXTERN_C |
| 1434 | +void ImpellerGlyphInfoRetain(ImpellerGlyphInfo glyph_info) { |
| 1435 | + ObjectBase::SafeRetain(glyph_info); |
| 1436 | +} |
| 1437 | + |
| 1438 | +IMPELLER_EXTERN_C |
| 1439 | +void ImpellerGlyphInfoRelease(ImpellerGlyphInfo glyph_info) { |
| 1440 | + ObjectBase::SafeRelease(glyph_info); |
| 1441 | +} |
| 1442 | + |
| 1443 | +IMPELLER_EXTERN_C |
| 1444 | +size_t ImpellerGlyphInfoGetGraphemeClusterCodeUnitRangeBegin( |
| 1445 | + ImpellerGlyphInfo glyph_info) { |
| 1446 | + return GetPeer(glyph_info)->GetGraphemeClusterCodeUnitRangeBegin(); |
| 1447 | +} |
| 1448 | + |
| 1449 | +IMPELLER_EXTERN_C |
| 1450 | +size_t ImpellerGlyphInfoGetGraphemeClusterCodeUnitRangeEnd( |
| 1451 | + ImpellerGlyphInfo glyph_info) { |
| 1452 | + return GetPeer(glyph_info)->GetGraphemeClusterCodeUnitRangeEnd(); |
| 1453 | +} |
| 1454 | + |
| 1455 | +IMPELLER_EXTERN_C |
| 1456 | +ImpellerRect ImpellerGlyphInfoGetGraphemeClusterBounds( |
| 1457 | + ImpellerGlyphInfo glyph_info) { |
| 1458 | + return GetPeer(glyph_info)->GetGraphemeClusterBounds(); |
| 1459 | +} |
| 1460 | + |
| 1461 | +IMPELLER_EXTERN_C |
| 1462 | +bool ImpellerGlyphInfoIsEllipsis(ImpellerGlyphInfo glyph_info) { |
| 1463 | + return GetPeer(glyph_info)->IsEllipsis(); |
| 1464 | +} |
| 1465 | + |
| 1466 | +IMPELLER_EXTERN_C |
| 1467 | +ImpellerTextDirection ImpellerGlyphInfoGetTextDirection( |
| 1468 | + ImpellerGlyphInfo glyph_info) { |
| 1469 | + return GetPeer(glyph_info)->GetTextDirection(); |
| 1470 | +} |
| 1471 | + |
1312 | 1472 | } // namespace impeller::interop
|
0 commit comments