C Biblioteka G2. C.1 Koncepcja biblioteki G2.

Podobne dokumenty
Szybkie tworzenie grafiki w GcIde

B Biblioteka GD. B.1 Koncepcja biblioteki GD.

Kurs WWW. Paweł Rajba.

ECDL/ICDL CAD 2D Moduł S8 Sylabus - wersja 1.5

Podstawy Informatyki Wykład V

Animacje z zastosowaniem suwaka i przycisku

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Kolory elementów. Kolory elementów

Visual Studio instalacja

KARTA INFORMACYJNA Z INFORMATYKI DO KLASY 4. Imię i nazwisko ucznia:

Program graficzny MS Paint.

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Opis Edytora postaci Logomocji

na podstawie modelu 3D

Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

7. Dynamiczne generowanie grafiki

Tworzenie szablonów użytkownika

KATEGORIA OBSZAR WIEDZY

Maskowanie i selekcja

Część II Wyświetlanie obrazów

Skalowanie i ustawianie arkuszy/układów wydruku w AutoCAD autor: M. Motylewicz, 2012

Janusz Ganczarski. OpenGL Pierwszy program

Delphi podstawy programowania. Środowisko Delphi

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

czyli Arkuszy / Układów na podstawie modelu

Obsługa mapy przy użyciu narzędzi nawigacji

Wykład A1. AutoCAD Dr inż. Jarosław Bydłosz

Ćw. I Projektowanie opakowań transportowych cz. 1 Ćwiczenia z Corel DRAW

CorelDRAW. 1. Rysunek rastrowy a wektorowy. 2. Opis okna programu

Jak dodać własny szablon ramki w programie dibudka i dilustro

Dodanie nowej formy do projektu polega na:

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

Programowanie obiektowe

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Symfonia Mała Księgowość 2013 Specyfikacja zmian

czyli Arkuszy / Układów na podstawie modelu w zakładce MODEL

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

AutoCAD LT praca na obiektach rastrowych i nakładanie barw z palety RGB na rysunki.

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

QElectroTech Wersja 0.3

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

W niniejszym samouczku przedstawiono sposób tworzenia logo dla wymyślonej kawiarni. Tak będzie wyglądać ostateczny efekt pracy:

1. Opis okna podstawowego programu TPrezenter.

Microsoft Small Basic

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Projektowanie Skinów w programie Taboret2

O czym należy pamiętać?

Podręcznik użytkownika programu. Ceremonia 3.1

Pokaz slajdów na stronie internetowej

Tematy lekcji informatyki klasa 4a styczeń 2013

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Tworzenie logo. Omówione zagadnienia

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Tworzenie menu i authoring w programie DVDStyler

KATEGORIA OBSZAR WIEDZY

Tworzenie dokumentacji 2D

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

Microsoft PowerPoint 2003 efektywne tworzenie i prezentacji multimedialnych

Inkscape. Menu. 1 SVG (ang. Scalable Vector Graphics) uniwersalny format dwuwymiarowej, statycznej i

ECDL/ICDL Grafika menedżerska i prezentacyjna Moduł S2 Sylabus - wersja 5.0

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Maple i wykresy. 1.1 Najpierw należy się zalogować. Jak to zrobić zostało opisane w moim poprzednim tutorialu.

SZCZEGÓŁOWY HARMONOGRAM SZKOLENIA

Rysowanie punktów na powierzchni graficznej

Tomasz Greszata - Koszalin

1. Przypisy, indeks i spisy.

Pierwsze kroki z easy Soft CoDeSys Eaton Corporation. All rights reserved.

BIBLIOTEKA LOKALNE CENTRUM WIEDZY PRAKTYCZNEJ PRZEWODNIK PO NARZĘDZIACH WARSZTAT NR 1: ARKUSZE KALKULACYJNE - MINI SKRYPT

Rys. 1. Rozpoczynamy rysunek pojedynczej części

1. OPEN OFFICE RYSUNKI

ROZSZERZANIE MOŻLIWOŚCI...

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Tworzenie i edycja dokumentów w aplikacji Word.

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Praca w środowisku Visual Studio 2008, Visual C

WAŻNE! colour.me Google Fonts tutaj

Wstęp... 3 Win BOSS, czyli SM-Boss pod Windows... 4 SM-Boss w środowisku Windows... 4 Obsługa myszy... 4 Definiowanie drukarek... 4 Wymagania...

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Kreślenie drukowanie plotowanie rysunków

Sylabus Moduł 4: Grafika menedżerska i prezentacyjna

Dodatek A. Palety. QuarkXPress 4.1. Projekty praktyczne. Podstawowe palety

Tworzenie prezentacji w MS PowerPoint

