Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/tmake/example/hello.cpp

Source at commit 1406 created 12 years 10 months ago.
By meklort, Revert drivers.c so that kexts are only loaded when OSBundleRequired is set and that value is not safe mode. Added some comments about it too.
1/****************************************************************************
2**
3**
4** Copyright (C) 1992-1998 Troll Tech AS. All rights reserved.
5**
6** This file is part of an example program for Qt. This example
7** program may be used, distributed and modified without limitation.
8**
9*****************************************************************************/
10
11#include "hello.h"
12#include <qpushbutton.h>
13#include <qtimer.h>
14#include <qpainter.h>
15#include <qpixmap.h>
16
17
18/*
19 Constructs a Hello widget. Starts a 40 ms animation timer.
20*/
21
22Hello::Hello( const char *text, QWidget *parent, const char *name )
23 : QWidget(parent,name), t(text), b(0)
24{
25 QTimer *timer = new QTimer(this);
26 connect( timer, SIGNAL(timeout()), SLOT(animate()) );
27 timer->start( 40 );
28
29 resize( 200, 100 );
30}
31
32
33/*
34 This private slot is called each time the timer fires.
35*/
36
37void Hello::animate()
38{
39 b = (b + 1) & 15;
40 repaint( FALSE );
41}
42
43
44/*
45 Handles mouse button release events for the Hello widget.
46
47 We emit the clicked() signal when the mouse is released inside
48 the widget.
49*/
50
51void Hello::mouseReleaseEvent( QMouseEvent *e )
52{
53 if ( rect().contains( e->pos() ) )
54emit clicked();
55}
56
57
58/*
59 Handles paint events for the Hello widget.
60
61 Flicker-free update. The text is first drawn in the pixmap and the
62 pixmap is then blt'ed to the screen.
63*/
64
65void Hello::paintEvent( QPaintEvent * )
66{
67 static int sin_tbl[16] = {
680, 38, 71, 92, 100, 92, 71, 38,0, -38, -71, -92, -100, -92, -71, -38};
69
70 if ( t.isEmpty() )
71return;
72
73 // 1: Compute some sizes, positions etc.
74 QFontMetrics fm = fontMetrics();
75 int w = fm.width(t) + 20;
76 int h = fm.height() * 2;
77 int pmx = width()/2 - w/2;
78 int pmy = height()/2 - h/2;
79
80 // 2: Create the pixmap and fill it with the widget's background
81 QPixmap pm( w, h );
82 pm.fill( this, pmx, pmy );
83
84 // 3: Paint the pixmap. Cool wave effect
85 QPainter p;
86 int x = 10;
87 int y = h/2 + fm.descent();
88 int i = 0;
89 p.begin( &pm );
90 p.setFont( font() );
91 while ( t[i] ) {
92int i16 = (b+i) & 15;
93 p.setPen( QColor((15-i16)*16,255,255,QColor::Hsv) );
94p.drawText( x, y-sin_tbl[i16]*h/800, &t[i], 1 );
95x += fm.width( t[i] );
96i++;
97 }
98 p.end();
99
100 // 4: Copy the pixmap to the Hello widget
101 bitBlt( this, pmx, pmy, &pm );
102}
103

Archive Download this file

Revision: 1406