Developpez.com - Rubrique Delphi

Le Club des Développeurs et IT Pro

Nouveautés dans les bibliothèques Delphi et C++Builder~? un billet blog de Marco Cantu

Chef de produit RAD Studio chez Embarcadero Technologies, auteur de livres à succès sur Delphi

Le 2023-05-29 12:47:18, par Sandra Coret, Communiqués de presse
Si vous suivez l'actualité de RAD Studio, vous avez probablement vu notre annonce concernant le renouvellement du langage C++, Quoi de neuf pour C++Builder : Un aperçu surprenant. Pour faire suite à nos mises à jour passionnantes de C++Builder, nous voulions partager quelques détails sur ce que nous avons prévu pour les autres parties du produit, en particulier nos bibliothèques VCL et FireMonkey UI.

Une nouvelle fondation pour FireMonkey : Skia

La bibliothèque d'interface utilisateur multi-appareils et multiplateforme de RAD Studio est basée sur le concept d'abstraction du rendu réel des éléments de l'interface utilisateur, à l'aide de styles. Les styles sont implémentés à l'aide d'objets et d'éléments graphiques primitifs, mappés par FireMonkey à différents pilotes graphiques, de DirectX à Metal.

Au cours des dernières années, une bibliothèque a émergé dans cet espace, qui offre un niveau d'abstraction plus élevé avec des primitives plus complexes tout en travaillant sur les mêmes pilotes natifs de plate-forme que FireMonkey prend en charge. Cette bibliothèque s'appelle Skia et offre une puissance incroyable pour les applications graphiques 2D de toutes sortes, tout en mettant l'accent sur les performances. Skia alimente certaines des applications multi-appareils les plus réussies aujourd'hui, à commencer par le navigateur Chrome de Google.

Il est possible d'utiliser Skia pour alimenter des applications FireMonkey aujourd'hui, en utilisant la bibliothèque Skia4Delphi, qui est également disponible directement dans GetIt. Les prochaines versions de RAD Studio intégreront Skia et Skia4Delphi de manière approfondie et prête à l'emploi : En l'intégrant au produit, nous offrirons une expérience plus fluide et nous en ferons un citoyen de première classe dans l'écosystème FireMonkey. Les avantages comprendront un rendu plus rapide, en particulier sur Android, mais aussi un certain nombre de fonctionnalités et de composants supplémentaires disponibles lors de l'utilisation d'un pilote basé sur Skia.

Notez que dans le cadre du support de Skia, nous ne prévoyons pas seulement de l'utiliser comme pilote GPU FireMonkey, mais nous prévoyons également d'inclure des contrôles d'interface utilisateur spécifiques pour FireMonkey et même pour la bibliothèque VCL.


