home *** CD-ROM | disk | FTP | other *** search
/ Dream 57 / Amiga_Dream_57.iso / Amiga / Programmation / c / Extensions / APPSource.lha / APlusPlus / libsource / AutoDrawArea.cxx < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-29  |  2.2 KB  |  91 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:RCS/libsource/AutoDrawArea.cxx,v $
  9.  **   $Revision: 1.12 $
  10.  **   $Date: 1994/07/31 13:14:21 $
  11.  **   $Author: Armin_Vogt $
  12.  **
  13.  ******************************************************************************/
  14.  
  15.  
  16. #include <APlusPlus/environment/APPObject.h>
  17. #include <APlusPlus/graphics/AutoDrawArea.h>
  18. #include <APlusPlus/intuition/IntuiMessageC.h>
  19. #include <APlusPlus/intuition/GWindow.h>
  20.  
  21.  
  22. static const char rcs_id[] = "$Id: AutoDrawArea.cxx,v 1.12 1994/07/31 13:14:21 Armin_Vogt Exp Armin_Vogt $";
  23.  
  24. intui_typeinfo(AutoDrawArea, derived(from(StdGadget)), rcs_id)
  25.  
  26.  
  27. AutoDrawArea::AutoDrawArea(GraphicObject *owner,AttrList& attrs)
  28.    : StdGadget(owner,attrs)   // StdGadget defaults to a boolean gadget
  29. {
  30.    if (Ok())
  31.    {
  32.       GWindow* homeWindow;
  33.  
  34.       if (NULL != (homeWindow = getHomeWindow()) )
  35.       {
  36.          setGWindow(homeWindow);
  37.          bgFillPen = 0;
  38.          setIOType(IOTYPE_AUTODRAWAREA);
  39.       }
  40.       else _ierror(AUTODRAWAREA_HAS_NO_GWINDOW_ROOT);
  41.    }
  42. }
  43.  
  44. AutoDrawArea::~AutoDrawArea()
  45. {
  46.    // for future use
  47. }
  48.  
  49. APTR AutoDrawArea::redrawSelf(GWindow *home,ULONG& returnType)
  50. {
  51.    _dprintf("AutoDrawArea::redrawSelf( )\n");
  52.  
  53.    APTR rv = StdGadget::redrawSelf(home,returnType);
  54.    if (isValid())
  55.    {
  56.       adjustStdClip();
  57.       setStdClip();
  58.       clear();
  59.       drawSelf();
  60.       resetStdClip();
  61.    }
  62.    else puterr("AutoDrawArea::redrawSelf() : draw area not valid!\n");
  63.    return rv;
  64. }
  65.  
  66. ULONG AutoDrawArea::setAttributes(AttrList& attrs)
  67. {
  68.    return StdGadget::setAttributes(attrs);
  69. }
  70.  
  71. ULONG AutoDrawArea::getAttribute(Tag tag,ULONG& dataStore)
  72. {
  73.    return StdGadget::getAttribute(tag,dataStore);
  74. }
  75.  
  76. void AutoDrawArea::clear()
  77. {
  78.    setAPen(bgFillPen);
  79.    setOPen(bgFillPen);
  80.    setDrMd(JAM2);
  81.    rectFill(0,0,iWidth(),iHeight());    // clear draw area
  82. }
  83.  
  84. void AutoDrawArea::callback(const IntuiMessageC *imsg)
  85. {
  86.    // for all IDCMP events adjust the MouseX,MouseY values relative to the
  87.    // AutoDrawArea view
  88.    ((IntuiMessageC*)imsg)->MouseX -= iLeft();
  89.    ((IntuiMessageC*)imsg)->MouseY -= iTop();
  90. }
  91.