Cherrytree a écrit :
Hum... Intéressant. chrisbk, walli, Taiche > avez-vous des sources d'inspiration ? J'imagine qu'il doit y avoir une notion de refreshrate pour recalculer l'affichage, de même que des optimisations locales par rapport au curseur...
|
bon moi c'etait vraiment QUE pour les mots cles. C'etait en C++ sans aucune lib mais bon, C++ ou java ca changera rien...
J'etais parti sur un arbre N-aire. Chaque noeud contenait un caractere, et un boolean indiquant si le noeud etait terminal ou non (et bien sur une liste de fils)
- l'utilisateur tape quelque chose :
je recup le caractere, regarde dans mon arbre si il y a un fils contenant ce caractere. si oui et si le noeud est marque comme terminal je colorie, sinon ben rien (je decolorie, meme)
j'analyse le mot sur lequel il se trouve, et envoie le debut du mot dans l'arbre
ca necessite pas mal de reglage pour marcher comme il faut (par exemple faire gaffe a ne pas colorier "int" dans "integer" si "int" est un mot cle), faire gaffe aussi aux blagues possibles (espace en milieu d'un mot cle deja colorie, backspace, saut de ligne et tout ca), mais dans l'ensemble ca marchait bien
niveau optim, en C++ j'avais la possibilite de desactiver le rafraichissement de la fenetre pendant mes calculs / changement de couleur. En java je sais pas (je connais bpc trop peu java pour te dire si oui ou non c possible)
edit : pour les zones ca doit etre plus complexe puisqu'il faut retrouver le "contexte" dans lequel se situe le mot..... avec un parser ok, mais ca m'etonnerait que ca soit viable niveau perf
Message édité par chrisbk le 06-05-2003 à 16:10:16