Linux slogan
Visite também: BR-Linux.org · Dicas-L · NoticiasLinux · SoftwareLivre.org · UnderLinux · BestLinux
» Screenshot
Linux: Dreamweaver logo depois sendo executado
Por gtcesar



» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha

» Wallpaper
Linux: The World is Open Source
Por Biruriamu


Artigo

Conio.h para Linux
Linux user
jeffersonsfelix
20/04/2004
Pessoal estou disponibilizando pra todos a conio.h para Linux, baseada na biblioteca ncurses. Ela possui algumas das principais funções da conio.h do DOS/Windows. Confiram.
Por: Jefferson dos Santos Felix
[ Hits: 29167 ]
Conceito: 10.0   1 voto(s)1 voto(s)1 voto(s)1 voto(s)1 voto(s) + quero dar nota ao artigo

A conio.h

A conio.h que criei utiliza os recursos da biblioteca ncurses, portanto trata-se simplesmente de uma certa "tradução" da ncurses para algo semelhante a conio.h que vem com os compiladores do C/C++ para DOS/Windows.

Eis a conio.h para Linux:

// conio.h
// CONIO.H UTILIZANDO OS RECURSOS DA BIBLIOTECA NCURSES     //
// ----------------------------------------------------     //
//                                                          //
// DESENVOLVIDO POR: JEFFERSON DOS SANTOS FELIX, ABRIL 2004 //
//                                                          //

#ifndef __NCURSES_H
#include <curses.h>
#endif

#define BLACK       0
#define RED         1
#define GREEN       2
#define BROWN       3
#define BLUE        4
#define MAGENTA     5
#define CYAN        6
#define LIGHTGRAY   7
#define DARKGRAY    8
#define LIGHTRED    9
#define LIGHTGREEN  10
#define YELLOW      11
#define LIGHTBLUE   12
#define PINK        13
#define LIGHTCYAN   14
#define WHITE       15

#define DEFAULT_PAIR 57

int initconio(void);
int endconio(void);
int clrscr(void);
int textcolor(short color);
int textbackground(short color);
int gotoxy(int x, int y);
int wherex(void);
int wherey(void);

short cur_pair;
int cur_bold;

int initconio(void)
{
  int f, b;
  short p;
  initscr();
  start_color();
  p = 1;
  for(f = 0; f < 8; f++)
    for(b = 0; b < 8; b++, p++)
      init_pair(p, f%8, b%8);
  cur_pair = DEFAULT_PAIR;
  cur_bold = 0;
  bkgd(COLOR_PAIR(cur_pair));
  color_set(cur_pair, NULL);
  attr_off(A_BOLD, NULL);
  return 0;
}

int endconio(void)
{
  endwin();
  return 0;
}

int clrscr(void)
{
  bkgd(COLOR_PAIR(cur_pair));
  if(cur_bold == 1)
    attr_on(A_BOLD, NULL);
  else
    attr_off(A_BOLD, NULL);
  clear();
  return 0;
}

int textcolor(short color)
{
  short f, b, x, y;
  short p;
  pair_content(cur_pair, &f, &b);
  p = 1;
  for(x = 0; x < 8; x++)
    for(y = 0; y < 8; y++, p++)
      if((x == (color%8))&&(y == b))
        cur_pair = p;
  color_set(cur_pair, NULL);
  if(color >= 8)
  {
    cur_bold = 1;
    attr_on(A_BOLD, NULL);
  }
  else
  {
    cur_bold = 0;
    attr_off(A_BOLD, NULL);
  }
  return 0;
}

int textbackground(short color)
{
  short f, b, x, y;
  short p;
  pair_content(cur_pair, &f, &b);
  p = 1;
  for(x = 0; x < 8; x++)
    for(y = 0; y < 8; y++, p++)
      if((x == f)&&(y == (color%8)))
        cur_pair = p;
  color_set(cur_pair, NULL);
  return 0;
}

int gotoxy(int x, int y)
{
   move(x - 1, y - 1);
   return 0;
}

int wherex(void)
{
   int x, y;
   getyx(stdscr, x, y);
   return x + 1;
}

