Sercem projektu przeglądarki-edytora HP-GL/2 jest moduł jądra graficznego
realizującego operacje na graficznych obiektach wektorowych. Naszym celem
było zbudowanie możliwie prostego systemu spełniającego wcześniej sformułowane
wymagania. Dlatego też, niejednokrotnie, semantyka języka HP-GL/2 miała
decydujący wpływ na kształt rozwiązań przyjętych przy projektowaniu jądra.
Staraliśmy się przy tym cały czas mieć na uwadze to, by logika konstrukcji
jądra zapewniała możliwość dalszej jego rozbudowy.
Główną częścią kodu jądra jest implementacja obiektów graficznych.
Każdy element rysunku jest reprezentowany w dwóch postaciach: struktury
opisującej kształt geometryczny oraz zbioru krawędzi, który ułatwia szybkie
jego wyświetlanie. Obie reprezentacje są utrzymywane we wzajemnej spójności
podczas każdej modyfikacji obiektu. Jądro dostarcza również operacji zmieniających
położenie obiektów na rysunku oraz możliwości ich grupowania. Niezbędne
okazało się również zaimplementowanie procedur rozwiązujących podstawowe
zadania geometryczne
Istotną warstwą naszego jądra graficznego jest zbiór procedur stanowiących
pomost pomiędzy danymi przechowywanymi w jądrze oraz modułami interfejsu
użytkownika. Wzorując się na bibliotekach obiektowych (OWL Borlanda czy
MFC Microsoftu) wprowadziliśmy do jądra pojęcia widoku i wyświetlacza stanowiące
parafrazę modelu dokument-widok. Wyświetlacz grupuje w sobie operacje potrzebne
do wyświetlania obiektów w konkretnym otoczeniu środowiska graficznego,
natomiast widok przechowuje parametry stanu wyświetlanego fragmentu rysunku.
Całość pomysłu ilustruje kolejny schemat: