XPCE - grafika w Prologu

Podobne dokumenty
Edytor tekstu OpenOffice Writer Podstawy

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

Projektowanie graficzne. Wykład 2. Open Office Draw

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.

Dodawanie grafiki i obiektów

CorelDRAW. wprowadzenie

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

Szybkie tworzenie grafiki w GcIde

Edytor tekstu Word 2007

Ćwiczenie 2 Warstwy i kształty podstawowe

Kolory elementów. Kolory elementów

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Edytor tekstu MS Word podstawy

Obsługa programu Paint. mgr Katarzyna Paliwoda

Kurs Adobe Photoshop Elements 11

Programowanie Obiektowe GUI

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

Biblioteka graczna XPCE

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

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

Dodanie nowej formy do projektu polega na:

Edytor tekstu MS Word podstawy

KATEGORIA OBSZAR WIEDZY

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

Tworzenie prezentacji w MS PowerPoint

3.7. Wykresy czyli popatrzmy na statystyki

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

GRAFIKA WEKTOROWA. WYKŁAD 1 Wprowadzenie do grafiki wektorowej. Jacek Wiślicki Katedra Informatyki Stosowanej

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

Wstawianie grafiki. Obrazy

INFORMATYCZNE SYSTEMY STEROWANIA INSTRUKCJA ĆWICZENIA LABORATORYJNEGO

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Kadry Optivum, Płace Optivum

4.6 OpenOffice Draw tworzenie ilustracji

Tworzenie bazy danych na przykładzie Access

Architektura interfejsu użytkownika

Kurs Adobe Photoshop Elements 11

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

1. Przypisy, indeks i spisy.

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

Pokaz slajdów na stronie internetowej

Dodawanie i modyfikacja atrybutów zbioru

Programowanie aplikacji na urządzenia mobilne

W tej instrukcji zostanie opisany sposób w jaki tworzy się, edytuje i usuwa obiekty na mapie. Następnie wybierz Rysuj

Grafika komputerowa. Zajęcia IV

Programowanie na poziomie sprzętu. Programowanie w Windows API

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

Podstawy Informatyki Wykład V

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

Microsoft Small Basic

1. Ćwiczenia z programem PowerPoint

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres lub

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

Tworzenie szablonów użytkownika

Lekcja 1: Origin GUI GUI to Graficzny interfejs użytkownika (ang. GraphicalUserInterface) często nazywany też środowiskiem graficznym

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

Przewodnik... Tworzenie Landing Page

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

Narzędzia programu Paint

Lab.1. Praca z tekstem: stosowanie arkuszy stylów w dokumentach OO oraz HTML/CSS

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

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Włącza i wyłącza automatyczny hinting. Pozwala na określenie czy chcemy, aby hinting był stosowany również do większych czcionek.

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

CorelDraw - obiekty tekstowe

Tekst na mapach. Teksty na mapie. Ustawienia mapy. W tej instrukcji zostanie opisany sposób w jaki można na mapach wyświetlać teksty

Projektowanie Skinów w programie Taboret2

Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Rozwiązanie ćwiczenia 7a

Formularze i raporty w MS Access


Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

Rozwiązanie ćwiczenia 8a

wstawianie przycisków umożliwiających wybieranie wartości poprzez klikanie strzałek

Inkscape. Narzędzia informatyki

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

Inkscape. Warstwy w programie Inscape. Budowa palety - Warstwy. Ćwiczenie 2

Edytor tekstu MS Word 2010 PL: grafika. Edytor tekstu MS Word umożliwia wstawianie do dokumentów grafiki.

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

GIMP Grafika rastrowa (Ćwiczenia cz. 2)

Możliwości programu Power Point

Techniki wstawiania tabel

System wizyjny OMRON Xpectia FZx

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.

1. Dodawanie integracji

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Przewodnik po obszarze roboczym

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

