Color komande u C++

zdravo,

da vas pitam,programiram u C++ pod Linux-om,tek sam poceo ali me zanima da li neko zna komande za malo estetike,zanimaju me komande za mjenjanje boje podloge,teksta i Clear Screen

C++ kao i C su jezici za tekstualno programiranje.Ako zelis prozore, dugmice, laisne itd… onda se moras pozabaviti sa GTK.

Alat za GTK programiranje dolazi sa gotovo svakom vecom distribucijom.Ali i ovdje se preporucuje studij sa dobrom knjigom ili sl.



Babysitter

Zaboravih dodati da sam i ja na početku mislio da programiranjem sa ova dva jezika rezultiraju aplikacije sa prozorima, šalterima itd…( gotovo svi početnici to misle ). Sad znam da ovi jezici računaju sa brojevima, manipuliraju sa stringovima, datotekama, a moguće je i izvođenje sistemskih komandi kao npr: cp, modprobe,ls, make, itd…

GTK+ ( u prevodu “Gimp Toolkit” ) je samo jedna od mnogih GUI-biblioteka sa kojom se daju kreirati grafički X-programi.Neznam dali je GTK kompatibilna (joj jest zeznuta riječ!) sa C++ jer je pisana u C.

Postoje i druge biblioteke kao npr; QT, XAW, XForms, OpenLook itd.

Mogu ti samo dati jedan dobar prijedlog a to je da počneš učiti C.

Na osnovama ovog jezika baziraju drugi programerski jezici ( Java, C++). Ako se ikad odlučiš da učiš javu primjetićeš da je gotovo sve isto kao u C. To važi i za C++.Osim toga , sam linux je potpuno pisan u C ( govorim o kernelu).

C plus, plus je vrlo kompleksan jezik i preporuči bi ga za ljude koji rješavaju vrlo kompleksne probleme.

EWto, sad sam dosta pametnovao, nadam se da ti je malo pomoglo.

Pozdrav Babysitter

Sto se tice komandi za promjenu boje u konzolnom modu, brisanje ekrana, pomijeranje kursora i slicne stvari, sve se zajednickim imenom nazivaju “ANSI Escape Sequences”. One nisu specificne za Linux (kao sto se da vidjeti iz njihovog naziva, iste su standardizovane pri ANSI-u), i zavise samo od toga da li OS na kojem radite ima podrsku za njih. Onima koji su programirali pod DOS-om trebao bi biti poznat drajver ANSI.SYS koji predstavlja podrsku za ove upravljacke komande.
O cemu se ustvari radi…
Svaka od ovih “naredbi” pocinje escape karakterom (‘33’), nakon kojeg slijedi “otvorena uglasta zagrada” (lijeva: ‘[’). Ako mene pitate zasto je ovo ovako, mislim da je odgovor veoma jednostavan: vjerovatno nigdje na svijetu ne postoji ovakva sekvenca karaktera koja bi jos imala i nekog smisla, dakle “33[”.
Dobro, idemo dalje…
Nakon ove sekvence slijedi “komanda” koja drajveru govori sta ustvari treba da uradi. Tako npr. “2J” znaci da treba obrisati ekran, “H” znaci da treba pozicionirati kursor na vrh ekrana i sl.
Tako, ako bismo zeljeli samo izbristai sadrzaj ekrana, mogli bismo iz shella kucati:

$ echo -e ‘33[2J’

Ako jos zelimo da nam se kursor pojavi na vrhu ekrana, kao sto je uobicajeno, kucamo:

$ echo -en ‘33[2J33[H’

Mislim da je princip jasan.
Sto se tice boja, i to je relativno jednostavno. Nakon “inicijalne” sekvence “33[” kucamo jedan od slijedecih karaktera:

3 za definisanje boje slova
4 za definisanje boje pozadine

Nakon toga slijedi kod odgovarajuce boje:

0 crna
1 crvena
2 zelena
3 zuta
4 plava
5 magenta
6 cyan
7 bijela

Nakon koda boje dolazi malo slovo ‘m’. Prema tome, za ispis teksta plavim slovima potrebno je najprije ispisati sekvencu “33[34m”, a zatim dati tekst. Ispis plavim slovima nastavlja se sve dok se ne definise neki drugi atribut (boja) ili dok se ne iskljuce svi atributi. Svi atributi se iskljucuju sekvencom “33[m”. Ukoliko zelite definisati vise atributa istovremeno (kao npr. boju znaka i boju pozadine) potrebno je da oba atributa navedete prije malog ‘m’, odvajajuci ih pri tome znakom “tacka-zarez” ‘;’ - dakle za ispis teksta zutim slovima na plavoj podlozi treba napisati “33[33;44mTEKST33[m”. Ove boje su u “tamnoj” varijanti, a ako zelite svijetle nijanse potrebno je da dodate atribut ‘1’, dakle za nas prethodni primjer: “33[33;44;1mTEKST33[m”.
Eto to je to. Vise o ovome moze se pronaci na Internetu. Sto se tice C++ sve je potpuno isto, jer je u osnovi jedino bitno da izlaz ide na konzolu. Treba, dakle, koristiti bilo koji od poznatih nacina za ispis teksta, cout, printf() i sl.

Eh svaka čast, nisam vjerovao dok nisam isprobao ! Eto kad misliš da puno toga već znaš vidiš kako ništa neznaš. Nisi pomogao samo anonymousu , nego i meni.
Ove knjige što pišu o programiranju, mogle bi slobodno pokloniti par redova ovoj temi

:stuck_out_tongue:

Zelio bih jos nesto da dodam … mozda ce nekom i koristiti.

Naime, posto sada znate o cemu se radi, tj. kako se podesavaju boje u konzoli, mozete jednostavno promijeniti standardne boje koje koristi ls komanda. Radi se o environment varijabli LS_COLORS. Tu se nalaze sve definicije boja za razlicite tipove fajlova i razlicite ekstenzije. Tako je kod mene, recimo di=01;37, sto znaci da su mi direktoriji oznaceni bijelom bojom…