qscreenlinuxfb_qws.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:3k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.
  23. **
  24. ** Qt for Windows(R) Licensees
  25. ** As a special exception, Nokia, as the sole copyright holder for Qt
  26. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  27. ** right for the Qt/Eclipse Integration to link to functionality
  28. ** provided by Qt Designer and its related libraries.
  29. **
  30. ** If you are unsure which license is appropriate for your use, please
  31. ** contact the sales department at qt-sales@nokia.com.
  32. **
  33. ****************************************************************************/
  34. #ifndef QSCREENLINUXFB_QWS_H
  35. #define QSCREENLINUXFB_QWS_H
  36. #include <QtGui/qscreen_qws.h>
  37. QT_BEGIN_HEADER
  38. QT_BEGIN_NAMESPACE
  39. QT_MODULE(Gui)
  40. #ifndef QT_NO_QWS_LINUXFB
  41. class QLinuxFb_Shared
  42. {
  43. public:
  44.     volatile int lastop;
  45.     volatile int optype;
  46.     volatile int fifocount;   // Accel drivers only
  47.     volatile int fifomax;
  48.     volatile int forecol;     // Foreground colour caching
  49.     volatile unsigned int buffer_offset;   // Destination
  50.     volatile int linestep;
  51.     volatile int cliptop;    // Clip rectangle
  52.     volatile int clipleft;
  53.     volatile int clipright;
  54.     volatile int clipbottom;
  55.     volatile unsigned int rop;
  56. };
  57. struct fb_cmap;
  58. struct fb_var_screeninfo;
  59. struct fb_fix_screeninfo;
  60. class QLinuxFbScreenPrivate;
  61. class Q_GUI_EXPORT QLinuxFbScreen : public QScreen
  62. {
  63. public:
  64.     explicit QLinuxFbScreen(int display_id);
  65.     virtual ~QLinuxFbScreen();
  66.     virtual bool initDevice();
  67.     virtual bool connect(const QString &displaySpec);
  68.     virtual bool useOffscreen();
  69.     virtual void disconnect();
  70.     virtual void shutdownDevice();
  71.     virtual void setMode(int,int,int);
  72.     virtual void save();
  73.     virtual void restore();
  74.     virtual void blank(bool on);
  75.     virtual void set(unsigned int,unsigned int,unsigned int,unsigned int);
  76.     virtual uchar * cache(int);
  77.     virtual void uncache(uchar *);
  78.     virtual int sharedRamSize(void *);
  79.     QLinuxFb_Shared * shared;
  80. protected:
  81.     void deleteEntry(uchar *);
  82.     bool canaccel;
  83.     int dataoffset;
  84.     int cacheStart;
  85.     static void clearCache(QScreen *instance, int);
  86. private:
  87.     void delete_entry(int);
  88.     void insert_entry(int,int,int);
  89.     void setupOffScreen();
  90.     void createPalette(fb_cmap &cmap, fb_var_screeninfo &vinfo, fb_fix_screeninfo &finfo);
  91.     void setPixelFormat(struct fb_var_screeninfo);
  92.     QLinuxFbScreenPrivate *d_ptr;
  93. };
  94. #endif // QT_NO_QWS_LINUXFB
  95. QT_END_NAMESPACE
  96. QT_END_HEADER
  97. #endif // QSCREENLINUXFB_QWS_H