Spis treści CZĘŚĆ I. NIEPARAMETRYCZNE PROJEKTOWANIE 2D...31

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

Prezentacja MS PowerPoint 2010 PL.

Praktyka programowania projekt

Przewodnik po obszarze roboczym

Projektowanie graficzne. Wykład 2. Open Office Draw

Menu Plik w Edytorze symboli i Edytorze widoku aparatów

Użycie przestrzeni papieru i odnośników - ćwiczenie

Obsługa programu Paint. mgr Katarzyna Paliwoda

124 Do planszy definicji kombinacji wg EN dodano przycisk Grupowo ułatwiający przygotowanie wariantów obciążeń wg wzoru 6.10b.

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Języki i metody programowania Java Lab2 podejście obiektowe

Ćwiczenie 3: Rysowanie obiektów w programie AutoCAD 2010

Transkrypt:

C Biblioteka G2. J a c e k Ta r a s i u k C.1 Koncepcja biblioteki G2. Biblioteka graficzna G2 umożliwia tworzenie rysunków 2D z wykorzystaniem prostych funkcji rysujących. Niezwykle użyteczną cechą biblioteki jest obsługa wielu urządzeń wyjściowych. W tej chwili jako urządzenia wyjściowe możemy zdefiniować plik w formacie GIF, plik w formacie PostScript, okno systemu X11 lub okno systemu Windows, a także bibliotekę GD 1. W bibliotece zaimplementowano koncepcję urządzeń wirtualnych. Polega ona na tym, że z pojedynczym urządzeniem wirtualnym możemy związać kilka urządzeń fizycznych. Od tej pory każda instrukcja rysująca przesłana do urządzenia wirtualnego zostanie zrealizowana na wszystkich powiązanych z nim urządzeniach fizycznych. Dodatkowo biblioteka pozwala na zdefiniowanie różnych układów współrzędnych w każdym z urządzeń fizycznych. W efekcie możemy na przykład z urządzeniem wirtualnym związać dwa okna systemu Windows oraz plik GIF. Dla jednego z okien możemy zmniejszyć skalę odwzorowania, a następnie na urządzeniu wirtualnym narysować wykres. Wówczas na ekranie zobaczymy dwa okna. W jednym widoczny będzie cały wykres, który zapisany zostanie również do 1 Aby możliwa była kompilacja biblioteka ta musi być zainstalowana w systemie, a odpowiednie pliki nagłówkowe dostępne dla kompilatora. Biblioteka G2. C-1

Koncepcja biblioteki G2. pliku GIF, a w drugim widoczny będzie jego powiększony fragment. Szczegółowy opis biblioteki oraz najnowsze pliki do pobrania znajdują się na stronie: http://sourceforge.net/projects/g2/. C.2 Funkcje związane z urządzeniami int g2_open_x11(int width, int height) Otwiera okno X11 o szerokości width i wysokości hight. Zwraca identyfikator otwartego urządzenia. int g2_open_x11x(int width, int height, int x, int y, char *window_name, char *icon_name, char *icon_data, int icon_width, int icon_height) W punkcie o współrzędnych ekranowych x, y otwiera okno X11 o szerokości width i wysokości height. Okno będzie miało tytuł window_name. Nazwa, rozmiary oraz wygląd ikony okna zdefiniowane są w parametrach: icon_name, icon_data, icon_width,icon_height. Funkcja zwraca identyfikator urządzenia. int g2_open_ps(const char *file_name, enum g2_ps_paper paper, enum g2_ps_orientation orientation) Otwiera plik PostSriptowy o podanej nazwie file_name i zadanym rozmiarze papieru paper (np. g2_a4). Orientacja papieru orientation może przyjmować wartość landscape (pozioma) lub portrait (pionowa). int g2_open_win32(int width, int height, const char *name, int type) Otwiera okno systemu Windows o zadanych rozmiarach i nazwie umieszczonej w belce tytułowej. Jeśli type przyjmuje wartość 0 to otwarte zostanie okno, jeśli 1 to otwarty zostanie plik o podanej nazwie a obraz zostanie zapisany w formacie WMF. int g2_open_gif(int width, int height, const char *filename) Otwiera plik o nazwie filename, w którym zostanie zapisany obraz w formacie GIF o rozmiarach width, height. Biblioteka G2. C-2