GIS / Projekt obiektu elektroenergetycznego. Ćwiczenia 2 Mapa wektorowa PG/ Warstwy

QElectroTech Wersja 0.3

Tworzenie i edycja dokumentów w aplikacji Word.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

Galileo v10 pierwszy program

Kier. MTR Programowanie w MATLABie Laboratorium

Transkrypt:

XPCE - grafika w Prologu 1. Co to jest grafika XPCE 2. Tworzenie okien dialogowych z wykorzystaniem XPCE 3. Obiekty graficzne 4. Coś prostszego, czyli diagramy i grafy w programie Graphviz napisane w języku DOT

Co to jest grafika XPCE XPCE jest zestawem narzędzi do tworzenia graficznego interfejsu użytkownika w Prologu i innych językach programowania. XPCE w odmienny sposób podchodzi do tworzenia GUI. Jądro XPCE jest obiektowo zorientowane. Pozwala na definicję klas i metod w różnych językach. Wbudowane procedury graficzne zdefiniowane są w C, dzięki czemu prędkość renderowania grafiki jest duża. Ponadto umożliwia to kompilację biblioteki XPCE na różnych platformach. Metody każdej klasy należącej do biblioteki XPCE zdefiniowane są przy użyciu Prologa, dzięki temu mogą one posiadać argumenty będące danymi Prologa i odwrotnie: dane Prologa mogą być powiązane ze zmiennymi XPCE. Warstwa graficzna XPCE zapewnia wysoki stopień abstrakcji poprzez ukrywanie przed programistą szczegółów, takich jak np. obsługa zdarzeń, odświeżanie okienek, zarządzanie wyglądem okien. Jednocześnie zapewnia dostęp do tych szczegółów w razie potrzeby.

Tworzenie okien dialogowych z wykorzystaniem XPCE Tworzenie prostych obiektów Tworzenie obiektów wykonywane jest z wykorzystaniem predykatu new/2 (new(?reference, +NewTerm)) pierwszy argument zwraca referencję do obiektu, a drugi jest rodzajem tworzonego obiektu (klasa obiektu).?- new(punkcik, point(10,20)). Punkcik = @8308913/point.?- new(@demo, dialog('demo Window')). true. Utworzone obiekty możemy usunąć korzystając z predykatu, gdzie argumentem jest identyfikator obiektu free/1 (free(+reference))?- free(punkcik).?- free(@demo).

Tworzenie okien dialogowych z wykorzystaniem XPCE Modyfikacja obiektów Aby zmodyfikować aktualny stan obiektu wykorzystujemy predykat send/2 (send(+receiver, +Selector(...Args...))). pierwszy argument to referencja do obiektu, drugi argument to metoda do wykonania.?- send(@8308913, x(20)).?- send(@demo, append(text_item(name))). Okno pokazujemy w ten sposób:?- send(@demo, open). Okno w Windows 7 oraz Linux

Tworzenie okien dialogowych z wykorzystaniem XPCE Predykat send można również dekomponować do postaci:?- send(@demo, append, text_item(nazwa)). Z tego zapisu wynika, że wszystkie argumenty od 3 będą argumentami append. XPCE definiuje kilka podstawowych obiektów takich jak: @display referencja ekranu @prolog referencja maszyny wnioskującej W nomenklaturze XPCE metodą jest każdy zdefiniowany predykat w Prologu:?- send(@prolog, write('hello world')).

Tworzenie okien dialogowych z wykorzystaniem XPCE Odpytywanie obiektów Kolejnym z fundamentalnych predykatów jest: get/3 (get(+receiver, +Selector(+Argument ), -Result)) Pierwsze dwa argumenty to identycznie jak w przypadku send referencja do obiektu i metoda do wykonania, natomiast 3 argument to zwracana wartość.?- get(@8308913, y, Y). Y = 20?- get(@830913, distance(point(100,100)), Distance). Distance = 113?- get(@demo, display, D). D = @display/display Ostatni przykład zwraca obiekt poprzez jego referencję.

