18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (C) 2000 Antti Koivisto (koivisto@kde.org) 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (C) 2000 Dirk Mueller (mueller@kde.org) 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef BorderData_h 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define BorderData_h 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "BorderValue.h" 29ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch#include "IntRect.h" 305ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "LengthSize.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "NinePieceImage.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass BorderData { 36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockfriend class RenderStyle; 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 385ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen BorderData() : m_topLeft(Length(0, Fixed), Length(0, Fixed)) 395ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen , m_topRight(Length(0, Fixed), Length(0, Fixed)) 405ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen , m_bottomLeft(Length(0, Fixed), Length(0, Fixed)) 415ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen , m_bottomRight(Length(0, Fixed), Length(0, Fixed)) 425ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen { 435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen } 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool hasBorder() const 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool haveImage = m_image.hasImage(); 47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_left.nonZero(!haveImage) || m_right.nonZero(!haveImage) || m_top.nonZero(!haveImage) || m_bottom.nonZero(!haveImage); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool hasBorderRadius() const 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 522bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!m_topLeft.width().isZero()) 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 542bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!m_topRight.width().isZero()) 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 562bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!m_bottomLeft.width().isZero()) 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 582bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!m_bottomRight.width().isZero()) 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned short borderLeftWidth() const 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!m_image.hasImage() && (m_left.style() == BNONE || m_left.style() == BHIDDEN)) 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_left.width(); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned short borderRightWidth() const 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!m_image.hasImage() && (m_right.style() == BNONE || m_right.style() == BHIDDEN)) 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_right.width(); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned short borderTopWidth() const 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!m_image.hasImage() && (m_top.style() == BNONE || m_top.style() == BHIDDEN)) 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_top.width(); 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned short borderBottomWidth() const 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!m_image.hasImage() && (m_bottom.style() == BNONE || m_bottom.style() == BHIDDEN)) 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_bottom.width(); 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool operator==(const BorderData& o) const 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_left == o.m_left && m_right == o.m_right && m_top == o.m_top && m_bottom == o.m_bottom && m_image == o.m_image 94dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block && m_topLeft == o.m_topLeft && m_topRight == o.m_topRight && m_bottomLeft == o.m_bottomLeft && m_bottomRight == o.m_bottomRight; 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool operator!=(const BorderData& o) const 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return !(*this == o); 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 101dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const BorderValue& left() const { return m_left; } 103dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const BorderValue& right() const { return m_right; } 104dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const BorderValue& top() const { return m_top; } 105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const BorderValue& bottom() const { return m_bottom; } 106dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 107dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const NinePieceImage& image() const { return m_image; } 108dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1095ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen const LengthSize& topLeft() const { return m_topLeft; } 1105ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen const LengthSize& topRight() const { return m_topRight; } 1115ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen const LengthSize& bottomLeft() const { return m_bottomLeft; } 1125ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen const LengthSize& bottomRight() const { return m_bottomRight; } 113ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 114dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprivate: 115dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block BorderValue m_left; 116dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block BorderValue m_right; 117dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block BorderValue m_top; 118dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block BorderValue m_bottom; 119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 120dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block NinePieceImage m_image; 121dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1225ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen LengthSize m_topLeft; 1235ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen LengthSize m_topRight; 1245ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen LengthSize m_bottomLeft; 1255ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen LengthSize m_bottomRight; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // BorderData_h 131