int g2_open_vd(void) Otwiera urządzenie wirtualne. void g2_attach(int vd_dev, int dev) Wiąże urządzenie dev z urządzeniem wirtualnym vd_dev. void g2_detach(int vd_dev, int dev) Wprowadzenie do grafiki komputerowej v.2008 Funkcje związane z urządzeniami Likwiduje powiązanie pomiędzy urządzeniem wirtualnym i rzeczywistym. void g2_close(int dev) Zamyka urządzenie. void g2_set_auto_flush(int dev, int on_off) Jeśli autoflush ustawiony jest na 1 to urządzenie będzie odświeżane po każdej operacji rysunkowej. Jeśli 0 to odświeżenie będzie następować po wywołaniu funkcji g2_flush(). void g2_set_coordinate_system(int dev, double x_origin, double y_origin, double x_mul, double y_mul) Definiuje układ współrzędnych dla urządzenia dev. Środek układu znajduje się w punkcie x_origin, y_origin. Współczynniki skalowania osi x i y wynoszą odpowiednio: x_mul, y_mul. void g2_flush(int dev) Odświeża urządzenie. void g2_save(int dev) Nagrywa do pliku zawartość urządzenia. int g2_ld() Zwraca identyfikator ostatnio używanego urządzenia. C.3 Funkcje rysujące void g2_clear(int dev) Czyści urządzenie. Biblioteka G2. C-3

Funkcje rysujące void g2_set_background(int dev, int color) Ustawia kolor tła. void g2_move(int dev, double x, double y) Przesuwa położenie pióra. void g2_move_r(int dev, double dx, double dy) Przesuwa położenie pióra względem aktualnej pozycji. void g2_plot(int dev, double x, double y) Stawia punkt w pozycji x, y. void g2_plot_r(int dev, double dx, double dy) Stawia punkt w pozycji przesuniętej względem aktualnej pozycji o dx i dy. void g2_set_qp(int dev, double d, enum QPshape shape) Ustanawia rodzaj QuasiPixela. Używane w automatach komórkowych. void g2_plot_qp(int dev, double x, double y) Rysuje QuasiPixel. void g2_line(int dev, double x1, double y1, double x2, double y2) Rysuje linię o zadanych współrzędnych początku i końca. void g2_line_to(int dev, double x, double y) Rysuje linię z aktualnej pozycji pióra do x, y. void g2_line_r(int dev, double dx, double dy) Rysuje linię z aktualnej pozycji pióra do punktu odległego o dx i dy. void g2_poly_line(int dev, int N_pt, double *points) Rysuje krzywą łamaną o N_pt wierzchołkach. Współrzędne wierzchołków przechowywane są w tablicy points[]. void g2_triangle(int dev, double x1, double y1, double x2, double y2, double x3, double y3) Rysuje trójkąt. Biblioteka G2. C-4

Funkcje rysujące void g2_filled_triangle(int dev, double x1, double y1, double x2, double y2, double x3, double y3) Rysuje trójkąt wypełniony. void g2_rectangle(int dev, double x1, double y1, double x2, double y2) Rysuje prostokąt. void g2_filled_rectangle(int dev, double x1, double y1, double x2, double y2) Rysuje prostokąt wypełniony. void g2_polygon(int dev, int N_pt, double *points) Rysuje wielokąt. void g2_filled_polygon(int dev, int N_pt, double *points) Rysuje wielokąt wypełniony. void g2_circle(int dev, double x, double y, double r) Rysuje okrąg. void g2_filled_circle(int dev, double x, double y, double r) Rysuje okrąg wypełniony. void g2_ellipse(int dev, double x, double y, double r1, double r2) Rysuje elipsę. void g2_filled_ellipse(int dev, double x, double y, double r1, double r2) Rysuje wypełnioną elipsę. void g2_arc(int dev, double x, double y, double r1, double r2, double a1, double a2) Rysuje fragment łuku elipsy. void g2_filled_arc(int dev, double x, double y, double r1, double r2, double a1, double a2) Rysuje wypełniony fragment łuku elipsy. Biblioteka G2. C-5

Funkcje rysujące void g2_image(int dev, double x, double y, int x_size, int y_size, int *pens) Rysuje obrazek bitmapowy w pozycji x, y. Rozmiar obrazka podają zmienne x_size, y_size. Tablica pens[] zawiera informacje o kolorach poszczególnych punktów obrazka. C.4 Funkcje tekstowe void g2_string(int dev, double x, double y, char *text) Drukuje na pozycji x, y tekst text. void g2_set_font_size(int dev, double size) Ustala rozmiar czcionki. C.5 Funkcje dotyczące stylów i kolorów int g2_ink(int dev, double red, double green, double blue) Tworzy nowy kolor atramentu. void g2_pen(int dev, int color) Wybiera kolor pióra. void g2_reset_palette(int dev) Czyści paletę kolorów i zapełnia ja kolorami standardowymi. void g2_clear_palette(int dev) Usuwa wszystkie kolory. void g2_set_dash(int dev, int N, double *dashes) Ustala styl linii przerywanej. N=0 i dashes=null przywraca linię ciągłą. void g2_set_line_width(int dev, double w) Ustala grubość linii. Biblioteka G2. C-6

