This commit is contained in:
tth 2021-05-23 21:33:56 +02:00
parent 72e162e4cf
commit fed3076b92

View File

@ -69,7 +69,7 @@ chaque pixel en virgule flottante sur 32bits, le type
% XXX XXX XXX\vspace{1em} % XXX XXX XXX\vspace{1em}
\textbf{Attention !} tout le code que nous allons voir ensemble est en \textbf{Attention !} tout le code que nous allons voir ensemble est en
perpétuelle évolution\footnote{voir page \pageref{TODO}}, perpétuelle évolution\footnote{voir page \pageref{TODO} pour les détails},
et sa fiablité (surtout sur certains aspects mathématiques) et sa fiablité (surtout sur certains aspects mathématiques)
reste à démontrer\index{valgrind}. reste à démontrer\index{valgrind}.
Mais le service après-vente est assez réactif. Du moins Mais le service après-vente est assez réactif. Du moins
@ -77,7 +77,7 @@ pour ceux qui suivent le canal \texttt{\#tetalab} sur le réseau
IRC de Freenode. IRC de Freenode.
\textbf{Attention !} ce document commence par une bonne rafale \textbf{Attention !} ce document commence par une bonne rafale
de technique parfois \textsl{hardue}. de technique parfois \textsl{hardue}, avec des pointeurs dedans.
Vous avez parfaitement le droit de sauter directement à Vous avez parfaitement le droit de sauter directement à
la page \pageref{outils} pour quelque chose de plus concret. la page \pageref{outils} pour quelque chose de plus concret.
@ -122,7 +122,7 @@ dans les machin-trocs, et un grain d'image vraiment présent.
Ah vous en voulez de la technique ? Oké, on y va. Ah vous en voulez de la technique ? Oké, on y va.
En fait, on va tripoter pleins de nombres, plus ou moins rangés dans En fait, on va tripoter pleins de nombres, plus ou moins rangés dans
des pixels, pour concrétiser l'existence perceptuelles de ces des champs de pixels, pour concrétiser l'existence perceptuelles de ces
grains de lumière chromatisés. grains de lumière chromatisés.
\subsubsection*{quelques belles images / schémas polychromes en intro pour \subsubsection*{quelques belles images / schémas polychromes en intro pour
@ -191,7 +191,8 @@ et sur disque. Ça a été imaginé de façon presque empirique,
mais nous sommes tous là pour améliorer les choses, dans mais nous sommes tous là pour améliorer les choses, dans
la mesure de nos moyens. la mesure de nos moyens.
Nous allons donc directement rentrer au cœur du problème, Nous allons donc directement rentrer au cœur du problème,
en écrivant quelques lignes de code. en écrivant quelques lignes de code montrant le fonctionnement
général de la chose.
\subsection{L'idée} \subsection{L'idée}
@ -207,16 +208,19 @@ pour gérer la machinerie interne.
\begin{lstlisting} \begin{lstlisting}
int width = 640, height = 480; int width = 640, height = 480;
char *fname = "exemple.fimg"; char *fname = "quux.fimg";
FloatImg fimg; FloatImg fimg;
\end{lstlisting} \end{lstlisting}
Ensuite, nous enchainerons trois étapes : la création de l'image Ensuite, nous enchainerons trois étapes : la création de l'image
en mémoire centrale, l'initialisation des valeurs de chaque pixel à 0.0, en mémoire centrale, l'initialisation des valeurs de chaque pixel à 0.0
(une valeur que certains associent au noir complet, et d'autres à une
impossibilité quantique),
et pour conclure, l'enregistrement dans un fichier\footnote{Au format et pour conclure, l'enregistrement dans un fichier\footnote{Au format
ésotérique, mais très véloce.} binaire. ésotérique, mais très véloce.} binaire.
\begin{lstlisting} \begin{lstlisting}
memset(fimg, 0, sizeof(FloatImg));
foo = fimg_create(&fimg, width, height, FIMG_TYPE_RGB); foo = fimg_create(&fimg, width, height, FIMG_TYPE_RGB);
if (foo) { if (foo) {
fprintf(stderr, "create floatimg -> %d\n", foo); fprintf(stderr, "create floatimg -> %d\n", foo);
@ -291,7 +295,10 @@ comme \textsc{gnu}/make\index{make}.
Une connaissance de base de l'utilisation du shell\index{shell} Une connaissance de base de l'utilisation du shell\index{shell}
et de l'écriture de Makefile's sera un plus. et de l'écriture de Makefile's sera un plus.
Il faut aussi savoir où trouver le code. Il faut aussi savoir où trouver le code. Il est dans le Git du
Tetalab. Mais comme je ne comprend rien à Git, c'est pas la peine
de m'envoyer des trucs genre \textsl{pull-request} auquels je ne
comprend rien.
\subsection{Compilation} \subsection{Compilation}
@ -489,7 +496,7 @@ foo = fimg_create_from_dump("lena.fimg", &head);
Si la valeur retournée est différente de 0, c'est que quelque Si la valeur retournée est différente de 0, c'est que quelque
chose s'est probablement mal passé. chose s'est probablement mal passé.
Certains messages sont parfois explicites. Certains messages sont parfois explicites. Mais parfois non.
% _________ % _________
@ -642,7 +649,7 @@ Tout d'abord pour normaliser l'endianess et le packing\dots
\begin{lstlisting} \begin{lstlisting}
typedef struct { typedef struct {
char magic[8]; char magic[8];
int w, h, t; int32_t w, h, t;
} FimgFileHead; } FimgFileHead;
\end{lstlisting} \end{lstlisting}
@ -656,7 +663,7 @@ les quatre premier octets doivent contenir les quatre caractères
Le champ \texttt{t} (le type de l'image) doit avoir les trois octets Le champ \texttt{t} (le type de l'image) doit avoir les trois octets
de poids fort à 0. Vous trouverez les constantes de type dans le de poids fort à 0. Vous trouverez les constantes de type dans le
fichier \texttt{floatimg.h}, et quelques informations fichier \texttt{floatimg.h}, et quelques informations
(non-)essentielles. (non-)essentielles qui ne vous servirons probablement à rien.
% ---------------------------------- % ----------------------------------