FireMonkey
![]() Logo programu | |
Autor | Embarcadero Technologies |
---|---|
Pierwsze wydanie | 2011 |
Język programowania | Delphi/Object Pascal |
Platforma sprzętowa | x86, AMD64/EM64T, ARM |
System operacyjny | wieloplatformowa (Windows, macOS, iOS, Android) |
Rodzaj | biblioteki programistyczne (GUI, RTL) |
Licencja | zamknięte oprogramowanie (komercyjna) |
Strona internetowa |
FireMonkey (w skrócie FMX) – wieloplatformowa biblioteka GUI opracowana przez Embarcadero Technologies, dostępna w Delphi (język programowania Object Pascal) oraz C++ Builder (język programowania C++) do tworzenia oprogramowania wieloplatformowego dla systemów operacyjnych: Windows, macOS, iOS, i Android. Ponadto zewnętrzna biblioteka FMX Linux[1], umożliwia tworzenie oprogramowania okienkowego dla systemu Linux. Dzięki temu możliwe jest tworzenie oprogramowania dla komputerów osobistych (PC, stacje robocze), tabletów i smartfonów opartego praktycznie na tym samym kodzie źródłowym.
Historia
[edytuj | edytuj kod]Biblioteka FireMonkey jest oparta na starszej bibliotece VGScene, która została zaprojektowana przez Jewgienija Kriukowa z firmy KSDev, mającej siedzibę w Ułan-Ude, w Rosji[2]. FireMonkey, tak jak i VGScene, jest biblioteką nowej generacji, w której elementy GUI są rysowane jako grafika wektorowa. W roku 2011 biblioteka VGScene została sprzedana amerykańskiej firmie Embarcadero Technologies. Kriukow nadal był zaangażowany w rozwój FireMonkey. Razem z dotychczas rozwijaną biblioteką Visual Component Library (VCL) dostępną tylko dla systemu Windows, wieloplatformowa biblioteka FireMonkey jest dołączana jako część pakietu Delphi, C++Builder i RAD Studio, począwszy od wersji XE2. FireMonkey została zapoczątkowana jako biblioteka GUI oparta na grafice wektorowej, ale ewoluowała i docelowo stała się biblioteką GUI wykorzystującą grafikę rastrową (bitmapy)[3], aby zapewnić większą kontrolę nad wyglądem oraz dopasować wygląd aplikacji do stylistyki graficznej stosowanej w platformie docelowej.
Charakterystyka
[edytuj | edytuj kod]FireMonkey to wieloplatformowa biblioteka GUI, która umożliwia programistom tworzenie interfejsów użytkownika działających w systemach Windows, macOS, iOS i Android. Większość kontrolek okienkowych (widgetów) dostępnych w bibliotece VCL ma swoje odpowiedniki w bibliotece FireMonkey. Pomiędzy kontrolkami VCL i FireMonkey występują nieliczne różnice w ich budowie. Pojawiają się one w przypadku cech specyficznych dla platformy (np. Windows, macOS). Cechą charakterystyczną kontrolek tej biblioteki jest to, że rozmiar (Width i Height), położenie (X, Y) i odległość (Offset) są podawane jako liczby rzeczywiste (typ: Single). Podczas rysowania kontrolek domyślnie obsługiwany jest antyaliasing. Rysowanie kontrolek odbywa się poprzez użycie dostępnego w danym systemie operacyjnym podsystemu graficznego. Jeśli system udostępnia sprzętowe przyspieszanie grafiki, to jest ono wykorzystywane przez tę bibliotekę. Dzięki temu aplikacje zbudowane przy użyciu FirmeMonkey mogą wykorzystywać sprzętowe przyspieszanie grafiki dostępne za pośrednictwem: Direct2D w systemach Windows Vista, Windows 7, Windows 8 i Windows 10, OpenGL w systemach Linux i macOS oraz OpenGL ES w systemach iOS i Android. Natomiast w tych wersjach systemu Windows, gdzie Direct2D nie jest dostępny (np. Windows XP) używana jest biblioteka GDI+.
Aplikacje i interfejsy opracowane z użyciem FireMonkey są podzielone na dwie kategorie: HD i 3D[3]. Aplikacja HD to tradycyjny interfejs 2D, czyli typowe elementy GUI widoczne na ekranie (np. przyciski, pola edycyjne, listy wyboru). Jest określany jako HD, ponieważ FireMonkey wykorzystuje mapy bitowe o wielu rozdzielczościach w swoim dynamicznym systemie stylów, aby wykorzystać wyświetlacze o wysokiej rozdzielczości. Drugi typ, interfejs 3D, zapewnia środowisko sceny 3D, które jest szczególnie przydatne do tworzenia wizualizacji. Te dwa elementy można dowolnie mieszać, elementy 2D w scenie 3D jako nakładka lub w przestrzeni 3D oraz sceny 3D zintegrowane z normalnym dwuwymiarowym (2D) interfejsem HD. Biblioteka ma wbudowaną obsługę efektów graficznych (np. rozmycie, poświata itp.) oraz animacji. Dzięki temu można łatwo budować nowoczesne płynne interfejsy użytkownika w stylu WPF. Biblioteka obsługuje także motywy rodzime, dzięki czemu aplikacja FireMonkey może wyglądać bardzo podobnie do aplikacji rodzimej na każdej platformie. Rodzime kontrolki okienkowe mogą być używane w systemach Windows, macOS, iOS i Android dzięki użyciu bibliotek firm trzecich[4] i właściwości ControlType[5].
FireMonkey to nie tylko biblioteka wizualna (graficzna), ale także pełnoprawna biblioteka programistyczna, która posiada większość funkcjonalności dostępnych także w bibliotece VCL. Główne różnice pomiędzy nimi to[6]:
- zgodność międzyplatformowa,
- dowolny komponent wizualny może być dzieckiem dowolnego innego komponentu wizualnego (struktura hierarchiczna), co pozwala na tworzenie komponentów hybrydowych,
- wbudowana obsługa stylizacji komponentów wizualnych (dostępna także w VCL),
- użycie liczb zmiennoprzecinkowych o pojedynczej precyzji (typ: Single) dla właściwości: położenia, rozmiarów i odległości, zamiast liczb całkowitych,
- obsługa efektów wizualnych opartych na shaderach GPU (takich jak na przykład: Glow, Inner Glow, Blur itp.) i animacji komponentów wizualnych.
Ponieważ biblioteka jest zgodna z wieloma platformami, to można wykorzystać ten sam kod źródłowy i projekt formy (okna) do wdrożenia na różnych platformach, które planuje się obsłużyć. W sposób rodzimy obsługiwane są pliki wykonywalne w systemie Windows (32 i 64 bit), Linux (64 bit), macOS (32 bit) i Android (32 i 64 bit)[7]. FireMonkey obejmuje także te usługi danej platformy[8], które dostosowują interfejs użytkownika do prawidłowego zachowania i wyglądu na każdej platformie docelowej.
Od chwili jej wprowadzenia w Delphi XE2, dokonano wielu ulepszeń w wielu obszarach biblioteki. Jest ona cały czas aktywnie rozwijana i ulepszana. Przykładowo programowanie dla systemu macOS jest ściśle zintegrowane ze środowiskiem IDE i wymaga tylko komputera Mac do wdrożenia. Dodano liczne komponenty, takie jak czujniki, dotyk i GPS, szczególnie przydatne dla twórców aplikacji mobilnych. Nastąpiły również znaczące ulepszenia wydajności, a także ulepszenia techniczne leżące u podstaw działania IDE (np. nowy mechanizm introspekcji kodu wprowadzony w wersji 10.4)[9].
Cechy
[edytuj | edytuj kod]Grafika
[edytuj | edytuj kod]FireMonkey używa sprzętowego przyspieszania grafiki, gdy jest ono dostępne w systemach: Windows, macOS, iOS i Android. W systemie Windows Vista, Windows 7, Windows 8 i Windows 10 używane są biblioteki Direct2D lub OpenGL. W tych wersjach systemu Windows, w którym nie jest dostępna biblioteka Direct2D (np. Windows XP), używana jest biblioteka GDI+. W systemie Linux i macOS używana jest biblioteka OpenGL. W systemach iOS i Android używana jest biblioteka OpenGL ES.
Style
[edytuj | edytuj kod]Wszystkie kontrolki okienkowe (widgety) w FireMonkey można dostosować graficznie (stylizować) za pomocą systemu stylizacji. Uzyskuje się to przez dołączenie komponentu TStyleBook[10] do projektowanej formy (okna) aplikacji, dzięki czemu styl jest ładowany, a następnie stosowany do formy (okna) i elementów na niej umieszczonych. Na niektórych platformach część kontrolek okienkowych można również ustawić tak, aby używały implementacji dostarczonej przez system operacyjny, zamiast stosować domyślne ustawienia wyglądu kontrolek. Pozwala to w pewnych sytuacjach dodawać inne cechy, usuwając jednocześnie niektóre cechy dostarczane przez FireMonkey jako domyślne.
Usługi platformy
[edytuj | edytuj kod]Oprócz kontrolek okienkowych (komponenty wizualne) FireMonkey zapewnia luźno powiązany sposób uzyskiwania dostępu do funkcji specyficznych dla platformy w sposób od niej niezależny. Jest to dostępne jako domyślne zachowanie platformy. Na przykład właściwość TabPosition kontrolki TTabControl ma wartość PlatformDefault, która automatycznie przenosi karty na górę w systemie Android i na dół w systemie iOS, tak aby były zgodne z wytycznymi projektu aplikacji dla tych platform.
Przypisy
[edytuj | edytuj kod]- ↑ FmxLinux Home [online], www.fmxlinux.com [dostęp 2021-06-06] .
- ↑ Cross-platform development the FireMonkey way – Delphi Bistro [online] [dostęp 2021-06-06] (ang.).
- ↑ a b FireMonkey – RAD Studio [online], docwiki.embarcadero.com [dostęp 2021-06-06] .
- ↑ T.M.S. Software , TMS mCL [online], www.tmssoftware.com [dostęp 2021-06-06] (ang.).
- ↑ FMX.Controls.Presentation.TPresentedControl.ControlType – RAD Studio API Documentation [online], docwiki.embarcadero.com [dostęp 2021-06-06] .
- ↑ FireMonkey vs. VCL [online], The Podcast at Delphi.org, 5 października 2016 [dostęp 2021-06-06] (ang.).
- ↑ FireMonkey Platform Prerequisites – RAD Studio [online], docwiki.embarcadero.com [dostęp 2021-06-06] .
- ↑ FireMonkey Platform Services – RAD Studio [online], docwiki.embarcadero.com [dostęp 2021-06-06] .
- ↑ Code Insight Improvements in Delphi 10.4.2 [online], 23 marca 2021 [dostęp 2021-06-06] (ang.).
- ↑ Customizing FireMonkey Applications with Styles – RAD Studio [online], docwiki.embarcadero.com [dostęp 2021-06-06] .