A keretrendszer. A linuxos keretrendszer az eredeti alapján készült (nagyrészt C++-ban), ezért nagyjából azzal azonos funkcionalitásokkal rendelkezik.



Hasonló dokumentumok
2. Gyakorlat Khoros Cantata

Programozás 5. Dr. Iványi Péter

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

Bevezetés a C++ programozási nyelvbe

Algoritmusok. Hogyan csináljam?

INFORMATIKAI ALAPISMERETEK

Programozás alapjai 1. (BMEVIEEA100)

3. Gyakorlat Ismerkedés a Java nyelvvel

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

117. AA Megoldó Alfréd AA 117.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Információs Technológia

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Körkörös listák. fej. utolsó. utolsó. fej

1. mérés - LabView 1

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

A MATLAB programozása. Féléves házifeladat. RGBdialog

Ximba Radio: Grafikus felület fejlesztése az XM Satellite Radio programhoz GTK+/Glade segítségével

Szakdolgozat. Balázs Ádám Kuk József

Access adatbázis elérése OLE DB-n keresztül

Információs Technológia

A BENCHMARKING AZ. - a legjobb gyakorlatról - Dr. Farkas Katalin december 16.

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

libgdx alapok, első alkalmazás

LÉTRADIAGRAM FORDÍTÓK ELMÉLETE PLC VEZÉRLÉSEK SZÁMÁRA II.

Osztály és objektum fogalma

CommonKADS módszertan. Molnár Bálint. PhD, egyetemi docens, BKÁE

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

1. Alapok. Programozás II

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Bevezetés az Arduino mikrovezérlők programozásába

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Máté: Számítógépes grafika alapjai

Vizuális programozás gyakorlat

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Kétdimenziós rajzolás WPF-ben

Programozás II. 2. Dr. Iványi Péter

Objektum Orientált Szoftverfejlesztés (jegyzet)

Elıírt lépésszámú ciklusok

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

Programozás II gyakorlat. 6. Polimorfizmus

Grafikus felületek készítése 1.

1. óra Digitális képfeldolgozás

Pénzügyi algoritmusok

Mérnöki létesítmények 3D-s modellje

C# osztályok. Krizsán Zoltán

INFORMATIKAI ALAPISMERETEK

C# gyorstalpaló. Készítette: Major Péter

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

Bevezetés a programozásba Előadás: Fordítási egység

Programozás 3. Dr. Iványi Péter

2.3. A C nyelv utasításai

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

Programozási Paradigmák és Technikák

Programozás C++ -ban 2007/4

Bevezetés a programozásba. 9. Előadás: Rekordok

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

Bevezetés a programozásba. 12. Előadás: 8 királynő

ÁLTALÁNOS WEBLAPSZERKESZTÉSI TUDNIVALÓK ÁLTALÁNOS HTML KÓDOLÁSI TUDNIVALÓK

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 felhasználása számítógépes grafikában (bevezető egy primitív keretrendszer)

Programozás II. labor

A MEE VILÁGÍTÁSTECHNIKAI TÁRSASÁG HÍRLEVELE 7. évfolyam, 2. szám március

Jancskárné Anweiler Ildikó: PLC programozás az IEC szabvány szerint KÉZIRAT!

MSP430 programozás Energia környezetben

ECDL Képszerkesztés, syllabus 1.0

PTE PMMIK Infrastruktúra és Mérnöki Geoinformatika Tanszék

Programozás II gyakorlat. 4. Öröklődés

bool _freehand = false; QPoint _lastpoint; // ebben a pontban volt az utolsó rajzolásnál az egérmutató

Bevezetés a C++ programozásba

. Typeset by AMS -TEX 0

EGÉSZSÉG-GAZDASÁGTAN

I0 I0.0 I1 I0.1 I2 I0.2. Kimenetek Q0 Q0.0 Q1 Q0.1 Q2 Q0.2 Q3 Q0.3. A be- és kimenetek közötti függvénykapcsolat

CIPHERLAB 8000 adatgyűjtő-vonalkódleolvasó Használati útmutató

PHP5 Új generáció (2. rész)

VI. Magyar Földrajzi Konferencia

