ALERROR CCompositeEntry::InitFromXML (SDesignLoadCtx &Ctx, CIDCounter &IDGen, CXMLElement *pDesc) // InitFromXML // // Initialize from XML { ALERROR error; int i; m_dwID = IDGen.GetID(); // Load each sub-entry in turn int iCount = pDesc->GetContentElementCount(); if (iCount == 0) return NOERROR; m_Layers.InsertEmpty(iCount); for (i = 0; i < iCount; i++) { if (error = CCompositeImageDesc::InitEntryFromXML(Ctx, pDesc->GetContentElement(i), IDGen, &m_Layers[i])) return error; } // Done return NOERROR; }
ALERROR CLocationCriteriaTableEntry::InitFromXML (SDesignLoadCtx &Ctx, CIDCounter &IDGen, CXMLElement *pDesc) // InitFromXML // // Initialize from XML { ALERROR error; int i; m_dwID = IDGen.GetID(); m_iDefault = -1; // Load each sub-entry in turn int iCount = pDesc->GetContentElementCount(); if (iCount == 0) return NOERROR; m_Table.InsertEmpty(iCount); for (i = 0; i < iCount; i++) { CXMLElement *pItem = pDesc->GetContentElement(i); if (error = CCompositeImageDesc::InitEntryFromXML(Ctx, pItem, IDGen, &m_Table[i].pImage)) return error; // Load the criteria CString sCriteria = pItem->GetAttribute(CRITERIA_ATTRIB); if (error = m_Table[i].Criteria.Parse(sCriteria, 0, &Ctx.sError)) return error; if (m_iDefault == -1 && m_Table[i].Criteria.MatchesDefault()) m_iDefault = i; } // If we don't have a default, the pick the last item. if (m_iDefault == -1 && m_Table.GetCount() > 0) m_iDefault = m_Table.GetCount() - 1; // Done return NOERROR; }
ALERROR CImageEntry::InitFromXML (SDesignLoadCtx &Ctx, CIDCounter &IDGen, CXMLElement *pDesc) // InitFromXML // // Initialize from XML { ALERROR error; m_dwID = IDGen.GetID(); // Initialize the image if (error = m_Image.InitFromXML(Ctx, pDesc)) return error; return NOERROR; }
ALERROR CEffectEntry::InitFromXML (SDesignLoadCtx &Ctx, CIDCounter &IDGen, CXMLElement *pDesc) // InitFromXML // // Initialize from XML { ALERROR error; m_dwID = IDGen.GetID(); // Load if (error = m_pEffect.LoadEffect(Ctx, NULL_STR, pDesc, pDesc->GetAttribute(EFFECT_ATTRIB))) return error; // Done return NOERROR; }
ALERROR CFilterColorizeEntry::InitFromXML (SDesignLoadCtx &Ctx, CIDCounter &IDGen, CXMLElement *pDesc) // InitFromXML // // Initialize from XML { ALERROR error; m_dwID = IDGen.GetID(); CString sColor; if (pDesc->FindAttribute(COLOR_ATTRIB, &sColor)) { COLORREF rgbColor = LoadCOLORREF(sColor); SColorHSB hsbColor = CG16bitPixel::RGBToHSB(CG16bitPixel::RGBToRGBReal(rgbColor)); m_dwHue = (DWORD)hsbColor.rHue; m_dwSaturation = (DWORD)(hsbColor.rSaturation * 100.0); } else { m_dwHue = pDesc->GetAttributeIntegerBounded(HUE_ATTRIB, 0, 359, 0); m_dwSaturation = pDesc->GetAttributeIntegerBounded(SATURATION_ATTRIB, 0, 100, 100); } // Load sub-entry if (pDesc->GetContentElementCount() == 0) return NOERROR; if (error = CCompositeImageDesc::InitEntryFromXML(Ctx, pDesc->GetContentElement(0), IDGen, &m_pSource)) return error; // Done return NOERROR; }
ALERROR CTableEntry::InitFromXML (SDesignLoadCtx &Ctx, CIDCounter &IDGen, CXMLElement *pDesc) // InitFromXML // // Initialize from XML { ALERROR error; int i; m_dwID = IDGen.GetID(); // Load each sub-entry in turn int iCount = pDesc->GetContentElementCount(); if (iCount == 0) return NOERROR; m_iTotalChance = 0; m_Table.InsertEmpty(iCount); for (i = 0; i < iCount; i++) { CXMLElement *pItem = pDesc->GetContentElement(i); if (error = CCompositeImageDesc::InitEntryFromXML(Ctx, pItem, IDGen, &m_Table[i].pImage)) return error; // Load the chance m_Table[i].iChance = pItem->GetAttributeIntegerBounded(CHANCE_ATTRIB, 0, -1, 1); m_iTotalChance += m_Table[i].iChance; } // Done return NOERROR; }