home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 5
/
FreshFish_July-August1994.bin
/
bbs
/
gnu
/
aplusplus-1.01-src.lha
/
src
/
amiga
/
aplusplus-1.01
/
libsource
/
AutoDrawArea.cxx
< prev
next >
Wrap
C/C++ Source or Header
|
1994-05-05
|
2KB
|
85 lines
/******************************************************************************
**
** 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();
}