Funkcje dotyczące stylów i kolorów C.6 Funkcje obsługi myszy void g2_query_pointer(int dev, double *x, double *y, unsigned int *button) Zwraca informacje o położeniu wskaźnika myszy i stanie przycisków. Nie wszystkie przedstawione funkcje dostępne są dla każdego urządzenia. Tabelę dostępności funkcji dla różnych urządzeń oraz szczegółowy opis biblioteki można znaleźć na stronie: http://sourceforge.net/projects/g2/. C.7 Jak kompilować programy z wykorzystaniem biblioteki G2. Pakiet dystrybucyjny biblioteki G2 (w wersji 0.72) zawiera zestaw plików przygotowanych do skompilowania pod Visual C++ oraz opakowania umożliwiające wykorzystanie G2 w Perlu i Pythonie. Znajduje się tam również katalog o nazwie [src]. Kompilacja bezpośrednia. Kompilacja programów w środowisku Dev-C++ w najprostszym przypadku może przebiegać następująco: 1. Do katalogu z programem przekopiowujemy wszystkie pliki *.c i *.h z pakietu dystrybucyjnego biblioteki. 2. Do projektu oprócz pliku z programem dołączamy wszystkie pliki *.c. 3. Całość kompilujemy tak jak zwykle. Kompilacja z wykorzystaniem biblioteki statycznej. Jeżeli zamierzamy korzystać intensywnie z biblioteki G2 warto przygotować sobie odpowiednią bibliotekę statyczną. 1. Do katalogu, w którym będziemy kompilować bibliotekę statyczną kopiujemy wszystkie pliki *.c i *.h z katalogu [src]. Następnie przekopiowujemy pliki Biblioteka G2. C-7

biblioteki G2. Wprowadzenie do grafiki komputerowej v.2008 Jak kompilować programy z wykorzystaniem *.c i *.h z podkatalogów urządzeń z których będziemy chcieli korzystać w bibliotece 2. 2. W Dev-C++ tworzymy nowy projekt wybierając w opcjach Biblioteka statyczna oraz Projekt C. 3. Do projektu dołączamy wszystkie pliki *.c. 4. Kompilujemy. 5. Skompilowaną bibliotekę, która będzie miała nazwę naszego projektu z rozszerzeniem *.a przemianowujemy na libg2.a. 6. Plik libg2.a kopiujemy do katalogu [C:\Dev-Cpp\lib]. 7. W katalogu [C:\Dev-Cpp\include] zakładamy podkatalog o nazwie [G2], do którego przekopiowujemy wszystkie pliki *.h. 8. Tworzymy nowy projekt dla programu. W opcjach projektu wybieramy Aplikację Windows oraz Projekt C. 9. We własnościach projektu na karcie Parametry w polu Konsolidator wpisujemy -lg2. 10. Na karcie Pliki/Katalogi w zakładce Katalogi plików nagłówkowych dodajemy [C:\Dev-Cpp\include\G2]. 11. Teraz już można skompilować program. 12. Jeżeli zajdzie potrzeba użycia urządzenia, które nie zostało wkompilowane w bibliotekę statyczną, to zawsze można pliki z nim związane umieścić w katalogu projektu i włączyć je do niego. 2 W moim przypadku były to katalogi [PS] i [Win32]. Jeśli ktoś pracuje pod Linuxem to należałoby dokompilować [X11] w miejsce [Win32] Biblioteka G2. C-8

Przykładowe programy. C.8 Przykładowe programy. Do skryptu dołączono następujące programy demonstracyjne: G2-Demo program demonstracyjny dołączony do pakietu dystrybucyjnego (kompilowany bezpośrednio). G2-Coordinates przykład wykorzystania różnych układów współrzędnych oraz możliwości tworzenia plików *.wmf (kompilowany z użyciem biblioteki statycznej). G2-Zoom wykorzystanie dwóch okien o różnych skalach. G2-PostScript tworzenie plików PostScriptowych. G2-GD wykorzystanie biblioteki GD z poziomu biblioteki G2 (kompilowany z użyciem biblioteki statycznej z dokompilowanymi w projekcie plikami obsługującymi interfejs biblioteki GD). Niniejszy tekst jest fragmentem skryptu do wykładu: Praktyczne wprowadzenie do grafiki komputerowej Skrypt ten w całości podlega licencji Creative Commons. Szczegółowy opis licencji znajduje się w przedmowie, dostępnej wraz z najnowszą wersją skryptu na stronie: http://novell.ftj.agh.edu.pl/~tarasiuk/dydaktyka/gfk/gfk.html Biblioteka G2. C-9