Newsgroup: it.comp.lang.c
Titolo: DJGPP e grafica. Aiuto!

Un saluto a tutti. Mi sono imbarcato in un'impresa un po' troppo
difficile per me, ed ho bisogno del vostro aiuto.
Sto realizzando un database di immagini che giri sotto DOS in modalità
grafica, e che deve visualizzare in un riquadro l'immagine selezionata
da un elenco testuale alla sua destra.
Dovendo avere a che fare con la grafica sono andato al sito della DJ
Delorie ed ho scaricato la libreria grafica grx23.zip. Quindi ho
seguito le istruzioni ed ho compilato il tutto, ed ora ho una bella
libreria libgrx20.a ed un po' di header, tutti pronti per essere
usati.
Peccato che non riesco ad usare un tubo, sia per la carenza di
documentazione (per ora sto spulciando i programmini di test per
iniziare a capirci qualcosa), sia perchè non so come far riconoscere
al GCC le funzioni che uso.
Se ad esempio tento di compilare questo:
#include <conio.h>
#include "grx20.h"
int main()
{
   int xd;
   int yd;
   GrColor c;
   xd = GrSizeX();
   yd = GrSizeY();
   c = GrAllocColor(250,100,100);
   GrBox(xd/16 - 2, yd/16 - 2, xd - xd()/16 + 1, yd - yd/16 + 1, c);
   a = getch();
   if (a == 0) getch();
   GrSetMode(GR_default_text);
   return 0;
}
mi dice che GrBox non è una funzione.
Io non so se questo codice funzioni, né cosa faccia (credo disegni un
rettangolo... almeno spero), ma di certo non me lo compila. La cosa
strana per me è che sia GrAllocColor che GrBox sono dichiarate nel
file grx20.h, e sono incluse nella libreria libgrx20.a, ma la seconda
segnala errore, e la prima no.
Evidentemente oltre a gcc prova.c devo scrivere qualcosa di più, ma
non so cosa...
Grazie mille e ciao a tutti.
Piero.

 non so cosa...
Si, devi aggiungere -lgrx20.
EMG

 Piero.
Come minimo devi dirgli di usarla la libreria grx; cioe', se l'hai messa
insieme alla altre librerie devi usare "gcc prova.c -lgrx20" se invece e'
da qualche altra parte usa "gcc prova.c \da\qualche\altra\parte\libgrx20.a"
Meglio se aggiungi un "-lm" in fondo per la libreria matematica non mi
icordo se GRX la usa o no.
Un' altra cosa, se quello che devi fare e' mettere una immagine sullo
schermo, immagino da una matrice o un vettore, GRX non ha una funzione per
fare cio' ma si deve usare un modo indiretto un po complicato. Se e' cosi'
fammelo sapere che ti mando un funzioncina che avevo scritto tempo fa
quando usavo GRX, e' limitata a immagini 8bit ma da' l'idea di cosa fare.
Ciao,
      GianPiero
-- 
*  Istituto Nazionale di Ottica                        GianPiero Puccioni  *
*  Largo E.Fermi 6                           E-Mail :  
g...@ino.it
          *
*  I-50125  Firenze - ITALY    =>this space intentionally left non-blank<= *

Piero.
Se ti serve anche il suono (che ne so, se vuoi mettere una musica di
sottofondo o un suono al cambio di immagine) o altri effetti ti conviene
scaricare da delorie la libreria Allegro che  è semplice da usare e ricca di
documentazione.
Provala

      GianPiero

 
Non molto, in genere i mei programmi o generavano le immagini al volo
oppure salvavo in formato RAW cioe' un byte per pixel e via. Esistono
comunque varie librerie per formati compressi. Escluderei i GIF dato che e'
un formato con copyright e, teoricamente e' illegale creare un GIF senza
pagare una royalty alla Unisys. Il formato che dovrebbe prenderne il posto
e' il PNG (Portable Network Graphics) e' molto potente ed esiste la
libreria per farli ma non so se esiste una versione per DJGPP. Allegro 
(
http://www.talula.demon.co.uk/allegro/index.html
) e' un'altra libreria
grafica per DJGPP che supporta alcuni tipi di formati compressi ma e' piu'
orientata alla crazione di giochi.
Comunque tutti questi formati compressi lavorano sulle ridondanze e
dipendono molto dal tipo di immagini, se sono molto complesse in un 300x200
la compressione non sara' un granche' ed anche salvati RAW sono da 60k se
l'immagine e' 8 bit per pixel a 240k se 32 bit, 1500 immagini sarebbero da
90 Mbytes a 360 Mbytes, con gli hard disk che girano di questi tempi non e'
poi un granche' e la codifica e' sicuramente MOLTO piu' facile se fai un
semplice read() piuttosto che usare un formato compresso.
