Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Qt Platform AbtractionGianni Valdambrini (aleister@develer.com)        Nokia Certified Qt Specialist
Il problema   Qt4 era un framework per lo sviluppo di Gui cross-    platform, ma i suoi internals contenevano molto codic...
La nascita di Lighthouse   Cosera Lighthouse:           un esperimento dei Qt Labs, un nuovo port di Qt           Il su...
Qt Platform Abstraction   Lighthouse integrato in Qt 4.8 → Qt Platform Abstraction   QWS (Qt Window System) vs QPA      ...
Qt Abstraction Platform   QPA implementa un set di API, utilizzabile mediante la    scrittura di plugin, che implementano...
QPlatformIntegration   Classe factory → costruisce le classi che implementano    le funzionalità richieste dal codice (cr...
QPlatformIntegrationclass QPlatformIntegration{public:// GraphicsSystem functions    Virtual QPixmapData *createPixmapData...
QPlatformIntegration: le classi   QPlatformScreen → rappresenta lo schermo vero e    proprio e ne gestisce leventuale ini...
QPlatformIntegration: le classi   QPixmapData → rappresenta limplementazione di una    QPixmap e contiene i dati veri e p...
Un esempio “minimale”   Plugin minimal           Mostra quale è il minimo quantitativo di codice             necessario ...
QWindowSystemInterface   Classe che copre laltra direzione: piattaforma → Qt   E composta da una serie di funzioni stati...
Nuove piattaforme   iOs             uikit → plugin proof of concept per qpa             Ufficialmente non sarà supporta...
Nuove piattaforme   Google Native Client           Progetto sperimentale (al momento) che porta le              Qt allin...
Domande??          14
GRAZIE !                                Develer S.r.l.                             Via Mugellese 1/A                      ...
Upcoming SlideShare
Loading in …5
×

Qt Platform Abstraction

1,206 views

Published on

Questo talk presenterà l'architettura di QPA (ex Lighthouse Project) e come questo consente agli sviluppatori di portare facilmente Qt su sistemi diversi.

  • Be the first to comment

  • Be the first to like this

Qt Platform Abstraction

  1. 1. Qt Platform AbtractionGianni Valdambrini (aleister@develer.com) Nokia Certified Qt Specialist
  2. 2. Il problema Qt4 era un framework per lo sviluppo di Gui cross- platform, ma i suoi internals contenevano molto codice specifico di una piattaforma o di unaltra. #if defined (Q_WS_X11) … #elif defined (Q_WS_MAC) … #elif defined (Q_WS_WIN) … In quella situazione cera un sacco di codice duplicato ed era molto complicato fare un nuovo port di Qt. 2
  3. 3. La nascita di Lighthouse Cosera Lighthouse:  un esperimento dei Qt Labs, un nuovo port di Qt  Il successore di Qt per embedded linux (QWS), molto potente ma scomodo  un set di API ben definito per rendere QtGui window system agnostic 3
  4. 4. Qt Platform Abstraction Lighthouse integrato in Qt 4.8 → Qt Platform Abstraction QWS (Qt Window System) vs QPA QWS QPA Plugin API per realizzare il Si, ma complesso Si proprio Qt port Windowing system Si Esterno OpenGL Si, ma con limitazioni Si 4
  5. 5. Qt Abstraction Platform QPA implementa un set di API, utilizzabile mediante la scrittura di plugin, che implementano linterfaccia QplatformIntegration Principali plugin disponibili in Qt 4.8:  directfb  linuxfb  minimal  qvfb  vnc  wayland  xcb 5
  6. 6. QPlatformIntegration Classe factory → costruisce le classi che implementano le funzionalità richieste dal codice (cross-platform) Qt 6
  7. 7. QPlatformIntegrationclass QPlatformIntegration{public:// GraphicsSystem functions Virtual QPixmapData *createPixmapData(...) = 0; Virtual QPlatformWindow *createPlatformWindow(...) = 0; Virtual QWindowSurface *createWindowSurface(...) = 0;// Window System functions virtual QList<QPlatformScreen *> screens() = 0;// Deeper window system integrations virtual QPlatformFontDatabase *fontDatabase();}; 7
  8. 8. QPlatformIntegration: le classi QPlatformScreen → rappresenta lo schermo vero e proprio e ne gestisce leventuale inizializzazione QPlatformWindow → è la rappresentazione della finestra stessa e linterfaccia con il window manager QWindowSurface → gestisce il contenuto della finestra e il disegno vero e proprio 8
  9. 9. QPlatformIntegration: le classi QPixmapData → rappresenta limplementazione di una QPixmap e contiene i dati veri e propri  Alcune specializzazioni già disponibili: QRasterPixmapData, QGlPixmapData, QBlittablePixmapData QPlatformFontDatabase → è linterfaccia per il font database della propria piattaforma  Alcune specializzazioni già pronte: QFontconfigDatabase, QBasicUnixFontDatabase, QGenericUnixFontDatabase 9
  10. 10. Un esempio “minimale” Plugin minimal  Mostra quale è il minimo quantitativo di codice necessario per scrivere un plugin per QPA  Reimplementa QPlatformScreen e QWindowSurface per scrivere pixel su unimmagine 10
  11. 11. QWindowSystemInterface Classe che copre laltra direzione: piattaforma → Qt E composta da una serie di funzioni statiche threadsafe che possono essere chiamate dal proprio plugin per QPA Gestisce i vari eventi provenienti dal sistema:  Mouse, tastiera, touchscreen  Window close/enter/leave/...  ... 11
  12. 12. Nuove piattaforme iOs  uikit → plugin proof of concept per qpa  Ufficialmente non sarà supportato, e a causa di problemi di licenza e deploy probabilmente non sarà mai un porting completo Android  Non ufficialmente supportato ma ha le potenzialità per divenire un porting completo  Necessitas → progetto esterno che porta Qt su Android fornendo anche un ambiente di sviluppo completo 12
  13. 13. Nuove piattaforme Google Native Client  Progetto sperimentale (al momento) che porta le Qt allinterno di Chrome/Chromium  http://developer.qt.nokia.com/wiki/Qt_for_Google _Native_Client 13
  14. 14. Domande?? 14
  15. 15. GRAZIE ! Develer S.r.l. Via Mugellese 1/A 50013 Campi Bisenzio Firenze - ItaliaContattiMail: info@develer.comPhone: +39-055-3984627Fax: +39 178 6003614http://www.develer.com

×