void *NclStructureConverter::createBody( DOMElement *parentElement, void *objGrandParent) { // criar composicao a partir do elemento body do documento ncl // fazer uso do nome da composicao body que foi atribuido pelo // compilador NclDocument *document; ContextNode *context; document = (NclDocument*) getDocumentParser()-> getObject("return", "document"); if (!parentElement->hasAttribute(XMLString::transcode("id"))) { parentElement->setAttribute(XMLString::transcode("id"), XMLString::transcode(document->getId().c_str())); context = (ContextNode*)((NclComponentsConverter*) getComponentsParser())->createContext( parentElement, objGrandParent); parentElement->removeAttribute(XMLString::transcode("id")); } else { context = (ContextNode*)((NclComponentsConverter*) getComponentsParser())->createContext( parentElement, objGrandParent); } document->setBody(context); return context; }
void NclLayoutConverter::addImportBaseToRegionBase( void *parentObject, void *childObject) { map<int, RegionBase*>* bases; map<int, RegionBase*>::iterator i; string baseAlias, baseLocation; NclDocumentConverter *compiler; NclDocument *importedDocument; // get the external base alias and location baseAlias = XMLString::transcode(((DOMElement*)childObject)-> getAttribute(XMLString::transcode("alias"))); baseLocation = XMLString::transcode(((DOMElement*)childObject)-> getAttribute(XMLString::transcode("documentURI")) ); compiler = (NclDocumentConverter*)getDocumentParser(); importedDocument = compiler->importDocument(baseLocation); if (importedDocument == NULL) { return; } bases = importedDocument->getRegionBases(); if (bases == NULL || bases->empty()) { return; } // insert the imported base into the document region base i = bases->begin(); while (i != bases->end()) { ((RegionBase*) parentObject)->addBase( i->second, baseAlias, baseLocation); ++i; } }
void NclStructureConverter::addDescriptorBaseToHead( void *parentObject, void *childObject) { NclDocument *document; document = (NclDocument*)getDocumentParser()-> getObject("return", "document"); document->setDescriptorBase((DescriptorBase*) childObject); }
void NclStructureConverter::addMetadataToHead( void* parentObject, void* childObject) { NclDocument* document; document = (NclDocument*)getDocumentParser()-> getObject("return", "document"); document->addMetadata((Metadata*)childObject); }
void NclStructureConverter::addTransitionBaseToHead( void* parentObject, void* childObject) { NclDocument* document; document = (NclDocument*)(getDocumentParser()-> getObject("return", "document")); wclog << "NclStructureConverter::addTransitionBaseToHead "; wclog << "setTransitionBase" << endl; document->setTransitionBase((TransitionBase*)childObject); }
void NclStructureConverter::solveNodeReferences(CompositeNode *composition) { vector<Node*>* nodes; Node *node; NodeEntity *nodeEntity; Entity *referredNode; if (composition->instanceOf("SwitchNode")) { nodes = ((NclPresentationControlConverter*) getPresentationControlParser())-> getSwitchConstituents((SwitchNode*) composition); } else { nodes = composition->getNodes(); } if (nodes == NULL) { return; } vector<Node*>::iterator it; for (it = nodes->begin(); it != nodes->end(); ++it) { node = *it; if (node != NULL) { if (node->instanceOf("ReferNode")) { referredNode = ((ReferNode*)node)->getReferredEntity(); if (referredNode != NULL) { if (referredNode->instanceOf("ReferredNode")) { nodeEntity = (NodeEntity*)(((NclDocumentConverter*) getDocumentParser())-> getNode(referredNode->getId())); if (nodeEntity != NULL) { ((ReferNode*)node)->setReferredEntity( nodeEntity->getDataEntity()); } else { cout << "The media element refers to "; cout << referredNode->getId().c_str(); cout << " object, which was not declared"; cout << " before" << endl; } } } } else if (node->instanceOf("CompositeNode")) { solveNodeReferences((CompositeNode*) node); } } } }
void *NclStructureConverter::createNcl( DOMElement *parentElement, void *objGrandParent) { string docName; NclDocument *document; if(parentElement->hasAttribute(XMLString::transcode("id"))) { docName = XMLString::transcode(parentElement->getAttribute( XMLString::transcode("id"))); } if (docName == "") { docName = "nclDocument"; } document = new NclDocument(docName); getDocumentParser()->addObject("return", "document", document); return document; }
bptnl::LayoutRegion* NclLayoutConverter::createDummyRegBase(){ bptn::NclDocument *document; bptnl::Device device = { "systemScreen(0)", 0}; LDEBUG("NclLayoutConverter", "Creating dummy region"); bptnl::LayoutRegion *region = new bptnl::LayoutRegion( "dummyRegion" ); document = (bptn::NclDocument*) getDocumentParser()->getObject( "return", "document" ); bptnl::RegionBase *aRegionBase = document->getRegionBase( 0 ); if ( aRegionBase == NULL ) { aRegionBase = new bptnl::RegionBase( "dummyRegionBase" ); aRegionBase->setDevice( device, "" ); document->addRegionBase( aRegionBase ); } addRegionToRegionBase(aRegionBase, region); return region; }