C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Colors

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Timour
Guest





PostPosted: Thu Jan 29, 2004 7:37 pm    Post subject: Colors Reply with quote



Bonjour,
J'aimerais savoir si on peut modifer la couleur de la police dans un
programme C ++ ( p.e écrire le fameux Hello World en rouge etc )
Merci de vos réponses.

Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Jan 29, 2004 8:41 pm    Post subject: Re: Colors Reply with quote



On Thu, 29 Jan 2004 19:37:48 +0000, Timour <timythe (AT) freemail (DOT) ru>
wrote:

Quote:
J'aimerais savoir si on peut modifer la couleur de la police dans un
programme C ++ ( p.e écrire le fameux Hello World en rouge etc )

En général, non.
Toutefois, sur certains systèmes (Windows et Linux en font
vraisemblablement partie), ça doit être possible en utilisant des
méthodes spécifiques à l'OS. A moins que (N)curses sache faire ça.

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Jan 29, 2004 11:02 pm    Post subject: Re: Colors Reply with quote



On Thu, 29 Jan 2004 23:55:34 +0000, Timour <timythe (AT) freemail (DOT) ru>
wrote:

Quote:
Hum ok, mais pouvez vous donner quelques exemples?

Non. Du moins, pas ici. Cf :
- la FAQ de fr.comp.lang.c++ (Google est ton ami)
- la table des forums fr.* pour trouver un forum où ta question
est en charte (Google est ton ami)
- les FAQ et charte du forum où tu comptes poster

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Jan 29, 2004 11:03 pm    Post subject: Re: Colors Reply with quote

On Thu, 29 Jan 2004 23:55:34 +0000, Timour <timythe (AT) freemail (DOT) ru>
wrote:

Quote:
En ce qui
concerne(N)curses, je vois pas vraiment ce que c'est.

<http://www.google.com/>
<http://www.google.com/advanced_group_search?hl=en>

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Back to top
Timour
Guest





PostPosted: Thu Jan 29, 2004 11:55 pm    Post subject: Re: Colors Reply with quote



Fabien LE LEZ wrote:
Quote:
En général, non.
Toutefois, sur certains systèmes (Windows et Linux en font
vraisemblablement partie), ça doit être possible en utilisant des
méthodes spécifiques à l'OS. A moins que (N)curses sache faire ça.
Hum ok, mais pouvez vous donner quelques exemples? Je suis sous Linux,

mais je ne vois pas comment on pourrait faire ca. En ce qui
concerne(N)curses, je vois pas vraiment ce que c'est.(Je suis débutant
en C++ et Linux aussi d'ailleurs.)
Merci


Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Fri Jan 30, 2004 9:42 am    Post subject: Re: Colors Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> wrote

Quote:
On Thu, 29 Jan 2004 19:37:48 +0000, Timour <timythe (AT) freemail (DOT) ru
wrote:

J'aimerais savoir si on peut modifer la couleur de la police dans un
programme C ++ ( p.e écrire le fameux Hello World en rouge etc )

En général, non.

Toutefois, sur certains systèmes (Windows et Linux en font
vraisemblablement partie), ça doit être possible en utilisant des
méthodes spécifiques à l'OS.

Ça dépend plutôt du terminal. Sur mon vieux Sparc, j'ai un écran noir
et blanc -- ça a beau être Unix, je n'arrive pas à afficher en rouge.

Il y a des séquences d'échappement pour changer le couleur dans un
XTerm, à condition que support des couleurs a été activé lors de la
compilation. La même chose vaut pour une fenêtre console sous Windows@;
elle se sert même des mêmes séquences d'échappement. (Pas vraiment
étonnant, vue qu'elles font partie d'une norme ANSI.)

Il y a quand même quelques hics :

- Dans le cas d'xterm, il faut bien qu'il soit compilé avec les bonnes
options. Ce qui n'est pas toujours le cas -- l'xterm livré par
défaut avec Solaris ne l'est pas, par exemple. (Mais celui de le
Linux Mandrake si.)

