BOOL CImageCelsSourceXML::ImportCels(CMarkupTag* pcCelsTag, char* szFileName) { STagIterator sIter; CSubImageXML cSubImageXML; CMarkupTag* pcCelTag; CArraySubImage acSubImages; CSubImage* pcSubImage; BOOL bResult; CImageCelSourceSubImages cSubImagesSource; CImageCelsSource cCelsSource; CChars szGroupName; CFileUtil cFileUtil; Ptr<CImageCelGroup> pcGroup; acSubImages.Init(); pcCelTag = pcCelsTag->GetTag("Cel", &sIter); while (pcCelTag) { pcSubImage = acSubImages.Add(); bResult = cSubImageXML.Import(pcCelTag, pcSubImage); if (!bResult) { acSubImages.Kill(); return FALSE; } pcCelTag = pcCelsTag->GetNextTag(&sIter); } cSubImagesSource.Init(&acSubImages); szGroupName.Init(szFileName); cFileUtil.RemovePath(&szGroupName); cCelsSource.Init(); cCelsSource.AddDiskFileSource(szFileName, szGroupName.Text(), &cSubImagesSource); cCelsSource.Load(); mpcWorld->AddImages(cCelsSource.GetImages()); pcGroup = ONMalloc(CImageCelGroup, szGroupName.Text()); mpcWorld->AddGroup(pcGroup); pcGroup->AddCels(cCelsSource.GetImageCels()); szGroupName.Kill(); cSubImagesSource.Kill(); cCelsSource.Kill(); acSubImages.Kill(); return TRUE; }