Tworzenie okien dialogowych z wykorzystaniem XPCE Sprawdźmy rozdzielczość:?- get(@display, size, Size), get(size, width, W), get(size, height, H). Size = @7919987/size, W = 1280, H = 800. Sprawdźmy co nam użytkownik wpisał w polu tekstowym okna dialogowego:?- get(@demo, member(name), TextItem), get(textitem, selection, Text). TextItem = @573481/text_item, Text = hello

Tworzenie okien dialogowych z wykorzystaniem XPCE Prosta akcja?- new(@okno,dialog(dialogowe)), new(@but,button(nacisnij,message(@prolog,write,'au! nie naciskaj!\n'))), send(@okno,append,@but), send(@okno,open).

Tworzenie okien dialogowych z wykorzystaniem XPCE Wbudowane elementy okna dialogowego button text_item int_item slider menu menu_bar label list_browser editor dialog_group Zwykły przycisk. Realizuje metodę message na wciśnięcie. Pole wprowadzania tekstu. Może być edytowalny lub nie, posiada wbudowany tryb konwersji (np. gdy chcemy wprowadzić liczbę), można używać spacji przy wprowadzaniu wartości. Podobne do text_item. Posiada ograniczony rozmiar pola, guzik do zwiększenia/zmniejszenia wartości, kontrola typu i zakresu. Pole wyboru liczb w danym zakresie. Obsługuje zarówno liczby całkowite, jak i zmiennoprzecinkowe. Realizuje różne style menu wyboru: przyciski radio, przyciski z fajką, pola kombi itd. Pasek menu. Etykieta z tekstem lub z obrazkiem. Nie podatny na działania użytkownika. Pokazuje listę elementów, obiektów. Edytor tekstu. Obsługuje wiele czcionek i innych atrybutów tekstowych. Grupa elementów w oknie dialogowym. Posiada granicę i etykietę.

Obiekty graficzne XPCE oprócz tworzenia standardowych okien dialogowych, do których każdy użytkownik komputera jest przyzwyczajony, jesteśmy w stanie tworzyć obiekty graficzne.?- new(@p, picture('demo Picture')), send(@p, open). Powyższy program przygotowuje obiekt graficzny o nazwie Demo Picture. Obrazek, który w ten sposób stworzymy będzie dwuwymiarowy. Ciekawostką może być fakt, że przygotowany obszar roboczy jest niekończenie duży. Narysujmy kwadrat:?- send(@p, display, new(@bo, box(100,100))).

Obiekty graficzne Czas na kółko :?- send(@p, display, new(@ci, circle(50)), point(25,25)). Wstawianie grafiki:?- send(@p, display, new(@bm, bitmap('32x32/books.xpm')), point(100,100)). Przywitajmy się:?- send(@p, display, new(@tx, text('hello')), point(120, 50)).

Obiekty graficzne Rysujemy krzywą linie:?- send(@p, display, new(@bz, bezier_curve(point(50,100), point(120,132), point(50, 160), point(120, 200)))). XPCE umożliwia edycję już narysowanych obiektów graficznych. Na początek zaokrąglijmy rogi naszego kwadratu:?- send(@bo, radius, 10).

Obiekty graficzne Pomalujmy kółko:?- send(@ci, fill_pattern, colour(orange)). Zmienimy czcionkę powitania:?- send(@tx, font, font(times, bold, 18)). Zrobimy groty:?- send(@bz, arrows, both). Wynik uzyskany w Windows 7 i Linux