SZEMLÉLETES RÉSZINFORMÁCIÓK INTEGRÁCIÓS PROBLÉMÁINAK VIZSGÁLATA A VIRTUÁLIS VALÓSÁGOT TEREMTŐ SZIMULÁTOROK ALAPJÁN

Pénzügyi algoritmusok

Adatbázis-kezelés ODBC driverrel

Készítette: Nagy Tibor István

I. fejezet Hello Világ! Programozás tankönyv. II. Fejezet. Helló Világ! avagy a Miért?-ek elkezdődnek

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

BME MOGI Gépészeti informatika 4.

MSP430 programozás Energia környezetben. LED mátrix vezérlése MAX7219 IC-vel

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Színinger egyeztetés elsődleges és másodlagos fényforrásokkal

SZÍNES KÉPEK FELDOLGOZÁSA

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Számítógép és programozás 2

Alap számológép alkalmazás

Grafikus csővezeték és az OpenGL függvénykönyvtár

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Algoritmusok raszteres grafikához

2. tartály tele S3 A tartály tele, ha: S3=1 I tartály tele S5 A tartály tele, ha: S5=1 I 0.4

Az Ön kézikönyve HP SCANJET 7490C SCANNER

Bánsághi Anna

Objektumorientált programozás C# nyelven

Átírás:

A keretrendszer A linuxos keretrendszer az eredeti alapján készült (nagyrészt C++-ban), ezért nagyjából azzal azonos funkcionalitásokkal rendelkezik. Fordítás és futtatás A futtatáshoz elengedhetetlen, hogy a gépünkön telepítve legyen a GTK+. A fordításnál pedig linkeljük a glib2.0 és gtk2.0 könyvtárakat. Osztályszerkezet Képosztályok: KPicture Kép tárolása, pixelszintű módosítása stb. (Szürkeárnyalatos és RGB) void F_CreateFromScratch(int width, int height, char color_depth) Létrehoz egy képet a megadott értékek alapján (rendre: szélesség, magasság, színmélység) void F_CreateFromPicture(KPicture* Kpict) Létrehoz egy képet a megadott alapján. bool F_CreateFromFile(char* file_path) Kép létrehozása 'file_path' elérési útvonalú fájlból. Hamis, ha nem megfelelő formátumú a fájl, illetve, ha alfa csatornája is van. int F_GetSizeX() Szélesség lekérdezése. int F_GetSizeY() Magasság lekérdezése. char F_GetColorDepth() Színmélység lekérdezése. int F_GetDataSize() Adatméret lekérdezése ( = szélesség*magasság*színmélység). unsigned char F_GetPixel(int x, int y, char c_comp=0) Színérték lekérdezése x,y helyen illetve a pixel c_comp színkomponense (0 = Piros, 1 = Zöld, 2 = Kék) Ha szürkeárnyalatos a kép, akkor magát a pixelt adja vissza. A színkomponens megadása nem kötelező. void F_SetPixel(int x, int y, char color, char c_comp) Egy adott (x,y) pixel értékének megváltoztatása 'color' értékűre. Ha a kép RGB, akkor csak a színkomponens értékét változtatja meg. Lsd. az előbb.

void F_Delete() Törli a képet, így újra föl lehet használni. void F_SetTo(char value, char c_comp=0) 'Value' értékűre állítja az összes pixel 'c_comp' színkomponensét. Ha szürkeárnyalatos a kép, akkor a pixeleket. KPicture* F_CreateAClone() Egy másolatot készít a képről. bool F_CopyDataTo(KPicture* kdest) Átmásolja a képet 'kdest'-be. Ha nem azonos típusúak, akkor hamisat ad vissza bool F_ColorToGray(KPicture* kdest) Színes képet másol át szürkeárnyalatosba, kdest-nek azonos méretűnek kell lennie. (átlagol) bool F_GrayToColor(KPicture* kdest) Szürkeárnyalatos képet másol színesbe, kdest-nek azonos méretűnek kell lennie. bool F_IsSameType(KPicture* kpict) Igaz, ha kpict szélkessége, magassága és színmélysége ugyanaz. bool F_IsInited() Igaz, ha a kép már incializálódott. void F_LinkToWidget(GtkWidget** Image) Hozzáköti a képet egy GtkImage elemhez. KIntPicture: Négy byte-os képek tárolása és modosítása void F_CreateFromScratch(int SizeX, int SizeY) Létrehoz egy SizeX*SizeY dimenziójú képet. int F_GetPixel(int x, int y) Visszaad egy pixelt void F_SetPixel(int x, int y, int val) Az (x,y) pixel értékét 'val'-ra változtatja. KDoublePicture Hasonló a KintPicture-höz, csak double értékeket használ.

