[Webkit-unassigned] [Bug 218093] [css-logical] Implement logical border-radius

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Dec 20 07:14:23 PST 2020


https://bugs.webkit.org/show_bug.cgi?id=218093

--- Comment #35 from Oriol Brufau <obrufau at igalia.com> ---
Comment on attachment 416519
  --> https://bugs.webkit.org/attachment.cgi?id=416519
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=416519&action=review

> Source/WebCore/platform/text/WritingMode.h:183
> +inline BoxCorner mapLogicalCornerToPhysicalCorner(TextFlow textflow, WritingMode writingMode, LogicalBoxCorner logicalBoxCorner)

I guess this function should be marked constexpr, like the others.

And it seems strange to pass both TextFlow and WritingMode as arguments.
I would pass the TextFlow only, though you may need a new isFlippedLinesTextFlow function.

> Source/WebCore/platform/text/WritingMode.h:185
> +    BoxCorner physicalCorner = static_cast<BoxCorner>(logicalBoxCorner);

physicalCorner doesn't seem necessary.

> Source/WebCore/platform/text/WritingMode.h:186
> +    switch (logicalBoxCorner) {

This switch seems very long. I think you can simplify the cases as such:

    switch (logicalBoxCorner) {
    case LogicalBoxCorner::StartStart:
        if (isFlippedTextFlow(textflow)) {
            if (isReversedTextFlow(textflow))
                return BoxCorner::BottomRight;
        } else if (!isReversedTextFlow(textflow)) {
           return BoxCorner::TopLeft;
        }
        if (isFlippedLinesTextFlow(textflow))
            return BoxCorner::BottomLeft;
        return BoxCorner::TopRight;
    case LogicalBoxCorner::StartEnd:
        if (isFlippedTextFlow(textflow)) {
            if (!isReversedTextFlow(textflow))
                return BoxCorner::BottomRight;
        } else if (isReversedTextFlow(textflow)) {
            return BoxCorner::TopLeft;
        }
        if (isFlippedLinesTextFlow(textflow))
            return BoxCorner::BottomLeft;
        return BoxCorner::TopRight;
    case LogicalBoxCorner::EndStart:
        if (isFlippedTextFlow(textflow)) {
            if (!isReversedTextFlow(textflow))
                return BoxCorner::TopLeft;
        } else if (isReversedTextFlow(textflow)) {
            return BoxCorner::BottomRight;
        }
        if (isFlippedLinesTextFlow(textflow))
            return BoxCorner::TopRight;
        return BoxCorner::BottomLeft;
    case LogicalBoxCorner::EndEnd:
        if (isFlippedTextFlow(textflow)) {
            if (isReversedTextFlow(textflow))
                return BoxCorner::TopLeft;
        } else if (!isReversedTextFlow(textflow)) {
           return BoxCorner::BottomRight;
        }
        if (isFlippedLinesTextFlow(textflow))
            return BoxCorner::TopRight;
        return BoxCorner::BottomLeft;
    }


Or even remove the switch and use

    bool isBlockStart = logicalBoxCorner == LogicalBoxCorner::StartStart || logicalBoxCorner == LogicalBoxCorner::StartEnd;
    bool isInlineStart = logicalBoxCorner == LogicalBoxCorner::StartStart || logicalBoxCorner == LogicalBoxCorner::EndStart;
    if (isBlockStart == isFlippedTextFlow(textflow)) {
        if (isInlineStart == isReversedTextFlow(textflow))
            return BoxCorner::BottomRight;
    } else if (isInlineStart != isReversedTextFlow(textflow)) {
       return BoxCorner::TopLeft;
    }
    if (isBlockStart == isFlippedLinesTextFlow(textflow))
        return BoxCorner::BottomLeft;
    return BoxCorner::TopRight;

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20201220/d5dea514/attachment.htm>


More information about the webkit-unassigned mailing list