ALERROR CImageLibrary::AddImage (SDesignLoadCtx &Ctx, CXMLElement *pDesc) // AddImage // // Add an image to the library { ALERROR error; // Create the image desc CObjectImage *pNewImage; if (error = CObjectImage::CreateFromXML(Ctx, pDesc, &pNewImage)) return error; // If we defer loading, at least make sure that the images exist if (pDesc->GetAttributeBool(LOAD_ON_USE_ATTRIB)) { if (error = pNewImage->Exists(Ctx)) { delete pNewImage; return error; } } // Otherwise, load and lock the image else { if (error = pNewImage->Lock(Ctx)) { delete pNewImage; return error; } } // Add to the library if (error = m_Library.AddEntry(pNewImage->GetUNID(), (CObject *)pNewImage)) { if (FindImage(pNewImage->GetUNID())) Ctx.sError = strPatternSubst(CONSTLIT("Duplicate UNID: %x"), pNewImage->GetUNID()); else Ctx.sError = strPatternSubst(CONSTLIT("Unable to add image to library: %x"), pNewImage->GetUNID()); delete pNewImage; return error; } return NOERROR; }