int wherey(void)
{
   int x, y;
   getyx(stdscr, x, y);
   return y + 1;
}
Próxima página >>


Páginas do artigo
   1. A conio.h
   2. Como funciona
   3. Conclusão

Outros artigos deste autor
Nenhum artigo encontrado.

Leitura recomendada

Comentários
[1] Comentário enviado por fabio em 20/04/2004 - 23:13h:

Muito bacana seu conio.h, não programo muito em C, mas tô ligado que isso faz maior falta pra galera de faculdade, que no geral se amarra em chegar no laboratório com um programinha colorido e cheio de recursos de formatação de tela. :)

Uma dica: você podia enviar seu código-fonte como script para o site também, assim facilita o processo de download, pois ao invés de copiar e colar o cara já teria um botãozinho "Download" linkado com esse artigo.

[2] Comentário enviado por jose_maria em 21/04/2004 - 08:59h:

Legal cara, me amarro nos artigos de programação.
Queria saber se alguem sabe de algo parecido com a CRT do Pascal, para Pascal mesmo.
Gostaria também que o Fabio criasse uma pasta PASCAL na seção de scripts. :D

[3] Comentário enviado por jeffestanislau em 22/04/2004 - 08:02h:

Muito bo mesmo, pois já vi vários usuários correndo atrás dessa biblioteca par linux... muito boa a sua iniciativa!!!

[4] Comentário enviado por jeffestanislau em 22/04/2004 - 08:07h:

Muito bom mesmo, pois já vi vários usuários correndo atrás dessa biblioteca par linux... muito boa a sua iniciativa!!!

[5] Comentário enviado por kashmir em 24/04/2004 - 00:33h:

concordo com o jeffestanislau, pois muita gente precisa desta biblioteca para linux valeu mesmo.

[6] Comentário enviado por ctrlc em 25/04/2004 - 21:45h:

muito legal!

[7] Comentário enviado por ron_lima em 23/05/2004 - 20:21h:

Olá, Jefferson.

Já pensou em criar um projeto no source forge com essa biblioteca? Não só esse layer que você está criando para o I/O de console do windows, como também um projeto mais ambicioso, como portar a Win32 para utilizar alguma biblioteca unix, como motif, lesstiff, Qt+ ou coisa parecida. Acredito que será um projeto muito procurado pois tem muita gente querendo portar as coisas do Windows para o unix.

Abraço!

[8] Comentário enviado por engos em 23/06/2004 - 16:55h:

Sou um dos que "não larga a mão de programar no modo texto" e ainda prefiro utilizar a ncurses diretamente, mesmo se for para migrar um programa do Ruindows...

Entretanto gostei de saber que existe uma opção a mais e com certeza isso vai ajudar bastante programadores.

Sua conio.h está bem elaborada, parabéns.

[9] Comentário enviado por arcanjo_mg em 05/10/2005 - 10:45h:

Kra, mto bom isso, eu precisava mesmo de uma dessas, pois na faculdade usamos mto a conio.h e em ksa meu Linux tem que ter modificações pra roda meus programinhas.

[10] Comentário enviado por cientistamaluko em 21/11/2005 - 12:59h:

Rapaz muito obrigado.....há um bom tempo eu estou atrás dessa biblioteca......será muito útil para nós. Vai ficar mais fácil conciliar meus trabalhos com dos meus colegas que usam Windows. Flws.

[11] Comentário enviado por djx em 06/04/2006 - 11:31h:

Ola eu sewi q esse artigo eh bem antigo...
Eu nao gosto de programar apenas para win ou Linux mas diante desta divergencia gosto de programar para os 2...
Mas estava navegando e gostei desta lib...
Eu poderia utiliza no meu programa e distribui-la no meu codigo fonte?
Antecipadamente,
Vlw...

[12] Comentário enviado por klebervirgilio em 28/02/2009 - 11:57h:

Amigo...

E as funções getch()... getche()???


Contribuir com comentário
  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Copyleft 2002-2009 Viva o Linux.com.br

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.