125 lines
3.3 KiB
C++
125 lines
3.3 KiB
C++
//## begin module.cm preserve=no
|
|
|
|
// %X% %Q% %Z% %W%
|
|
|
|
//## end module.cm
|
|
|
|
|
|
|
|
//## begin module.cp preserve=no
|
|
|
|
//## end module.cp
|
|
|
|
|
|
|
|
//## Module: CompositeComponent; Pseudo Package body
|
|
|
|
//## Subsystem: lab7
|
|
|
|
//## Source file: H:\kurs\avC++\lab7\CmpstCmp.cpp
|
|
|
|
|
|
|
|
//## begin module.additionalIncludes preserve=no
|
|
|
|
//## end module.additionalIncludes
|
|
|
|
|
|
|
|
//## begin module.includes preserve=yes
|
|
|
|
//## end module.includes
|
|
|
|
|
|
|
|
// CompositeComponent
|
|
|
|
#include "CmpstCmp.h"
|
|
|
|
//## begin module.additionalDeclarations preserve=yes
|
|
|
|
//## end module.additionalDeclarations
|
|
|
|
|
|
|
|
|
|
|
|
// Class CompositeComponent
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CompositeComponent::CompositeComponent()
|
|
|
|
//## begin CompositeComponent::CompositeComponent%.hasinit preserve=no
|
|
|
|
//## end CompositeComponent::CompositeComponent%.hasinit
|
|
|
|
//## begin CompositeComponent::CompositeComponent%.initialization preserve=yes
|
|
|
|
//## end CompositeComponent::CompositeComponent%.initialization
|
|
|
|
{
|
|
|
|
//## begin CompositeComponent::CompositeComponent%.body preserve=yes
|
|
|
|
//## end CompositeComponent::CompositeComponent%.body
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CompositeComponent::~CompositeComponent()
|
|
|
|
{
|
|
|
|
//## begin CompositeComponent::~CompositeComponent%.body preserve=yes
|
|
|
|
//## end CompositeComponent::~CompositeComponent%.body
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//## Other Operations (implementation)
|
|
|
|
void CompositeComponent::draw (Graphics& g)
|
|
|
|
{
|
|
|
|
//## begin CompositeComponent::draw%940929799.body preserve=yes
|
|
|
|
Component *cTmp;
|
|
|
|
|
|
|
|
if(!cList.isEmpty()){
|
|
|
|
cTmp = cList.getFirst();
|
|
|
|
cTmp->draw(g);
|
|
|
|
|
|
|
|
while(!cList.isLast()){
|
|
|
|
cTmp = cList.getNext();
|
|
|
|
cTmp->draw(g);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//## end CompositeComponent::draw%940929799.body
|
|
|
|
}
|
|
|
|
|
|
|
|
void CompositeComponent::add (Component* c)
|
|
|
|
{
|
|
|
|
//## begin CompositeComponent::add%940945810.body preserve=yes
|
|
|
|
cList.addElement(c);
|
|
|
|
active = c;
|
|
|
|
//## end CompositeComponent::add%940945810.body
|
|
|
|
}
|
|
|
|
|
|
|
|
void CompositeComponent::handleKeyEvent (Event e)
|
|
|
|
{
|
|
|
|
//## begin CompositeComponent::handleKeyEvent%941013991.body preserve=yes
|
|
|
|
//## end CompositeComponent::handleKeyEvent%941013991.body
|
|
|
|
}
|
|
|
|
|
|
|
|
void CompositeComponent::handleMouseEvent (Event e)
|
|
|
|
{
|
|
|
|
//## begin CompositeComponent::handleMouseEvent%941013992.body preserve=yes
|
|
|
|
Component *cTmp;
|
|
|
|
|
|
|
|
if(!cList.isEmpty()){
|
|
|
|
cTmp = cList.getFirst();
|
|
|
|
if(cTmp->isHit(e.getxpos()-xpos, e.getypos()-ypos)){
|
|
|
|
e.setxpos(e.getxpos()-xpos);
|
|
|
|
e.setypos(e.getypos()-ypos);
|
|
|
|
active = cTmp;
|
|
|
|
cTmp->handleMouseEvent(e);
|
|
|
|
}
|
|
|
|
|
|
|
|
while(!cList.isLast()){
|
|
|
|
cTmp = cList.getNext();
|
|
|
|
if(cTmp->isHit(e.getxpos()-xpos, e.getypos()-ypos)){
|
|
|
|
e.setxpos(e.getxpos()-xpos);
|
|
|
|
e.setypos(e.getypos()-ypos);
|
|
|
|
active = cTmp;
|
|
|
|
cTmp->handleMouseEvent(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//## end CompositeComponent::handleMouseEvent%941013992.body
|
|
|
|
}
|
|
|
|
|
|
|
|
bool CompositeComponent::isHit (int x, int y)
|
|
|
|
{
|
|
|
|
//## begin CompositeComponent::isHit%941013998.body preserve=yes
|
|
|
|
return((x >= xpos) & (x < xpos + width) & (y >= ypos) & (y < ypos + height));
|
|
|
|
//## end CompositeComponent::isHit%941013998.body
|
|
|
|
}
|
|
|
|
|
|
|
|
// Additional Declarations
|
|
|
|
//## begin CompositeComponent.declarations preserve=yes
|
|
|
|
//## end CompositeComponent.declarations
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//## begin module.epilog preserve=yes
|
|
|
|
//## end module.epilog
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|