Chromium Code Reviews| 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 |