MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / PiuStyleOverride

Function PiuStyleOverride

modules/piu/All/piuStyle.c:420–494  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

418}
419
420void PiuStyleOverride(PiuStyle* self, PiuStyle* result)
421{
422 PiuFlags flags = (*self)->flags;
423
424 if (flags & piuStyleCondensed) {
425 if (flags & piuStyleCondensedBit)
426 (*result)->flags |= piuStyleCondensedBit;
427 else
428 (*result)->flags &= ~piuStyleCondensedBit;
429 }
430 if (flags & piuStyleItalic) {
431 if (flags & piuStyleItalicBit)
432 (*result)->flags |= piuStyleItalicBit;
433 else
434 (*result)->flags &= ~piuStyleItalicBit;
435 }
436 if (flags & piuStyleFamily) {
437 (*result)->archive = (*self)->archive;
438 (*result)->family = (*self)->family;
439 }
440 if (flags & piuStyleAbsoluteSize)
441 (*result)->size = (*self)->size;
442 else if (flags & piuStylePercentageSize) {
443 int32_t size = ((int32_t)((*result)->size) * (int32_t)((*self)->size)) / 100;
444 if (size < 0) size = 0;
445 else if (size > 0x7FFF) size = 0x7FFF;
446 (*result)->size = (int16_t)size;
447 }
448 else if (flags & piuStyleRelativeSize) {
449 const PiuStyleBuilder* builder;
450 for (builder = piuStyleSizeBuilders; builder->name; builder++) {
451 if ((*result)->size == (int16_t)builder->value) {
452 builder += (*self)->size;
453 if ((piuStyleSizeBuilders < builder) && (builder->name))
454 (*result)->size = (int16_t)builder->value;
455 break;
456 }
457 }
458 }
459 if (flags & piuStyleAbsoluteWeight)
460 (*result)->weight = (*self)->weight;
461 else if (flags & piuStyleRelativeWeight) {
462 int16_t weight = (*result)->weight + (*self)->weight;
463 if (weight < 1) weight = 1;
464 else if (weight > 9) weight = 0;
465 }
466 if (flags & piuStyleHorizontal)
467 (*result)->horizontal = (*self)->horizontal;
468 if (flags & piuStyleVertical)
469 (*result)->vertical = (*self)->vertical;
470 if (flags & piuStyleIndentation)
471 (*result)->indentation = (*self)->indentation;
472 if (flags & piuStyleLeading)
473 (*result)->leading = (*self)->leading;
474 if (flags & piuStyleMarginLeft)
475 (*result)->margins.left = (*self)->margins.left;
476 if (flags & piuStyleMarginTop)
477 (*result)->margins.top = (*self)->margins.top;

Callers 1

PiuStyleLinkComputeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected