|
|
1.1 ! root 1: /* tag: qt user interface fb class ! 2: * ! 3: * Copyright (C) 2003-2004 Stefan Reinauer ! 4: * ! 5: * See the file "COPYING" for further information about ! 6: * the copyright and warranty status of this work. ! 7: */ ! 8: ! 9: #include "gui-qt.h" ! 10: #include "logo.xpm" ! 11: ! 12: #include <iostream> ! 13: ! 14: static const int sizex=640; ! 15: static const int sizey=480; ! 16: static const int depth=8; ! 17: ! 18: static unsigned char color[256][3]={ ! 19: { 0x00, 0x00, 0x00 }, ! 20: { 0x00, 0x00, 0xaa }, ! 21: { 0x00, 0xaa, 0x00 }, ! 22: { 0x00, 0xaa, 0xaa }, ! 23: { 0xaa, 0x00, 0x00 }, ! 24: { 0xaa, 0x00, 0xaa }, ! 25: { 0xaa, 0x55, 0x00 }, ! 26: { 0xaa, 0xaa, 0xaa }, ! 27: { 0x55, 0x55, 0x55 }, ! 28: { 0x55, 0x55, 0xff }, ! 29: { 0x55, 0xff, 0x55 }, ! 30: { 0x55, 0xff, 0xff }, ! 31: { 0xff, 0x55, 0x55 }, ! 32: { 0xff, 0x55, 0xff }, ! 33: { 0xff, 0xff, 0x55 }, ! 34: { 0xff, 0xff, 0xff }, ! 35: }; ! 36: ! 37: FrameBufferWidget::FrameBufferWidget(QWidget *parent, const char * name) ! 38: : QWidget(parent, name, Qt::WType_TopLevel) ! 39: { ! 40: setCaption ("OpenBIOS"); ! 41: setIcon(QPixmap(logo)); ! 42: ! 43: QPopupMenu *file = new QPopupMenu (this); ! 44: ! 45: file->insertItem( "E&xit", this, SLOT(quit()), CTRL+Key_Q ); ! 46: ! 47: QPopupMenu *help = new QPopupMenu( this ); ! 48: help->insertItem("&About OpenBIOS", this, SLOT(about()), CTRL+Key_H ); ! 49: help->insertItem( "About &Qt", this, SLOT(aboutQt()) ); ! 50: ! 51: menu = new QMenuBar( this ); ! 52: Q_CHECK_PTR( menu ); ! 53: menu->insertItem( "&File", file ); ! 54: menu->insertSeparator(); ! 55: menu->insertItem( "&Help", help ); ! 56: menu->setSeparator( QMenuBar::InWindowsStyle ); ! 57: ! 58: setFixedSize(sizex,sizey+menu->heightForWidth(sizex)); ! 59: ! 60: buffer.create(sizex, sizey, depth, 256); ! 61: ! 62: for (int i=16; i < 256; i++) { ! 63: color[i][0]=i; ! 64: color[i][1]=i; ! 65: color[i][2]=i; ! 66: } ! 67: ! 68: for (int i=0; i< 256; i++) ! 69: buffer.setColor(i, qRgb(color[i][0], color[i][1], color[i][2])); ! 70: ! 71: buffer.fill( 0 ); ! 72: ! 73: updatetimer=new QTimer(this); ! 74: connect( updatetimer, SIGNAL(timeout()), this, SLOT(update()) ); ! 75: updatetimer->start(200,FALSE); ! 76: ! 77: setMouseTracking( TRUE ); ! 78: } ! 79: ! 80: unsigned char * FrameBufferWidget::getFrameBuffer(void) ! 81: { ! 82: return buffer.bits(); ! 83: } ! 84: ! 85: void FrameBufferWidget::paintEvent ( QPaintEvent * ) ! 86: { ! 87: QPainter p( this ); ! 88: p.drawImage(0,menu->heightForWidth(sizex),buffer, 0,0, sizex, sizey); ! 89: } ! 90: ! 91: void FrameBufferWidget::about() ! 92: { ! 93: QMessageBox::about( this, "About OpenBIOS", ! 94: " Welcome to OpenBIOS 1.01\n" ! 95: " IEEE 1275-1994 Open Firmware implementation\n\n" ! 96: "written by Stefan Reinauer <[email protected]>\n\n" ! 97: " http://www.openbios.org/\n"); ! 98: } ! 99: ! 100: void FrameBufferWidget::aboutQt() ! 101: { ! 102: QMessageBox::aboutQt( this, "OpenBIOS" ); ! 103: } ! 104: ! 105: void FrameBufferWidget::quit() ! 106: { ! 107: extern volatile int gui_running; ! 108: extern volatile int runforth; ! 109: ! 110: gui_running=0; ! 111: interruptforth=1; ! 112: ! 113: qApp->quit(); ! 114: } ! 115: ! 116: void FrameBufferWidget::update() ! 117: { ! 118: QPainter p( this ); ! 119: p.drawImage(0,menu->heightForWidth(sizex),buffer, 0,0, sizex, sizey); ! 120: } ! 121: ! 122: void FrameBufferWidget::keyPressEvent(QKeyEvent * e) ! 123: { ! 124: int a=e->ascii(); ! 125: if (a) { ! 126: std::cout << " key '" << e->text() << "' pressed" << std::endl; ! 127: } ! 128: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.