420 {
422
423
424
425
426
427
428
429 auto test = [&](
SkTypeface* typeface,
const Axis* expected,
int expectedCount,
430 int alsoAcceptedAxisTagCount)
431 {
432 if (!typeface) {
433 return;
434 }
435
437 if (actualCount == -1) {
438 return;
439 }
441 actualCount == alsoAcceptedAxisTagCount);
442
443 std::unique_ptr<Axis[]> actual(new Axis[actualCount]);
445 if (actualCount == -1) {
446 return;
447 }
449 actualCount == alsoAcceptedAxisTagCount);
450
451
452 std::unique_ptr<bool[]> expectedUsed(new bool[expectedCount]());
453 for (int actualIdx = 0; actualIdx < actualCount; ++actualIdx) {
454 bool actualFound = false;
455 for (int expectedIdx = 0; expectedIdx < expectedCount; ++expectedIdx) {
456 if (expectedUsed[expectedIdx]) {
457 continue;
458 }
459
460 if (actual[actualIdx].tag != expected[expectedIdx].tag) {
461 continue;
462 }
463
464
467 if (!(
SkTAbs(fixedActualMin - fixedExpectedMin) < 2)) {
468 continue;
469 }
470
473 if (!(
SkTAbs(fixedActualMax - fixedExpectedMax) < 2)) {
474 continue;
475 }
476
479 if (!(
SkTAbs(fixedActualDefault - fixedExpectedDefault) < 2)) {
480 continue;
481 }
482
483
484
485 if (actual[actualIdx].isHidden() &&
486 actual[actualIdx].isHidden() != expected[expectedIdx].isHidden())
487 {
488 continue;
489 }
490
491
492 actualFound = true;
493 expectedUsed[expectedIdx] = true;
494 break;
495 }
497 "Actual axis '%c%c%c%c' with min %f max %f default %f hidden %s not expected",
498 (char)((actual[actualIdx].tag >> 24) & 0xFF),
499 (char)((actual[actualIdx].tag >> 16) & 0xFF),
500 (char)((actual[actualIdx].tag >> 8) & 0xFF),
501 (char)((actual[actualIdx].tag ) & 0xFF),
502 actual[actualIdx].
min,
503 actual[actualIdx].def,
504 actual[actualIdx].
max,
505 actual[actualIdx].isHidden() ? "true" : "false");
506 }
507 };
508
510
511
512 {
514 if (!variable) {
516 return;
517 }
518 constexpr Axis expected[] = {
521 };
523 test(typeface.
get(), &expected[0], std::size(expected), -1);
524 }
525
526
527 {
529 if (!dupTags) {
531 return;
532 }
533
534
535
536 constexpr Axis expected[] = {
539 };
541 test(typeface.
get(), &expected[0], std::size(expected), 1);
542 }
543
544
545 {
547 if (!distortable) {
549 return;
550 }
551 constexpr Axis expected[] = {
553 };
555 test(typeface.
get(), &expected[0], std::size(expected), -1);
556 }
557}
int getVariationDesignParameters(SkFontParameters::Variation::Axis parameters[], int parameterCount) const
static float max(float r, float g, float b)
static float min(float r, float g, float b)