Obiekty graficzne Podstawowe obiekty graficzne: arrow bezier bitmap pixmap box circle ellipse arc line path text Grot. Zazwyczaj wykorzystywany z klasą line. Krzywa Béziera. Obsługiwane są krzywe wielomianowe drugiego i trzeciego stopnia. Wizualizacja obrazu. Obsługiwane są monochromatyczne i kolorowe obrazy. Obrazy mogą mieć kształt złożony. Podklasa bitmap, obsługuje tylko kolorowe obrazy. Prostokąt. Może mieć zaokrąglone rogi i być wypełniony kolorem. Specjalny przypadek elipsy. Kształt eliptyczny, możliwe wypełnienie. Część elipsy. Może mieć groty. Wypełniony wygląda jak kawałek ciasta. Linia prosta, może mieć groty. Linia łamana przechodząca przez punkty. Może mieć groty i być zaokrąglona na zgięciach. Wizualizacja stringu w kilku czcionkach. Może mieć wiele atrybutów tekstowych.

Obiekty graficzne Interakcja myszy z grafiką Wykorzystanie obiektu recogniser do obsługi myszy.?- send(@ci, recogniser, move_gesture(left)).?- send(@tx, recogniser, click_gesture(left, '', double, message(@prolog,write,'hello\n'))).

Język DOT służy do opisywania schematów za pomocą tekstu. Przy pomocy programu Graphviz możemy zaprojektować grafy i schematy definiując tylko relacje między poszczególnymi węzłami. W języku DOT można utworzyć dwa rodzaje wykresów: - grafy zorientowane digraph przyklad { } a->b; a->c;

- grafy niezorientowane graph przyklad { a--b; a--c; }

Podgrafy Podgrafy w języku DOT pełnią trzy podstawowe role: - mogą być używane do reprezentowania struktury grafu, wskazując, że niektóre węzły i krawędzie powinny być zgrupowane razem - może zapewnić kontekst dla ustawiania atrybutów. Na przykład, można określić, że podgraf niebieski to kolor domyślny dla wszystkich węzłów: digraph przyklad { a->b; a->c; subgraph { rank = same; a; b; c; } }

- trzecia rola wiąże się bezpośrednio z silnikiem graficznym Graphviz. Jeżeli Graphiz napotka słowo kluczowe subgraph, to program wszystkie węzły należące do danego podgrafu są wymazywane i na nowo rysowane, zgodnie z instrukcjami zawartymi w podgrafie. Ważny wniosek: Podgrafy nie są częścią języka DOT a jedynie konwencją składniową przestrzeganą przez niektóre silniki graficzne. 1. Odczyt węzłów metodą post-order i wrzucenie na stos 2. Odczyt węzłów i rysowanie.

Atrybuty węzłów Język DOT umożliwia zmiany kształtu węzłów występujących w danym grafie: digraph przyklad { a->b; a [shape=box]; b [shape=diamond]; c [shape=triangle]; a->c; a->d; }

graph przyklad { a--b; a [shape=box]; b [shape=diamond]; c [shape=triangle]; a--c; a--d; }

Dostępne kształty:

Działanie na rekordach digraph structs { node [shape=record]; struct1 [label="<f0> left <f1> mid dle <f2> right"]; struct2 [label="<f0> one <f1> two"]; struct3 [label="hello\nworld { b {c <here> d e} f} g h"]; struct1:f1 -> struct2:f0; struct1:f2 -> struct3:here; } node-odwiłanie do wszystkich węzłów <etykieta>-etykieta niewyświetlana w diagramie, wykorzystywana do określenia lokalizacji etykiety głównej

digraph structs { node [shape=record]; struct1 [label="<f0> left <f1> mid dle <f2> right"]; struct2 [label="<f0> one <f1> two"]; struct3 [label="hello\nworld { b {c <here> d e} f} g h"]; struct1:f1 -> struct2:f0; struct1:f2 -> struct3:here; rankdir=rl; } rankdir-zmiana orientacji wykresu, domyślnie "TB"

digraph structs { node [shape=record]; struct1 [label="<f0> left <f1> mid dle <f2> right"]; struct2 [label="<f0> one <f1> two"]; struct3 [label="hello\nworld { b {c <here> d e} f} g h"]; struct1:f1 -> struct2:f0; struct1:f2 -> struct3:here; rankdir=lr; }

