Root/
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 | ␊ |
22 | Hello::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 | ␊ |
37 | void 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 | ␊ |
51 | void Hello::mouseReleaseEvent( QMouseEvent *e )␊ |
52 | {␊ |
53 | if ( rect().contains( e->pos() ) )␊ |
54 | ␉emit 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 | ␊ |
65 | void Hello::paintEvent( QPaintEvent * )␊ |
66 | {␊ |
67 | static int sin_tbl[16] = {␊ |
68 | ␉0, 38, 71, 92, 100, 92, 71, 38,␉0, -38, -71, -92, -100, -92, -71, -38};␊ |
69 | ␊ |
70 | if ( t.isEmpty() )␊ |
71 | ␉return;␊ |
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] ) {␊ |
92 | ␉int i16 = (b+i) & 15;␊ |
93 | p.setPen( QColor((15-i16)*16,255,255,QColor::Hsv) );␊ |
94 | ␉p.drawText( x, y-sin_tbl[i16]*h/800, &t[i], 1 );␊ |
95 | ␉x += fm.width( t[i] );␊ |
96 | ␉i++;␊ |
97 | }␊ |
98 | p.end();␊ |
99 | ␊ |
100 | // 4: Copy the pixmap to the Hello widget␊ |
101 | bitBlt( this, pmx, pmy, &pm );␊ |
102 | }␊ |
103 |