31 мая 2023

Skia в Delphi 12

    Google Skia – кроссплатформенная библиотека с открытым исходным кодом для работы с 2D-графикой. Она является графическим движком для Google Chrome, Chrome OS, Android, Mozilla Firefox, Firefox OS и многих других программных продуктов. Первый раз я столкнулся со Skia в 2019-м году, когда делал утилиту под Linux для работы с файлами формата MS Excel. В проекте у меня была библиотека TMS FlexCel, которая для работы с графикой под операционными системами отличными от Windows использует Skia. Не так давно Skia заметили в Embarcadero R&D и добавили в GetIt библиотеку Skia4Delphi, которая является интерфейсом между Delphi и Google Skia. По информации Марко Канту, Skia4Delphi станет частью RAD Studio 12. Что может дать эта библиотека Delphi 12?
Skia4Delphi
    Основное преимущество Skia4Delphi – это возможность в FireMonkey (FMX) заменить Canvas по умолчанию на Canvas на основе Skia. Рендеринг FMX-контролов с использованием Skia может увеличить производительность приложения до 50%:
Сравнение скорости рендеринга FMX-контролов с использованием Canvas по умолчанию и Canvas на основе Skia
Стандартный рендеринг FMX на некоторых платформах не использует сглаживание (например, на мобильных устройствах). В отличие от него, Skia его использует и поэтому улучшается качество рисунков:
Сравнение качества рендеринга FMX-контролов с использованием Canvas по умолчанию и Canvas на основе Skia
Skia4Delphi поддерживает множество форматов изображений. Ее кодеки позволяют использовать в Delphi (например, загружать в TImage):
  • VCL: svg, webp, wbmp, arw, cr2, dng, nef, nrw, orf, raf, rw2, pef, srw.
  • FMX: bmp, gif, ico, webp, wbmp, arw, cr2, dng, nef, nrw, orf, raf, rw2, pef, srw.
Кроме того, включение Skia4Delphi в Delphi 12 добавит разработчикам несколько новых VCL/FMX-контролов:
  • TSkLabel – замена TLabel с рядом дополнительных возможностей. Например, одна SkLabel может иметь несколько разделов с разными текстовыми атрибутами (разный размер, наклон, цвет и стиль шрифта, разный шрифт, разное горизонтальное выравнивание и так далее).
  • TSkPaintBox – контрол для рисования на Canvas с помощью Skia API.
  • TSkAnimatedImage – контрол для отображения анимированных изображений в форматах: Lottie file (.json, .lottie), Telegram Sticker (.tgs), Animated GIF (.gif), Animated WebP (.webp).
  • TSkSvg – контрол для отображения файлов формата SVG.

    Embarcadero R&D в очередной раз чужими руками пытается улучшить RAD Studio. Хотя польза от этого должна быть для всех: для Embarcadero, для авторов Skia4Delphi, для программистов пишущих на Delphi и для пользователей программ написанных на Delphi. Включение Skia4Delphi в состав RAD Studio 12 является подтверждением качества библиотеки. Это должно увеличить количество пользователей библиотеки, а значит она будет более оттестированной. Интересно, дальнейшей разработкой Skia4Delphi будет заниматься Embarcadero или она продолжит жить, как самостоятельный продукт (например, как FastMM после того, как он заменил менеджер памяти Borland в Delphi 2006)?

1 комментарий:

  1. Анонимный31 мая, 2023 17:38

    Как я понимаю, если в проект не подключать модули для Skia, то не нужно. Все будет работать по старому. Если нужна оптимизация от Skia или ее компоненты, то будет один дополнительный dll/so-файлик

    ОтветитьУдалить