1/* 2 * Copyright (c) 2012, Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31#include "config.h" 32#include "platform/LengthBox.h" 33 34namespace blink { 35 36const Length& LengthBox::logicalLeft(WritingMode writingMode) const 37{ 38 return isHorizontalWritingMode(writingMode) ? m_left : m_top; 39} 40 41const Length& LengthBox::logicalRight(WritingMode writingMode) const 42{ 43 return isHorizontalWritingMode(writingMode) ? m_right : m_bottom; 44} 45 46const Length& LengthBox::before(WritingMode writingMode) const 47{ 48 switch (writingMode) { 49 case TopToBottomWritingMode: 50 return m_top; 51 case BottomToTopWritingMode: 52 return m_bottom; 53 case LeftToRightWritingMode: 54 return m_left; 55 case RightToLeftWritingMode: 56 return m_right; 57 } 58 ASSERT_NOT_REACHED(); 59 return m_top; 60} 61 62const Length& LengthBox::after(WritingMode writingMode) const 63{ 64 switch (writingMode) { 65 case TopToBottomWritingMode: 66 return m_bottom; 67 case BottomToTopWritingMode: 68 return m_top; 69 case LeftToRightWritingMode: 70 return m_right; 71 case RightToLeftWritingMode: 72 return m_left; 73 } 74 ASSERT_NOT_REACHED(); 75 return m_bottom; 76} 77 78const Length& LengthBox::start(WritingMode writingMode, TextDirection direction) const 79{ 80 if (isHorizontalWritingMode(writingMode)) 81 return isLeftToRightDirection(direction) ? m_left : m_right; 82 return isLeftToRightDirection(direction) ? m_top : m_bottom; 83} 84 85const Length& LengthBox::end(WritingMode writingMode, TextDirection direction) const 86{ 87 if (isHorizontalWritingMode(writingMode)) 88 return isLeftToRightDirection(direction) ? m_right : m_left; 89 return isLeftToRightDirection(direction) ? m_bottom : m_top; 90} 91 92} // namespace blink 93