void rerender() { QTime time = QTime::currentTime(); QColor shadow = QColor( 0, 0, 0, 192 ); QImage img( m_clientSize, QImage::Format_ARGB32_Premultiplied ); img.fill( QColor( 128, 0, 0, 128 ) ); QPainter p( & img ); p.setRenderHint( QPainter::Antialiasing, true ); p.setBrush( QColor( "black" ) ); p.setPen( QPen( QColor( "white" ), 2 ) ); p.drawEllipse( m_center, m_radius, m_radius ); p.setPen( QPen( QColor( "white" ), 2 ) ); double tickLenght = 5; for ( int h = 0 ; h < 12 ; h++ ) { double alpha = h * M_PI * 2 / 12; p.drawLine( a2p( alpha, m_radius - tickLenght - ( h % 3 == 0 ? 2 : 0 ) ), a2p( alpha, m_radius ) ); } double hour = time.hour() % 12 + time.minute() / 60.0 + time.second() / 3600.0; p.setPen( QPen( QColor( "white" ), 4 ) ); p.drawLine( m_center, a2p( hour / 12.0 * M_PI * 2, m_radius / 2 ) ); double minute = time.minute() + time.second() / 60.0; p.setPen( QPen( shadow, 4 ) ); p.drawLine( m_center, a2p( minute / 60.0 * M_PI * 2, m_radius * 3 / 4 ) ); p.setPen( QPen( QColor( "white" ), 3 ) ); p.drawLine( m_center, a2p( minute / 60.0 * M_PI * 2, m_radius * 3 / 4 ) ); p.setPen( QPen( shadow, 2 ) ); p.drawLine( m_center, a2p( time.second() / 60.0 * M_PI * 2, m_radius - 2 ) ); p.setPen( QPen( QColor( "yellow" ), 1 ) ); p.drawLine( m_center, a2p( time.second() / 60.0 * M_PI * 2, m_radius - 2 ) ); p.end(); setRaster( img ); } // rerender
/** * If "key" is associated to "val", returns "val". * Undefined behavior, if "key" is not found. * You may need the helper function a2p. */ char *ca_str_value(char key[]) { for(int i = 0; i < pos; i++) { if(keys[i] != NULL) { if(strcmp(key, keys[i]) == 0) return a2p(values[i]); } /* for(int j = 0; j <= KEY_LEN; j++) { if(key[j] != keys[i][j]) break; if(j == KEY_LEN) { if[values[i] == NULL] return NULL; else return a2p(values[i]); } } */ } return NULL; }