Kate
kateattribute.cpp
Go to the documentation of this file.00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2003 Hamish Rodda <rodda@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License version 2 as published by the Free Software Foundation. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Library General Public License for more details. 00012 00013 You should have received a copy of the GNU Library General Public License 00014 along with this library; see the file COPYING.LIB. If not, write to 00015 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00016 Boston, MA 02110-1301, USA. 00017 */ 00018 00019 #include "kateattribute.h" 00020 00021 KateAttribute::KateAttribute() 00022 : m_weight(QFont::Normal) 00023 , m_italic(false) 00024 , m_underline(false) 00025 , m_overline(false) 00026 , m_strikeout(false) 00027 , m_itemsSet(0) 00028 00029 { 00030 } 00031 00032 KateAttribute::~KateAttribute() 00033 { 00034 } 00035 00036 void KateAttribute::clear() 00037 { 00038 m_itemsSet=0; 00039 } 00040 00041 KateAttribute& KateAttribute::operator+=(const KateAttribute& a) 00042 { 00043 if (a.itemSet(Weight)) 00044 setWeight(a.weight()); 00045 00046 if (a.itemSet(Italic)) 00047 setItalic(a.italic()); 00048 00049 if (a.itemSet(Underline)) 00050 setUnderline(a.underline()); 00051 00052 if (a.itemSet(Overline)) 00053 setOverline(a.overline()); 00054 00055 if (a.itemSet(StrikeOut)) 00056 setStrikeOut(a.strikeOut()); 00057 00058 if (a.itemSet(Outline)) 00059 setOutline(a.outline()); 00060 00061 if (a.itemSet(TextColor)) 00062 setTextColor(a.textColor()); 00063 00064 if (a.itemSet(SelectedTextColor)) 00065 setSelectedTextColor(a.selectedTextColor()); 00066 00067 if (a.itemSet(BGColor)) 00068 setBGColor(a.bgColor()); 00069 00070 if (a.itemSet(SelectedBGColor)) 00071 setSelectedBGColor(a.selectedBGColor()); 00072 00073 return *this; 00074 } 00075 00076 QFont KateAttribute::font(const QFont& ref) 00077 { 00078 QFont ret = ref; 00079 00080 if (itemSet(Weight)) 00081 ret.setWeight(weight()); 00082 if (itemSet(Italic)) 00083 ret.setItalic(italic()); 00084 if (itemSet(Underline)) 00085 ret.setUnderline(underline()); 00086 if (itemSet(Overline)) 00087 ret.setOverline(overline()); 00088 if (itemSet(StrikeOut)) 00089 ret.setStrikeOut(strikeOut()); 00090 00091 return ret; 00092 } 00093 00094 void KateAttribute::setWeight(int weight) 00095 { 00096 if (!(m_itemsSet & Weight) || m_weight != weight) 00097 { 00098 m_itemsSet |= Weight; 00099 00100 m_weight = weight; 00101 00102 changed(); 00103 } 00104 } 00105 00106 void KateAttribute::setBold(bool enable) 00107 { 00108 setWeight(enable ? QFont::Bold : QFont::Normal); 00109 } 00110 00111 void KateAttribute::setItalic(bool enable) 00112 { 00113 if (!(m_itemsSet & Italic) || m_italic != enable) 00114 { 00115 m_itemsSet |= Italic; 00116 00117 m_italic = enable; 00118 00119 changed(); 00120 } 00121 } 00122 00123 void KateAttribute::setUnderline(bool enable) 00124 { 00125 if (!(m_itemsSet & Underline) || m_underline != enable) 00126 { 00127 m_itemsSet |= Underline; 00128 00129 m_underline = enable; 00130 00131 changed(); 00132 } 00133 } 00134 00135 void KateAttribute::setOverline(bool enable) 00136 { 00137 if (!(m_itemsSet & Overline) || m_overline != enable) 00138 { 00139 m_itemsSet |= Overline; 00140 00141 m_overline = enable; 00142 00143 changed(); 00144 } 00145 } 00146 00147 void KateAttribute::setStrikeOut(bool enable) 00148 { 00149 if (!(m_itemsSet & StrikeOut) || m_strikeout != enable) 00150 { 00151 m_itemsSet |= StrikeOut; 00152 00153 m_strikeout = enable; 00154 00155 changed(); 00156 } 00157 } 00158 00159 void KateAttribute::setOutline(const QColor& color) 00160 { 00161 if (!(m_itemsSet & Outline) || m_outline != color) 00162 { 00163 m_itemsSet |= Outline; 00164 00165 m_outline = color; 00166 00167 changed(); 00168 } 00169 } 00170 00171 void KateAttribute::setTextColor(const QColor& color) 00172 { 00173 if (!(m_itemsSet & TextColor) || m_textColor != color) 00174 { 00175 m_itemsSet |= TextColor; 00176 00177 m_textColor = color; 00178 00179 changed(); 00180 } 00181 } 00182 00183 void KateAttribute::setSelectedTextColor(const QColor& color) 00184 { 00185 if (!(m_itemsSet & SelectedTextColor) || m_selectedTextColor != color) 00186 { 00187 m_itemsSet |= SelectedTextColor; 00188 00189 m_selectedTextColor = color; 00190 00191 changed(); 00192 } 00193 } 00194 00195 void KateAttribute::setBGColor(const QColor& color) 00196 { 00197 if (!(m_itemsSet & BGColor) || m_bgColor != color) 00198 { 00199 m_itemsSet |= BGColor; 00200 00201 m_bgColor = color; 00202 00203 changed(); 00204 } 00205 } 00206 00207 void KateAttribute::setSelectedBGColor(const QColor& color) 00208 { 00209 if (!(m_itemsSet & SelectedBGColor) || m_selectedBGColor != color) 00210 { 00211 m_itemsSet |= SelectedBGColor; 00212 00213 m_selectedBGColor = color; 00214 00215 changed(); 00216 } 00217 } 00218 00219 bool operator ==(const KateAttribute& h1, const KateAttribute& h2) 00220 { 00221 if (h1.m_itemsSet != h2.m_itemsSet) 00222 return false; 00223 00224 if (h1.itemSet(KateAttribute::Weight)) 00225 if (h1.m_weight != h2.m_weight) 00226 return false; 00227 00228 if (h1.itemSet(KateAttribute::Italic)) 00229 if (h1.m_italic != h2.m_italic) 00230 return false; 00231 00232 if (h1.itemSet(KateAttribute::Underline)) 00233 if (h1.m_underline != h2.m_underline) 00234 return false; 00235 00236 if (h1.itemSet(KateAttribute::StrikeOut)) 00237 if (h1.m_strikeout != h2.m_strikeout) 00238 return false; 00239 00240 if (h1.itemSet(KateAttribute::Outline)) 00241 if (h1.m_outline != h2.m_outline) 00242 return false; 00243 00244 if (h1.itemSet(KateAttribute::TextColor)) 00245 if (h1.m_textColor != h2.m_textColor) 00246 return false; 00247 00248 if (h1.itemSet(KateAttribute::SelectedTextColor)) 00249 if (h1.m_selectedTextColor != h2.m_selectedTextColor) 00250 return false; 00251 00252 if (h1.itemSet(KateAttribute::BGColor)) 00253 if (h1.m_bgColor != h2.m_bgColor) 00254 return false; 00255 00256 if (h1.itemSet(KateAttribute::SelectedBGColor)) 00257 if (h1.m_selectedBGColor != h2.m_selectedBGColor) 00258 return false; 00259 00260 return true; 00261 } 00262 00263 bool operator !=(const KateAttribute& h1, const KateAttribute& h2) 00264 { 00265 return !(h1 == h2); 00266 } 00267 00268 // kate: space-indent on; indent-width 2; replace-tabs on;