digraph structs { node [shape=mrecord]; struct1 [label="<f0> left <f1> mid dle <f2> right"]; struct2 [label="<f0> one <f1> two"]; struct3 [label="hello\nworld { b {c <here> d e} f} g h"]; struct1:f1 -> struct2:f0; struct1:f2 -> struct3:here; rankdir=lr; }

Kolorowanie węzłów digraph G { rankdir=lr; node [shape=box, color=blue]; node1 [style=filled]; node2 [style=filled, fillcolor=red]; node0 -> node1 -> node2; } digraph R { rankdir=lr; node [style=rounded]; node1 [shape=box]; node2 [fillcolor=yellow, style="rounded,filled", shape=diamond]; node3 [shape=record, label="{ a b c }"]; node1 -> node2 -> node3; } fillcolor-kolor wypełnienia

Rodzaje połączeń Możliwe są dodatkowe modyfikacje związane grotami: l- pozostawia odpowiedni grot tylko po lewej stronie połączenia r-pozostawia odpowiedni grot tylko po prawej stronie połączenia o-pozostawia niewypełniony grot Uwaga: Style strzałek działają tylko i wyłącznie w grafach zorientowanych.

Nie wszystkie rodzaje grotów mają możliwość modyfikacji. Tabela przedstawia groty i dostępne im modyfikacje: Oprócz powyższych modyfikacji, dostępne jest również łączenie ze sobą kliku stylów grotów: digraph R { a -> b; a -> c [arrowhead="lteeodiamond"]; }

Zmiana koloru, dodanie grotu na ogon i podpis strzałki digraph przyklad{ a->b [style="dotted,bold", dir=both, arrowhead=dotlnormal, arrowtail=odot, color=red]; a [shape=box]; b [shape=diamond]; c [shape=triangle]; a->c [label="opis strzalki"]; }

Atrybut dir dla T->H; : Wniosek: Można za pomocą grafu zorientowanego można utworzyć graf niezorientowany i odwrotnie. Atrybut color : Możliwe jest definiowanie koloru na cztery sposoby: dodatkowo można zapisać kolor w systemie RGBA ("#%2x%2x%2x%2x")

Język DOT umożliwia utworzenie listy kolorów: digraph przyklad { a->b [style="dotted,bold",dir=both,arrowhead=dotlnormal,arrowtail=odot, color=red ]; a [shape=box]; b [shape=diamond]; c [shape=triangle]; a->c [label="opis strzalki" color="blue:red:yellow" ]; } Podając w wybranej kolejności kolory oddzielone : możemy utworzyć wielokolorowe obiekty.

Atrybut label: W przypadku węzłów atrybut label definiował tekst jaki ma być umieszczony wewnątrz danego węzła. Dla połączeń jest to informacja jaka ma być wyświetlona w środku danego połączenia. Do podpisywania końcowych fragmentów połączeń wykorzystujemy atrybuty: taillabel-podpis jest umieszczany w ogonie danego połączenia headlabel-popis jest umieszczany w głowie danego połączenia digraph przyklad { a->b [style="dotted,bold",dir=both,arrowhead=dotlnormal,arrowtail=odot, color=red ]; a [shape=box]; b [shape=diamond]; c [shape=triangle]; a->c [headlabel="head", label="strzalka", taillabel="tail", color="blue:red:yellow" ]; }

Dziękuję za uwagę. Literatura: - Biblioteka XPCE w Prologu, Andrzej Mróz, Bartosz Bełcik, 13 stycznia 2003 rok - Programing in XPCE/Prolog, Jan Wielemaker, Anjo Anjewierden, SWI, Uniwesity of Amsterdam - http://www.swi-prolog.org/pldoc/refman/ - http://www.graphviz.org/documentation.php