Task osztályok KTaskBase Absztrakt feladatosztály, minden Task-ot ebből kell származtatni. Attribútumok: KPicture* KOutput kimeneti kép. std::vector<kpicture*>* KInputList bemeneti képek vektora. A feltöltését magunknak kell megoldanunk. Pl. egy dialógusablakkal stb. void F_Init(KPicture* Input) = 0 Absztrakt függvény, mit a származtatott osztályban kell megvalósítani. Itt kell(ene) inicializálni a kimenetet. void F_Process(KPicture* Input) = 0 Ugyancsak absztrakt függvény. Itt történik a bemenő adat(ok) feldolgozása. void F_RunDialog() Csak azokban az osztályban kell újraírni, ahol dialógusablakot szeretnék használni az adatbevitelhez. void F_Finalize() Létrehoz egy új ablakot és hozzáköti a KOutput-t. Új algoritmus beillesztése: Örököltetünk egy osztályt a KtaskBase-ből (IDE függő) Be kell illesztenünk a Task-ot a TaskList-be: a main.cc-ben: 1. Az INCLUDES sekcióhoz hozzáadunk egy #include task_header.h sort. 2. A CREATE TASKS részben létrehozunk belőle egy példányt. 3. A REGISTER TASKS résznél pedig regisztráljuk az algoritmusunkat a Kwindow::MainMenu->F_RegisterTask(...) függvénnyel, első paraméter a Task, a második a neve, haramdikat csak akkor kell megadni, ha dialógus ablakot akarunk használni, akkor oda azt írjuk, hogy DIALOG_TASK

A Task-unkhoz tartozó.cc fájlnak nagyjából így kell kinéznie: #include "EnTaskom.h" EnTaskom::KSampleTask1() : KTaskBase() { // TODO: put constructor code here EnTaskom::~KSampleTask1() { // TODO: put destructor code here void EnTaskom::F_Init(KPicture* Input) { KOutput = new KPicture; KOutput->F_CreateFromScratch(Input->F_GetSizeX(), Input->F_GetSizeY(), Input->F_GetColorDepth()); void EnTaskom::F_Proces(KPicture* Input) { //... valamilyen feldolgozó rész Saját dialógusablakkal rendelkező alkalmazás készítése A keretrendszer három előre élkészített dialógustablakot tartalmaz: 1. MatrixDialog egy előre megadott méretű mátrixot tudunk vele bekérni. - Létrehozzuk: MatrixDialog* Dial = new MatrixDialog(5); //(ötször ötös mátrixhoz) - Lekérjük a mátrixot: double** matrix = Dial->F_GetParams(); 2. ParamDialog segítségével nevesített paramétereket kérhetünk a felhasználótól. - Létrehozzuk: ParamDialog* Dial = new ParamDialog; - Hozzáadjuk a paraméterneveket: Dial->F_AddParam( peremeter neve ); // annyit, mennyit akarunk - Megszerezzük a paraméterlistát: std::vector<double> lista = Dial->F_GetParamas(); // a hozzáadás sorrendjében kapjuk vissza az értékeket. 3. PListDialog a megnyitott képeket tehetjük be egy listába. - Létrehozzuk: PlistDialog* Dial = new PListDialog; - Megkapjuk a képek listáját: std::vector<kpicture*> lista = Dial->F_GetParamas();

Fontos tudnunk, hogy mikor elindítunk egy task-ot a menüből, akkor először az F_RunDialog() függvénye fog lefutni, tehát amikor a dialógusablakot létrehozzuk még nem tudunk semmit a bemeneti képről! Végül aki szeretne másféle dialógusablakot használni, annak ajánlom figyelmébe a www.gtk.org/api -n található API referenciát! :)