bool SDLAudio::LoadSFXFile( std::string Filename, std::string SFXName ) { /** Check to see if we've already loaded it */ SListIterator<SGZSound*> SFXListITR = SFXList.GetIterator(); for( SFXListITR.Start(); SFXListITR.Valid(); SFXListITR.Forth() ) if((SFXListITR.Item()->Name.compare(SFXName))==0) { SGZLogger.debug("AudioMAN: SFX \"%s\" already loaded!\n", SFXName.c_str()); return false; } /** Load a sound effect to play */ SGZLogger.debug("AudioMAN: Loading SFX \"%s\" as %s\n", Filename.c_str(), SFXName.c_str()); SGZSound *Effect; Effect = new SGZSound; Effect->Name = SFXName; Effect->Data = Mix_LoadWAV(Filename.c_str()); if(Effect->Data == NULL) { SGZLogger.warn("AudioMAN: Failed to load SFX: %s\n", Filename.c_str()); delete Effect; return false; } else SFXList.Append(Effect); return true; }
bool SDLAudio::DestroyInterface(void) { /** Destroy a client interface */ SListIterator<SGZMusic*> MusicListITR = MusicList.GetIterator(); MusicListITR.Start(); while (MusicListITR.Valid()) { Mix_FreeMusic(MusicListITR.Item()->Data); MusicList.Remove(MusicListITR); MusicListITR.Forth(); } SListIterator<SGZSound*> SFXListITR = SFXList.GetIterator(); SFXListITR.Start(); while (SFXListITR.Valid()) { Mix_FreeChunk(SFXListITR.Item()->Data); SFXList.Remove(SFXListITR); SFXListITR.Forth(); } Mix_CloseAudio(); return true; }
SList<node>& DynamicSPQRForest::findPathSPQR (node sH, node tH, node& rT) const { SList<node>& pT = *OGDF_NEW SList<node>; node sT = spqrproper(sH->firstAdj()->theEdge()); node tT = spqrproper(tH->firstAdj()->theEdge()); node nT = findNCASPQR(sT,tT); while (sT!=nT) { edge eH = m_tNode_hRefEdge[sT]; node uH = eH->source(); node vH = eH->target(); if (uH!=sH && vH!=sH) pT.pushBack(sT); if (uH==tH || vH==tH) { rT = sT; return pT; } sT = spqrproper(m_hEdge_twinEdge[eH]); } SListIterator<node> iT = pT.rbegin(); while (tT!=nT) { edge eH = m_tNode_hRefEdge[tT]; node uH = eH->source(); node vH = eH->target(); if (uH!=tH && vH!=tH) { if (iT.valid()) pT.insertAfter(tT,iT); else pT.pushFront(tT); } if (uH==sH || vH==sH) { rT = tT; return pT; } tT = spqrproper(m_hEdge_twinEdge[eH]); } if (iT.valid()) pT.insertAfter(nT,iT); else pT.pushFront(nT); rT = nT; return pT; }
bool SDLAudio::LoadMUSFile( std::string Filename, std::string MUSName ) { /** Check to see if we've already loaded it */ SListIterator<SGZMusic*> MusicListITR = MusicList.GetIterator(); for( MusicListITR.Start(); MusicListITR.Valid(); MusicListITR.Forth() ) if((MusicListITR.Item()->Name.compare(MUSName))==0) { SGZLogger.debug("AudioMAN: SFX: %s already loaded!\n", MUSName.c_str()); return false; } /** Load a music to play */ SGZLogger.debug("AudioMAN: Loading MUS: %s as %s\n", Filename.c_str(), MUSName.c_str()); SGZMusic *Music; Music = new SGZMusic; Music->Name = MUSName; Music->Data = Mix_LoadMUS(Filename.c_str()); if(Music->Data == NULL) { SGZLogger.warn("AudioMAN: Failed to load MUS: %s\n", Filename.c_str()); delete Music; return false; } else MusicList.Append(Music); return true; }
// Initializes a PQTree by a set of leaves that will korrespond to // the set of Keys stored in leafKeys. int PlanarPQTree::Initialize(SListPure<PlanarLeafKey<IndInfo*>*> &leafKeys) { SListIterator<PlanarLeafKey<IndInfo*>* > it; SListPure<PQLeafKey<edge,IndInfo*,bool>*> castLeafKeys; for (it = leafKeys.begin(); it.valid(); ++it) castLeafKeys.pushBack((PQLeafKey<edge,IndInfo*,bool>*) *it); return PQTree<edge,IndInfo*,bool>::Initialize(castLeafKeys); }
void CInterpret::CleanEvents( void ) { SListIterator<IEvent*> EventListITR = EventList.GetIterator(); for( EventListITR.Start(); EventListITR.Valid(); EventListITR.Forth() ) { if(EventListITR.Item()->handled(false)) EventList.Remove(EventListITR); } }
// Reduction reduced a set of leaves determined by their keys stored // in leafKeys. Integer redNumber is for debugging only. bool PlanarPQTree::Reduction(SListPure<PlanarLeafKey<indInfo*>*> &leafKeys) { SListIterator<PlanarLeafKey<indInfo*>* > it; SListPure<PQLeafKey<edge,indInfo*,bool>*> castLeafKeys; for (it = leafKeys.begin(); it.valid(); ++it) castLeafKeys.pushBack((PQLeafKey<edge,indInfo*,bool>*) *it); return PQTree<edge,indInfo*,bool>::Reduction(castLeafKeys); }
forall_nodes(v,G) { SListIterator<PlanarLeafKey<whaInfo*>* > it; for (it = inLeaves[v].begin(); it.valid(); ++it) { PlanarLeafKey<whaInfo*>* L = *it; outLeaves[L->userStructKey()->opposite(v)].pushFront(L); } }
bool MTexture::checkExist ( const std::string &Name ) { SListIterator<TextureObj*> TextureITR = mTextureList.getIterator(); for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() ) if(TextureITR.item()->mName.compare(Name)==0) return true; return false; }
bool MEntity::UpdateEntities( void ) { /** Update Entities */ SListIterator<IEntity*> EntityListITR = EntityList.GetIterator(); for( EntityListITR.Start(); EntityListITR.Valid(); EntityListITR.Forth() ) EntityListITR.Item()->Update(); return true; }
bool MEntity::CheckExist(std::string Name) { /** Check an Entity */ SListIterator<IEntity*> EntityListITR = EntityList.GetIterator(); for( EntityListITR.Start(); EntityListITR.Valid(); EntityListITR.Forth() ) if(EntityListITR.Item()->GetName().compare(Name)==0) return true; return false; }
bool SDLEntity2D::LoadFrame ( std::string Name, std::string TexName, std::string MaskName, int FrameDelay, int x, int y, SGZCOLOUR ColourKey ) { /// Load up a Texture into an Animation SListIterator<SGZAnimGroup2D*> AnimListITR = AnimList.GetIterator(); for( AnimListITR.Start(); AnimListITR.Valid(); AnimListITR.Forth() ) if((AnimListITR.Item()->AnimName.compare(Name))==0) { SGZAnimFrame2D *Frame = new SGZAnimFrame2D; Frame->TextureName = TexName; Frame->MaskName = "none"; Frame->delay = FrameDelay; Frame->u = x; Frame->v = y; Frame->colkey = ColourKey; AnimListITR.Item()->FrameList.Append(Frame); AnimListITR.Item()->AnimNum++; AnimListITR.Item()->FrameITR = AnimListITR.Item()->FrameList.GetIterator(); if(!SGZInterpret.accessServer()->World()->accessTextureManager()->CheckExist(TexName)) SGZLogger.warn("Texture %s has not been loaded yet.. make sure it is before calling this frame!", TexName.c_str()); return true; } SGZLogger.warn("Animation \"%s\" does not exist!\n",Name.c_str()); return false; }
bool SDLEntity2D::LoadFrame ( std::string Name, std::string TexName, std::string MaskName, int FrameDelay, int x, int y, SGZ::RGBCOLOUR ColourKey ) { /// Load up a Texture into an Animation SListIterator<SGZAnimGroup2D*> AnimListITR = AnimList.getIterator(); for( AnimListITR.start(); AnimListITR.valid(); AnimListITR.forth() ) if((AnimListITR.item()->AnimName.compare(Name))==0) { SGZAnimFrame2D *Frame = new SGZAnimFrame2D; Frame->TextureName = TexName; Frame->MaskName = MaskName; Frame->delay = FrameDelay; Frame->u = x; Frame->v = y; Frame->colkey = ColourKey; AnimListITR.item()->FrameList.append(Frame); AnimListITR.item()->AnimNum++; AnimListITR.item()->FrameITR = AnimListITR.item()->FrameList.getIterator(); if(!manTextures->checkExist(TexName)) SGZ::Logger.log( SGZLOG::Warning, "Texture " + TexName + " has not been loaded yet.. make sure it is before calling this frame!"); return true; } SGZ::Logger.log( SGZLOG::Warning, "Animation \"" + Name + "\" does not exist!\n"); return false; }
MTexture::~MTexture() { /** Destructor */ SListIterator<TextureObj*> TextureITR = mTextureList.getIterator(); TextureITR.start(); while (TextureITR.valid()) { mTextureList.remove(TextureITR); TextureITR.forth(); } }
MEntity::~MEntity() { /** Destructor */ SListIterator<IEntity*> EntityListITR = EntityList.GetIterator(); EntityListITR.Start(); while (EntityListITR.Valid()) { EntityList.Remove(EntityListITR); EntityListITR.Forth(); } }
bool MTexture::delTexture( const std::string &Name ) { SListIterator<TextureObj*> TextureITR = mTextureList.getIterator(); for( TextureITR.start(); TextureITR.valid(); TextureITR.forth() ) if(TextureITR.item()->mName.compare(Name)==0) { mTextureList.remove(TextureITR); return true; } SGZ::Logger.log( SGZLOG::Warning, "Texture " + Name + " does not exist!\n"); return false; }
bool SDLEntity2D::DeleteVar( std::string Name ) { SListIterator<SGZVarGroup*> VarITR = VarList.getIterator(); for( VarITR.start(); VarITR.valid(); VarITR.forth() ) if((VarITR.item()->Name.compare(Name))==0) { VarList.remove(VarITR); return true; } SGZ::Logger.log( SGZLOG::Warning, "Variable \"" + Name + "\" does not exist!\n"); return false; }
bool MEntity::DelEntity(std::string Name) { /** Remove an Entity */ SListIterator<IEntity*> EntityListITR = EntityList.GetIterator(); for( EntityListITR.Start(); EntityListITR.Valid(); EntityListITR.Forth() ) if(EntityListITR.Item()->GetName().compare(Name)==0) { EntityList.Remove(EntityListITR); return true; } SGZLogger.warn("Entity %s does not exist!\n", Name.c_str()); return false; }
bool SDLEntity2D::DeleteVar( std::string Name ) { SListIterator<SGZVarGroup*> VarITR = VarList.GetIterator(); for( VarITR.Start(); VarITR.Valid(); VarITR.Forth() ) if((VarITR.Item()->Name.compare(Name))==0) { VarList.Remove(VarITR); return true; } SGZLogger.warn("Variable \"%s\" does not exist!\n",Name.c_str()); return false; }
void UMLGraph::undoStars() { SListIterator<node> it = m_centerNodes.begin(); while (it.valid()) { undoStar(*it, false); ++it; }//while m_hiddenEdges->restore(); m_centerNodes.clear(); m_replacementEdge.init(); }//undostars
bool SDLAudio::RemoveGROUP(std::string name) { /** Check to see if we've created it */ SListIterator<SGZChanGroup*> GroupListITR = GroupList.GetIterator(); for( GroupListITR.Start(); GroupListITR.Valid(); GroupListITR.Forth() ) if((GroupListITR.Item()->Name.compare(name))==0) { GroupList.Remove(GroupListITR); return true; } SGZLogger.warn("AudioMAN: Group \"%s\" doesn't exist!\n", name.c_str()); return false; }
// Function ReplaceFullRoot either replaces the full root // or one full child of a partial root of a pertinent subtree // by a single P-node with leaves corresponding the keys stored in leafKeys. void PlanarSubgraphPQTree:: ReplaceFullRoot(SListPure<PlanarLeafKey<whaInfo*>*> &leafKeys) { PQLeaf<edge,whaInfo*,bool> *leafPtr = 0; // dummy PQInternalNode<edge,whaInfo*,bool> *nodePtr = 0; // dummy //PQNodeKey<edge,whaInfo*,bool> *nodeInfoPtr = 0; // dummy PQNode<edge,whaInfo*,bool> *currentNode = 0; // dummy SListIterator<PlanarLeafKey<whaInfo*>* > it; if (!leafKeys.empty() && leafKeys.front() == leafKeys.back()) { //ReplaceFullRoot: replace pertinent root by a single leaf leafPtr = OGDF_NEW PQLeaf<edge,whaInfo*,bool>(m_identificationNumber++, EMPTY,(PQLeafKey<edge,whaInfo*,bool>*)leafKeys.front()); exchangeNodes(m_pertinentRoot,(PQNode<edge,whaInfo*,bool>*) leafPtr); if (m_pertinentRoot == m_root) m_root = (PQNode<edge,whaInfo*,bool>*) leafPtr; } else if (!leafKeys.empty()) // at least two leaves { //replace pertinent root by a $P$-node if ((m_pertinentRoot->type() == P_NODE) || (m_pertinentRoot->type() == Q_NODE)) { nodePtr = (PQInternalNode<edge,whaInfo*,bool>*)m_pertinentRoot; nodePtr->type(P_NODE); nodePtr->status(PERTROOT); nodePtr->childCount(0); while (!fullChildren(m_pertinentRoot)->empty()) { currentNode = fullChildren(m_pertinentRoot)->popFrontRet(); removeChildFromSiblings(currentNode); } } else if (m_pertinentRoot->type() == LEAF) { nodePtr = OGDF_NEW PQInternalNode<edge,whaInfo*,bool>(m_identificationNumber++, P_NODE,EMPTY); exchangeNodes(m_pertinentRoot,nodePtr); } SListPure<PQLeafKey<edge,whaInfo*,bool>*> castLeafKeys; for (it = leafKeys.begin(); it.valid(); ++it) castLeafKeys.pushBack((PQLeafKey<edge,whaInfo*,bool>*) *it); addNewLeavesToTree(nodePtr,castLeafKeys); } }
// Function ReplaceFullRoot either replaces the full root // or one full child of a partial root of a pertinent subtree // by a single P-node with leaves corresponding the keys stored in leafKeys. void PlanarPQTree::ReplaceFullRoot(SListPure<PlanarLeafKey<indInfo*>*> &leafKeys) { if (!leafKeys.empty() && leafKeys.front() == leafKeys.back()) { //ReplaceFullRoot: replace pertinent root by a single leaf PQLeaf<edge,indInfo*,bool> *leafPtr = OGDF_NEW PQLeaf<edge,indInfo*,bool>(m_identificationNumber++, EMPTY,(PQLeafKey<edge,indInfo*,bool>*)leafKeys.front()); exchangeNodes(m_pertinentRoot,(PQNode<edge,indInfo*,bool>*) leafPtr); if (m_pertinentRoot == m_root) m_root = (PQNode<edge,indInfo*,bool>*) leafPtr; m_pertinentRoot = 0; // check for this emptyAllPertinentNodes } else if (!leafKeys.empty()) // at least two leaves { PQInternalNode<edge,indInfo*,bool> *nodePtr = 0; // dummy //replace pertinent root by a $P$-node if ((m_pertinentRoot->type() == PQNodeRoot::PNode) || (m_pertinentRoot->type() == PQNodeRoot::QNode)) { nodePtr = (PQInternalNode<edge,indInfo*,bool>*)m_pertinentRoot; nodePtr->type(PQNodeRoot::PNode); nodePtr->childCount(0); while (!fullChildren(m_pertinentRoot)->empty()) removeChildFromSiblings(fullChildren(m_pertinentRoot)->popFrontRet()); } else if (m_pertinentRoot->type() == PQNodeRoot::leaf) { nodePtr = OGDF_NEW PQInternalNode<edge,indInfo*,bool>(m_identificationNumber++, PQNodeRoot::PNode,EMPTY); exchangeNodes(m_pertinentRoot,nodePtr); m_pertinentRoot = 0; // check for this emptyAllPertinentNodes } SListPure<PQLeafKey<edge,indInfo*,bool>*> castLeafKeys; SListIterator<PlanarLeafKey<indInfo*>* > it; for (it = leafKeys.begin(); it.valid(); ++it) castLeafKeys.pushBack((PQLeafKey<edge,indInfo*,bool>*) *it); addNewLeavesToTree(nodePtr,castLeafKeys); } }
void UpwardPlanRep::removeSinkArcs(SList<adjEntry> &crossedEdges) { if (crossedEdges.size() == 2) return; SListIterator<adjEntry> itPred = crossedEdges.begin(), it; for(it = itPred.succ(); it.valid() && it.succ().valid(); ++it) { adjEntry adj = *it; if (m_isSinkArc[adj->theEdge()]) { m_Gamma.joinFaces(adj->theEdge()); crossedEdges.delSucc(itPred); it = itPred; continue; } itPred = it; } m_Gamma.setExternalFace(m_Gamma.rightFace(extFaceHandle)); }
// Reduction reduced a set of leaves determined by their keys stored // in leafKeys. Integer redNumber is for debugging only. bool PlanarSubgraphPQTree:: Reduction(SListPure<PlanarLeafKey<whaInfo*>*> &leafKeys, SList<PQLeafKey<edge,whaInfo*,bool>*> &eliminatedKeys, int redNumber) { SListPure<PQLeafKey<edge,whaInfo*,bool>*> castLeafKeys; SListIterator<PlanarLeafKey<whaInfo*>* > it; for (it = leafKeys.begin(); it.valid(); ++it) { castLeafKeys.pushBack((PQLeafKey<edge,whaInfo*,bool>*) *it); #ifdef OGDF_DEBUG if (int(ogdf::debugLevel) >= int(dlHeavyChecks)) { cout << (*it)->print() << endl; } #endif } determineMinRemoveSequence(castLeafKeys,eliminatedKeys); removeEliminatedLeaves(eliminatedKeys); SListIterator<PQLeafKey<edge,whaInfo*,bool>* > itn = castLeafKeys.begin(); SListIterator<PQLeafKey<edge,whaInfo*,bool>* > itp = itn++; for (; itn.valid();) { if ((*itn)->nodePointer()->status()== WHA_DELETE) { itn++; castLeafKeys.delSucc(itp); } else itp = itn++; } if ((*castLeafKeys.begin())->nodePointer()->status() == WHA_DELETE) castLeafKeys.popFront(); return Reduce(castLeafKeys,redNumber); }
bool SDLEntity2D::DeleteAnimation( std::string Name ) { SListIterator<SGZAnimGroup2D*> AnimListITR = AnimList.GetIterator(); for( AnimListITR.Start(); AnimListITR.Valid(); AnimListITR.Forth() ) if((AnimListITR.Item()->AnimName.compare(Name))==0) { AnimListITR.Item()->FrameITR.Start(); while (AnimListITR.Item()->FrameITR.Valid()) { AnimListITR.Item()->FrameList.Remove(AnimListITR.Item()->FrameITR); AnimListITR.Item()->FrameITR.Forth(); } AnimList.Remove(AnimListITR); return true; } SGZLogger.warn("Animation \"%s\" does not exist!\n",Name.c_str()); return false; }
bool SDLAudio::CreateGROUP(int num, std::string name) { /** Check to see if we've already created it */ SListIterator<SGZChanGroup*> GroupListITR = GroupList.GetIterator(); for( GroupListITR.Start(); GroupListITR.Valid(); GroupListITR.Forth() ) if((GroupListITR.Item()->Name.compare(name))==0) { SGZLogger.debug("AudioMAN: Group \"%s\" already created!\n", name.c_str()); return false; } /** Create a channel group */ SGZLogger.debug("AudioMAN: Creating SFX Group \"%s\"\n", name.c_str()); SGZChanGroup *Group; Group = new SGZChanGroup; Group->Name = name; Group->groupNum = num; GroupList.Append(Group); return true; }
bool SDLEntity2D::DeleteAnimation( std::string Name ) { SListIterator<SGZAnimGroup2D*> AnimListITR = AnimList.getIterator(); for( AnimListITR.start(); AnimListITR.valid(); AnimListITR.forth() ) if((AnimListITR.item()->AnimName.compare(Name))==0) { AnimListITR.item()->FrameITR.start(); while (AnimListITR.item()->FrameITR.valid()) { AnimListITR.item()->FrameList.remove(AnimListITR.item()->FrameITR); AnimListITR.item()->FrameITR.forth(); } AnimList.remove(AnimListITR); return true; } SGZ::Logger.log( SGZLOG::Warning, "Animation \"" + Name + "\" does not exist!\n"); return false; }
void CInterpret::Stop( void ) { SGZLogger.debug("SGZInterpretor Stopping...\n"); if(ClientObject) { SGZLogger.debug("Bringing down Client Object\n"); ClientObject->DestroyInterface(); ClientObject=NULL; } if(ServerObject) { SGZLogger.debug("Bringing down Server Object\n"); ServerObject->DestroyInterface(); ServerObject=NULL; } if(ScriptObject) { SGZLogger.debug("Bringing down Script Object\n"); ScriptObject->DestroyInterface(); ScriptObject=NULL; } SGZLogger.debug("Removing remaining Events\n"); SListIterator<IEvent*> EventListITR = EventList.GetIterator(); EventListITR.Start(); while (EventListITR.Valid()) { EventList.Remove(EventListITR); EventListITR.Forth(); } runStatus = false; SGZLogger.debug("SGZInterpretor Stopped Successfully\n"); SGZLogger.warn("SGZEngine Closed.\n"); }
void PlanarSubgraphPQTree:: removeEliminatedLeaves(SList<PQLeafKey<edge,whaInfo*,bool>*> &eliminatedKeys) { PQNode<edge,whaInfo*,bool>* nodePtr = 0; PQNode<edge,whaInfo*,bool>* parent = 0; PQNode<edge,whaInfo*,bool>* sibling = 0; SListIterator<PQLeafKey<edge,whaInfo*,bool>*> it; for (it = eliminatedKeys.begin(); it.valid(); it++) { nodePtr = (*it)->nodePointer(); parent = nodePtr->parent(); sibling = nodePtr->getNextSib(NULL); removeNodeFromTree(parent,nodePtr); checkIfOnlyChild(sibling,parent); if (parent->status() == TO_BE_DELETED) { parent->status(WHA_DELETE); } nodePtr->status(WHA_DELETE); } }