Your SlideShare is downloading. ×
Qt Platform Abstraction
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Qt Platform Abstraction

907
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.

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


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
907
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Qt Platform AbtractionGianni Valdambrini (aleister@develer.com) Nokia Certified Qt Specialist
  • 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. 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. 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. 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. QPlatformIntegration Classe factory → costruisce le classi che implementano le funzionalità richieste dal codice (cross-platform) Qt 6
  • 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. 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. 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. 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. 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. 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. 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. Domande?? 14
  • 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