# -*- Org -*-
#+STARTUP: logdone


* Misc
** TODO .asd
J'ai passé les fichiers en serial pour être sûr que les dépendances
soient gérées. Mais c'est pas top de tout recompiler si on touche aux
premiers fichiers. 2 solutions:
 - Remplacer le ":serial t" par une liste de dépendances par fichier.
 - Rétablir la gestion par sous-modules. Cela implique des
   déplacements de fichiers (notamment "site-set/do-sites") pour
   éviter des dépendances circulaires.
** DONE File headers
   CLOSED: [2010-11-10 Wed 17:32]
 - Remplacer les FIXME par une description
** DONE package.lisp
   CLOSED: [2010-11-19 Fri 19:10]
 - Vérifier les exports. (et penser à les mettre à jour systématiquement !)

* Doc
** TODO Plan
 - Chap. Using Climb (défs, built-ins)
 - Chap. Extending Climb
** DONE MAKE-IMAGE
   CLOSED: [2010-11-30 Tue 13:17]
Mieux expliciter les combinaisons possibles pour le value type.
** TODO MAKE-SITE-SET-MASK
Le documenter.
** TODO Mathematical Morphology
À faire.

* Nommage
** DONE ACCU-TAKE
   CLOSED: [2010-11-10 Wed 17:50]
=> accu-feed
** DONE ACCU-RESULT
   CLOSED: [2010-11-10 Wed 17:50]
=> accu-value
** DONE ACCU-RESULTP
   CLOSED: [2010-11-10 Wed 17:50]
=> accu-value-p
** TODO CONTENT-MORPHER
Le mot "content" me paraît ambigu. Je verrais plutôt quelque
chose du genre "domain".
** TODO IMAGE-FILL
Le nom de la fonction IMAGE-FILL suggère qu'elle agit in-place, alors
que non. Telle quelle, il serait plus logique qu'elle prenne un
domaine en argument au lieu d'une image, et change de nom (genre
MAKE-FLAT-IMAGE).
** TODO MAKE-SITE-SET-BOX
MAKE-BOX est largement suffisant.
** TODO MORPHERS
Le sens de INPUT et OUTPUT peut être compris dans un sens comme dans
l'autre. (J'avais commencé par les intervertir en écrivant la doc...)
Il faudrait mettre quelque chose de plus explicite, genre READ et
WRITE.
** DONE IMAGE-RAW
   CLOSED: [2010-11-10 Wed 18:27]
Le slot MAP devrait plutôt s'appeler VALUE-TYPE ou CHANNELS.

* Améliorations
** DONE IMAGE-DOMAIN
   CLOSED: [2010-11-11 Thu 13:43]
Pourquoi obliger à le mettre dans un slot ?
** DONE IMAGE-CONTAINS
   CLOSED: [2010-11-09 Tue 21:25]
Pas besoin d'une fonction générique:
(site-set-contains (image-domain image) site) suffit.
** DONE IMAGE vs IMAGE-CONCRETE
   CLOSED: [2010-11-11 Thu 14:38]
L'un des deux ne sert strictement à rien.
** TODO (IMAGE-SAVE IMAGE-MORPHER-VALUE)
On n'est pas plutôt censé passer les données par la fonction OUTPUT ?
** TODO (IMAGE-COPY IMAGE-MORPHER-VALUE)
Plutôt créer une image non morphée.
** TODO SITE-SET-REDUCE
"ACCU is reset at the beginning." Est-ce nécessaire ? L'utilisateur
peut vouloir le contraire. Au pire ça peut être passé en keyword arg.
** DONE HISTOGRAM
   CLOSED: [2010-11-17 Wed 16:55]
Ne pas demander la taille, faire un tableau extensible.
** TODO HISTOGRAM
Avoir une fonction par défaut (luminance) et fournir des fonctions de
base (blue, saturation, etc.)
** TODO MAKE-SITE-SET-MASK
Pourquoi la valeur doit-elle être à 1 ? On n'est pas en C !
Par ailleurs, il a l'air d'y avoir de très dangereux effets de bord.
** DONE MAKE-IMAGE
   CLOSED: [2010-11-17 Wed 17:21]
Utiliser un string designator au lieu d'une string pour le type de
valeurs: pouvoir utiliser des keywords est plus idiomatique.
** TODO MAKE-IMAGE
Ajouter un keyword argument :initial-element pour initialiser l'image
(comme fait make-array)
** TODO IMAGE-RAW CHANNELS
Pour l'interface utilisateur, utiliser un keyword au lieu d'une
string. À quel niveau le gérer ? Soit:
 - Stocker un keyword, le passer en string pour ImageMagick;
 - Stocker une string, récup depuis un keyword de MAKE-IMAGE.
** TODO Itérateurs
Ne pas le stocker dans le site-set, car ça peut donner des résultats
faux (ex: deux boucles imbriquées sur le même site-set).
Il suffit d'avoir:
 - (site-set-first SITE-SET)
   Retourne le premier site de SITE-SET.
 - (site-set-advance SITE SITE-SET)
   Modifie SITE pour qu'il devienne le prochain site de SITE-SET.
   Retourne NIL si SITE était le dernier site de SITE-SET (dans ce
   cas, la nouvelle valeur de SITE est indéfinie); retourne T sinon.

* Ajouts, idées
** DONE IMAGE-COMBINE
   CLOSED: [2011-01-26 Wed 19:00]
La fonction IMAGE-COMBINE n'a pas lieu d'être : il vaut mieux une
unique fonction IMAGE-MAP variadique, pour rester cohérent avec la
builtin MAP.
** TODO ACCU-MORPHER
Il n'y a que les value-morphers. On peut également fare des
content-morphers:
 - le prédicat d'entrée décide si une donnée est envoyée à l'accu;
 - le prédicat de sortie est utilisé dans accu-resultp.
** TODO SITE-SET-MORPHER
Possibilité d'ajouter des sites ? (extension d'image, il faut donc
définir les valeurs à mettre dans ces nouveaux sites)
** TODO HISTOGRAM
Si la fonction renvoie NIL, ne mettre la valeur nulle part.
** TODO HISTO->IMAGE
Possibilité de choisir la hauteur ou le ratio de l'image finale.
** TODO HISTO->IMAGE
Possibilité de choisir l'échelle y (logarithmique etc)
** TODO IMAGE-CONTENT-MORPHER
Y en a pas... Ça devrait être simple d'en faire un qui morphe le
domaine.
** TODO SUBSET
=> un content morpher générique qui prend un objet et un prédicat.
Avec des méthodes pour image, site-set. (accu?)
** TODO SITE+, SITE-, etc.
Cela n'existe pas pour tous les types de sites (noeuds de graphe ?).
Il nous faudra un jour la notion de delta-site comme dans Olena
(dsite).
