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 static_assert(static_cast<TransformedWritingMode>(TopToBottomWritingMode
) == TransformedWritingMode::TopToBottomWritingMode |
| 466 && static_cast<TransformedWritingMode>(LeftToRightWritingMode) == Tr
ansformedWritingMode::LeftToRightWritingMode |
| 467 && static_cast<TransformedWritingMode>(RightToLeftWritingMode) == Tr
ansformedWritingMode::RightToLeftWritingMode, |
| 468 "WritingMode and TransformedWritingMode must match values."); |
| 469 return static_cast<TransformedWritingMode>(mode); |
| 470 } |
466 | 471 |
467 switch (mode) { | 472 switch (mode) { |
468 case TopToBottomWritingMode: | 473 case TopToBottomWritingMode: |
469 case BottomToTopWritingMode: | 474 return style()->isLeftToRightDirection() ? TransformedWritingMode::LeftT
oRightWritingMode : TransformedWritingMode::RightToLeftWritingMode; |
470 return style()->isLeftToRightDirection() ? LeftToRightWritingMode : Righ
tToLeftWritingMode; | |
471 case LeftToRightWritingMode: | 475 case LeftToRightWritingMode: |
472 case RightToLeftWritingMode: | 476 case RightToLeftWritingMode: |
473 return style()->isLeftToRightDirection() ? TopToBottomWritingMode : Bott
omToTopWritingMode; | 477 return style()->isLeftToRightDirection() ? TransformedWritingMode::TopTo
BottomWritingMode : TransformedWritingMode::BottomToTopWritingMode; |
474 } | 478 } |
475 ASSERT_NOT_REACHED(); | 479 ASSERT_NOT_REACHED(); |
476 return TopToBottomWritingMode; | 480 return TransformedWritingMode::TopToBottomWritingMode; |
477 } | 481 } |
478 | 482 |
479 LayoutUnit LayoutFlexibleBox::flowAwareBorderStart() const | 483 LayoutUnit LayoutFlexibleBox::flowAwareBorderStart() const |
480 { | 484 { |
481 if (isHorizontalFlow()) | 485 if (isHorizontalFlow()) |
482 return isLeftToRightFlow() ? borderLeft() : borderRight(); | 486 return isLeftToRightFlow() ? borderLeft() : borderRight(); |
483 return isLeftToRightFlow() ? borderTop() : borderBottom(); | 487 return isLeftToRightFlow() ? borderTop() : borderBottom(); |
484 } | 488 } |
485 | 489 |
486 LayoutUnit LayoutFlexibleBox::flowAwareBorderEnd() const | 490 LayoutUnit LayoutFlexibleBox::flowAwareBorderEnd() const |
487 { | 491 { |
488 if (isHorizontalFlow()) | 492 if (isHorizontalFlow()) |
489 return isLeftToRightFlow() ? borderRight() : borderLeft(); | 493 return isLeftToRightFlow() ? borderRight() : borderLeft(); |
490 return isLeftToRightFlow() ? borderBottom() : borderTop(); | 494 return isLeftToRightFlow() ? borderBottom() : borderTop(); |
491 } | 495 } |
492 | 496 |
493 LayoutUnit LayoutFlexibleBox::flowAwareBorderBefore() const | 497 LayoutUnit LayoutFlexibleBox::flowAwareBorderBefore() const |
494 { | 498 { |
495 switch (transformedWritingMode()) { | 499 switch (transformedWritingMode()) { |
496 case TopToBottomWritingMode: | 500 case TransformedWritingMode::TopToBottomWritingMode: |
497 return borderTop(); | 501 return borderTop(); |
498 case BottomToTopWritingMode: | 502 case TransformedWritingMode::BottomToTopWritingMode: |
499 return borderBottom(); | 503 return borderBottom(); |
500 case LeftToRightWritingMode: | 504 case TransformedWritingMode::LeftToRightWritingMode: |
501 return borderLeft(); | 505 return borderLeft(); |
502 case RightToLeftWritingMode: | 506 case TransformedWritingMode::RightToLeftWritingMode: |
503 return borderRight(); | 507 return borderRight(); |
504 } | 508 } |
505 ASSERT_NOT_REACHED(); | 509 ASSERT_NOT_REACHED(); |
506 return borderTop(); | 510 return borderTop(); |
507 } | 511 } |
508 | 512 |
509 LayoutUnit LayoutFlexibleBox::flowAwareBorderAfter() const | 513 LayoutUnit LayoutFlexibleBox::flowAwareBorderAfter() const |
510 { | 514 { |
511 switch (transformedWritingMode()) { | 515 switch (transformedWritingMode()) { |
512 case TopToBottomWritingMode: | 516 case TransformedWritingMode::TopToBottomWritingMode: |
513 return borderBottom(); | 517 return borderBottom(); |
514 case BottomToTopWritingMode: | 518 case TransformedWritingMode::BottomToTopWritingMode: |
515 return borderTop(); | 519 return borderTop(); |
516 case LeftToRightWritingMode: | 520 case TransformedWritingMode::LeftToRightWritingMode: |
517 return borderRight(); | 521 return borderRight(); |
518 case RightToLeftWritingMode: | 522 case TransformedWritingMode::RightToLeftWritingMode: |
519 return borderLeft(); | 523 return borderLeft(); |
520 } | 524 } |
521 ASSERT_NOT_REACHED(); | 525 ASSERT_NOT_REACHED(); |
522 return borderTop(); | 526 return borderTop(); |
523 } | 527 } |
524 | 528 |
525 LayoutUnit LayoutFlexibleBox::flowAwarePaddingStart() const | 529 LayoutUnit LayoutFlexibleBox::flowAwarePaddingStart() const |
526 { | 530 { |
527 if (isHorizontalFlow()) | 531 if (isHorizontalFlow()) |
528 return isLeftToRightFlow() ? paddingLeft() : paddingRight(); | 532 return isLeftToRightFlow() ? paddingLeft() : paddingRight(); |
529 return isLeftToRightFlow() ? paddingTop() : paddingBottom(); | 533 return isLeftToRightFlow() ? paddingTop() : paddingBottom(); |
530 } | 534 } |
531 | 535 |
532 LayoutUnit LayoutFlexibleBox::flowAwarePaddingEnd() const | 536 LayoutUnit LayoutFlexibleBox::flowAwarePaddingEnd() const |
533 { | 537 { |
534 if (isHorizontalFlow()) | 538 if (isHorizontalFlow()) |
535 return isLeftToRightFlow() ? paddingRight() : paddingLeft(); | 539 return isLeftToRightFlow() ? paddingRight() : paddingLeft(); |
536 return isLeftToRightFlow() ? paddingBottom() : paddingTop(); | 540 return isLeftToRightFlow() ? paddingBottom() : paddingTop(); |
537 } | 541 } |
538 | 542 |
539 LayoutUnit LayoutFlexibleBox::flowAwarePaddingBefore() const | 543 LayoutUnit LayoutFlexibleBox::flowAwarePaddingBefore() const |
540 { | 544 { |
541 switch (transformedWritingMode()) { | 545 switch (transformedWritingMode()) { |
542 case TopToBottomWritingMode: | 546 case TransformedWritingMode::TopToBottomWritingMode: |
543 return paddingTop(); | 547 return paddingTop(); |
544 case BottomToTopWritingMode: | 548 case TransformedWritingMode::BottomToTopWritingMode: |
545 return paddingBottom(); | 549 return paddingBottom(); |
546 case LeftToRightWritingMode: | 550 case TransformedWritingMode::LeftToRightWritingMode: |
547 return paddingLeft(); | 551 return paddingLeft(); |
548 case RightToLeftWritingMode: | 552 case TransformedWritingMode::RightToLeftWritingMode: |
549 return paddingRight(); | 553 return paddingRight(); |
550 } | 554 } |
551 ASSERT_NOT_REACHED(); | 555 ASSERT_NOT_REACHED(); |
552 return paddingTop(); | 556 return paddingTop(); |
553 } | 557 } |
554 | 558 |
555 LayoutUnit LayoutFlexibleBox::flowAwarePaddingAfter() const | 559 LayoutUnit LayoutFlexibleBox::flowAwarePaddingAfter() const |
556 { | 560 { |
557 switch (transformedWritingMode()) { | 561 switch (transformedWritingMode()) { |
558 case TopToBottomWritingMode: | 562 case TransformedWritingMode::TopToBottomWritingMode: |
559 return paddingBottom(); | 563 return paddingBottom(); |
560 case BottomToTopWritingMode: | 564 case TransformedWritingMode::BottomToTopWritingMode: |
561 return paddingTop(); | 565 return paddingTop(); |
562 case LeftToRightWritingMode: | 566 case TransformedWritingMode::LeftToRightWritingMode: |
563 return paddingRight(); | 567 return paddingRight(); |
564 case RightToLeftWritingMode: | 568 case TransformedWritingMode::RightToLeftWritingMode: |
565 return paddingLeft(); | 569 return paddingLeft(); |
566 } | 570 } |
567 ASSERT_NOT_REACHED(); | 571 ASSERT_NOT_REACHED(); |
568 return paddingTop(); | 572 return paddingTop(); |
569 } | 573 } |
570 | 574 |
571 LayoutUnit LayoutFlexibleBox::flowAwareMarginStartForChild(const LayoutBox& chil
d) const | 575 LayoutUnit LayoutFlexibleBox::flowAwareMarginStartForChild(const LayoutBox& chil
d) const |
572 { | 576 { |
573 if (isHorizontalFlow()) | 577 if (isHorizontalFlow()) |
574 return isLeftToRightFlow() ? child.marginLeft() : child.marginRight(); | 578 return isLeftToRightFlow() ? child.marginLeft() : child.marginRight(); |
575 return isLeftToRightFlow() ? child.marginTop() : child.marginBottom(); | 579 return isLeftToRightFlow() ? child.marginTop() : child.marginBottom(); |
576 } | 580 } |
577 | 581 |
578 LayoutUnit LayoutFlexibleBox::flowAwareMarginEndForChild(const LayoutBox& child)
const | 582 LayoutUnit LayoutFlexibleBox::flowAwareMarginEndForChild(const LayoutBox& child)
const |
579 { | 583 { |
580 if (isHorizontalFlow()) | 584 if (isHorizontalFlow()) |
581 return isLeftToRightFlow() ? child.marginRight() : child.marginLeft(); | 585 return isLeftToRightFlow() ? child.marginRight() : child.marginLeft(); |
582 return isLeftToRightFlow() ? child.marginBottom() : child.marginTop(); | 586 return isLeftToRightFlow() ? child.marginBottom() : child.marginTop(); |
583 } | 587 } |
584 | 588 |
585 LayoutUnit LayoutFlexibleBox::flowAwareMarginBeforeForChild(const LayoutBox& chi
ld) const | 589 LayoutUnit LayoutFlexibleBox::flowAwareMarginBeforeForChild(const LayoutBox& chi
ld) const |
586 { | 590 { |
587 switch (transformedWritingMode()) { | 591 switch (transformedWritingMode()) { |
588 case TopToBottomWritingMode: | 592 case TransformedWritingMode::TopToBottomWritingMode: |
589 return child.marginTop(); | 593 return child.marginTop(); |
590 case BottomToTopWritingMode: | 594 case TransformedWritingMode::BottomToTopWritingMode: |
591 return child.marginBottom(); | 595 return child.marginBottom(); |
592 case LeftToRightWritingMode: | 596 case TransformedWritingMode::LeftToRightWritingMode: |
593 return child.marginLeft(); | 597 return child.marginLeft(); |
594 case RightToLeftWritingMode: | 598 case TransformedWritingMode::RightToLeftWritingMode: |
595 return child.marginRight(); | 599 return child.marginRight(); |
596 } | 600 } |
597 ASSERT_NOT_REACHED(); | 601 ASSERT_NOT_REACHED(); |
598 return marginTop(); | 602 return marginTop(); |
599 } | 603 } |
600 | 604 |
601 LayoutUnit LayoutFlexibleBox::crossAxisMarginExtentForChild(const LayoutBox& chi
ld) const | 605 LayoutUnit LayoutFlexibleBox::crossAxisMarginExtentForChild(const LayoutBox& chi
ld) const |
602 { | 606 { |
603 return isHorizontalFlow() ? child.marginHeight() : child.marginWidth(); | 607 return isHorizontalFlow() ? child.marginHeight() : child.marginWidth(); |
604 } | 608 } |
(...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1518 ASSERT(child); | 1522 ASSERT(child); |
1519 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE
xtent; | 1523 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE
xtent; |
1520 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset
- crossAxisStartEdge; | 1524 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset
- crossAxisStartEdge; |
1521 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi
sExtent; | 1525 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi
sExtent; |
1522 adjustAlignmentForChild(*child, newOffset - originalOffset); | 1526 adjustAlignmentForChild(*child, newOffset - originalOffset); |
1523 } | 1527 } |
1524 } | 1528 } |
1525 } | 1529 } |
1526 | 1530 |
1527 } | 1531 } |
OLD | NEW |