Skip to content
Snippets Groups Projects
Commit 4ff440ea authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Praktikumsunterlagen Versuch 4

parent ec6eff2e
Branches
No related tags found
No related merge requests found
......@@ -20,7 +20,7 @@
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Versuch 3, 5.12.2017 und Januar 2018: Druckknopfampel
% README: Versuch 3, 5.12.2017 und 9.1.2019: Druckknopfampel
\documentclass[a4paper]{article}
......
File added
% hp-2018ws-p4.pdf - Labor Notes on Low-Level Programming
% Copyright (C) 2014, 2015, 2016, 2018, 2019 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Versuch 4, 16. und 23.1.2019: Objektorientiertes Grafik-Programm
\documentclass[a4paper]{article}
\usepackage{pgscript}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage{sfmath}
\sloppy
%\pagestyle{empty}
\newcommand{\sep}{~$\cdot$~}
\newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)}
\begin{document}
\makebox(0,0.005)[tl]{\includegraphics[scale=0.72]{logo-hochschule-bochum-cvh-text-v2.pdf}}\hfill
\makebox(0,0)[tr]{\includegraphics[scale=0.5]{logo-hochschule-bochum.pdf}}
\par\bigskip\bigskip
\begin{center}
\Large\textbf{Praktikumsversuch 4: Objektorientiertes Grafik-Programm}
\par\medskip
\normalsize Hardwarenahe Programmierung\sep
Wintersemester 2018/19\sep
Prof.~Dr.~Peter Gerwinski
\end{center}
Aufgabe: Schreiben Sie ein GTK+-Programm,
mit dem man verschiedene Objekte (z.\,B.\ Rechtecke, Kreise, Dreiecke)
in eine Grafik einfügen und nachträglich verändern kann
(z.\,B.\ Position, Größe, Farbe).
(Beispiel: Ich füge zunächst zwei Rechtecke und einen Kreis in eine Grafik ein,
wähle anschließend das erste Rechteck aus und ändere dessen Farbe.)
\bigskip
Hinweise:
\vspace*{-\medskipamount}
\begin{itemize}
\item
Das Beispielprogramm \gitfile{hp}{20190114}{objects-12.c} zeigt,
wie man in C verschiedenartige Objekte
in einem Array von Zeigern verwaltet.
\item
Das Beispielprogramm \gitfile{hp}{20190114}{gtk-6.c} zeigt,
wie man mit Hilfe der GUI-Bibliothek GTK+
verschiedene Objekte in ein Fenster zeichnet.
\item
Das Beispielprogramm \gitfile{hp}{20190114}{gtk-7.c} zeigt,
wie man in der GUI-Bibliothek GTK+
Tastatur- und Maus-Eingaben entgegennimmt und verarbeitet.
\item
Das Auswählen eines bereits vorhandenen Objekts geht am einfachsten
mittels Tastatur-Eingaben (z.\,B.\ Ziffer 1 für das erste Objekt usw.).
Auswahl mit der Maus ist auch möglich, aber schwieriger.
\item
Mit Hilfe der Funktion \lstinline{gtk_widget_queue_draw()}
teilen Sie GTK+ mit, daß Sie ein \lstinline{GtkWidget}
neu zeichnen lassen möchten.
\item
Das Compilieren eines GTK+-Programms
(z.\,B.\ \gitfile{hp}{20190114}{gtk-7.c}) geschieht wie folgt:
\begin{lstlisting}[style=cmd,gobble=8]
gcc $(pkg-config --cflags gtk+-3.0) -Wall -O gtk-7.c \
$(pkg-config --libs gtk+-3.0) -o gtk-7
\end{lstlisting}
(Den Backslash am Ende der ersten Zeile entfällt,
wenn Sie den ganzen Befehl in eine einzige Zeile schreiben.)
\end{itemize}
\bigskip
\textbf{GTK+ unter GNU/Linux}
\begin{itemize}
\item
Installieren Sie das Entwickler-Paket für GTK+-3,\\
z.\,B.\ unter Debian GNU/Linux und darauf basierenden Systemen:
\begin{lstlisting}[style=cmd,gobble=8]
apt-get install libgtk-3-dev
\end{lstlisting}
\end{itemize}
\bigskip
\goodbreak
\textbf{GTK+ unter MacOS X}
\begin{itemize}
\item
Zuerst den Paketmanager "`Homebrew"' installieren:
\begin{lstlisting}[style=cmd,gobble=8]
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/
Homebrew/install/master/install)"
\end{lstlisting}
(Die URL nicht trennen, sondern in einer Zeile schreiben.)
\item
Danach mit Hilfe von \lstinline[style=cmd]{brew} GTK+ installieren:
\begin{lstlisting}[style=cmd,gobble=8]
brew install gtk+3
\end{lstlisting}
\end{itemize}
\bigskip
\goodbreak
\textbf{GTK+ unter Microsoft Windows: Cygwin}
\begin{itemize}
\item
Im Cygwin-Setup-Programm die Pakete \file{libgtk3-devel}
und \file{xorg-server} installieren.\\
(Evtl.\ muß zusätzlich \file{dbus-x11} installiert werden -- bitte mal testen.)
\item
Bevor Sie GTK+-Programme starten können,
müssen Sie einmalig den X-Server starten:
\begin{lstlisting}[style=cmd,gobble=8]
XWin -multiwindow &
\end{lstlisting}
\item
Bevor Sie GTK+-Programme starten können,
müssen Sie einmalig pro Shell-Sitzung\\
die \lstinline[style=cmd]{DISPLAY}-Variable setzen:
\begin{lstlisting}[style=cmd,gobble=8]
export DISPLAY=:0.0
\end{lstlisting}
\end{itemize}
\bigskip
\goodbreak
\textbf{GTK+ unter Microsoft Windows: MinGW}
\begin{itemize}
% \item[]
% \emph{(Wir arbeiten dran. Kommt gleich \dots)}
\item
Installieren Sie \file{MSYS2} (Installer).
\item
Installieren Sie von der MinGW-Shell aus GTK+
und weitere Entwicklungswerkzeuge:
\begin{lstlisting}[style=cmd,gobble=8]
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-gtk3
pacman -S mingw-w64-x86_64-pkg-config
\end{lstlisting}
\item
Falls nötig, ergänzen Sie in der MinGW-Shell
den Pfad zu den neu installierten Programmen:
\begin{lstlisting}[style=cmd,gobble=8]
export PATH=$PATH:/mingw64/bin
\end{lstlisting}
\end{itemize}
\bigskip
\strut\hfill\emph{Viel Erfolg!}
\vfill
\begingroup
\small
\setlength{\leftskip}{3cm}
Stand: 14.\ Januar 2019
% Soweit nicht anders angegeben:\\
Copyright \copyright\ 2014, 2015, 2016, 2018, 2019\quad Peter Gerwinski\\
Lizenz: \mylicense
Sie können diese Praktikumsunterlagen einschließlich Quelltext
% und Beispielprogramme\\
herunterladen unter:\\
\url{https://gitlab.cvh-server.de/pgerwinski/hp}
\endgroup
\end{document}
......@@ -69,7 +69,8 @@ Praktikumsunterlagen:
---------------------
* [Versuch 1, 10., 17. und 24.10.2018: RSA-Verschlüsselung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181008/hp-2018ws-p1.pdf)
* [Versuch 2, 14. und 21.11.2018: Weltraum-Simulation](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181112/hp-2018ws-p2.pdf)
* [Versuch 3, 5.12.2017 und Januar 2018: Druckknopfampel](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-2018ws-p3.pdf)
* [Versuch 3, 5.12.2017 und 9.1.2019: Druckknopfampel](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-2018ws-p3.pdf)
* [Versuch 4, 16. und 23.1.2019: Objektorientiertes Grafik-Programm](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190114/hp-2018ws-p4.pdf)
Skript:
-------
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment