File indexing completed on 2024-12-01 13:11:43
0001 /* 0002 * Copyright (c) 2010 Carlos Licea <carlos@kdab.com> 0003 * 0004 * This library is free software; you can redistribute it and/or modify 0005 * it under the terms of the GNU Lesser General Public License as published 0006 * by the Free Software Foundation; either version 2.1 of the License, or 0007 * (at your option) any later version. 0008 * 0009 * This library is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 * GNU Lesser General Public License for more details. 0013 * 0014 * You should have received a copy of the GNU Lesser General Public License 0015 * along with this program; if not, write to the Free Software 0016 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0017 */ 0018 0019 #include "KoCellStyle.h" 0020 #include <KoGenStyle.h> 0021 #include <KoGenStyles.h> 0022 0023 namespace { 0024 QString prefix = "cell"; 0025 const char familyName[] = "table-cell"; 0026 } 0027 0028 KOSTYLE_DECLARE_SHARED_POINTER_IMPL(KoCellStyle) 0029 0030 KoCellStyle::KoCellStyle() 0031 : KoStyle() 0032 , m_borders(new KoBorder) 0033 , m_backgroundColor() 0034 , m_backgroundOpacity(0.0) 0035 , m_leftPadding(0.0) 0036 , m_topPadding(0.0) 0037 , m_rightPadding(0.0) 0038 , m_bottomPadding(0.0) 0039 , m_verticalAlign("") 0040 , m_glyphOrientation(true) 0041 { 0042 } 0043 0044 KoCellStyle::~KoCellStyle() 0045 { 0046 delete m_borders; 0047 } 0048 0049 KoBorder* KoCellStyle::borders() 0050 { 0051 return m_borders; 0052 } 0053 0054 QString KoCellStyle::defaultPrefix() const 0055 { 0056 return prefix; 0057 } 0058 0059 KoGenStyle::Type KoCellStyle::styleType() const 0060 { 0061 return KoGenStyle::TableCellStyle; 0062 } 0063 0064 KoGenStyle::Type KoCellStyle::automaticstyleType() const 0065 { 0066 return KoGenStyle::TableCellAutoStyle; 0067 } 0068 0069 const char* KoCellStyle::styleFamilyName() const 0070 { 0071 return familyName; 0072 } 0073 0074 QColor KoCellStyle::backgroundColor() const 0075 { 0076 return m_backgroundColor; 0077 } 0078 0079 void KoCellStyle::setBackgroundColor(const QColor& color) 0080 { 0081 m_backgroundColor = color; 0082 } 0083 0084 void KoCellStyle::setBackgroundOpacity(qreal opacity) 0085 { 0086 m_backgroundOpacity = opacity; 0087 } 0088 0089 qreal KoCellStyle::backgroundOpacity() const 0090 { 0091 return m_backgroundOpacity; 0092 } 0093 0094 qreal KoCellStyle::topPadding() const 0095 { 0096 return m_topPadding; 0097 } 0098 0099 void KoCellStyle::setTopPadding(qreal padding) 0100 { 0101 m_topPadding = padding; 0102 } 0103 0104 qreal KoCellStyle::bottomPadding() const 0105 { 0106 return m_bottomPadding; 0107 } 0108 0109 void KoCellStyle::setBottomPadding(qreal padding) 0110 { 0111 m_bottomPadding = padding; 0112 } 0113 0114 qreal KoCellStyle::leftPadding() const 0115 { 0116 return m_leftPadding; 0117 } 0118 0119 void KoCellStyle::setLeftPadding(qreal padding) 0120 { 0121 m_leftPadding = padding; 0122 } 0123 0124 qreal KoCellStyle::rightPadding() const 0125 { 0126 return m_rightPadding; 0127 } 0128 0129 void KoCellStyle::setRightPadding(qreal padding) 0130 { 0131 m_rightPadding = padding; 0132 } 0133 0134 QString KoCellStyle::verticalAlign() const 0135 { 0136 return m_verticalAlign; 0137 } 0138 0139 void KoCellStyle::setVerticalAlign(const QString& align) 0140 { 0141 m_verticalAlign = align; 0142 } 0143 0144 bool KoCellStyle::glyphOrientation() const 0145 { 0146 return m_glyphOrientation; 0147 } 0148 0149 void KoCellStyle::setGlyphOrientation(bool orientation) 0150 { 0151 m_glyphOrientation = orientation; 0152 } 0153 0154 KoGenStyle KoCellStyle::styleProperties() const 0155 { 0156 return m_styleProperties; 0157 } 0158 0159 void KoCellStyle::setTextStyle(const KoGenStyle& style) 0160 { 0161 KoGenStyle::copyPropertiesFromStyle(style, m_styleProperties, KoGenStyle::TextType); 0162 } 0163 0164 void KoCellStyle::setParagraphStyle(const KoGenStyle& style) 0165 { 0166 KoGenStyle::copyPropertiesFromStyle(style, m_styleProperties, KoGenStyle::ParagraphType); 0167 } 0168 0169 void KoCellStyle::prepareStyle( KoGenStyle& style ) const 0170 { 0171 m_borders->saveOdf(style); 0172 if (m_backgroundColor.isValid()) { 0173 style.addProperty("fo:background-color", m_backgroundColor.name()); 0174 } 0175 if (m_backgroundOpacity != 0.0) { 0176 style.addProperty("draw:opacity", QString("%1%").arg(m_backgroundOpacity), KoGenStyle::GraphicType); 0177 } 0178 if(m_leftPadding != 0) { 0179 style.addPropertyPt("fo:padding-left", m_leftPadding); 0180 } 0181 if(m_topPadding != 0) { 0182 style.addPropertyPt("fo:padding-top", m_topPadding); 0183 } 0184 if(m_rightPadding != 0) { 0185 style.addPropertyPt("fo:padding-right", m_rightPadding); 0186 } 0187 if(m_bottomPadding != 0) { 0188 style.addPropertyPt("fo:padding-bottom", m_bottomPadding); 0189 } 0190 if (!m_verticalAlign.isEmpty()) { 0191 style.addProperty("style:vertical-align", m_verticalAlign); 0192 } 0193 if (!m_glyphOrientation) { 0194 style.addProperty("style:glyph-orientation-vertical", "0"); 0195 } 0196 KoGenStyle::copyPropertiesFromStyle(m_styleProperties, style, KoGenStyle::ParagraphType); 0197 KoGenStyle::copyPropertiesFromStyle(m_styleProperties, style, KoGenStyle::TextType); 0198 }