home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 7 / FreshFishVol7.bin / bbs / gnu / aplusplus-1.01-src.lha / GNU / src / amiga / APlusPlus-1.01 / libsource / AutoDrawArea.cxx < prev    next >
C/C++ Source or Header  |  1994-05-05  |  2KB  |  85 lines

  1. /******************************************************************************
  2.  **
  3.  **    C++ Class Library for the Amiga© system software.
  4.  **
  5.  **    Copyright (C) 1994 by Armin Vogt  **  EMail: armin@uni-paderborn.de
  6.  **    All Rights Reserved.
  7.  **
  8.  **    $Source: apphome:APlusPlus/RCS/libsource/AutoDrawArea.cxx,v $
  9.  **    $Revision: 1.5 $
  10.  **    $Date: 1994/05/05 22:03:13 $
  11.  **    $Author: Armin_Vogt $
  12.  **
  13.  ******************************************************************************/
  14.  
  15.  
  16. #include <APlusPlus/environment/APPObject.h>
  17. #include <APlusPlus/graphics/AutoDrawArea.h>
  18.  
  19.  
  20. volatile static char rcs_id[] = "$Id: AutoDrawArea.cxx,v 1.5 1994/05/05 22:03:13 Armin_Vogt Exp Armin_Vogt $";
  21.  
  22.  
  23. AutoDrawArea::AutoDrawArea(GraphicObject *owner,AttrList& attrs) 
  24.     : StdGadget(owner,
  25.         GFLG_GADGHNONE,GACT_IMMEDIATE|GACT_RELVERIFY|GACT_FOLLOWMOUSE,
  26.         GTYP_BOOLGADGET,NULL,NULL,NULL,0L,NULL,0,
  27.         attrs)    
  28. {
  29.     if (Ok())
  30.     {
  31.    GWindow *homeWindow;
  32.    if (NULL != (homeWindow = (GWindow*)findRootOfKind(IOTYPE_GWINDOW)))
  33.    {
  34.       _dout("\tfound root window "<<(APTR)homeWindow<<"\n");
  35.       setGWindow(homeWindow);
  36.       bgFillPen = 0;
  37.       setIOType(IOTYPE_AUTODRAWAREA);
  38.    }
  39.    else _ierror(AUTODRAWAREA_HAS_NO_GWINDOW_ROOT);
  40.    _dout("AutoDrawArea type is "<<status()<<endl);
  41.     }
  42. }
  43.  
  44. APTR AutoDrawArea::redrawSelf(GWindow *home,ULONG& returnType)
  45. {
  46.    _dout("AutoDrawArea::redrawSelf( )\n");
  47.     
  48.     APTR rv = StdGadget::redrawSelf(home,returnType);
  49.    if (isValid())
  50.    {
  51.       adjustStdClip();
  52.         setStdClip();
  53.         clear();
  54.       drawSelf();
  55.         resetStdClip();
  56.    }
  57.     else cerr << "AutoDrawArea::redrawSelf() : is not valid!\n";
  58.    return rv;
  59. }
  60.  
  61. ULONG AutoDrawArea::setAttributes(AttrList& attrs)
  62. {        
  63.    return StdGadget::setAttributes(attrs);
  64. }
  65.  
  66. ULONG AutoDrawArea::getAttribute(Tag tag,ULONG& dataStore)
  67. {
  68.    return StdGadget::getAttribute(tag,dataStore);
  69. }
  70.  
  71. void AutoDrawArea::clear()
  72. {
  73.     setAPen(bgFillPen);
  74.    setOPen(bgFillPen);
  75.     setDrMd(JAM2);
  76.    rectFill(0,0,iWidth(),iHeight());    // clear draw area
  77. }
  78.  
  79. void AutoDrawArea::callback(const IntuiMessageC *imsg)
  80. {
  81.     // for all IDCMP events adjust the MouseX,MouseY values relative to the
  82.     // AutoDrawArea view
  83.     ((IntuiMessageC*)imsg)->MouseX -= iLeft();
  84.     ((IntuiMessageC*)imsg)->MouseY -= iTop();
  85. }