Moved back shadow dimensions to Metrics in breeze.h

cleanup shadow rendering code
fix shadow offsets in MDI windows
wilder-pre-rebase
Hugo Pereira Da Costa 12 years ago
parent 54b498c975
commit 631247fac6
  1. 8
      kstyle/breeze.h
  2. 5
      kstyle/breezemdiwindowshadow.cpp
  3. 3
      kstyle/breezemdiwindowshadow.h
  4. 85
      kstyle/breezeshadowhelper.cpp

@ -157,7 +157,13 @@ namespace Breeze
ItemView_ItemMarginWidth = 4,
// splitter
Splitter_SplitterWidth = 1
Splitter_SplitterWidth = 1,
// shadow dimensions
Shadow_InternalSize = 10,
Shadow_InternalOffset = 4,
Shadow_Size = (3*Shadow_InternalSize + Shadow_InternalOffset)/2,
Shadow_Overlap = Shadow_Size - Shadow_InternalSize + 2
};

@ -30,6 +30,8 @@
#include "breezemdiwindowshadow.h"
#include "breezemdiwindowshadow.moc"
#include "breeze.h"
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QPainter>
@ -44,7 +46,8 @@ namespace Breeze
if( !_widget ) return;
// get tileSet rect
_shadowTilesRect = _widget->frameGeometry().adjusted( -ShadowSize, -ShadowSize, ShadowSize, ShadowSize );
const int shadowSize = Metrics::Shadow_Size - Metrics::Shadow_Overlap;
_shadowTilesRect = _widget->frameGeometry().adjusted( -shadowSize, -shadowSize, shadowSize, shadowSize );
// get parent MDI area's viewport
QWidget *parent( parentWidget() );

@ -51,9 +51,6 @@ namespace Breeze
public:
//* shadow size (hard coded)
enum { ShadowSize = 10 };
//* constructor
explicit MdiWindowShadow( QWidget* parent, TileSet shadowTiles ):
QWidget( parent ),

