Moduł hpv (wektorowe jądro graficzne).

 
 

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: