diff options
Diffstat (limited to '0002-add-rainbows-support.patch')
-rw-r--r-- | 0002-add-rainbows-support.patch | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/0002-add-rainbows-support.patch b/0002-add-rainbows-support.patch new file mode 100644 index 000000000000..e91794350ef1 --- /dev/null +++ b/0002-add-rainbows-support.patch @@ -0,0 +1,211 @@ +From aac1ca5fcb30a27f785a3a0156dfc8bbbfefb040 Mon Sep 17 00:00:00 2001 +From: leaeasy <leaeasy@gmail.com> +Date: Mon, 23 Apr 2018 10:38:41 +0800 +Subject: [PATCH 2/3] add rainbows support + +--- + src/EditProfileDialog.cpp | 9 +++++++++ + src/EditProfileDialog.h | 1 + + src/EditProfileDialog.ui | 7 +++++++ + src/Profile.cpp | 2 ++ + src/Profile.h | 7 +++++++ + src/TerminalDisplay.cpp | 13 +++++++++++++ + src/TerminalDisplay.h | 15 +++++++++++++++ + src/ViewManager.cpp | 1 + + 8 files changed, 55 insertions(+) + +diff --git a/src/EditProfileDialog.cpp b/src/EditProfileDialog.cpp +index 9548d64..081a80a 100644 +--- a/src/EditProfileDialog.cpp ++++ b/src/EditProfileDialog.cpp +@@ -611,6 +611,9 @@ void EditProfileDialog::setupAppearancePage(const Profile::Ptr profile) + connect(_ui->useFontLineCharactersButton, &QCheckBox::toggled, this, + &Konsole::EditProfileDialog::useFontLineCharacters); + ++ _ui->rainbowButton->setChecked(profile->rainbow()); ++ connect(_ui->rainbowButton, &QCheckBox::toggled, this, &Konsole::EditProfileDialog::setRainbow); ++ + _ui->enableMouseWheelZoomButton->setChecked(profile->mouseWheelZoomEnabled()); + connect(_ui->enableMouseWheelZoomButton, &QCheckBox::toggled, this, + &Konsole::EditProfileDialog::toggleMouseWheelZoom); +@@ -648,6 +651,12 @@ void EditProfileDialog::useFontLineCharacters(bool enable) + updateTempProfileProperty(Profile::UseFontLineCharacters, enable); + } + ++void EditProfileDialog::setRainbow(bool enable) ++{ ++ preview(Profile::Rainbow, enable); ++ updateTempProfileProperty(Profile::Rainbow, enable); ++} ++ + void EditProfileDialog::toggleMouseWheelZoom(bool enable) + { + updateTempProfileProperty(Profile::MouseWheelZoomEnabled, enable); +diff --git a/src/EditProfileDialog.h b/src/EditProfileDialog.h +index cfc4cbd..ca64ae3 100644 +--- a/src/EditProfileDialog.h ++++ b/src/EditProfileDialog.h +@@ -128,6 +128,7 @@ private Q_SLOTS: + void showAllFontsButtonWarning(bool enable); + void setAntialiasText(bool enable); + void setBoldIntense(bool enable); ++ void setRainbow(bool enable); + void useFontLineCharacters(bool enable); + void showFontDialog(); + void newColorScheme(); +diff --git a/src/EditProfileDialog.ui b/src/EditProfileDialog.ui +index 60dec9b..f73a76e 100644 +--- a/src/EditProfileDialog.ui ++++ b/src/EditProfileDialog.ui +@@ -673,6 +673,13 @@ + </property> + </widget> + </item> ++ <item> ++ <widget class="QCheckBox" name="rainbowButton"> ++ <property name="text"> ++ <string>Rainbow Powers!</string> ++ </property> ++ </widget> ++ </item> + </layout> + </widget> + </item> +diff --git a/src/Profile.cpp b/src/Profile.cpp +index d51a84c..ec2a674 100644 +--- a/src/Profile.cpp ++++ b/src/Profile.cpp +@@ -81,6 +81,7 @@ const Profile::PropertyInfo Profile::DefaultPropertyNames[] = { + , { AntiAliasFonts, "AntiAliasFonts" , APPEARANCE_GROUP , QVariant::Bool } + , { BoldIntense, "BoldIntense", APPEARANCE_GROUP, QVariant::Bool } + , { UseFontLineCharacters, "UseFontLineChararacters", APPEARANCE_GROUP, QVariant::Bool } ++ , { Rainbow, "Rainbow", APPEARANCE_GROUP, QVariant::Bool } + , { LineSpacing , "LineSpacing" , APPEARANCE_GROUP , QVariant::Int } + + // Keyboard +@@ -211,6 +212,7 @@ void Profile::useFallback() + setProperty(AntiAliasFonts, true); + setProperty(BoldIntense, true); + setProperty(UseFontLineCharacters, false); ++ setProperty(Rainbow, false); + + setProperty(WordCharacters, QStringLiteral(":@-./_~?&=%+#")); + +diff --git a/src/Profile.h b/src/Profile.h +index 8b89342..f8c16a9 100644 +--- a/src/Profile.h ++++ b/src/Profile.h +@@ -270,6 +270,8 @@ public: + */ + MouseWheelZoomEnabled, + /** (int) Keyboard modifiers to show URL hints */ ++ /** (bool) Whether characters have rainbow powers */ ++ Rainbow, + UrlHintsModifiers + }; + +@@ -538,6 +540,11 @@ public: + return property<bool>(Profile::BoldIntense); + } + ++ /** Convenience method for property<bool>(Profile::Rainbow) */ ++ bool rainbow() const { ++ return property<bool>(Profile::Rainbow); ++ } ++ + /** Convenience method for property<bool>(Profile::UseFontLineCharacters)*/ + bool useFontLineCharacters() const + { +diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp +index ec48ffb..3620d10 100644 +--- a/src/TerminalDisplay.cpp ++++ b/src/TerminalDisplay.cpp +@@ -21,6 +21,7 @@ + */ + + // Own ++#include <cmath> + #include "TerminalDisplay.h" + + // Config +@@ -358,6 +359,7 @@ TerminalDisplay::TerminalDisplay(QWidget* parent) + , _fontWidth(1) + , _fontAscent(1) + , _boldIntense(true) ++ , _rainbow(false) + , _lines(1) + , _columns(1) + , _usedLines(1) +@@ -1615,6 +1617,7 @@ void TerminalDisplay::drawContents(QPainter& paint, const QRect& rect) + const RenditionFlags currentRendition = _image[loc(x, y)].rendition; + + while (x + len <= rlx && ++ (!_rainbow || (_image[loc(x + len, y)].isSpace() && !_screenWindow->isSelected(x, y)) ) && + _image[loc(x + len, y)].foregroundColor == currentForeground && + _image[loc(x + len, y)].backgroundColor == currentBackground && + (_image[loc(x + len, y)].rendition & ~RE_EXTENDED_CHAR) == (currentRendition & ~RE_EXTENDED_CHAR) && +@@ -1688,6 +1691,16 @@ void TerminalDisplay::drawContents(QPainter& paint, const QRect& rect) + //(instead of textArea.topLeft() * painter-scale) + textArea.moveTopLeft(textScale.inverted().map(textArea.topLeft())); + ++ if ( _rainbow ) { ++ qreal hue = qreal(x) / _usedColumns; ++ qreal offset = sin(qreal(y) / _usedLines * M_PI * 2) + 1; ++ qreal factor = fmod(hue + offset, 1); ++ _image[loc(x, y)].foregroundColor = ++ CharacterColor(COLOR_SPACE_RGB, ++ QColor::fromHsvF(factor, 0.7, 1).rgba()); ++ } ++ ++ + //paint text fragment + if (_printerFriendly) { + drawPrinterFriendlyTextFragment(paint, +diff --git a/src/TerminalDisplay.h b/src/TerminalDisplay.h +index f6da500..940177a 100644 +--- a/src/TerminalDisplay.h ++++ b/src/TerminalDisplay.h +@@ -449,6 +449,20 @@ public: + return _boldIntense; + } + ++ /** ++ * Specified whether magical unicorn powers are enabled or not. ++ * Defaults to disabled. ++ */ ++ void setRainbow(bool value) { ++ _rainbow = value; ++ } ++ /** ++ * Returns true if magical unicorn powers are enabled. ++ */ ++ bool rainbow() const { ++ return _rainbow; ++ } ++ + /** + * Specifies whether line characters will be displayed using font instead + * of builtin code. +@@ -900,6 +914,7 @@ private: + int _fontWidth; // width + int _fontAscent; // ascend + bool _boldIntense; // Whether intense colors should be rendered with bold font ++ bool _rainbow; // Whether are we a magical unicorn + + int _leftMargin; // offset + int _topMargin; // offset +diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp +index dd97650..dc89b5c 100644 +--- a/src/ViewManager.cpp ++++ b/src/ViewManager.cpp +@@ -890,6 +890,7 @@ void ViewManager::applyProfileToView(TerminalDisplay *view, const Profile::Ptr p + view->setAntialias(profile->antiAliasFonts()); + view->setBoldIntense(profile->boldIntense()); + view->setUseFontLineCharacters(profile->useFontLineCharacters()); ++ view->setRainbow(profile->rainbow()); + view->setVTFont(profile->font()); + + // set scroll-bar position +-- +2.17.0 + |