diff options
author | Slávek Banko <[email protected]> | 2016-03-26 23:52:42 +0100 |
---|---|---|
committer | Slávek Banko <[email protected]> | 2016-03-26 23:52:42 +0100 |
commit | 3ae9f9432e0df88db99fc7aaadaea3b35bda1f9a (patch) | |
tree | 40ede24acb0e1154926e0c1a8bab0c1d4bb01a66 /src/kwin | |
parent | 6be98faf5bf1704e91e9e805cea06d32df258898 (diff) | |
download | tde-style-ia-ora-3ae9f9432e0df88db99fc7aaadaea3b35bda1f9a.tar.gz tde-style-ia-ora-3ae9f9432e0df88db99fc7aaadaea3b35bda1f9a.zip |
Initial TDE conversion
Signed-off-by: Slávek Banko <[email protected]>
Diffstat (limited to 'src/kwin')
-rw-r--r-- | src/kwin/Makefile.am | 19 | ||||
-rw-r--r-- | src/kwin/config/Makefile.am | 14 | ||||
-rw-r--r-- | src/kwin/config/config.cpp | 102 | ||||
-rw-r--r-- | src/kwin/config/config.h | 55 | ||||
-rw-r--r-- | src/kwin/config/configdialog.ui | 53 | ||||
-rw-r--r-- | src/kwin/iaora.cpp | 665 | ||||
-rw-r--r-- | src/kwin/iaora.desktop | 5 | ||||
-rw-r--r-- | src/kwin/iaora.h | 126 | ||||
-rw-r--r-- | src/kwin/iaorabutton.cpp | 528 | ||||
-rw-r--r-- | src/kwin/iaorabutton.h | 85 | ||||
-rw-r--r-- | src/kwin/iaoraclient.cpp | 514 | ||||
-rw-r--r-- | src/kwin/iaoraclient.h | 73 | ||||
-rw-r--r-- | src/kwin/misc.cpp | 49 | ||||
-rw-r--r-- | src/kwin/misc.h | 28 |
14 files changed, 0 insertions, 2316 deletions
diff --git a/src/kwin/Makefile.am b/src/kwin/Makefile.am deleted file mode 100644 index 89c4748..0000000 --- a/src/kwin/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUBDIRS = config - -KDE_CXXFLAGS = -DQT_PLUGIN - -INCLUDES = -I$(srcdir)/../../lib $(all_includes) - -kwindir = $(kde_datadir)/kwin/ -kwin_DATA = iaora.desktop - -kde_module_LTLIBRARIES = kwin3_iaora.la -kwin3_iaora_la_SOURCES = iaora.cpp iaoraclient.cpp iaorabutton.cpp misc.cpp -kwin3_iaora_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module -kwin3_iaora_la_LIBADD = $(LIB_KDEUI) -lkdecorations $(LIB_QT) $(LIB_KDECORE) -lkdefx -kwin3_iaora_la_METASOURCES = AUTO - -DISTCLEANFILES = $(kwin3_iaora_la_METASOURCES) - diff --git a/src/kwin/config/Makefile.am b/src/kwin/config/Makefile.am deleted file mode 100644 index 4cf8d6d..0000000 --- a/src/kwin/config/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -INCLUDES = $(all_includes) - -kde_module_LTLIBRARIES = kwin_iaora_config.la - -kwin_iaora_config_la_SOURCES = config.cpp configdialog.ui -kwin_iaora_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module -kwin_iaora_config_la_LIBADD = $(LIB_KDEUI) $(LIB_QT) $(LIB_KDECORE) - -METASOURCES = AUTO -noinst_HEADERS = config.h -DISTCLEANFILES = $(METASOURCES) - -lnkdir = $(kde_datadir)/kwin - diff --git a/src/kwin/config/config.cpp b/src/kwin/config/config.cpp deleted file mode 100644 index 7b0fdd9..0000000 --- a/src/kwin/config/config.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - Copyright (C) 2006 Montel Laurent <[email protected]> - based on plastik - Copyright (C) 2003 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#include <tqbuttongroup.h> -#include <tqcheckbox.h> -#include <tqradiobutton.h> -#include <tqslider.h> -#include <tqspinbox.h> -#include <tqwhatsthis.h> - -#include <kconfig.h> -#include <klocale.h> -#include <kglobal.h> - -#include "config.h" -#include "configdialog.h" - -IaOraConfig::IaOraConfig(KConfig* config, TQWidget* parent) - : TQObject(parent), m_config(0), m_dialog(0) -{ - // create the configuration object - m_config = new KConfig("kwiniaorarc"); - KGlobal::locale()->insertCatalogue("kwin_clients"); - - // create and show the configuration dialog - m_dialog = new ConfigDialog(parent); - m_dialog->show(); - - // load the configuration - load(config); - - // setup the connections - connect(m_dialog->menuClose, SIGNAL(toggled(bool)), - this, SIGNAL(changed())); - connect(m_dialog->titleShadow, SIGNAL(toggled(bool)), - this, SIGNAL(changed())); -} - -IaOraConfig::~IaOraConfig() -{ - delete m_dialog; - delete m_config; -} - -void IaOraConfig::load(KConfig*) -{ - m_config->setGroup("General"); - - bool menuClose = m_config->readBoolEntry("CloseOnMenuDoubleClick", true); - m_dialog->menuClose->setChecked(menuClose); - bool titleShadow = m_config->readBoolEntry("TitleShadow", true); - m_dialog->titleShadow->setChecked(titleShadow); -} - -void IaOraConfig::save(KConfig*) -{ - m_config->setGroup("General"); - - m_config->writeEntry("CloseOnMenuDoubleClick", m_dialog->menuClose->isChecked() ); - m_config->writeEntry("TitleShadow", m_dialog->titleShadow->isChecked() ); - m_config->sync(); -} - -void IaOraConfig::defaults() -{ - m_dialog->menuClose->setChecked(false); - m_dialog->titleShadow->setChecked(true); -} - -////////////////////////////////////////////////////////////////////////////// -// Plugin Stuff // -////////////////////////////////////////////////////////////////////////////// - -extern "C" -{ - KDE_EXPORT TQObject* allocate_config(KConfig* config, TQWidget* parent) { - return (new IaOraConfig(config, parent)); - } -} - -#include "config.moc" diff --git a/src/kwin/config/config.h b/src/kwin/config/config.h deleted file mode 100644 index 513b83c..0000000 --- a/src/kwin/config/config.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (C) 2006 Montel Laurent <[email protected]> - based on plastik - Copyright (C) 2003 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#ifndef KNIFTYCONFIG_H -#define KNIFTYCONFIG_H - -#include <tqobject.h> - -class TQButtonGroup; -class TQGroupBox; -class KConfig; -class ConfigDialog; - -class IaOraConfig : public TQObject -{ - Q_OBJECT -public: - IaOraConfig(KConfig* config, TQWidget* parent); - ~IaOraConfig(); - -signals: - void changed(); - -public slots: - void load(KConfig *config); - void save(KConfig *config); - void defaults(); - -private: - KConfig *m_config; - ConfigDialog *m_dialog; -}; - -#endif // KNIFTYCONFIG_H diff --git a/src/kwin/config/configdialog.ui b/src/kwin/config/configdialog.ui deleted file mode 100644 index 58f7e56..0000000 --- a/src/kwin/config/configdialog.ui +++ /dev/null @@ -1,53 +0,0 @@ -<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -<class>ConfigDialog</class> -<widget class="TQWidget"> - <property name="name"> - <cstring>ConfigDialog</cstring> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>535</width> - <height>88</height> - </rect> - </property> - <property name="caption"> - <string>Config Dialog</string> - </property> - <vbox> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <property name="margin"> - <number>0</number> - </property> - <widget class="TQCheckBox"> - <property name="name"> - <cstring>titleShadow</cstring> - </property> - <property name="text"> - <string>Use shadowed &text</string> - </property> - <property name="whatsThis" stdset="0"> - <string>Check this option if you want the titlebar text to have a 3D look with a shadow behind it.</string> - </property> - </widget> - <widget class="TQCheckBox"> - <property name="name"> - <cstring>menuClose</cstring> - </property> - <property name="text"> - <string>Close windows by double clicking the menu button</string> - </property> - <property name="whatsThis" stdset="0"> - <string>Check this option if you want windows to be closed when you double click the menu button, similar to Microsoft Windows.</string> - </property> - </widget> - </vbox> -</widget> -<tabstops> - <tabstop>titleShadow</tabstop> -</tabstops> -<layoutdefaults spacing="6" margin="11"/> -</UI> diff --git a/src/kwin/iaora.cpp b/src/kwin/iaora.cpp deleted file mode 100644 index d827141..0000000 --- a/src/kwin/iaora.cpp +++ /dev/null @@ -1,665 +0,0 @@ -/* Ia Ora KWin window decoration - Copyright (C) 2006 Laurent Montel <[email protected]> - Based on plastik code - Copyright (C) 2003-2005 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#include <tqbitmap.h> -#include <tqpainter.h> -#include <tqimage.h> -#include <tqapplication.h> -#include <kconfig.h> -#include <kpixmap.h> -#include <kpixmapeffect.h> - -#include "misc.h" -#include "iaora.h" -#include "iaora.moc" -#include "iaoraclient.h" -#include "iaorabutton.h" - -namespace KWinIaOra -{ - -IaOraHandler::IaOraHandler() -{ - memset(m_pixmaps, 0, sizeof(TQPixmap*)*NumPixmaps*2*2); // set elements to 0 - memset(m_bitmaps, 0, sizeof(TQBitmap*)*NumButtonIcons*2); - - reset(0); -} - -IaOraHandler::~IaOraHandler() -{ - for (int t=0; t < 2; ++t) - for (int a=0; a < 2; ++a) - for (int i=0; i < NumPixmaps; ++i) - delete m_pixmaps[t][a][i]; - for (int t=0; t < 2; ++t) - for (int i=0; i < NumButtonIcons; ++i) - delete m_bitmaps[t][i]; -} - -bool IaOraHandler::reset(unsigned long changed) -{ - // we assume the active font to be the same as the inactive font since the control - // center doesn't offer different settings anyways. - m_titleFont = KDecoration::options()->font(true, false); // not small - m_titleFontTool = KDecoration::options()->font(true, true); // small - - // check if we are in reverse layout mode - m_reverse = TQApplication::reverseLayout(); - - // read in the configuration - readConfig(); - - // pixmaps probably need to be updated, so delete the cache. - for (int t=0; t < 2; ++t) { - for (int a=0; a < 2; ++a) { - for (int i=0; i < NumPixmaps; i++) { - if (m_pixmaps[t][a][i]) { - delete m_pixmaps[t][a][i]; - m_pixmaps[t][a][i] = 0; - } - } - } - } - for (int t=0; t < 2; ++t) { - for (int i=0; i < NumButtonIcons; i++) { - if (m_bitmaps[t][i]) { - delete m_bitmaps[t][i]; - m_bitmaps[t][i] = 0; - } - } - } - - // Do we need to "hit the wooden hammer" ? - bool needHardReset = true; - // TODO: besides the Color and Font settings I can maybe handle more changes - // without a hard reset. I will do this later... - if (changed & SettingColors || changed & SettingFont) - { - needHardReset = false; - } else if (changed & SettingButtons) { - // handled by KCommonDecoration - needHardReset = false; - } - - if (needHardReset) { - return true; - } else { - resetDecorations(changed); - return false; - } -} - -KDecoration* IaOraHandler::createDecoration( KDecorationBridge* bridge ) -{ - return new IaOraClient( bridge, this ); -} - -bool IaOraHandler::supports( Ability ability ) -{ - switch( ability ) - { - case AbilityAnnounceButtons: - case AbilityButtonMenu: - case AbilityButtonOnAllDesktops: - case AbilityButtonSpacer: - case AbilityButtonHelp: - case AbilityButtonMinimize: - case AbilityButtonMaximize: - case AbilityButtonClose: - case AbilityButtonAboveOthers: - case AbilityButtonBelowOthers: - case AbilityButtonShade: - return true; - default: - return false; - }; -} - -void IaOraHandler::readConfig() -{ - // create a config object - KConfig config("kwiniaorarc"); - config.setGroup("General"); - - // grab settings - m_titleShadow = config.readBoolEntry("TitleShadow", true); - - TQFontMetrics fm(m_titleFont); // active font = inactive font - int titleHeightMin = config.readNumEntry("MinTitleHeight", 22); - // The title should strech with bigger font sizes! - m_titleHeight = TQMAX(titleHeightMin, fm.height() + 4); // 4 px for the shadow etc. - // have an even title/button size so the button icons are fully centered... - if ( m_titleHeight%2 == 0) - m_titleHeight++; - - fm = TQFontMetrics(m_titleFontTool); // active font = inactive font - int titleHeightToolMin = config.readNumEntry("MinTitleHeightTool", 22); - // The title should strech with bigger font sizes! - m_titleHeightTool = TQMAX(titleHeightToolMin, fm.height() ); // don't care about the shadow etc. - // have an even title/button size so the button icons are fully centered... - if ( m_titleHeightTool%2 == 0) - m_titleHeightTool++; - - m_menuClose = config.readBoolEntry("CloseOnMenuDoubleClick", true); -} - -TQColor IaOraHandler::getBorderColor( KWinIaOra::ColorType type, const bool active) -{ - //Force colors - switch (type) { - case Border1: - return TQColor( "#EFF3F7" ); - break; - case Border2: - return TQColor( "#DFE7EF" ); - break; - case Border3: - return TQColor( "#C7D3DF" ); - break; - default: - return TQt::black; - } - return TQt::black; -} - -TQColor IaOraHandler::getShadowColor() -{ - TQColor col = KDecoration::options()->color(ColorTitleBar, true); - if ( col == TQColor("#4964AE") ) - { - return TQColor( "#000000" ); - } - //default Arctic color - else if ( col == TQColor("#8ec7ff") ) - { - return TQColor( "#666666" ); - } - else if ( col == TQColor("7BAAE7") ) - { - return TQColor( "#666666" ); - } - //default Orange color - else if ( col == TQColor("#F7B610") ) - { - return TQColor( "#666666" ); - } - //default Gray color - else if ( col == TQColor("#c7d3df") ) - { - return TQColor( "#333333" ); - } - return TQColor( "#666666" ); -} - -TQColor IaOraHandler::getGradientColor( KWinIaOra::ColorType type, const bool active) -{ - TQColor col = KDecoration::options()->color(ColorTitleBar, active); - //default Blue color - if ( active ) - { - if ( col == TQColor("#4964AE") ) - { - switch (type) { - case TitleGradient1: - return TQColor("#8EA2CF"); - break; - case TitleGradient2: - return TQColor("#415DA6"); - break; - case TitleGradient4: - return TQColor("#4964AE"); - break; - case TitleGradient3: - return TQColor("#21459C"); - break; - default: - return TQt::black; - } - } - //default Smooth color - else if ( col == TQColor("#7BAAE7") ) - { - switch (type) { - case TitleGradient1: - return TQColor("#ADCFFF"); - break; - case TitleGradient2: - return TQColor("#5A8AD6"); - break; - case TitleGradient4: - return TQColor("#7BAAE7"); - break; - case TitleGradient3: - return TQColor("#427DC6"); - break; - default: - return TQt::black; - } - } - //default Orange color - else if ( col == TQColor("#F7B610") ) - { - switch (type) { - case TitleGradient1: - return TQColor("#FFCB10"); - break; - case TitleGradient2: - return TQColor("#ffa208"); - break; - case TitleGradient4: - return TQColor("#f7b610"); - break; - case TitleGradient3: - return TQColor("#f79600"); - break; - default: - return TQt::black; - } - } - //default Arctic color - else if ( col == TQColor("#8ec7ff") ) - { - switch (type) { - case TitleGradient1: - return TQColor("#c7dfff"); - break; - case TitleGradient2: - return TQColor("#79beff"); - break; - case TitleGradient4: - return TQColor("#8ec7ff"); - break; - case TitleGradient3: - return TQColor("#69b6ff"); - break; - default: - return TQt::black; - } - } - //default Gray color - else if ( col == TQColor("#c7d3df") ) - { - switch (type) { - case TitleGradient1: - return TQColor("#cfd7df"); - break; - case TitleGradient2: - return TQColor("#a6b2c7"); - break; - case TitleGradient4: - return TQColor("#c7d3df"); - break; - case TitleGradient3: - return TQColor("#8692a6"); - break; - default: - return TQt::black; - } - } - else - { - switch (type) { - case TitleGradient1: - return col.light( 150 ); - break; - case TitleGradient2: - return col.dark( 112 ); - break; - case TitleGradient4: - return col; - break; - case TitleGradient3: - return col.dark( 130 ); - break; - default: - return TQt::black; - } - } - } - else - { - if ( col == TQColor( "#EFF3F7" ) ) - { - switch (type) { - case TitleGradient1: - return TQColor( "#DFE7EF" ); - break; - case TitleGradient2: - return TQColor( "#C7D3DF" ); - break; - case TitleGradient4: - return TQColor( "#CFD7DF" ); - break; - case TitleGradient3: - return TQColor( "#B6C3CF" ); - break; - default: - return TQt::black; - } - } - else - { - //create algo - switch (type) { - case TitleGradient1: - return col.dark(107); - break; - case TitleGradient2: - return col.dark( 117 ); - break; - case TitleGradient4: - return col.dark( 115 ); - break; - case TitleGradient3: - return col.dark( 131 ); - break; - default: - return TQt::black; - } - } - - } - return TQt::black; -} - -TQColor IaOraHandler::getColor(KWinIaOra::ColorType type, const bool active) -{ - switch (type) { - case TitleBorder: - return KDecoration::options()->color(ColorTitleBar, active); - case TitleGradient1: - case TitleGradient2: - case TitleGradient4: - case TitleGradient3: - return getGradientColor( type, active); - case Border1: - case Border2: - case Border3: - return getBorderColor( type, active); - case ShadeTitleLight: - return alphaBlendColors(KDecoration::options()->color(ColorTitleBar, active), - TQt::white, active?205:215); - //todo verify - case ShadeTitleDark: - return alphaBlendColors(KDecoration::options()->color(ColorTitleBar, active), - TQt::black, active?205:215); - break; - case TitleFont: - return KDecoration::options()->color(ColorFont, active); - default: - return TQt::black; - } -} - -void IaOraHandler::pretile( TQPixmap *&pix, int size, TQt::Orientation dir ) const -{ - TQPixmap *newpix; - TQPainter p; - - if ( dir == TQt::Horizontal ) - newpix = new TQPixmap( size, pix->height() ); - else - newpix = new TQPixmap( pix->width(), size ); - - p.begin( newpix ); - p.drawTiledPixmap( newpix->rect(), *pix ) ; - p.end(); - - delete pix; - pix = newpix; -} - -const TQPixmap &IaOraHandler::pixmap(Pixmaps type, bool active, bool toolWindow) -{ - if (m_pixmaps[toolWindow][active][type]) - return *m_pixmaps[toolWindow][active][type]; - - TQPixmap *pm = 0; - - switch (type) { - case TitleBarTileTop: - { - pm = new TQPixmap(1, 3); - TQPainter painter(pm); - painter.setPen(getColor(TitleBorder, active)); - painter.drawPoint(0,0); - - painter.fillRect(0,1,pm->width(),pm->height()-1,getColor(TitleGradient1, active)); - painter.end(); - pretile(pm, 64, TQt::Horizontal); - break; - } - case TitleBarTile: - { - const int titleBarTileHeight = (toolWindow ? m_titleHeightTool : m_titleHeight) + 2; - // gradient used as well in TitleBarTileTop as TitleBarTile - const int gradientHeight = 2 + titleBarTileHeight; - TQPixmap gradient(1, gradientHeight); - TQPainter painter(&gradient); - KPixmap tempPixmap; - tempPixmap.resize(1, gradientHeight/2); - KPixmapEffect::gradient(tempPixmap, - getColor(TitleGradient1, active), - getColor(TitleGradient2, active), - KPixmapEffect::VerticalGradient); - painter.drawPixmap(0,0, tempPixmap); - tempPixmap.resize(1, gradientHeight - (gradientHeight/2)); - KPixmapEffect::gradient(tempPixmap, - getColor(TitleGradient3, active) , - getColor(TitleGradient4, active), - KPixmapEffect::VerticalGradient); - painter.drawPixmap(0,gradientHeight/2, tempPixmap); - painter.end(); - - pm = new TQPixmap(1, titleBarTileHeight); - painter.begin(pm); - painter.drawPixmap(0, 0, gradient, 0,2); - painter.setPen(getColor(TitleGradient3, active).dark(110) ); - painter.drawPoint(0,titleBarTileHeight-1); - - painter.end(); - - pretile(pm, 64, TQt::Horizontal); - - break; - } - - case TitleBarLeft: - { - const int h = 4 + (toolWindow ? m_titleHeightTool : m_titleHeight) + 2; - - pm = new TQPixmap(3, h); - TQPainter painter(pm); - - painter.drawTiledPixmap(0,0, 3, 3, pixmap(TitleBarTileTop, active, toolWindow) ); - painter.drawTiledPixmap(0,3, 3, h-3, pixmap(TitleBarTile, active, toolWindow) ); - - painter.setPen(getColor(TitleBorder, active) ); - painter.drawLine(0,0, 0,h); - - break; - } - case TitleBarRight: - { - const int h = 4 + (toolWindow ? m_titleHeightTool : m_titleHeight) + 2; - - pm = new TQPixmap(3, h); - TQPainter painter(pm); - - painter.drawTiledPixmap(0,0, 3, 3, pixmap(TitleBarTileTop, active, toolWindow) ); - painter.drawTiledPixmap(0,3, 3, h-3, pixmap(TitleBarTile, active, toolWindow) ); - - painter.setPen(getColor(TitleBorder, active)); - painter.drawLine(2,0, 2,h); - - break; - } - - case BorderLeftTile: - { - pm = new TQPixmap(3, 1); - TQPainter painter(pm); - painter.setPen(getColor(Border3, active) ); - painter.drawPoint(0, 0); - painter.setPen(getColor(Border2, active) ); - painter.drawPoint(1, 0); - - painter.setPen(getColor(Border1, active) ); - painter.drawPoint(2,0); - painter.end(); - pretile(pm, 64, TQt::Vertical); - break; - } - - case BorderRightTile: - { - - pm = new TQPixmap(3, 1); - TQPainter painter(pm); - painter.setPen(getColor(Border1, active) ); - painter.drawPoint(0,0); - painter.setPen(getColor(Border2, active) ); - painter.drawPoint(1, 0); - painter.setPen(getColor(Border3, active) ); - painter.drawPoint(2, 0); - painter.end(); - pretile(pm, 64, TQt::Vertical); - - break; - } - - case BorderBottomLeft: - { - pm = new TQPixmap(3, 3); - TQPainter painter(pm); - painter.drawTiledPixmap(0,0,3,3, pixmap(BorderBottomTile, active, toolWindow) ); - painter.setPen(getColor(Border3, active) ); - painter.drawLine(0,0, 0,3); - - painter.setPen(getColor(Border1, active) ); - painter.drawLine(2,0, 2,0); - painter.end(); - - break; - } - - case BorderBottomRight: - { - - pm = new TQPixmap(3, 3); - TQPainter painter(pm); - painter.drawTiledPixmap(0,0,3,3, pixmap(BorderBottomTile, active, toolWindow) ); - painter.setPen(getColor(Border3, active) ); - painter.drawLine(2,0, 2,3); - painter.setPen(getColor(Border2, active) ); - painter.drawLine(1,0, 1,1); - - painter.setPen(getColor(Border1, active) ); - painter.drawLine(0,0, 0,0); - - painter.end(); - - break; - } - - case BorderBottomTile: - default: - { - pm = new TQPixmap(1, 3); - TQPainter painter(pm); - - painter.setPen(getColor(Border1, active) ); - painter.drawPoint(0,0); - painter.setPen(getColor(Border2, active) ); - painter.drawPoint(0,1); - painter.setPen(getColor(Border3, active) ); - painter.drawPoint(0, 2); - painter.end(); - - pretile(pm, 64, TQt::Horizontal); - - break; - } - } - - m_pixmaps[toolWindow][active][type] = pm; - return *pm; -} - -const TQBitmap &IaOraHandler::buttonBitmap(ButtonIcon type, const TQSize &size, bool toolWindow) -{ - int typeIndex = type; - - // btn icon size... - int reduceW = 0, reduceH = 0; - if(size.width()>14) { - reduceW = static_cast<int>(2*(size.width()/3.5) ); - } - else - reduceW = 6; - if(size.height()>14) - reduceH = static_cast<int>(2*(size.height()/3.5) ); - else - reduceH = 6; - - int w = size.width() - reduceW; - int h = size.height() - reduceH; - - if (m_bitmaps[toolWindow][typeIndex] && m_bitmaps[toolWindow][typeIndex]->size()==TQSize(w,h) ) - return *m_bitmaps[toolWindow][typeIndex]; - - // no matching pixmap found, create a new one... - - delete m_bitmaps[toolWindow][typeIndex]; - m_bitmaps[toolWindow][typeIndex] = 0; - - TQBitmap bmp = IconEngine::icon(type /*icon*/, TQMIN(w,h) ); - TQBitmap *bitmap = new TQBitmap(bmp); - m_bitmaps[toolWindow][typeIndex] = bitmap; - return *bitmap; -} - - -// make the handler accessible to other classes... -static IaOraHandler *handler = 0; -IaOraHandler* Handler() -{ - return handler; -} - -} // KWinPlastik - -////////////////////////////////////////////////////////////////////////////// -// Plugin Stuff // -////////////////////////////////////////////////////////////////////////////// - -extern "C" -{ - KDE_EXPORT KDecorationFactory *create_factory() - { - KWinIaOra::handler = new KWinIaOra::IaOraHandler(); - return KWinIaOra::handler; - } -} diff --git a/src/kwin/iaora.desktop b/src/kwin/iaora.desktop deleted file mode 100644 index 7bece01..0000000 --- a/src/kwin/iaora.desktop +++ /dev/null @@ -1,5 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Icon= -Name=Ia ora -X-KDE-Library=kwin3_iaora diff --git a/src/kwin/iaora.h b/src/kwin/iaora.h deleted file mode 100644 index b79d229..0000000 --- a/src/kwin/iaora.h +++ /dev/null @@ -1,126 +0,0 @@ -/* IaOra KWin window decoration - Based on plastik theme - Copyright (C) 2003-2005 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#ifndef IAORA_H -#define IAORA_H - -#include <tqfont.h> - -#include <kdecoration.h> -#include <kdecorationfactory.h> - -namespace KWinIaOra { - -enum ColorType { - TitleGradient1 = 0, // top - TitleGradient2, - TitleGradient3, // bottom - TitleGradient4, - ShadeTitleLight, - ShadeTitleDark, - Border1, - Border2, - Border3, - TitleFont, - TitleBorder -}; - -enum Pixmaps { - TitleBarTileTop=0, - TitleBarTile, - TitleBarLeft, - TitleBarRight, - BorderLeftTile, - BorderRightTile, - BorderBottomTile, - BorderBottomLeft, - BorderBottomRight, - NumPixmaps -}; - -enum ButtonIcon { - CloseIcon = 0, - MaxIcon, - MaxRestoreIcon, - MinIcon, - HelpIcon, - OnAllDesktopsIcon, - NotOnAllDesktopsIcon, - KeepAboveIcon, - NoKeepAboveIcon, - KeepBelowIcon, - NoKeepBelowIcon, - ShadeIcon, - UnShadeIcon, - NumButtonIcons -}; - -class IaOraHandler: public TQObject, public KDecorationFactory -{ - Q_OBJECT -public: - IaOraHandler(); - ~IaOraHandler(); - virtual bool reset( unsigned long changed ); - - virtual KDecoration* createDecoration( KDecorationBridge* ); - virtual bool supports( Ability ability ); - - const TQPixmap &pixmap(Pixmaps type, bool active, bool toolWindow); - const TQBitmap &buttonBitmap(ButtonIcon type, const TQSize &size, bool toolWindow); - - int titleHeight()const { return m_titleHeight; } - int titleHeightTool()const { return m_titleHeightTool; } - const TQFont &titleFont() { return m_titleFont; } - const TQFont &titleFontTool() { return m_titleFontTool; } - bool titleShadow()const { return m_titleShadow; } - bool menuClose()const { return m_menuClose; } - bool reverseLayout()const { return m_reverse; } - TQColor getColor(KWinIaOra::ColorType type, const bool active = true); - TQColor getGradientColor( KWinIaOra::ColorType type, const bool active); - TQColor getBorderColor( KWinIaOra::ColorType type, const bool active); - TQColor getShadowColor(); - -private: - void readConfig(); - - void pretile(TQPixmap *&pix, int size, TQt::Orientation dir) const; - - bool m_titleShadow; - bool m_menuClose; - bool m_reverse; - int m_titleHeight; - int m_titleHeightTool; - TQFont m_titleFont; - TQFont m_titleFontTool; - - // pixmap cache - TQPixmap *m_pixmaps[2][2][NumPixmaps]; // button pixmaps have normal+pressed state... - TQBitmap *m_bitmaps[2][NumButtonIcons]; -}; - -IaOraHandler* Handler(); - -} // KWinPlastik - -#endif // IAORA_H diff --git a/src/kwin/iaorabutton.cpp b/src/kwin/iaorabutton.cpp deleted file mode 100644 index 508f6af..0000000 --- a/src/kwin/iaorabutton.cpp +++ /dev/null @@ -1,528 +0,0 @@ -/* IaOra KWin window decoration - Copyright (C) 2006 Laurent Montel <[email protected]> - based on plastik code - Copyright (C) 2003-2005 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#include <tqbitmap.h> -#include <tqpainter.h> -#include <tqpixmap.h> -#include <kpixmap.h> -#include <kpixmapeffect.h> -#include <tqtimer.h> - -#include "iaorabutton.h" -#include "iaorabutton.moc" -#include "iaoraclient.h" -#include "misc.h" - -namespace KWinIaOra -{ - - -IaOraButton::IaOraButton(ButtonType type, IaOraClient *parent, const char *name) - : KCommonDecorationButton(type, parent, name), - m_client(parent), - m_iconType(NumButtonIcons), - hover(false) -{ - setBackgroundMode(NoBackground); - -} - -IaOraButton::~IaOraButton() -{ -} - -void IaOraButton::reset(unsigned long changed) -{ - if (changed&DecorationReset || changed&ManualReset || changed&SizeChange || changed&StateChange) { - switch (type() ) { - case CloseButton: - m_iconType = CloseIcon; - break; - case HelpButton: - m_iconType = HelpIcon; - break; - case MinButton: - m_iconType = MinIcon; - break; - case MaxButton: - if (isOn()) { - m_iconType = MaxRestoreIcon; - } else { - m_iconType = MaxIcon; - } - break; - case OnAllDesktopsButton: - if (isOn()) { - m_iconType = NotOnAllDesktopsIcon; - } else { - m_iconType = OnAllDesktopsIcon; - } - break; - case ShadeButton: - if (isOn()) { - m_iconType = UnShadeIcon; - } else { - m_iconType = ShadeIcon; - } - break; - case AboveButton: - if (isOn()) { - m_iconType = NoKeepAboveIcon; - } else { - m_iconType = KeepAboveIcon; - } - break; - case BelowButton: - if (isOn()) { - m_iconType = NoKeepBelowIcon; - } else { - m_iconType = KeepBelowIcon; - } - break; - default: - m_iconType = NumButtonIcons; // empty... - break; - } - - this->update(); - } -} - - -void IaOraButton::enterEvent(TQEvent *e) -{ - TQButton::enterEvent(e); - - hover = true; - repaint(false); -} - -void IaOraButton::leaveEvent(TQEvent *e) -{ - TQButton::leaveEvent(e); - - hover = false; - repaint(false); -} - -void IaOraButton::drawButton(TQPainter *painter) -{ - TQRect r(0,0,width(),height()); - - bool active = m_client->isActive(); - KPixmap tempKPixmap; - - TQPixmap buffer; - buffer.resize(width(), height()); - TQPainter bP(&buffer); - - // fake the titlebar background - bP.drawTiledPixmap(0, 0, width(), width(), /*define color*/m_client->getTitleBarTile(active) ); - if (type() == MenuButton) - { - TQPixmap menuIcon(m_client->icon().pixmap( TQIconSet::Small, TQIconSet::Normal)); - if (width() < menuIcon.width() || height() < menuIcon.height() ) { - menuIcon.convertFromImage( menuIcon.convertToImage().smoothScale(width(), height())); - } - bP.drawPixmap((width()-menuIcon.width())/2, (height()-menuIcon.height())/2, menuIcon); - } - else - { - int dX,dY; - const TQBitmap &icon = Handler()->buttonBitmap(m_iconType, size(), decoration()->isToolWindow() ); - dX = r.x()+(r.width()-icon.width())/2; - dY = r.y()+(r.height()-icon.height())/2; - if (isDown() ) { - dY++; - } -#if 0 - if(!isDown() && Handler()->titleShadow() ) { - TQColor shadowColor; - if (tqGray(Handler()->getColor(TitleFont,active).rgb()) < 100) - shadowColor = TQColor(255, 255, 255); - else - shadowColor = TQColor(0,0,0); - //bP.setPen(alphaBlendColors(sourfaceTop, shadowColor, 180) ); - bP.drawPixmap(dX+1, dY+1, icon); - } -#endif - bP.setPen(Handler()->getColor(TitleFont,hover ? false : active) ); - bP.drawPixmap(dX, dY, icon,0,0,icon.width(),icon.height()/2); - bP.setPen(TQColor("#CFD7DF") ); - bP.drawPixmap(dX, dY+icon.height()/2, icon,0,icon.height()/2,icon.width(),icon.height()); - } - bP.end(); - painter->drawPixmap(0, 0, buffer); -} - -TQBitmap IconEngine::icon(ButtonIcon icon, int size) -{ - if (size%2 == 0) - --size; - - TQBitmap bitmap(size,size); - bitmap.fill(TQt::color0); - TQPainter p(&bitmap); - - p.setPen(TQt::color1); - - TQRect r = bitmap.rect(); - - // line widths - int lwTitleBar = 1; - if (r.width() > 16) { - lwTitleBar = 4; - } else if (r.width() > 4) { - lwTitleBar = 2; - } - int lwArrow = 1; - if (r.width() > 16) { - lwArrow = 4; - } else if (r.width() > 7) { - lwArrow = 2; - } - - //TQColor col1( "#FFFFFF" ); - //TQColor col2( "#CFD7DF" ); - - switch(icon) { - case CloseIcon: - { - int lineWidth = 1; - if (r.width() > 16) { - lineWidth = 3; - } else if (r.width() > 4) { - lineWidth = 2; - } - - drawObject(p, DiagonalLine, r.x(), r.y(), r.width(), lineWidth); - drawObject(p, CrossDiagonalLine, r.x(), r.bottom(), r.width(), lineWidth); - - break; - } - - case MaxIcon: - { - int lineWidth2 = 1; // frame - if (r.width() > 16) { - lineWidth2 = 2; - } else if (r.width() > 4) { - lineWidth2 = 1; - } - - drawObject(p, HorizontalLine, r.x(), r.top(), r.width(), lwTitleBar); - drawObject(p, HorizontalLine, r.x(), r.bottom()-(lineWidth2-1), r.width(), lineWidth2); - drawObject(p, VerticalLine, r.x(), r.top(), r.height(), lineWidth2); - drawObject(p, VerticalLine, r.right()-(lineWidth2-1), r.top(), r.height(), lineWidth2); - - break; - } - - case MaxRestoreIcon: - { - int lineWidth2 = 1; // frame - if (r.width() > 16) { - lineWidth2 = 2; - } else if (r.width() > 4) { - lineWidth2 = 1; - } - - int margin1, margin2; - margin1 = margin2 = lineWidth2*2; - if (r.width() < 8) - margin1 = 1; - - // background window - drawObject(p, HorizontalLine, r.x(), r.top(), r.width()-margin1+1 +3 , lineWidth2); - drawObject(p, HorizontalLine, r.right()-margin2, r.bottom()-(lineWidth2-1)/*-margin1*/, margin2, lineWidth2); - drawObject(p, VerticalLine, r.x(), r.top(), margin2+3, lineWidth2); - drawObject(p, VerticalLine, r.right()-(lineWidth2-1), r.top(), r.height()-margin1+3, lineWidth2); - - // foreground window - drawObject(p, HorizontalLine, r.x(), r.top()+margin2, r.width()-margin2, lwTitleBar); - drawObject(p, HorizontalLine, r.x(), r.bottom()-(lineWidth2-1), r.width()-margin2, lineWidth2); - drawObject(p, VerticalLine, r.x(), r.top()+margin2, r.height(), lineWidth2); - drawObject(p, VerticalLine, r.right()-(lineWidth2-1)-margin2, r.top()+margin2, r.height(), lineWidth2); - break; - } - - case MinIcon: - { - int posY = r.height()/2-(lwTitleBar-1); - - drawObject(p, HorizontalLine, r.x()+1,posY, r.width()-2, lwTitleBar); - //grey 2 - //p.setPen( col2 ); - p.drawLine(r.x(),posY+1, r.x()+r.width()-1, posY+1); - p.drawLine(r.x()+1, posY+2, r.x()+r.width()-2, posY+2); - - break; - } - - case HelpIcon: - { - int center = r.x()+r.width()/2 -1; - int side = r.width()/4; - - // paint a question mark... code is quite messy, to be cleaned up later...! :o - - if (r.width() > 16) { - int lineWidth = 3; - - // top bar - drawObject(p, HorizontalLine, center-side+3, r.y(), 2*side-3-1, lineWidth); - // top bar rounding - drawObject(p, CrossDiagonalLine, center-side-1, r.y()+5, 6, lineWidth); - drawObject(p, DiagonalLine, center+side-3, r.y(), 5, lineWidth); - // right bar - drawObject(p, VerticalLine, center+side+2-lineWidth, r.y()+3, r.height()-(2*lineWidth+side+2+1), lineWidth); - // bottom bar - drawObject(p, CrossDiagonalLine, center, r.bottom()-2*lineWidth, side+2, lineWidth); - drawObject(p, HorizontalLine, center, r.bottom()-3*lineWidth+2, lineWidth, lineWidth); - // the dot - drawObject(p, HorizontalLine, center, r.bottom()-(lineWidth-1), lineWidth, lineWidth); - } else if (r.width() > 8) { - int lineWidth = 2; - - // top bar - drawObject(p, HorizontalLine, center-(side-1), r.y(), 2*side-1, lineWidth); - // top bar rounding - if (r.width() > 9) { - drawObject(p, CrossDiagonalLine, center-side-1, r.y()+3, 3, lineWidth); - } else { - drawObject(p, CrossDiagonalLine, center-side-1, r.y()+2, 3, lineWidth); - } - drawObject(p, DiagonalLine, center+side-1, r.y(), 3, lineWidth); - // right bar - drawObject(p, VerticalLine, center+side+2-lineWidth, r.y()+2, r.height()-(2*lineWidth+side+1), lineWidth); - // bottom bar - drawObject(p, CrossDiagonalLine, center, r.bottom()-2*lineWidth+1, side+2, lineWidth); - // the dot - drawObject(p, HorizontalLine, center, r.bottom()-(lineWidth-1), lineWidth, lineWidth); - } else { - int lineWidth = 1; - - // top bar - drawObject(p, HorizontalLine, center-(side-1), r.y(), 2*side, lineWidth); - // top bar rounding - drawObject(p, CrossDiagonalLine, center-side-1, r.y()+1, 2, lineWidth); - // right bar - drawObject(p, VerticalLine, center+side+1, r.y(), r.height()-(side+2+1), lineWidth); - // bottom bar - drawObject(p, CrossDiagonalLine, center, r.bottom()-2, side+2, lineWidth); - // the dot - drawObject(p, HorizontalLine, center, r.bottom(), 1, 1); - } - - break; - } - - case NotOnAllDesktopsIcon: - { - int lwMark = r.width()-lwTitleBar*2-2; - if (lwMark < 1) - lwMark = 3; - - drawObject(p, HorizontalLine, r.x()+(r.width()-lwMark)/2, r.y()+(r.height()-lwMark)/2, lwMark, lwMark); - - // Fall through to OnAllDesktopsIcon intended! - } - case OnAllDesktopsIcon: - { - // horizontal bars - drawObject(p, HorizontalLine, r.x()+lwTitleBar, r.y(), r.width()-2*lwTitleBar, lwTitleBar); - drawObject(p, HorizontalLine, r.x()+lwTitleBar, r.bottom()-(lwTitleBar-1), r.width()-2*lwTitleBar, lwTitleBar); - // vertical bars - drawObject(p, VerticalLine, r.x(), r.y()+lwTitleBar, r.height()-2*lwTitleBar, lwTitleBar); - drawObject(p, VerticalLine, r.right()-(lwTitleBar-1), r.y()+lwTitleBar, r.height()-2*lwTitleBar, lwTitleBar); - - - break; - } - - case NoKeepAboveIcon: - { - int center = r.x()+r.width()/2; - - // arrow - drawObject(p, CrossDiagonalLine, r.x(), center+2*lwArrow, center-r.x(), lwArrow); - drawObject(p, DiagonalLine, r.x()+center, r.y()+1+2*lwArrow, center-r.x(), lwArrow); - if (lwArrow>1) - drawObject(p, HorizontalLine, center-(lwArrow-2), r.y()+2*lwArrow, (lwArrow-2)*2, lwArrow); - - // Fall through to KeepAboveIcon intended! - } - case KeepAboveIcon: - { - int center = r.x()+r.width()/2; - - // arrow - drawObject(p, CrossDiagonalLine, r.x(), center, center-r.x(), lwArrow); - drawObject(p, DiagonalLine, r.x()+center, r.y()+1, center-r.x(), lwArrow); - if (lwArrow>1) - drawObject(p, HorizontalLine, center-(lwArrow-2), r.y(), (lwArrow-2)*2, lwArrow); - - break; - } - - case NoKeepBelowIcon: - { - int center = r.x()+r.width()/2; - - // arrow - drawObject(p, DiagonalLine, r.x(), center-2*lwArrow, center-r.x(), lwArrow); - drawObject(p, CrossDiagonalLine, r.x()+center, r.bottom()-1-2*lwArrow, center-r.x(), lwArrow); - if (lwArrow>1) - drawObject(p, HorizontalLine, center-(lwArrow-2), r.bottom()-(lwArrow-1)-2*lwArrow, (lwArrow-2)*2, lwArrow); - - // Fall through to KeepBelowIcon intended! - } - case KeepBelowIcon: - { - int center = r.x()+r.width()/2; - - // arrow - drawObject(p, DiagonalLine, r.x(), center, center-r.x(), lwArrow); - drawObject(p, CrossDiagonalLine, r.x()+center, r.bottom()-1, center-r.x(), lwArrow); - if (lwArrow>1) - drawObject(p, HorizontalLine, center-(lwArrow-2), r.bottom()-(lwArrow-1), (lwArrow-2)*2, lwArrow); - - break; - } - - case ShadeIcon: - { - drawObject(p, HorizontalLine, r.x(), r.y(), r.width(), lwTitleBar); - - break; - } - - case UnShadeIcon: - { - int lw1 = 1; - int lw2 = 1; - if (r.width() > 16) { - lw1 = 4; - lw2 = 2; - } else if (r.width() > 7) { - lw1 = 2; - lw2 = 1; - } - - int h = TQMAX( (r.width()/2), (lw1+2*lw2) ); - - // horizontal bars - drawObject(p, HorizontalLine, r.x(), r.y(), r.width(), lw1); - drawObject(p, HorizontalLine, r.x(), r.x()+h-(lw2-1), r.width(), lw2); - // vertical bars - drawObject(p, VerticalLine, r.x(), r.y(), h, lw2); - drawObject(p, VerticalLine, r.right()-(lw2-1), r.y(), h, lw2); - - break; - } - - default: - break; - } - - p.end(); - - bitmap.setMask(bitmap); - - return bitmap; -} - -void IconEngine::drawObject(TQPainter &p, Object object, int x, int y, int length, int lineWidth) -{ - switch(object) { - case DiagonalLine: - if (lineWidth <= 1) { - for (int i = 0; i < length; ++i) { - p.drawPoint(x+i,y+i); - } - } else if (lineWidth <= 2) { - for (int i = 0; i < length; ++i) { - p.drawPoint(x+i,y+i); - } - for (int i = 0; i < (length-1); ++i) { - p.drawPoint(x+1+i,y+i); - p.drawPoint(x+i,y+1+i); - } - } else { - for (int i = 1; i < (length-1); ++i) { - p.drawPoint(x+i,y+i); - } - for (int i = 0; i < (length-1); ++i) { - p.drawPoint(x+1+i,y+i); - p.drawPoint(x+i,y+1+i); - } - for (int i = 0; i < (length-2); ++i) { - p.drawPoint(x+2+i,y+i); - p.drawPoint(x+i,y+2+i); - } - } - break; - case CrossDiagonalLine: - if (lineWidth <= 1) { - for (int i = 0; i < length; ++i) { - p.drawPoint(x+i,y-i); - } - } else if (lineWidth <= 2) { - for (int i = 0; i < length; ++i) { - p.drawPoint(x+i,y-i); - } - for (int i = 0; i < (length-1); ++i) { - p.drawPoint(x+1+i,y-i); - p.drawPoint(x+i,y-1-i); - } - } else { - for (int i = 1; i < (length-1); ++i) { - p.drawPoint(x+i,y-i); - } - for (int i = 0; i < (length-1); ++i) { - p.drawPoint(x+1+i,y-i); - p.drawPoint(x+i,y-1-i); - } - for (int i = 0; i < (length-2); ++i) { - p.drawPoint(x+2+i,y-i); - p.drawPoint(x+i,y-2-i); - } - } - break; - case HorizontalLine: - for (int i = 0; i < lineWidth; ++i) { - p.drawLine(x,y+i, x+length-1, y+i); - } - break; - case VerticalLine: - for (int i = 0; i < lineWidth; ++i) { - p.drawLine(x+i,y, x+i, y+length-1); - } - break; - default: - break; - } -} - -} // KWinIaOra diff --git a/src/kwin/iaorabutton.h b/src/kwin/iaorabutton.h deleted file mode 100644 index 8b4237b..0000000 --- a/src/kwin/iaorabutton.h +++ /dev/null @@ -1,85 +0,0 @@ -/* Plastik KWin window decoration - Copyright (C) 2003-2005 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#ifndef IAORABUTTON_H -#define IAORABUTTON_H - -#include <tqbutton.h> -#include <tqimage.h> -#include "iaora.h" - -#include <kcommondecoration.h> - -class TQTimer; - -namespace KWinIaOra { - -class IaOraClient; - -class IaOraButton : public KCommonDecorationButton -{ - Q_OBJECT -public: - IaOraButton(ButtonType type, IaOraClient *parent, const char *name); - ~IaOraButton(); - - void reset(unsigned long changed); - IaOraClient * client() { return m_client; } - - -private: - void enterEvent(TQEvent *e); - void leaveEvent(TQEvent *e); - void drawButton(TQPainter *painter); - -private: - IaOraClient *m_client; - ButtonIcon m_iconType; - bool hover; -}; - -/** - * This class creates bitmaps which can be used as icons on buttons. The icons - * are "hardcoded". - * Over the previous "Gimp->xpm->TQImage->recolor->SmoothScale->TQPixmap" solution - * it has the important advantage that icons are more scalable and at the same - * time sharp and not blurred. - */ -class IconEngine -{ - public: - static TQBitmap icon(ButtonIcon icon, int size); - - private: - enum Object { - HorizontalLine, - VerticalLine, - DiagonalLine, - CrossDiagonalLine - }; - - static void drawObject(TQPainter &p, Object object, int x, int y, int length, int lineWidth); -}; - -} // namespace KWinIaOra - -#endif // IAORABUTTON_H diff --git a/src/kwin/iaoraclient.cpp b/src/kwin/iaoraclient.cpp deleted file mode 100644 index 73f523f..0000000 --- a/src/kwin/iaoraclient.cpp +++ /dev/null @@ -1,514 +0,0 @@ -/* Ia Ora KWin window decoration - Copyright (c) 2006 Laurent Montel <[email protected]> - based on plastik code - Copyright (C) 2003-2005 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#include <klocale.h> - -#include <tqbitmap.h> -#include <tqdatetime.h> -#include <tqfontmetrics.h> -#include <tqimage.h> -#include <tqlabel.h> -#include <tqlayout.h> -#include <tqpainter.h> -#include <tqpixmap.h> -#include <tqdesktopwidget.h> - -#include "iaoraclient.h" -#include "iaorabutton.h" -#include "misc.h" - -namespace KWinIaOra -{ - -IaOraClient::IaOraClient(KDecorationBridge* bridge, KDecorationFactory* factory) - : KCommonDecoration (bridge, factory), - s_titleFont(TQFont() ) -{ - memset(m_captionPixmaps, 0, sizeof(TQPixmap*)*2); -} - -IaOraClient::~IaOraClient() -{ - clearCaptionPixmaps(); -} - -TQString IaOraClient::visibleName() const -{ - return i18n("Ia Ora"); -} - -TQString IaOraClient::defaultButtonsLeft() const -{ - return "M"; -} - -TQString IaOraClient::defaultButtonsRight() const -{ - return "IAX"; -} - -bool IaOraClient::decorationBehaviour(DecorationBehaviour behaviour) const -{ - switch (behaviour) { - case DB_MenuClose: - return Handler()->menuClose(); - - case DB_WindowMask: - return true; - - default: - return KCommonDecoration::decorationBehaviour(behaviour); - } -} - -int IaOraClient::layoutMetric(LayoutMetric lm, bool respectWindowState, const KCommonDecorationButton *btn) const -{ - bool maximized = maximizeMode()==MaximizeFull && !options()->moveResizeMaximizedWindows(); - - switch (lm) { - case LM_BorderLeft: - case LM_BorderRight: - case LM_BorderBottom: - { - if (respectWindowState && maximized) { - return 0; - } else { - return 3; - } - } - - case LM_TitleEdgeTop: - { - if (respectWindowState && maximized) { - return 0; - } else { - return 3; - } - } - - case LM_TitleEdgeBottom: - { - if (respectWindowState && maximized) { - return 1; - } else { - return 2; - } - } - - case LM_TitleEdgeLeft: - case LM_TitleEdgeRight: - { - //if (respectWindowState && maximized) { - return 1; - //} else { - //return 3; - //} - } - - case LM_TitleBorderLeft: - case LM_TitleBorderRight: - return 0; - - case LM_ButtonWidth: - case LM_ButtonHeight: - case LM_TitleHeight: - { - if (respectWindowState && isToolWindow()) { - return Handler()->titleHeightTool(); - } else { - return Handler()->titleHeight(); - } - } - - case LM_ButtonSpacing: - return 1; - - case LM_ButtonMarginTop: - return 0; - - case LM_ExplicitButtonSpacer: - return 3; - - default: - return KCommonDecoration::layoutMetric(lm, respectWindowState, btn); - } -} - -KCommonDecorationButton *IaOraClient::createButton(ButtonType type) -{ - switch (type) { - case MenuButton: - return new IaOraButton(MenuButton, this, "menu"); - - case OnAllDesktopsButton: - return new IaOraButton(OnAllDesktopsButton, this, "on_all_desktops"); - - case HelpButton: - return new IaOraButton(HelpButton, this, "help"); - - case MinButton: - return new IaOraButton(MinButton, this, "minimize"); - - case MaxButton: - return new IaOraButton(MaxButton, this, "maximize"); - - case CloseButton: - return new IaOraButton(CloseButton, this, "close"); - - case AboveButton: - return new IaOraButton(AboveButton, this, "above"); - - case BelowButton: - return new IaOraButton(BelowButton, this, "below"); - - case ShadeButton: - return new IaOraButton(ShadeButton, this, "shade"); - - default: - return 0; - } -} - -void IaOraClient::init() -{ - s_titleFont = isToolWindow() ? Handler()->titleFontTool() : Handler()->titleFont(); - - clearCaptionPixmaps(); - - KCommonDecoration::init(); -} - -TQRegion IaOraClient::cornerShape(WindowCorner corner) -{ - int w = widget()->width(); - int h = widget()->height(); - - switch (corner) { - case WC_TopLeft: - if (layoutMetric(LM_TitleEdgeLeft) > 0) - return TQRegion(0, 0, 1, 1);// + TQRegion(1, 0, 1, 1); - else - return TQRegion(); - - case WC_TopRight: - if (layoutMetric(LM_TitleEdgeRight) > 0) - return TQRegion(w-1, 0, 1, 1);// + TQRegion(w-2, 0, 1, 1); - else - return TQRegion(); - - case WC_BottomLeft: - if (layoutMetric(LM_BorderBottom) > 0) - return TQRegion(0, h-1, 1, 1); - else - return TQRegion(); - - case WC_BottomRight: - if (layoutMetric(LM_BorderBottom) > 0) - return TQRegion(w-1, h-1, 1, 1); - else - return TQRegion(); - - default: - return TQRegion(); - } - -} - -void IaOraClient::paintEvent(TQPaintEvent *e) -{ - TQRegion region = e->region(); - - IaOraHandler *handler = Handler(); - - if (oldCaption != caption() ) - clearCaptionPixmaps(); - - bool active = isActive(); - bool toolWindow = isToolWindow(); - - TQPainter painter(widget() ); - - // often needed coordinates - TQRect r = widget()->rect(); - - int r_w = r.width(); -// int r_h = r.height(); - int r_x, r_y, r_x2, r_y2; - r.coords(&r_x, &r_y, &r_x2, &r_y2); - const int borderLeft = layoutMetric(LM_BorderLeft); - const int borderRight = layoutMetric(LM_BorderRight); - const int borderBottom = layoutMetric(LM_BorderBottom); - const int titleHeight = layoutMetric(LM_TitleHeight); - const int titleEdgeTop = layoutMetric(LM_TitleEdgeTop); - const int titleEdgeBottom = layoutMetric(LM_TitleEdgeBottom); - const int titleEdgeLeft = layoutMetric(LM_TitleEdgeLeft); - const int titleEdgeRight = layoutMetric(LM_TitleEdgeRight); - - const int borderBottomTop = r_y2-borderBottom+1; - const int borderLeftRight = r_x+borderLeft-1; - const int borderRightLeft = r_x2-borderRight+1; - const int titleEdgeBottomBottom = r_y+titleEdgeTop+titleHeight+titleEdgeBottom-1; - - const int sideHeight = borderBottomTop-titleEdgeBottomBottom-1; - - TQRect Rtitle = TQRect(r_x+titleEdgeLeft+buttonsLeftWidth(), r_y+titleEdgeTop, - r_x2-titleEdgeRight-buttonsRightWidth()-(r_x+titleEdgeLeft+buttonsLeftWidth()), - titleEdgeBottomBottom-(r_y+titleEdgeTop) ); - - TQRect tempRect; - - // topSpacer - if(titleEdgeTop > 0) - { - tempRect.setRect(r_x+2, r_y, r_w-2*2, titleEdgeTop ); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(TitleBarTileTop, active, toolWindow) ); - } - } - - // leftTitleSpacer - int titleMarginLeft = 0; - int titleMarginRight = 0; - if(titleEdgeLeft > 0) - { - tempRect.setRect(r_x, r_y, borderLeft, titleEdgeTop+titleHeight+titleEdgeBottom); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(TitleBarLeft, active, toolWindow) ); - titleMarginLeft = borderLeft; - } - } - - // rightTitleSpacer - if(titleEdgeRight > 0) - { - tempRect.setRect(borderRightLeft, r_y, borderRight, titleEdgeTop+titleHeight+titleEdgeBottom); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(TitleBarRight, active, toolWindow) ); - titleMarginRight = borderRight; - } - } - - // titleSpacer - const TQPixmap &caption = captionPixmap(); - if(Rtitle.width() > 0) - { - m_captionRect = captionRect(); // also update m_captionRect! - if (m_captionRect.isValid() && region.contains(m_captionRect) ) - { - painter.drawTiledPixmap(m_captionRect, caption); - } - - // left to the title - tempRect.setRect(r_x+titleMarginLeft, m_captionRect.top(), - m_captionRect.left() - (r_x+titleMarginLeft), m_captionRect.height() ); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(TitleBarTile, active, toolWindow) ); - } - - // right to the title - tempRect.setRect(m_captionRect.right()+1, m_captionRect.top(), - (r_x2-titleMarginRight) - m_captionRect.right(), m_captionRect.height() ); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(TitleBarTile, active, toolWindow) ); - } - - } - - // leftSpacer - if(borderLeft > 0 && sideHeight > 0) - { - tempRect.setCoords(r_x, titleEdgeBottomBottom+1, borderLeftRight, borderBottomTop-1); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(BorderLeftTile, active, toolWindow) ); - } - } - - // rightSpacer - if(borderRight > 0 && sideHeight > 0) - { - tempRect.setCoords(borderRightLeft, titleEdgeBottomBottom+1, r_x2, borderBottomTop-1); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(BorderRightTile, active, toolWindow) ); - } - } - - // bottomSpacer - if(borderBottom > 0) - { - int l = r_x; - int r = r_x2; - - tempRect.setRect(r_x, borderBottomTop, borderLeft, borderBottom); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(BorderBottomLeft, active, toolWindow) ); - l = tempRect.right()+1; - } - - tempRect.setRect(borderRightLeft, borderBottomTop, borderLeft, borderBottom); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(BorderBottomRight, active, toolWindow) ); - r = tempRect.left()-1; - } - - tempRect.setCoords(l, borderBottomTop, r, r_y2); - if (tempRect.isValid() && region.contains(tempRect) ) { - painter.drawTiledPixmap(tempRect, handler->pixmap(BorderBottomTile, active, toolWindow) ); - } - } -} - -TQRect IaOraClient::captionRect() const -{ - const TQPixmap &caption = captionPixmap(); - TQRect r = widget()->rect(); - - const int titleHeight = layoutMetric(LM_TitleHeight); - const int titleEdgeBottom = layoutMetric(LM_TitleEdgeBottom); - const int titleEdgeTop = layoutMetric(LM_TitleEdgeTop); - const int titleEdgeLeft = layoutMetric(LM_TitleEdgeLeft); - const int marginLeft = layoutMetric(LM_TitleBorderLeft); - const int marginRight = layoutMetric(LM_TitleBorderRight); - - const int titleLeft = r.left() + titleEdgeLeft + buttonsLeftWidth() + marginLeft; - const int titleWidth = r.width() - - titleEdgeLeft - layoutMetric(LM_TitleEdgeRight) - - buttonsLeftWidth() - buttonsRightWidth() - - marginLeft - marginRight; - int tX, tW; // position/width of the title buffer - if (caption.width() > titleWidth) { - tW = titleWidth; - } else { - tW = caption.width(); - } - - if (caption.width() > titleWidth ) { - // Align left - tX = titleLeft; - } - else - tX = titleLeft+(titleWidth- caption.width() )/2; - return TQRect(tX, r.top()+titleEdgeTop, tW, titleHeight+titleEdgeBottom); -} - -void IaOraClient::updateCaption() -{ - TQRect oldCaptionRect = m_captionRect; - - if (oldCaption != caption() ) - clearCaptionPixmaps(); - - m_captionRect = IaOraClient::captionRect(); - - if (oldCaptionRect.isValid() && m_captionRect.isValid() ) - widget()->update(oldCaptionRect|m_captionRect); - else - widget()->update(); -} - -void IaOraClient::reset( unsigned long changed ) -{ - if (changed & SettingColors) - { - // repaint the whole thing - clearCaptionPixmaps(); - widget()->update(); - updateButtons(); - } else if (changed & SettingFont) { - // font has changed -- update title height and font - s_titleFont = isToolWindow() ? Handler()->titleFontTool() : Handler()->titleFont(); - - updateLayout(); - - // then repaint - clearCaptionPixmaps(); - widget()->update(); - } - - KCommonDecoration::reset(changed); -} - -const TQPixmap &IaOraClient::getTitleBarTile(bool active) const -{ - return Handler()->pixmap(TitleBarTile, active, isToolWindow() ); -} - -const TQPixmap &IaOraClient::captionPixmap() const -{ - bool active = isActive(); - - if (m_captionPixmaps[active]) { - return *m_captionPixmaps[active]; - } - - // not found, create new pixmap... - - const uint maxCaptionLength = 300; // truncate captions longer than this! - TQString c(caption() ); - if (c.length() > maxCaptionLength) { - c.truncate(maxCaptionLength); - c.append(" [...]"); - } - - TQFontMetrics fm(s_titleFont); - int captionWidth = fm.width(c); - int captionHeight = fm.height(); - - const int th = layoutMetric(LM_TitleHeight, false) + layoutMetric(LM_TitleEdgeBottom, false); - - TQPainter painter; - - const int thickness = 2; - - TQPixmap *captionPixmap = new TQPixmap(captionWidth+2*thickness, th); - - painter.begin(captionPixmap); - painter.drawTiledPixmap(captionPixmap->rect(), - Handler()->pixmap(TitleBarTile, active, isToolWindow()) ); - - painter.setFont(s_titleFont); - TQPoint tp(1, captionHeight-1); -// if(Handler()->titleShadow()) -// { -// painter.setPen(Handler()->getShadowColor()); -// painter.drawText(tp+TQPoint(2,2), c); -// } - painter.setPen(Handler()->getColor(TitleFont,active) ); - painter.drawText(tp, c ); - painter.end(); - - m_captionPixmaps[active] = captionPixmap; - return *captionPixmap; -} - -void IaOraClient::clearCaptionPixmaps() -{ - for (int i = 0; i < 2; ++i) { - delete m_captionPixmaps[i]; - m_captionPixmaps[i] = 0; - } - - oldCaption = caption(); -} - -} // KWinIaOra diff --git a/src/kwin/iaoraclient.h b/src/kwin/iaoraclient.h deleted file mode 100644 index d85494f..0000000 --- a/src/kwin/iaoraclient.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Plastik KWin window decoration - Copyright (C) 2003-2005 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#ifndef IAORACLIENT_H -#define IAORACLIENT_H - -#include <kcommondecoration.h> - -#include "iaora.h" - -namespace KWinIaOra { - -class IaOraButton; - -class IaOraClient : public KCommonDecoration -{ -public: - IaOraClient(KDecorationBridge* bridge, KDecorationFactory* factory); - ~IaOraClient(); - - virtual TQString visibleName() const; - virtual TQString defaultButtonsLeft() const; - virtual TQString defaultButtonsRight() const; - virtual bool decorationBehaviour(DecorationBehaviour behaviour) const; - virtual int layoutMetric(LayoutMetric lm, bool respectWindowState = true, const KCommonDecorationButton * = 0) const; - virtual TQRegion cornerShape(WindowCorner corner); - virtual KCommonDecorationButton *createButton(ButtonType type); - - virtual void init(); - virtual void reset( unsigned long changed ); - - virtual void paintEvent(TQPaintEvent *e); - virtual void updateCaption(); - - const TQPixmap &getTitleBarTile(bool active) const; - -private: - TQRect captionRect() const; - - const TQPixmap &captionPixmap() const; - void clearCaptionPixmaps(); - - mutable TQPixmap *m_captionPixmaps[2]; - - TQRect m_captionRect; - TQString oldCaption; - - // settings... - TQFont s_titleFont; -}; - -} // KwinIaora - -#endif // IAORACLIENT_H diff --git a/src/kwin/misc.cpp b/src/kwin/misc.cpp deleted file mode 100644 index 2da6b5b..0000000 --- a/src/kwin/misc.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* Plastik KWin window decoration - Copyright (C) 2003 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#include <kpixmap.h> -#include <kpixmapeffect.h> - -#include <tqcolor.h> -#include <tqimage.h> -#include <tqpainter.h> - -#include "misc.h" - -TQColor alphaBlendColors(const TQColor &bgColor, const TQColor &fgColor, const int a) -{ - - // normal button... - TQRgb rgb = bgColor.rgb(); - TQRgb rgb_b = fgColor.rgb(); - int alpha = a; - if(alpha>255) alpha = 255; - if(alpha<0) alpha = 0; - int inv_alpha = 255 - alpha; - - TQColor result = TQColor( tqRgb(tqRed(rgb_b)*inv_alpha/255 + tqRed(rgb)*alpha/255, - tqGreen(rgb_b)*inv_alpha/255 + tqGreen(rgb)*alpha/255, - tqBlue(rgb_b)*inv_alpha/255 + tqBlue(rgb)*alpha/255) ); - - return result; -} - diff --git a/src/kwin/misc.h b/src/kwin/misc.h deleted file mode 100644 index bce0e06..0000000 --- a/src/kwin/misc.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Plastik KWin window decoration - Copyright (C) 2003 Sandro Giessl <[email protected]> - - based on the window decoration "Web": - Copyright (C) 2001 Rik Hemsley (rikkus) <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This program 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 - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - */ - -#ifndef MISC_H -#define MISC_H - -TQColor alphaBlendColors(const TQColor &backgroundColor, const TQColor &foregroundColor, const int alpha); - -#endif // MISC_H |