home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- **
- ** C++ Class Library for the Amiga© system software.
- **
- ** Copyright (C) 1994 by Armin Vogt ** EMail: armin@uni-paderborn.de
- ** All Rights Reserved.
- **
- ** $Source: apphome:APlusPlus/RCS/libsource/AutoDrawArea.cxx,v $
- ** $Revision: 1.5 $
- ** $Date: 1994/05/05 22:03:13 $
- ** $Author: Armin_Vogt $
- **
- ******************************************************************************/
-
-
- #include <APlusPlus/environment/APPObject.h>
- #include <APlusPlus/graphics/AutoDrawArea.h>
-
-
- volatile static char rcs_id[] = "$Id: AutoDrawArea.cxx,v 1.5 1994/05/05 22:03:13 Armin_Vogt Exp Armin_Vogt $";
-
-
- AutoDrawArea::AutoDrawArea(GraphicObject *owner,AttrList& attrs)
- : StdGadget(owner,
- GFLG_GADGHNONE,GACT_IMMEDIATE|GACT_RELVERIFY|GACT_FOLLOWMOUSE,
- GTYP_BOOLGADGET,NULL,NULL,NULL,0L,NULL,0,
- attrs)
- {
- if (Ok())
- {
- GWindow *homeWindow;
- if (NULL != (homeWindow = (GWindow*)findRootOfKind(IOTYPE_GWINDOW)))
- {
- _dout("\tfound root window "<<(APTR)homeWindow<<"\n");
- setGWindow(homeWindow);
- bgFillPen = 0;
- setIOType(IOTYPE_AUTODRAWAREA);
- }
- else _ierror(AUTODRAWAREA_HAS_NO_GWINDOW_ROOT);
- _dout("AutoDrawArea type is "<<status()<<endl);
- }
- }
-
- APTR AutoDrawArea::redrawSelf(GWindow *home,ULONG& returnType)
- {
- _dout("AutoDrawArea::redrawSelf( )\n");
-
- APTR rv = StdGadget::redrawSelf(home,returnType);
- if (isValid())
- {
- adjustStdClip();
- setStdClip();
- clear();
- drawSelf();
- resetStdClip();
- }
- else cerr << "AutoDrawArea::redrawSelf() : is not valid!\n";
- return rv;
- }
-
- ULONG AutoDrawArea::setAttributes(AttrList& attrs)
- {
- return StdGadget::setAttributes(attrs);
- }
-
- ULONG AutoDrawArea::getAttribute(Tag tag,ULONG& dataStore)
- {
- return StdGadget::getAttribute(tag,dataStore);
- }
-
- void AutoDrawArea::clear()
- {
- setAPen(bgFillPen);
- setOPen(bgFillPen);
- setDrMd(JAM2);
- rectFill(0,0,iWidth(),iHeight()); // clear draw area
- }
-
- void AutoDrawArea::callback(const IntuiMessageC *imsg)
- {
- // for all IDCMP events adjust the MouseX,MouseY values relative to the
- // AutoDrawArea view
- ((IntuiMessageC*)imsg)->MouseX -= iLeft();
- ((IntuiMessageC*)imsg)->MouseY -= iTop();
- }