www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/03/24/14:02:43

Xref: news2.mv.net comp.os.msdos.djgpp:2125
From: Nabil Maria <maria AT tirf DOT inpg DOT fr>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Problems with GRX 1.03 and 20 !!
Date: Sat, 23 Mar 1996 22:45:37 +0100
Organization: tirf
Lines: 137
Message-ID: <31547101.1785@tirf.inpg.fr>
References: <4irbeq$a3c AT news DOT cea DOT fr>
NNTP-Posting-Host: rubica.inpg.fr
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

This is a multi-part message in MIME format.

--------------15E66FFB397
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Answer to first question :
--------------------------
   The documentation says the following about GrGetEvent : "GrGetEvent
   will display the cursor it it was previously erased and the
  'GR_M_NOPAINT' bit is not set in the flag passed to it. In this
   case it will also erase the cursor after an event has been obtained."
   This explains the "flashing" effect you are having. The solution
   is then to add the 'GR_M_NOPAINT' bit to your flag.

Answer to second question :
---------------------------
   All you need to do is adding the call 'GrSetModeRestore(0)' to your
   code after initialising the graphics mode.

Temptative answer to third question :
-------------------------------------
   I have tried using GrXOR operations with grx2 and it worked fine
   for me. I'm reposting back the original program with modifications
   coressponding to the above questions and a simple line XORing test
   that works.
   If you don't get the red box with the diagonal black line on it try
   using another graphics driver; your problem might be graphics card
   specific.




 ________________________________________________________________________
|| MARIA Nabil				||				||
|| Neural Networks Group: TIRF-INPG	||				||
|| 46, Ave Felix Viallet		||   Tel: 76 57 48 22		||	
|| 38031 Grenoble			||   Email: maria AT tirf DOT inpg DOT fr	||	
|| France				||				||
 ------------------------------------------------------------------------

--------------15E66FFB397
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="graph.cc"

#include <conio.h>
#include <stdio.h>


#include <grx20.h>
typedef long GrColor;

GrColor red, green, blue;

char MouseArrow[16*12] =
  {    1, 1, 1,00,00,00,00,00,00,00,00,00  ,
       1, 4, 1, 1,00,00,00,00,00,00,00,00  ,
       1, 4, 5, 1, 1,00,00,00,00,00,00,00  ,
       1, 4, 5, 5, 1, 1,00,00,00,00,00,00  ,
       1, 4, 4, 5, 5, 1, 1,00,00,00,00,00  ,
       1, 4, 4, 5, 5, 5, 1, 1,00,00,00,00  ,
       1, 4, 4, 4, 5, 5, 5, 1, 1,00,00,00  ,
       1, 4, 4, 4, 5, 5, 5, 5, 1, 1,00,00  ,
       1, 4, 4, 4, 5, 5, 5, 5, 5, 1, 1,00  ,
       1, 4, 4, 4, 4, 5, 5, 5, 5, 5, 1, 1  ,
       1, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 1  ,
       1, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1  ,
       1, 4, 4, 4, 1, 1,00,00,00,00,00,00  ,
       1, 4, 4, 1, 1,00,00,00,00,00,00,00  ,
       1, 4, 1, 1,00,00,00,00,00,00,00,00  ,
       1, 1, 1,00,00,00,00,00,00,00,00,00   };

int main(void)
{ GrCursor    *CurMouse;
  GrMouseEvent evt;
  int          i;
  // Init Graphic mode
  GrSetMode(GR_width_height_color_graphics,640,480,16);
  GrSetModeRestore(0);
  // Init Colors
  GrColor ColorTable[6];
  GrColor NoSysColor[5];
  ColorTable[0]=5;
  for(i=0;i<5;i++) {
        NoSysColor[i]  = GrAllocColor(i*255/4,i*255/4,i*255/4);
        ColorTable[i+1]= NoSysColor[i];
  }
  red   = GrAllocColor(255,  0,  0);
  green = GrAllocColor(  0,255,  0);
  blue  = GrAllocColor(  0,  0,255);
  // Init Mouse
  if (!GrMouseDetect()) {
        GrSetMode(GR_80_25_text);
        return 1;
  }
  GrMouseInit();
  CurMouse=GrBuildCursor(MouseArrow,12,12,16, 1, 1,ColorTable); 
  
  GrMouseEventMode(1);
  GrMouseEventEnable(1,1);

  GrMouseSetCursor(CurMouse);
  GrMouseDisplayCursor();
  // Message loop : Wait for a key hit
  do {
        GrMouseGetEvent(GR_M_EVENT | GR_M_POLL,&evt);
  } while (!(evt.flags & GR_M_KEYPRESS));

  // Line Xoring test
  GrFilledBox(0, 0, 400, 400, red);
  // Xor a diagonal line on the above drawn surface
  GrLine(0, 0, 400, 400, red | GrXOR);
  // You should see a red box with a diagonal black line on it now ! 


  // Hide cursor test
  // :: 1 Hide cursor
  GrMouseEraseCursor();
  // :: 2 Wait for an action
  do { 
        GrMouseGetEvent(GR_M_EVENT | GR_M_POLL | GR_M_NOPAINT,&evt);
  } while (!(evt.flags & GR_M_EVENT));
  
  // :: 3 Show cursor
  GrMouseDisplayCursor();
  // Destroy mouse cursor
  GrMouseUnInit();
  GrDestroyCursor(CurMouse);
  // Close Graphic mode
  GrSetMode(GR_80_25_text);
  printf("Back to text mode !\n");
  return 0;
}

--------------15E66FFB397--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019