BOOL KInlinePicSink::Init(iRepresentShell* pShell) { m_pRepShell = pShell; if (!m_pRepShell) return FALSE; KIniFile ini; #define CHAR_BUFFER_LEN 32 char szBuffer[CHAR_BUFFER_LEN * 2], szIndex[8]; int nPicCount = 0, i = 0; KUiImageRef CurrentImg; KImageParam Param; if (!ini.Load(CHAT_FACE_INI_FILE)) return FALSE; //ini.GetString("Main", "Path", "\\spr\\Ui\\聊天\\表情", szPath, CHAR_BUFFER_LEN); ini.GetInteger("List", "Count", 0, &nPicCount); if (nPicCount > MAX_SYSTEM_INLINE_PICTURES) nPicCount = MAX_SYSTEM_INLINE_PICTURES; for (i = 0; i < nPicCount; i++) { sprintf(szIndex, "Face%d", i + 1); if (!ini.GetString(szIndex, "Spr", "", szBuffer, CHAR_BUFFER_LEN)) { _ASSERT(0); break; } IR_InitUiImageRef(CurrentImg); CurrentImg.nFlipTime = 0; CurrentImg.nInterval = 0; CurrentImg.nNumFrames = 0; strncpy(CurrentImg.szImage, szBuffer, sizeof(CurrentImg.szImage)); CurrentImg.szImage[sizeof(CurrentImg.szImage) - 1] = 0; CurrentImg.bRenderFlag = RUIMAGE_RENDER_FLAG_REF_SPOT; CurrentImg.nType = ISI_T_SPR; memset(&Param, 0, sizeof(Param)); pShell->GetImageParam(CurrentImg.szImage, &Param, CurrentImg.nType); m_Images.push_back(CurrentImg); m_ImageParams.push_back(Param); } if (FAILED(m_pRepShell->AdviseRepresent(this))) return FALSE; if (FAILED(AdviseEngine(this))) return FALSE; return TRUE; }
//动态加载图片,获取一个WORD,即图片的索引 long KInlinePicSink::AddCustomInlinePic(unsigned short& rwIndex, const char* szSprPathName) { KUiImageRef CurrentImg; KImageParam Param; int i = 0, nSize = 0; rwIndex = -1; if (!szSprPathName || !szSprPathName[0]) return E_FAIL; IR_InitUiImageRef(CurrentImg); CurrentImg.nFlipTime = 0; CurrentImg.nInterval = 0; CurrentImg.nNumFrames = 0; strncpy(CurrentImg.szImage, szSprPathName, sizeof(CurrentImg.szImage)); CurrentImg.szImage[sizeof(CurrentImg.szImage) - 1] = 0; CurrentImg.bRenderFlag = RUIMAGE_RENDER_FLAG_REF_SPOT; CurrentImg.nType = ISI_T_SPR; memset(&Param, 0, sizeof(Param)); if (!m_pRepShell->GetImageParam(CurrentImg.szImage, &Param, CurrentImg.nType)) return E_FAIL; for (i = 0, nSize = (int)m_CustomImages.size(); i < nSize; i++) { if (0 == m_CustomImages[i].szImage[0]) { m_CustomImages[i] = CurrentImg; m_CustomImageParams[i] = Param; break; } } if (i >= nSize) { m_CustomImages.push_back(CurrentImg); m_CustomImageParams.push_back(Param); } rwIndex = i + MAX_SYSTEM_INLINE_PICTURES; return S_OK; }
/* .-~~-.--. : ) .~ ~ -.\ /.- ~~ . > `. .' < ( .- -. ) `- -.-~ `- -' ~-.- -' ( : ) _ _ .-: ~--. : .--~ .-~ .-~ } ~-.-^-.-~ \_ .~ .-~ .~ \ \' \ '_ _ -~ `.`. // . - ~ ~-.__`.`-.// .-~ . - ~ }~ ~ ~-.~-. .' .-~ .-~ :/~-.~-./: /_~_ _ . - ~ ~-.~-._ ~-.< (给你,最可爱的人 :) //初始化头像 */ int KUiPortrait::InitializeProtrait() { KIniFile Ini; if(Ini.Load(PORTRAIT_IMAGE_INI)) { Ini.GetInteger("Main", "Count", 0, &m_PortraitParam.nPortraitCount); Ini.GetInteger("Main", "Width", 0, &m_PortraitParam.nPortraitWidth); Ini.GetInteger("Main", "Height", 0, &m_PortraitParam.nPortraitHeight); if(m_pImage) { delete m_pImage; m_pImage = NULL; } m_pImage = new KUiImageRef[m_PortraitParam.nPortraitCount + 1]; if(m_pImage) { char szBuf[8]; for(int i = 1;i < m_PortraitParam.nPortraitCount + 1;i++) { IR_InitUiImageRef(m_pImage[i]); Ini.GetString("Image", itoa(i, szBuf, 10), "", m_pImage[i].szImage, sizeof(m_pImage[i].szImage)); m_pImage[i].bRenderFlag = RUIMAGE_RENDER_FLAG_REF_SPOT; m_pImage[i].nType = ISI_T_SPR; m_pImage[i].nFlipTime = 0; m_pImage[i].nInterval = 0; m_pImage[i].nNumFrames = 0; m_pImage[i].Color.Color_b.r = 0; m_pImage[i].Color.Color_b.g = 0; m_pImage[i].Color.Color_b.b = 0; m_pImage[i].Color.Color_b.a = LOLIGHT_ALPHA; } return 1; } } return 0; }
//-------------------------------------------------------------------------- // 功能:构造函数 //-------------------------------------------------------------------------- KWndImage::KWndImage() { IR_InitUiImageRef(m_Image); }