OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
451 LayoutUnit borderAndPadding = child.borderAndPaddingLogicalWidth(); | 451 LayoutUnit borderAndPadding = child.borderAndPaddingLogicalWidth(); |
452 if (child.styleRef().logicalWidth().isAuto()) { | 452 if (child.styleRef().logicalWidth().isAuto()) { |
453 if (size.type() == MinContent) | 453 if (size.type() == MinContent) |
454 return child.minPreferredLogicalWidth() - borderAndPadding; | 454 return child.minPreferredLogicalWidth() - borderAndPadding; |
455 if (size.type() == MaxContent) | 455 if (size.type() == MaxContent) |
456 return child.maxPreferredLogicalWidth() - borderAndPadding; | 456 return child.maxPreferredLogicalWidth() - borderAndPadding; |
457 } | 457 } |
458 return child.computeLogicalWidthUsing(sizeType, size, contentLogicalWidth(), this) - borderAndPadding; | 458 return child.computeLogicalWidthUsing(sizeType, size, contentLogicalWidth(), this) - borderAndPadding; |
459 } | 459 } |
460 | 460 |
461 WritingMode LayoutFlexibleBox::transformedWritingMode() const | 461 LayoutFlexibleBox::TransformedWritingMode LayoutFlexibleBox::transformedWritingM ode() const |
462 { | 462 { |
463 WritingMode mode = style()->writingMode(); | 463 WritingMode mode = style()->writingMode(); |
464 if (!isColumnFlow()) | 464 if (!isColumnFlow()) |
465 return mode; | 465 return static_cast<TransformedWritingMode>(mode); |
cbiesinger
2015/10/30 19:11:02
That seems a little scary, maybe add some COMPILE_
kojii
2015/11/01 06:58:55
Added static_assert, thank you for the advice.
| |
466 | 466 |
467 switch (mode) { | 467 switch (mode) { |
468 case TopToBottomWritingMode: | 468 case TopToBottomWritingMode: |
469 case BottomToTopWritingMode: | 469 return style()->isLeftToRightDirection() ? TransformedWritingMode::LeftT oRightWritingMode : TransformedWritingMode::RightToLeftWritingMode; |
470 return style()->isLeftToRightDirection() ? LeftToRightWritingMode : Righ tToLeftWritingMode; | |
471 case LeftToRightWritingMode: | 470 case LeftToRightWritingMode: |
472 case RightToLeftWritingMode: | 471 case RightToLeftWritingMode: |
473 return style()->isLeftToRightDirection() ? TopToBottomWritingMode : Bott omToTopWritingMode; | 472 return style()->isLeftToRightDirection() ? TransformedWritingMode::TopTo BottomWritingMode : TransformedWritingMode::BottomToTopWritingMode; |
474 } | 473 } |
475 ASSERT_NOT_REACHED(); | 474 ASSERT_NOT_REACHED(); |
476 return TopToBottomWritingMode; | 475 return TransformedWritingMode::TopToBottomWritingMode; |
477 } | 476 } |
478 | 477 |
479 LayoutUnit LayoutFlexibleBox::flowAwareBorderStart() const | 478 LayoutUnit LayoutFlexibleBox::flowAwareBorderStart() const |
480 { | 479 { |
481 if (isHorizontalFlow()) | 480 if (isHorizontalFlow()) |
482 return isLeftToRightFlow() ? borderLeft() : borderRight(); | 481 return isLeftToRightFlow() ? borderLeft() : borderRight(); |
483 return isLeftToRightFlow() ? borderTop() : borderBottom(); | 482 return isLeftToRightFlow() ? borderTop() : borderBottom(); |
484 } | 483 } |
485 | 484 |
486 LayoutUnit LayoutFlexibleBox::flowAwareBorderEnd() const | 485 LayoutUnit LayoutFlexibleBox::flowAwareBorderEnd() const |
487 { | 486 { |
488 if (isHorizontalFlow()) | 487 if (isHorizontalFlow()) |
489 return isLeftToRightFlow() ? borderRight() : borderLeft(); | 488 return isLeftToRightFlow() ? borderRight() : borderLeft(); |
490 return isLeftToRightFlow() ? borderBottom() : borderTop(); | 489 return isLeftToRightFlow() ? borderBottom() : borderTop(); |
491 } | 490 } |
492 | 491 |
493 LayoutUnit LayoutFlexibleBox::flowAwareBorderBefore() const | 492 LayoutUnit LayoutFlexibleBox::flowAwareBorderBefore() const |
494 { | 493 { |
495 switch (transformedWritingMode()) { | 494 switch (transformedWritingMode()) { |
496 case TopToBottomWritingMode: | 495 case TransformedWritingMode::TopToBottomWritingMode: |
497 return borderTop(); | 496 return borderTop(); |
498 case BottomToTopWritingMode: | 497 case TransformedWritingMode::BottomToTopWritingMode: |
499 return borderBottom(); | 498 return borderBottom(); |
500 case LeftToRightWritingMode: | 499 case TransformedWritingMode::LeftToRightWritingMode: |
501 return borderLeft(); | 500 return borderLeft(); |
502 case RightToLeftWritingMode: | 501 case TransformedWritingMode::RightToLeftWritingMode: |
503 return borderRight(); | 502 return borderRight(); |
504 } | 503 } |
505 ASSERT_NOT_REACHED(); | 504 ASSERT_NOT_REACHED(); |
506 return borderTop(); | 505 return borderTop(); |
507 } | 506 } |
508 | 507 |
509 LayoutUnit LayoutFlexibleBox::flowAwareBorderAfter() const | 508 LayoutUnit LayoutFlexibleBox::flowAwareBorderAfter() const |
510 { | 509 { |
511 switch (transformedWritingMode()) { | 510 switch (transformedWritingMode()) { |
512 case TopToBottomWritingMode: | 511 case TransformedWritingMode::TopToBottomWritingMode: |
513 return borderBottom(); | 512 return borderBottom(); |
514 case BottomToTopWritingMode: | 513 case TransformedWritingMode::BottomToTopWritingMode: |
515 return borderTop(); | 514 return borderTop(); |
516 case LeftToRightWritingMode: | 515 case TransformedWritingMode::LeftToRightWritingMode: |
517 return borderRight(); | 516 return borderRight(); |
518 case RightToLeftWritingMode: | 517 case TransformedWritingMode::RightToLeftWritingMode: |
519 return borderLeft(); | 518 return borderLeft(); |
520 } | 519 } |
521 ASSERT_NOT_REACHED(); | 520 ASSERT_NOT_REACHED(); |
522 return borderTop(); | 521 return borderTop(); |
523 } | 522 } |
524 | 523 |
525 LayoutUnit LayoutFlexibleBox::flowAwarePaddingStart() const | 524 LayoutUnit LayoutFlexibleBox::flowAwarePaddingStart() const |
526 { | 525 { |
527 if (isHorizontalFlow()) | 526 if (isHorizontalFlow()) |
528 return isLeftToRightFlow() ? paddingLeft() : paddingRight(); | 527 return isLeftToRightFlow() ? paddingLeft() : paddingRight(); |
529 return isLeftToRightFlow() ? paddingTop() : paddingBottom(); | 528 return isLeftToRightFlow() ? paddingTop() : paddingBottom(); |
530 } | 529 } |
531 | 530 |
532 LayoutUnit LayoutFlexibleBox::flowAwarePaddingEnd() const | 531 LayoutUnit LayoutFlexibleBox::flowAwarePaddingEnd() const |
533 { | 532 { |
534 if (isHorizontalFlow()) | 533 if (isHorizontalFlow()) |
535 return isLeftToRightFlow() ? paddingRight() : paddingLeft(); | 534 return isLeftToRightFlow() ? paddingRight() : paddingLeft(); |
536 return isLeftToRightFlow() ? paddingBottom() : paddingTop(); | 535 return isLeftToRightFlow() ? paddingBottom() : paddingTop(); |
537 } | 536 } |
538 | 537 |
539 LayoutUnit LayoutFlexibleBox::flowAwarePaddingBefore() const | 538 LayoutUnit LayoutFlexibleBox::flowAwarePaddingBefore() const |
540 { | 539 { |
541 switch (transformedWritingMode()) { | 540 switch (transformedWritingMode()) { |
542 case TopToBottomWritingMode: | 541 case TransformedWritingMode::TopToBottomWritingMode: |
543 return paddingTop(); | 542 return paddingTop(); |
544 case BottomToTopWritingMode: | 543 case TransformedWritingMode::BottomToTopWritingMode: |
545 return paddingBottom(); | 544 return paddingBottom(); |
546 case LeftToRightWritingMode: | 545 case TransformedWritingMode::LeftToRightWritingMode: |
547 return paddingLeft(); | 546 return paddingLeft(); |
548 case RightToLeftWritingMode: | 547 case TransformedWritingMode::RightToLeftWritingMode: |
549 return paddingRight(); | 548 return paddingRight(); |
550 } | 549 } |
551 ASSERT_NOT_REACHED(); | 550 ASSERT_NOT_REACHED(); |
552 return paddingTop(); | 551 return paddingTop(); |
553 } | 552 } |
554 | 553 |
555 LayoutUnit LayoutFlexibleBox::flowAwarePaddingAfter() const | 554 LayoutUnit LayoutFlexibleBox::flowAwarePaddingAfter() const |
556 { | 555 { |
557 switch (transformedWritingMode()) { | 556 switch (transformedWritingMode()) { |
558 case TopToBottomWritingMode: | 557 case TransformedWritingMode::TopToBottomWritingMode: |
559 return paddingBottom(); | 558 return paddingBottom(); |
560 case BottomToTopWritingMode: | 559 case TransformedWritingMode::BottomToTopWritingMode: |
561 return paddingTop(); | 560 return paddingTop(); |
562 case LeftToRightWritingMode: | 561 case TransformedWritingMode::LeftToRightWritingMode: |
563 return paddingRight(); | 562 return paddingRight(); |
564 case RightToLeftWritingMode: | 563 case TransformedWritingMode::RightToLeftWritingMode: |
565 return paddingLeft(); | 564 return paddingLeft(); |
566 } | 565 } |
567 ASSERT_NOT_REACHED(); | 566 ASSERT_NOT_REACHED(); |
568 return paddingTop(); | 567 return paddingTop(); |
569 } | 568 } |
570 | 569 |
571 LayoutUnit LayoutFlexibleBox::flowAwareMarginStartForChild(const LayoutBox& chil d) const | 570 LayoutUnit LayoutFlexibleBox::flowAwareMarginStartForChild(const LayoutBox& chil d) const |
572 { | 571 { |
573 if (isHorizontalFlow()) | 572 if (isHorizontalFlow()) |
574 return isLeftToRightFlow() ? child.marginLeft() : child.marginRight(); | 573 return isLeftToRightFlow() ? child.marginLeft() : child.marginRight(); |
575 return isLeftToRightFlow() ? child.marginTop() : child.marginBottom(); | 574 return isLeftToRightFlow() ? child.marginTop() : child.marginBottom(); |
576 } | 575 } |
577 | 576 |
578 LayoutUnit LayoutFlexibleBox::flowAwareMarginEndForChild(const LayoutBox& child) const | 577 LayoutUnit LayoutFlexibleBox::flowAwareMarginEndForChild(const LayoutBox& child) const |
579 { | 578 { |
580 if (isHorizontalFlow()) | 579 if (isHorizontalFlow()) |
581 return isLeftToRightFlow() ? child.marginRight() : child.marginLeft(); | 580 return isLeftToRightFlow() ? child.marginRight() : child.marginLeft(); |
582 return isLeftToRightFlow() ? child.marginBottom() : child.marginTop(); | 581 return isLeftToRightFlow() ? child.marginBottom() : child.marginTop(); |
583 } | 582 } |
584 | 583 |
585 LayoutUnit LayoutFlexibleBox::flowAwareMarginBeforeForChild(const LayoutBox& chi ld) const | 584 LayoutUnit LayoutFlexibleBox::flowAwareMarginBeforeForChild(const LayoutBox& chi ld) const |
586 { | 585 { |
587 switch (transformedWritingMode()) { | 586 switch (transformedWritingMode()) { |
588 case TopToBottomWritingMode: | 587 case TransformedWritingMode::TopToBottomWritingMode: |
589 return child.marginTop(); | 588 return child.marginTop(); |
590 case BottomToTopWritingMode: | 589 case TransformedWritingMode::BottomToTopWritingMode: |
591 return child.marginBottom(); | 590 return child.marginBottom(); |
592 case LeftToRightWritingMode: | 591 case TransformedWritingMode::LeftToRightWritingMode: |
593 return child.marginLeft(); | 592 return child.marginLeft(); |
594 case RightToLeftWritingMode: | 593 case TransformedWritingMode::RightToLeftWritingMode: |
595 return child.marginRight(); | 594 return child.marginRight(); |
596 } | 595 } |
597 ASSERT_NOT_REACHED(); | 596 ASSERT_NOT_REACHED(); |
598 return marginTop(); | 597 return marginTop(); |
599 } | 598 } |
600 | 599 |
601 LayoutUnit LayoutFlexibleBox::crossAxisMarginExtentForChild(const LayoutBox& chi ld) const | 600 LayoutUnit LayoutFlexibleBox::crossAxisMarginExtentForChild(const LayoutBox& chi ld) const |
602 { | 601 { |
603 return isHorizontalFlow() ? child.marginHeight() : child.marginWidth(); | 602 return isHorizontalFlow() ? child.marginHeight() : child.marginWidth(); |
604 } | 603 } |
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1518 ASSERT(child); | 1517 ASSERT(child); |
1519 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent; | 1518 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent; |
1520 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge; | 1519 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge; |
1521 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent; | 1520 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent; |
1522 adjustAlignmentForChild(*child, newOffset - originalOffset); | 1521 adjustAlignmentForChild(*child, newOffset - originalOffset); |
1523 } | 1522 } |
1524 } | 1523 } |
1525 } | 1524 } |
1526 | 1525 |
1527 } | 1526 } |
OLD | NEW |