home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / kolekcje / stanislaw_weslawski / ulubione_share / obtainpens / obtainpens.c < prev    next >
C/C++ Source or Header  |  1996-11-21  |  2KB  |  62 lines

  1. #include <dos/dos.h>
  2. #include <intuition/intuition.h>
  3. #include <graphics/GfxBase.h>
  4.  
  5. #include <proto/exec.h>
  6. #include <proto/intuition.h>
  7. #include <proto/graphics.h>
  8.  
  9. /* OpenScreenTagList */
  10. #define VEC -0x264
  11. #define LIB (struct Library*) IntuitionBase
  12.  
  13. static char vers[] = "$VER: ObtainPens V1.0 (21.11.96) ©1996 ALeX Kazik";
  14.  
  15. struct {
  16.     ULONG pen1,r1,g1,b1;
  17.     ULONG pen2,r2,g2,b2;
  18.     ULONG pen3,r3,g3,b3;
  19.     ULONG pen4,r4,g4,b4;
  20. } args = {4, 0x7B7B7B7B, 0x7B7B7B7B, 0x7B7B7B7B,
  21.           5, 0xAFAFAFAF, 0xAFAFAFAF, 0xAFAFAFAF,
  22.           6, 0xAAAAAAAA, 0x90909090, 0x7C7C7C7C,
  23.           7, 0xFFFFFFFF, 0xA9A9A9A9, 0x97979797};
  24.  
  25. struct Screen __asm *(*old_OpenScreenTagList)(register __a0 struct NewScreen *, register __a1 struct TagItem *, register __a6 struct Library *);
  26.  
  27. struct Screen __saveds __asm *new_OpenScreenTagList(register __a0 struct NewScreen *newscr, register __a1 struct TagItem *tagitem, register __a6 struct Library *lib){
  28.     struct Screen *scr;
  29.     
  30.     if((scr = old_OpenScreenTagList(newscr, tagitem, lib)) && ((scr->Flags & SCREENTYPE) == WBENCHSCREEN)){
  31.         ObtainPen(scr->ViewPort.ColorMap, args.pen1, args.r1, args.g1, args.b1, 0);
  32.         ObtainPen(scr->ViewPort.ColorMap, args.pen2, args.r2, args.g2, args.b2, 0);
  33.         ObtainPen(scr->ViewPort.ColorMap, args.pen3, args.r3, args.g3, args.b3, 0);
  34.         ObtainPen(scr->ViewPort.ColorMap, args.pen4, args.r4, args.g4, args.b4, 0);
  35.     }
  36.  
  37.     return(scr);
  38. }
  39.  
  40. int main (){
  41.  
  42.     if (GfxBase->LibNode.lib_Version < 39)
  43.         return(20);
  44.  
  45.     Disable();
  46.     old_OpenScreenTagList = SetFunction(LIB,VEC,(APTR)new_OpenScreenTagList);
  47.     CacheClearU();
  48.     Enable();
  49.  
  50.     Wait(SIGBREAKF_CTRL_C);
  51.         
  52.     if(FindPort("SetMan")){
  53.         Disable();
  54.         SetFunction(LIB,VEC,(APTR)old_OpenScreenTagList);
  55.         CacheClearU();
  56.         Enable();
  57.     }else
  58.         Wait(0);
  59.  
  60.     return(0);
  61. }
  62.