@ -27,6 +27,7 @@
#include "breezeshadowhelper.h"
#include "breezeshadowhelper.moc"
#include "breeze.h"
#include "breezehelper.h"
#include "breezestyleconfigdata.h"
@ -50,15 +51,6 @@ namespace Breeze
const char* const ShadowHelper::netWMForceShadowPropertyName( "_KDE_NET_WM_FORCE_SHADOW" );
const char* const ShadowHelper::netWMSkipShadowPropertyName( "_KDE_NET_WM_SKIP_SHADOW" );
// shadow dimensions
enum
{
Shadow_InternalSize = 10,
Shadow_InternalOffset = 4,
Shadow_Size = (3*Shadow_InternalSize + Shadow_InternalOffset)/2,
Shadow_Overlap = Shadow_Size - Shadow_InternalSize + 2
};
//_____________________________________________________
ShadowHelper::ShadowHelper( QObject* parent, Helper& helper ):
QObject( parent ),
@ -161,7 +153,7 @@ namespace Breeze
const QColor shadowColor( palette.color( QPalette::Shadow ) );
// create pixmap
QPixmap pixmap = QPixmap( Shadow_Size*2, Shadow_Size*2 );
QPixmap pixmap = QPixmap( Metrics::Shadow_Size*2, Metrics::Shadow_Size*2 );
pixmap.fill( Qt::transparent );
// paint
@ -172,9 +164,9 @@ namespace Breeze
switch( StyleConfigData::lightSource() )
{
case StyleConfigData::LS_TOP: painter.translate( Shadow_InternalOffset/2, Shadow_InternalOffset ); break;
case StyleConfigData::LS_TOPLEFT: painter.translate( Shadow_InternalOffset, Shadow_InternalOffset ); break;
case StyleConfigData::LS_TOPRIGHT: painter.translate( 0, Shadow_InternalOffset ); break;
case StyleConfigData::LS_TOP: painter.translate( Metrics::Shadow_InternalOffset/2, Metrics::Shadow_InternalOffset ); break;
case StyleConfigData::LS_TOPLEFT: painter.translate( Metrics::Shadow_InternalOffset, Metrics::Shadow_InternalOffset ); break;
case StyleConfigData::LS_TOPRIGHT: painter.translate( 0, Metrics::Shadow_InternalOffset ); break;
}
auto gradientStopColor = [](QColor color, qreal alpha) {
@ -182,7 +174,7 @@ namespace Breeze
return color;
};
QRadialGradient radialGradient(Shadow_InternalSize, Shadow_InternalSize, Shadow_InternalSize);
QRadialGradient radialGradient(Metrics::Shadow_InternalSize, Metrics::Shadow_InternalSize, Metrics::Shadow_InternalSize);
radialGradient.setColorAt(0.0, gradientStopColor( shadowColor, 0.35 ) );
radialGradient.setColorAt(0.25, gradientStopColor( shadowColor, 0.25 ) );
radialGradient.setColorAt(0.5, gradientStopColor( shadowColor, 0.13 ) );
@ -197,46 +189,55 @@ namespace Breeze
linearGradient.setColorAt(1.0, gradientStopColor( shadowColor, 0.0) );
// topLeft
painter.fillRect(QRect(0, 0, Shadow_InternalSize, Shadow_InternalSize), radialGradient);
QRect rect( 0, 0, Metrics::Shadow_InternalSize, Metrics::Shadow_InternalSize );
painter.fillRect(rect, radialGradient);
// top
linearGradient.setStart(Shadow_InternalSize, Shadow_InternalSize);
linearGradient.setFinalStop(Shadow_InternalSize, 0);
painter.fillRect(QRect(Shadow_InternalSize, 0, Shadow_InternalSize, Shadow_InternalSize), linearGradient);
rect.translate( Metrics::Shadow_InternalSize, 0 );
linearGradient.setStart( rect.bottomLeft() );
linearGradient.setFinalStop( rect.topLeft() );
painter.fillRect( rect, linearGradient );
// topRight
radialGradient.setCenter(2*Shadow_InternalSize, Shadow_InternalSize);
radialGradient.setFocalPoint(2*Shadow_InternalSize, Shadow_InternalSize);
painter.fillRect(QRect(2*Shadow_InternalSize, 0, Shadow_InternalSize, Shadow_InternalSize), radialGradient);
rect.translate( Metrics::Shadow_InternalSize, 0 );
radialGradient.setCenter( rect.bottomLeft() );
radialGradient.setFocalPoint( rect.bottomLeft() );
painter.fillRect( rect, radialGradient );
// left
linearGradient.setStart(Shadow_InternalSize, Shadow_InternalSize);
linearGradient.setFinalStop(0, Shadow_InternalSize);
painter.fillRect(QRect(0, Shadow_InternalSize, Shadow_InternalSize, Shadow_InternalSize), linearGradient);
// right
rect.translate( 0, Metrics::Shadow_InternalSize );
linearGradient.setStart( rect.topLeft() );
linearGradient.setFinalStop( rect.topRight() );
painter.fillRect( rect, linearGradient);
// bottom left
radialGradient.setCenter(Shadow_InternalSize, 2*Shadow_InternalSize);
radialGradient.setFocalPoint(Shadow_InternalSize, 2*Shadow_InternalSize);
painter.fillRect(QRect(0, 2*Shadow_InternalSize, Shadow_InternalSize, Shadow_InternalSize), radialGradient);
// bottom right
rect.translate( 0, Metrics::Shadow_InternalSize );
radialGradient.setCenter( rect.topLeft() );
radialGradient.setFocalPoint( rect.topLeft() );
painter.fillRect( rect, radialGradient );
// bottom
linearGradient.setStart(Shadow_InternalSize, 2*Shadow_InternalSize);
linearGradient.setFinalStop(Shadow_InternalSize, 3*Shadow_InternalSize);
painter.fillRect(QRect(Shadow_InternalSize, 2*Shadow_InternalSize, Shadow_InternalSize, Shadow_InternalSize), linearGradient);
rect.translate( -Metrics::Shadow_InternalSize, 0 );
linearGradient.setStart( rect.topLeft() );
linearGradient.setFinalStop( rect.bottomLeft() );
painter.fillRect( rect, linearGradient);
// bottom right
radialGradient.setCenter(2*Shadow_InternalSize, 2*Shadow_InternalSize);
radialGradient.setFocalPoint(2*Shadow_InternalSize, 2*Shadow_InternalSize);
painter.fillRect(QRect(2*Shadow_InternalSize, 2*Shadow_InternalSize, Shadow_InternalSize, Shadow_InternalSize), radialGradient);
// bottom left
rect.translate( -Metrics::Shadow_InternalSize, 0 );
radialGradient.setCenter( rect.topRight() );
radialGradient.setFocalPoint( rect.topRight() );
painter.fillRect( rect, radialGradient );
// left
rect.translate( 0, -Metrics::Shadow_InternalSize );
linearGradient.setStart( rect.topRight() );
linearGradient.setFinalStop( rect.topLeft() );
painter.fillRect( rect, linearGradient);
// right
linearGradient.setStart(2*Shadow_InternalSize, Shadow_InternalSize);
linearGradient.setFinalStop(3*Shadow_InternalSize, Shadow_InternalSize);
painter.fillRect(QRect(2*Shadow_InternalSize, Shadow_InternalSize, Shadow_InternalSize, Shadow_InternalSize), linearGradient);
painter.end();
// create tiles from pixmap
_shadowTiles = TileSet( pixmap, Shadow_Size, Shadow_Size, Shadow_Size, Shadow_Size, Shadow_Size, Shadow_Size, 1, 1 );
_shadowTiles = TileSet( pixmap, Metrics::Shadow_Size, Metrics::Shadow_Size, Metrics::Shadow_Size, Metrics::Shadow_Size, Metrics::Shadow_Size, Metrics::Shadow_Size, 1, 1 );
}
@ -462,7 +463,7 @@ namespace Breeze
*/
// also need to decrement default size further due to extra hard coded round corner
int size = Shadow_Size - Shadow_Overlap;
int size = Metrics::Shadow_Size - Metrics::Shadow_Overlap;
if( isToolTip( widget ) )
{
if( widget->inherits( "QBalloonTip" ) )

Loading…
Cancel
Save