summaryrefslogtreecommitdiffstats
path: root/kpresenter/KPrTextPreview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kpresenter/KPrTextPreview.cpp')
-rw-r--r--kpresenter/KPrTextPreview.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/kpresenter/KPrTextPreview.cpp b/kpresenter/KPrTextPreview.cpp
new file mode 100644
index 00000000..b77e067e
--- /dev/null
+++ b/kpresenter/KPrTextPreview.cpp
@@ -0,0 +1,101 @@
+#include "KPrTextPreview.h"
+
+#include <KoGlobal.h>
+
+#include <qpainter.h>
+#include <qfont.h>
+
+KPrTextPreview::KPrTextPreview( QWidget* parent, const char* name )
+ : QFrame( parent, name ),
+ shadowDirection( SD_LEFT_BOTTOM ),
+ shadowDistance( 0 ),
+ angle( 0 )
+{
+ setBackgroundColor( white );
+ setFrameStyle( NoFrame );
+}
+
+void KPrTextPreview::drawContents( QPainter* painter )
+{
+ QFont font(KoGlobal::defaultFont().family(), 30, QFont::Bold);
+ QFontMetrics fm( font );
+
+ QRect br = fm.boundingRect( "KOffice" );
+ int pw = br.width();
+ int ph = br.height();
+ QRect r = br;
+ int textYPos = -r.y();
+ int textXPos = -r.x();
+ br.moveTopLeft( QPoint( -br.width() / 2, -br.height() / 2 ) );
+ r.moveTopLeft( QPoint( -r.width() / 2, -r.height() / 2 ) );
+
+ int x = r.left() + textXPos;
+ int y = r.top() + textYPos;
+ int sx = 0, sy = 0;
+
+ switch ( shadowDirection )
+ {
+ case SD_LEFT_UP:
+ {
+ sx = x - shadowDistance;
+ sy = y - shadowDistance;
+ } break;
+ case SD_UP:
+ {
+ sx = x;
+ sy = y - shadowDistance;
+ } break;
+ case SD_RIGHT_UP:
+ {
+ sx = x + shadowDistance;
+ sy = y - shadowDistance;
+ } break;
+ case SD_RIGHT:
+ {
+ sx = x + shadowDistance;
+ sy = y;
+ } break;
+ case SD_RIGHT_BOTTOM:
+ {
+ sx = x + shadowDistance;
+ sy = y + shadowDistance;
+ } break;
+ case SD_BOTTOM:
+ {
+ sx = x;
+ sy = y + shadowDistance;
+ } break;
+ case SD_LEFT_BOTTOM:
+ {
+ sx = x - shadowDistance;
+ sy = y + shadowDistance;
+ } break;
+ case SD_LEFT:
+ {
+ sx = x - shadowDistance;
+ sy = y;
+ } break;
+ }
+
+ painter->save();
+
+ painter->setViewport( ( width() - pw ) / 2, ( height() - ph ) / 2, width(), height() );
+
+ QWMatrix m, mtx;
+ mtx.rotate( angle );
+ m.translate( pw / 2, ph / 2 );
+ m = mtx * m;
+
+ painter->setWorldMatrix( m );
+ painter->setFont( font );
+
+ if ( shadowDistance > 0 ) {
+ painter->setPen( shadowColor );
+ painter->drawText( sx, sy, "KOffice" );
+ }
+ painter->setPen( blue );
+ painter->drawText( x, y, "KOffice" );
+
+ painter->restore();
+}
+#include "KPrTextPreview.moc"