- Les couleurs sont spécifiées par un nombre, et non un nom. Dans le
cas d'xterm, l'utilisateur peut changer l'affectation des couleurs
au moyen de xrdb, et les couleurs dans la fenêtre console sous ne
sont pas exactement ce auxquelles je m'attendrais non plus. La norme
ANSI dit que rouge, c'est 1, mais chez moi, sous Solaris, rouge est
4 (et 1, c'est un espèce de jaune ou crême très pale), tandis que
sous Windows, 1, c'est un rouge très foncé, pas du tout ce auquel je
m'attendrais sous le vocable rouge, et il n'y a pas de rouge vif.

Enfin, à titre d'information, la séquence d'échappement, c'est
' couleur de l'arrière plan, où <ESC>, c'est le caractère ASCII ESC, et
<n>, c'est le numéro de couleur.

Quote:
A moins que (N)curses sache faire ça.

D'après la doc de xterm, il y a du support des couleurs dans ncurses. Ce
qui ne dit rien en ce qui concerne curses.

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Back to top
Thibault
Guest





PostPosted: Fri Jan 30, 2004 12:04 pm    Post subject: Re: Colors Reply with quote

Timour wrote:

Quote:
Bonjour,
J'aimerais savoir si on peut modifer la couleur de la police dans un
programme C ++ ( p.e écrire le fameux Hello World en rouge etc )
Merci de vos réponses.

Si ton programme s'execute dans une console ms dos essaye system("color

4C"); et debut de la fonction main() sinon pour les autres console je ne
sais pas

Back to top
Thibault
Guest





PostPosted: Fri Jan 30, 2004 12:06 pm    Post subject: Re: Colors Reply with quote

Thibault wrote:

Quote:
Timour wrote:

Bonjour,
J'aimerais savoir si on peut modifer la couleur de la police dans un
programme C ++ ( p.e écrire le fameux Hello World en rouge etc )
Merci de vos réponses.

Si ton programme s'execute dans une console ms dos essaye system("color
4C"); et debut de la fonction main() sinon pour les autres console je ne
sais pas

(si tu veut savoir les couleurs disponible pour la console ms dos tape
en ligne de commande color fsdfd)

Back to top
Timour
Guest





PostPosted: Fri Jan 30, 2004 1:12 pm    Post subject: Re: Colors Reply with quote



[email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

Quote:
Enfin, à titre d'information, la séquence d'échappement, c'est
'<ESC>[3<n>m' pour la couleur d'affichage, et '<ESC>[4<n>m' pour la
couleur de l'arrière plan, où <ESC>, c'est le caractère ASCII ESC, et
n>, c'est le numéro de couleur.

Je vois, mais je ne sais pas où l'insérer, pourriez-vous l'insérer dans
ce source?:
#include
int main()
{
std::cout << " Hello World !n" ;
return 0;
}


Back to top
Timour
Guest





PostPosted: Fri Jan 30, 2004 1:19 pm    Post subject: Re: Colors Reply with quote



Thibault wrote:
Quote:
Thibault wrote:

Timour wrote:

Bonjour,
J'aimerais savoir si on peut modifer la couleur de la police dans un
programme C ++ ( p.e écrire le fameux Hello World en rouge etc )
Merci de vos réponses.

Si ton programme s'execute dans une console ms dos essaye
system("color 4C"); et debut de la fonction main() sinon pour les
autres console je ne sais pas


(si tu veut savoir les couleurs disponible pour la console ms dos tape
en ligne de commande color fsdfd)
D'accord. Je viens d'essayer sous linux mais le compilateur G++ me dit

que la norme ISO C++ l'interdit. J'essayerai sous Windows quand je serai
sous ce dernier. Merci


Back to top
Yannick Le goc
Guest





PostPosted: Fri Jan 30, 2004 2:32 pm    Post subject: Re: Colors Reply with quote

Une piste peut etre, gcc sous linux par defaut ecrit ses commentaires
sur la console en une seule couleur, toutefois lorsqu'on installe le
paquetage gcc-colorgcc les messages s'affichent en couleur.

c'est a base de script perl qui prend la sortie gcc pour la formater sur
la sortie console.

Back to top
James Kanze
Guest





PostPosted: Sun Feb 01, 2004 12:10 pm    Post subject: Re: Colors Reply with quote

Timour <timythe (AT) freemail (DOT) ru> writes:

Quote:
kanze (AT) gabi-soft (DOT) fr wrote:

Enfin, à titre d'information, la séquence d'échappement,
c'est '<ESC>[3<n>m' pour la couleur d'affichage, et '<ESC>[4<n>m'
pour la couleur de l'arrière plan, où <ESC>, c'est le
caractère ASCII ESC, et <n>, c'est le numéro de couleur.

Je vois, mais je ne sais pas où l'insérer, pourriez-vous
l'insérer dans ce source?:

Où tu veux la couleur, évidemment. Mais attention, ce n'est pas si
facile que ça.

Quote:
#include
int main()
{
std::cout << " Hello World !n" ;

La première approximation serait :
try {
std::cout << " " RED "Hello, world!" NORMAL "n" ;
} catch ( ... ) {
std::cout << NORMAL ;
std::cout.flush() ;
abort() ;
}
avec des #define :
#define ESC "33"
#define RED ESC "[31m"
#define NORMAL ESC "[0m"

Quote:
std::cout << " 19

C'est quoi, ça ?

Quote:
return 0;
}

Pour expérimenter, je conseillerais quelque chose comme le programme
suivant pour commencer :

#include #include <iostream>
#include <string>

enum Color
{
black ,
red ,
green ,
yellow ,
blue ,
magenta ,
cyan ,
white ,
lastColor ,
firstColor = black
} ;

inline Color&
operator++( Color& c )
{
assert( c < lastColor ) ;
c = static_cast< Color >( c + 1 ) ;
return c ;
}

inline Color
operator++( Color& c, int )
{
Color result = c ;
++ c ;
return result ;
}

char const *const colorNames[] =
{
"black" ,
"red" ,
"green" ,
"yellow" ,
"blue" ,
"magenta",
"cyan" ,
"white" ,
} ;

char const colorDigits[] = "01234567" ;

std::string
esc()
{
return std::string( 1, '33' ) ;
}

std::string
fgColor( Color c )
{
assert( c >= 0 && c < 10 ) ;
return esc() + "[3" + colorDigits[ c ] + 'm' ;
}

std::string
bgColor( Color c )
{
assert( c >= 0 && c < 10 ) ;
return esc() + "[4" + colorDigits[ c ] + 'm' ;
}

std::string
normal()
{
return esc() + "[0m" ;
}

std::string
centered( std::string const& s, int width )
{
std::string result( s ) ;
int pad = width - result.size() ;
if ( pad > 0 ) {
result.insert( result.begin(), pad / 2, ' ' ) ;
result.insert( result.end(), pad - pad / 2, ' ' ) ;
}
return result ;
}

int
main()
{
for ( Color i = firstColor ; i < lastColor ; ++ i ) {
std::cout
<< bgColor( i ) << centered( colorNames[ i ], 10 ) << normal()
<< fgColor( i ) << centered( colorNames[ i ], 10 ) << normal()
<< 'n' ;
}
return 0 ;
}

Mais comme j'ai déjà dit, méfie-toi de la réalité des
couleurs:-). Sur ma boîte Linux, c'est à peu près correct. Le
blanc, c'est en fait un gris clair, et les autres couleurs sont toutes
un peu plus foncées que je m'y attendrais. Sous Windows, c'est
semblable. Mais dans un XTerm, au moins, ça dépend aussi de la
configuration de chaque utilisateur, de ce qu'il a dans son .Xdefauts.
Si le but c'est de s'ammuser un peu, ce que j'offre ci-dessus va bien,
mais c'est loins d'être suffisant pour une application
professionnelle. (Mais une application professionnelle, il va se servir
des fenêtres graphiques de toute façon, si elle veut des
affichages particuliers.)

--
James Kanze mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93

Back to top
Timour
Guest





PostPosted: Sun Feb 01, 2004 2:14 pm    Post subject: Re: Colors Reply with quote

Oui le but était de s'amuser un peu. Même si je comprends que la moitié
du programme que vous avez écrit je le trouve bien fait ! Very Happy
Va falloir que je me renseigne un peu sur les éléments de votre
programme que je ne connais pas.Very Happy Merci beaucoup Razz.
Allez je file, j'ai du boulot : ))

James Kanze wrote:
Quote:
Timour <timythe (AT) freemail (DOT) ru> writes:

|> [email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

|> > Enfin, à titre d'information, la séquence d'échappement,
|> > c'est '<ESC>[3<n>m' pour la couleur d'affichage, et '<ESC>[4<n>m'
|> > pour la couleur de l'arrière plan, où <ESC>, c'est le
|> > caractère ASCII ESC, et <n>, c'est le numéro de couleur.

|> Je vois, mais je ne sais pas où l'insérer, pourriez-vous
|> l'insérer dans ce source?:

Où tu veux la couleur, évidemment. Mais attention, ce n'est pas si
facile que ça.

|> #include
|> int main()
|> {
|> std::cout << " Hello World !n" ;

La première approximation serait :
try {
std::cout << " " RED "Hello, world!" NORMAL "n" ;
} catch ( ... ) {
std::cout << NORMAL ;
std::cout.flush() ;
abort() ;
}
avec des #define :
#define ESC "33"
#define RED ESC "[31m"
#define NORMAL ESC "[0m"

|> std::cout << " 19

C'est quoi, ça ?

|> return 0;
|> }

Pour expérimenter, je conseillerais quelque chose comme le programme
suivant pour commencer :

#include <ostream
#include #include
enum Color
{
black ,
red ,
green ,
yellow ,
blue ,
magenta ,
cyan ,
white ,
lastColor ,
firstColor = black
} ;

inline Color&
operator++( Color& c )
{
assert( c < lastColor ) ;
c = static_cast< Color >( c + 1 ) ;
return c ;
}

inline Color
operator++( Color& c, int )
{
Color result = c ;
++ c ;
return result ;
}

char const *const colorNames[] =
{
"black" ,
"red" ,
"green" ,
"yellow" ,
"blue" ,
"magenta",
"cyan" ,
"white" ,
} ;

char const colorDigits[] = "01234567" ;

std::string
esc()
{
return std::string( 1, '33' ) ;
}

std::string
fgColor( Color c )
{
assert( c >= 0 && c < 10 ) ;
return esc() + "[3" + colorDigits[ c ] + 'm' ;
}

std::string
bgColor( Color c )
{
assert( c >= 0 && c < 10 ) ;
return esc() + "[4" + colorDigits[ c ] + 'm' ;
}

std::string
normal()
{
return esc() + "[0m" ;
}

std::string
centered( std::string const& s, int width )
{
std::string result( s ) ;
int pad = width - result.size() ;
if ( pad > 0 ) {
result.insert( result.begin(), pad / 2, ' ' ) ;
result.insert( result.end(), pad - pad / 2, ' ' ) ;
}
return result ;
}

int
main()
{
for ( Color i = firstColor ; i < lastColor ; ++ i ) {
std::cout
bgColor( i ) << centered( colorNames[ i ], 10 ) << normal()
fgColor( i ) << centered( colorNames[ i ], 10 ) << normal()
'n' ;
}
return 0 ;
}

Mais comme j'ai déjà dit, méfie-toi de la réalité des
couleurs:-). Sur ma boîte Linux, c'est à peu près correct. Le
blanc, c'est en fait un gris clair, et les autres couleurs sont toutes
un peu plus foncées que je m'y attendrais. Sous Windows, c'est
semblable. Mais dans un XTerm, au moins, ça dépend aussi de la
configuration de chaque utilisateur, de ce qu'il a dans son .Xdefauts.
Si le but c'est de s'ammuser un peu, ce que j'offre ci-dessus va bien,
mais c'est loins d'être suffisant pour une application
professionnelle. (Mais une application professionnelle, il va se servir
des fenêtres graphiques de toute façon, si elle veut des
affichages particuliers.)



Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.