(Le contrôle SkLabel prend en charge plusieurs sections d'une même étiquette avec des attributs de texte différents, comme vous pouvez le voir dans l'inspecteur d'objets).
Modernisation de la VCL : Le retour de MDI

Dans un tout autre domaine, nous savons que beaucoup de nos clients ont des applications VCL existantes qu'ils souhaitent maintenir actives et moderniser. La bibliothèque VCL a toujours fourni un support solide pour la modernisation des applications, comme le support HighDPI, une architecture de style sophistiquée, l'utilisation de versions plus récentes des contrôles de la plateforme, l'intégration de l'API WinRT, le support du déploiement MSIX et l'intégration du contrôle WebView2 (le moteur basé sur Chromium du navigateur Edge).

Au cours des dernières années, nous nous sommes éloignés de la prise en charge du modèle MDI (Multiple Document Interface). Il s'agit d'un paradigme d'interface utilisateur relativement obsolète, basé sur l'existence de plusieurs fenêtres (affichant le même type de contenu ou des types différents) hébergées dans une fenêtre principale conteneurisée. Même s'il est vieux jeu, le modèle MDI peut être efficace et beaucoup de nos clients l'utilisent depuis longtemps, ont formé leurs utilisateurs en conséquence et, pour ces raisons, préfèrent continuer à l'utiliser. L'un des inconvénients du modèle MDI de VCL est qu'il s'agit d'une enveloppe autour du support de la plate-forme Windows - et ce support présente de nombreux problèmes sur les moniteurs HighDPI, par exemple.





(ci-dessus) Une application MDI avec prise en charge complète du style sur High DPI, illustrée en utilisant le style Glow VCL (à gauche) et le style Aqua Light Slate VCL (à droite).

Après des recherches approfondies et un examen technique, nous avons décidé qu'il valait la peine d'essayer de résoudre tous les principaux problèmes liés à la plate-forme et de retravailler le modèle VCL MDI. Bien qu'il soit toujours basé sur l'API de base de la plate-forme, nous avons contourné et résolu la plupart des problèmes de plate-forme. De plus, nous introduisons une nouvelle option pour héberger les formulaires MDI (ou tout autre formulaire en général) dans une interface utilisateur basée sur des onglets, comme vous pouvez le voir ci-dessous. Pour tous nos clients qui utilisent l'interface MDI, la prochaine version offrira une bouffée d'air frais - en injectant une nouvelle vie dans les applications. En particulier, nous nous sommes concentrés sur la prise en charge de HighDPI et des styles VCL, afin que vous puissiez utiliser toutes les fonctions de modernisation VCL existantes également pour les applications MDI.


(ci-dessus) Le nouveau modèle MDI basé sur les onglets

Et bien plus encore

Embarcadero R&D travaille actuellement sur bien d'autres choses, en termes de bibliothèques, d'IDE, de compilateurs, de mises à jour des plates-formes et d'accès aux bases de données. La prochaine version de RAD Studio sera très importante pour les développeurs C++, mais aussi pour les développeurs Delphi, avec des améliorations dans tous les domaines.

Restez à l'écoute pour plus d'informations dans les mois à venir et pour un accès anticipé à la version bêta, en commençant par nos clients ayant un abonnement Premium actif.

Clause de non-responsabilité : Toutes les nouvelles fonctionnalités et améliorations évoquées dans ce billet de blog pour les futures versions de RAD Studio ne sont pas engagées tant qu'elles ne sont pas achevées et publiées en version GA.
Et vous ?

Qu'en pensez-vous ?

Voir aussi :

Embarcadero annonce la sortie des éditions communautaires de Delphi 11 et C++Builder 11, pour faire profiter aux utilisateurs des dernières innovations de l'édition Alexandria Pro

RAD Studio 11.3 Alexandria patch 1 du 11 avril 2023, qui corrige notamment les problèmes que certains ont pu avoir avec les composants REST et du GraphQL

Embarcadero RAD Studio 11.3 permet de personnaliser l'apparence de l'éditeur de code avec ToolsAPI, et introduit un nouveau composant d'authentification biométrique pour les plateformes mobiles
  Discussion forum
15 commentaires
  • Anselme45
    Membre extrêmement actif
    Envoyé par pprem
    Il y a une grosse différence : Skia est un projet open source. Il ne dépend pas d'une grosse boite comme Google. Même si ses "gros" utilisateurs l'abandonnent, ça ne veut pas dire que al librairie disparaîtra.
    Certes, il s'agit d'un projet open source mais dont le très gros et majoritaire contributeur n'est autre que Google. Ce Google qui nous a habitué à multiplier à l'envie les projets et à les abandonner quand le profit n'est pas là suffisamment vite.

    Le jour où Google se retire, Skia peut survivre à court terme mais est-ce que son évolution va être assurée dans le temps? Sachant qu'une techno n'évoluant plus est condamnée à terme, je doute de la "pérennité" de la solution.
  • archqt
    Membre émérite
    C'est assez marrant car le framework flutter utilise Skia et va changer de moteur de rendu. Et à ce moment là Delphi va utiliser Skia, qui au demeurant est très bon.
  • pprem
    Membre expert
    Envoyé par archqt
    C'est assez marrant car le framework flutter utilise Skia et va changer de moteur de rendu. Et à ce moment là Delphi va utiliser Skia, qui au demeurant est très bon.
    Tu penses à CanvasKit (qui est du Skia) ou à un autre que je n'aurais pas vu ?
    https://skia.org/docs/user/modules/canvaskit/
  • jbrg
    Membre du Club
    Bonjour à tous,
    Très bonne nouvelle que Skia soit intégré a Delphi, car je l'utilise dans mon logiciel.
  • Anselme45
    Membre extrêmement actif
    Envoyé par pprem
    La librairie Skia est à priori pérenne, surtout quand on voit qui est derrière...
    Que voilà un argument vrai hier mais plus vraiment aujourd'hui...

    Qui se rappelle de Silverlight développé par Microsoft en 2007, promu pendant une décennie et... abandonné par Microsoft en 2019 en laissant les utilisateurs en rase campagne comme des m... (mot de 5 lettres) ?
  • der§en
    Membre éprouvé
    Je suppose que si certains utilisateurs finaux, n’ont pas installés Skia, devront nous prévoir son déploiement avec nos programmes (en somme se retrouver dans les mêmes problématiques qu’en dotnet) ?
  • pprem
    Membre expert
    Envoyé par der§en
    Je suppose que si certains utilisateurs finaux, n’ont pas installés Skia, devront nous prévoir son déploiement avec nos programmes (en somme se retrouver dans les mêmes problématiques qu’en dotnet) ?
    Le projet Skia4Delphi le fait pour nous, ça sera donc transparent, comme ça l'est pour les librairies actuelles selon les OS.
  • pprem
    Membre expert
    Envoyé par Anselme45
    Que voilà un argument vrai hier mais plus vraiment aujourd'hui...

    Qui se rappelle de Silverlight développé par Microsoft en 2007, promu pendant une décennie et... abandonné par Microsoft en 2019 en laissant les utilisateurs en rase campagne comme des m... (mot de 5 lettres) ?
    Il y a une grosse différence : Skia est un projet open source. Il ne dépend pas d'une grosse boite comme Google. Même si ses "gros" utilisateurs l'abandonnent, ça ne veut pas dire que al librairie disparaîtra.
  • archqt
    Membre émérite
    Envoyé par pprem
    Tu penses à CanvasKit (qui est du Skia) ou à un autre que je n'aurais pas vu ?
    https://skia.org/docs/user/modules/canvaskit/
    Impeller remplace Skia dans Flutter
  • pprem
    Membre expert
    Envoyé par archqt
    Impeller remplace Skia dans Flutter
    Merci, jamais entendu parler, mais en lisant ceci je me dis que c'est plus une rustine pour combler des défauts de conception qu'autre chose. On verra bien ce qu'ils mettent à la place l'an prochain.
    https://docs.flutter.dev/perf/impeller