summaryrefslogtreecommitdiffstats
path: root/kate/part/kateattribute.h
diff options
context:
space:
mode:
Diffstat (limited to 'kate/part/kateattribute.h')
-rw-r--r--kate/part/kateattribute.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/kate/part/kateattribute.h b/kate/part/kateattribute.h
new file mode 100644
index 000000000..c4933e690
--- /dev/null
+++ b/kate/part/kateattribute.h
@@ -0,0 +1,147 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 2003 Hamish Rodda <rodda@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef __KATE_ATTRIBUTE_H__
+#define __KATE_ATTRIBUTE_H__
+
+#include "katefont.h"
+
+#include <qcolor.h>
+
+/**
+ * The Attribute class incorporates all text decorations supported by Kate.
+ *
+ * TODO: store the actual font as well.
+ * TODO: update changed mechanism - use separate bitfield
+ */
+class KateAttribute
+{
+public:
+ enum items {
+ Weight = 0x1,
+ Bold = 0x2,
+ Italic = 0x4,
+ Underline = 0x8,
+ StrikeOut = 0x10,
+ Outline = 0x20,
+ TextColor = 0x40,
+ SelectedTextColor = 0x80,
+ BGColor = 0x100,
+ SelectedBGColor = 0x200,
+ Overline = 0x400
+ };
+
+ KateAttribute();
+ virtual ~KateAttribute();
+
+ QFont font(const QFont& ref);
+
+ inline int width(KateFontStruct& fs, const QString& text, int col, int tabWidth) const
+ { return fs.width(text, col, bold(), italic(), tabWidth); };
+
+ // Non-preferred function when you have a string and you want one char's width!!
+ inline int width(KateFontStruct& fs, const QChar& c, int tabWidth) const
+ { return fs.width(c, bold(), italic(), tabWidth); };
+
+ inline bool itemSet(int item) const
+ { return item & m_itemsSet; };
+
+ inline bool isSomethingSet() const
+ { return m_itemsSet; };
+
+ inline int itemsSet() const
+ { return m_itemsSet; };
+
+ inline void clearAttribute(int item)
+ { m_itemsSet &= (~item); }
+
+ inline int weight() const
+ { return m_weight; };
+
+ void setWeight(int weight);
+
+ inline bool bold() const
+ { return weight() >= QFont::Bold; };
+
+ void setBold(bool enable = true);
+
+ inline bool italic() const
+ { return m_italic; };
+
+ void setItalic(bool enable = true);
+
+ inline bool overline() const
+ { return m_overline; };
+
+ void setOverline(bool enable = true);
+
+ inline bool underline() const
+ { return m_underline; };
+
+ void setUnderline(bool enable = true);
+
+ inline bool strikeOut() const
+ { return m_strikeout; };
+
+ void setStrikeOut(bool enable = true);
+
+ inline const QColor& outline() const
+ { return m_outline; };
+
+ void setOutline(const QColor& color);
+
+ inline const QColor& textColor() const
+ { return m_textColor; };
+
+ void setTextColor(const QColor& color);
+
+ inline const QColor& selectedTextColor() const
+ { return m_selectedTextColor; };
+
+ void setSelectedTextColor(const QColor& color);
+
+ inline const QColor& bgColor() const
+ { return m_bgColor; };
+
+ void setBGColor(const QColor& color);
+
+ inline const QColor& selectedBGColor() const
+ { return m_selectedBGColor; };
+
+ void setSelectedBGColor(const QColor& color);
+
+ KateAttribute& operator+=(const KateAttribute& a);
+
+ friend bool operator ==(const KateAttribute& h1, const KateAttribute& h2);
+ friend bool operator !=(const KateAttribute& h1, const KateAttribute& h2);
+
+ virtual void changed() { m_changed = true; };
+ bool isChanged() { bool ret = m_changed; m_changed = false; return ret; };
+
+ void clear();
+
+private:
+ int m_weight;
+ bool m_italic, m_underline, m_overline,m_strikeout, m_changed;
+ QColor m_outline, m_textColor, m_selectedTextColor, m_bgColor, m_selectedBGColor;
+ int m_itemsSet;
+};
+
+#endif
+
+// kate: space-indent on; indent-width 2; replace-tabs on;