From: gip AT ino DOT it (GianPiero Puccioni) Newsgroups: comp.os.msdos.djgpp Subject: Re: GRX Date: 14 Jan 1997 10:15:00 GMT Organization: Istituto Nazionale di Ottica-ITALY Lines: 97 Message-ID: <5bfmb4$ffq@serra.unipi.it> References: <5b8icg$ma7 AT news DOT interlog DOT com> NNTP-Posting-Host: fox.ino.it To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Gautam N. Lad (gautam AT interlog DOT com) wrote: > Hi, > Is there a function that will allow me to store an image > in a buffer, and then later display it? > > I want something similar to Turbo C's getimage() and putimage(), > but I want it in the GRX format. > > I think I read something about Bliting, and even tried to understand > the BLITTEST.C program, but had a hard time understanding it. > > All I want is to get an image from X,Y with a width (W) and height (H) > and a pointer to a buffer (void *buffer). This is what I know > in Turbo C. > I had the same problem and the only way of doing this was to write a couple of functions to do this. I'll attach them at the end, but be warned that as far as I know they work ONLY with GRX 1.03 (and that means don't work with DGJPP 2), as most of the functions used are not in GRX20. By the way is there a new version? Or some news about it? I am stuck with version 1 exactly for this reason, I use those functions a lot. The functions are for a 256 color graphic mode but I suppose you can modify them for different modes. > Bye! > **************************************************** > * Gautam N. Lad * Ciao, GianPiero -- * Istituto Nazionale di Ottica GianPiero Puccioni * * Largo E.Fermi 6 E-Mail : gip AT fox DOT ino DOT it * * I-50125 Firenze - ITALY =>this space intentionally left non-blank<= * --------------------------------------------------------------------------- #include #define NULL 0 /***********************************************/ /* put an Array of unsigned char on the display */ /***********************************************/ void PutBlock(unsigned char *array,int xst,int yst,int xdim,int ydim,int *col) /* Parameters: array[] => image to be displayed xst, yst => coordinate of destination (top left point) xdim ydim => dimensions of the image col[N+1] => LUT for color transformation col[0] = N =number of colors to be used col[1] <-> col[N] to what color each pixel value has to be mapped. A 256 color linear map can be created with col[0]=256; for (i=0;i<256;i++) col[i+1]=i; */ { GrContext *d,*s; GrPattern *p; s=GrSaveContext(NULL); d=GrCreateContext(xdim,ydim,NULL,NULL); GrSetContext(d); p=GrBuildPixmap(array,xdim,ydim,col); GrPatternFilledBox(0,0,xdim-1,ydim-1,p); GrDestroyPattern(p); GrSetContext(s); GrBitBlt(s,xst,yst,d,0,0,xdim-1,ydim-1,GrWRITE); GrDestroyContext(d); GrDestroyContext(s); } --------------------------------------------------------------------------- #include /**********************************************************/ /* get a block from the display and puts it in an Array */ /**********************************************************/ void GetBlock(unsigned char *array,int xst,int yst,int xdim,int ydim) /* Parameters: array[] image to be displayed xst, yst coordinate of area to capture (top left point) xdim ydim dimensions of the image */ { register int i,j; for(i=0;i