📄 plxmmsmessage.c
字号:
\**************************************************************************/
unsigned char MMS_HUGE* mmsmsg_GetGivenContentData(MmsMessage* msg,
PMMSECONTENT content, long* data_len)
{
long i;
long len;
unsigned char* data = NULL;
READPROC func_read;
#ifdef MMS_DEBUG
PlxTrace("mmsmsg_GetGivenContentData\r\n");
#endif
if(!content)
{
#ifdef MMS_DEBUG
PlxTrace("!content\r\n");
#endif
return NULL;
}
*data_len = 0;
len = content->length;
if(content->type)
{
#ifdef MMS_DEBUG
PlxTrace("content->type=%s\r\n", content->type);
#endif
if(MMS_Strlen(content->type) > 5 &&
content->type[0] == 'i' &&
content->type[1] == 'm' &&
content->type[2] == 'a' &&
content->type[3] == 'g' &&
content->type[4] == 'e')
{
data = (unsigned char*)MMS_MALLOC(sizeof(unsigned char) * (len+8));
}
else
{
data = (unsigned char*)MMS_MALLOC(sizeof(unsigned char) * len+1);
}
}
else
{
data = (unsigned char*)MMS_MALLOC(sizeof(unsigned char) * len);
}
if(!data)
{
#ifdef MMS_DEBUG
PlxTrace("!data\r\n");
#endif
return NULL;
}
if(content->pData) //get data from content
{
MMS_Memcpy((void*)data, (void*)content->pData, len);
*data_len = len;
}
else //from callback
{
func_read = content->read;
len = content->length;
i = 0;
//get content data
while((i = func_read(content->param,
(void MMS_HUGE*)(data+i), len)) > 0)
{
len -= i;
}
*data_len = content->length;
}
#ifdef MMS_DEBUG
PlxTrace("return data, len=%ld\r\n", content->length);
#endif
return data;
}
/***************************************************************************
* Function mmsmsg_HasText
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_HasText(MmsMessage* msg)
{
MMSESLIDEINFO info;
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return FALSE;
return info.pTextContent != NULL;
}
/***************************************************************************
* Function mmsmsg_HasImage
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_HasImage(MmsMessage* msg)
{
MMSESLIDEINFO info;
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return FALSE;
return info.pImageContent != NULL;
}
/***************************************************************************
* Function mmsmsg_HasSound
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_HasSound(MmsMessage* msg)
{
MMSESLIDEINFO info;
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return FALSE;
return info.pAudioContent != NULL;
}
/***************************************************************************
* Function mmsmsg_AddSlide
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_AddSlide(MmsMessage* msg, int type, int dur)
{
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(MMSE_AddSlide(msg->mmse, msg->msg) < 0)
return FALSE;
// MMSE_SetSlideDuration(msg->mmse, msg->msg, dur);
msg->nCurSlide = MMSE_GetCurSlide(msg->mmse, msg->msg);
msg->text_modified = TRUE;
msg->image_modified = TRUE;
msg->sound_modified = TRUE;
msg->message_modified = TRUE;
return TRUE;
}
/***************************************************************************
* Function mmsmsg_DelSlide
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_DelSlide(MmsMessage* msg)
{
// PMMSECONTENT content = NULL;
MMSESLIDEINFO info;
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
//delete add list node
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return FALSE;
if(info.pTextContent && info.pTextContent->param)
al_DelNode(&(msg->add_list), info.pTextContent->param);
if(info.pImageContent && info.pImageContent->param)
al_DelNode(&(msg->add_list), info.pImageContent->param);
if(info.pAudioContent && info.pAudioContent->param)
al_DelNode(&(msg->add_list), info.pAudioContent->param);
if(MMSE_DeleteSlide(msg->mmse, msg->msg) < 0)
return FALSE;
msg->nCurSlide = MMSE_GetCurSlide(msg->mmse, msg->msg);
msg->text_modified = TRUE;
msg->image_modified = TRUE;
msg->sound_modified = TRUE;
msg->message_modified = TRUE;
return TRUE;
}
/*
MMSESlide* mmsmsg_GetSlide(MmsMessage* msg, int index)
{
return NULL;
}
MMSESlide* mmsmsg_GetCurSlide(MmsMessage* msg)
{
return NULL;
}
*/
/***************************************************************************
* Function mmsmsg_GetSlideCount
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
int mmsmsg_GetSlideCount(MmsMessage* msg)
{
if(!msg || !msg->mmse || !msg->msg)
return 0;
return MMSE_GetSlideCount(msg->mmse, msg->msg);
}
/***************************************************************************
* Function mmsmsg_GetCurSlideIndex
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
int mmsmsg_GetCurSlideIndex(MmsMessage* msg)
{
if(!msg || !msg->mmse || !msg->msg)
return 0;
return MMSE_GetCurSlide(msg->mmse, msg->msg);
}
/***************************************************************************
* Function mmsmsg_SetCurSlide
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
int mmsmsg_SetCurSlide(MmsMessage* msg, int index)
{
if(!msg || !msg->mmse || !msg->msg)
return -1;
if(MMSE_SetCurSlide(msg->mmse, msg->msg, index) < 0)
return -1;
msg->nCurSlide = MMSE_GetCurSlide(msg->mmse, msg->msg);
return 0;
}
/***************************************************************************
* Function mmsmsg_NextSlide
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
int mmsmsg_NextSlide(MmsMessage* msg)
{
if(!msg || !msg->mmse || !msg->msg)
return -1;
if(MMSE_SetCurSlide(msg->mmse, msg->msg, msg->nCurSlide+1) < 0)
return -1;
msg->nCurSlide++;
return msg->nCurSlide;
}
/***************************************************************************
* Function mmsmsg_PrevSlide
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
int mmsmsg_PrevSlide(MmsMessage* msg)
{
if(!msg || !msg->mmse || !msg->msg)
return -1;
if(MMSE_SetCurSlide(msg->mmse, msg->msg, msg->nCurSlide-1) < 0)
return -1;
msg->nCurSlide--;
return msg->nCurSlide;
}
/***************************************************************************
* Function mmsmsg_SetImageFirst
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void mmsmsg_SetImageFirst(MmsMessage* msg)
{
MMSESLIDEINFO info;
PMMSEREGION pTextRegion;
PMMSEREGION pImageRegion;
if(!msg || !msg->mmse || !msg->msg)
return;
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return;
pTextRegion = info.pTextRegion;
pImageRegion = info.pImageRegion;
if(!pImageRegion ||
!pTextRegion)
return;
if(pImageRegion->top < pTextRegion->top)
return;
pImageRegion->top = 0;
pTextRegion->top = 100;
msg->message_modified = TRUE;
}
/***************************************************************************
* Function mmsmsg_SetTextFirst
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void mmsmsg_SetTextFirst(MmsMessage* msg)
{
MMSESLIDEINFO info;
PMMSEREGION pTextRegion;
PMMSEREGION pImageRegion;
if(!msg || !msg->mmse || !msg->msg)
return;
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return;
pTextRegion = info.pTextRegion;
pImageRegion = info.pImageRegion;
if(!pImageRegion ||
!pTextRegion)
return;
if(pTextRegion->top < pImageRegion->top)
return;
pImageRegion->top = 100;
pTextRegion->top = 0;
msg->message_modified = TRUE;
}
/***************************************************************************
* Function mmsmsg_IsImageFirst
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_IsImageFirst(MmsMessage* msg)
{
MMSESLIDEINFO info;
PMMSEREGION pTextRegion;
PMMSEREGION pImageRegion;
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return FALSE;
pTextRegion = info.pTextRegion;
pImageRegion = info.pImageRegion;
if(!pTextRegion && !pImageRegion)
return TRUE;
if(pTextRegion && !pImageRegion)
return FALSE;
if(!pTextRegion && pImageRegion)
return TRUE;
if(pTextRegion->top > pImageRegion->top)
return TRUE;
else
return FALSE;
return TRUE;
}
/***************************************************************************
* Function mmsmsg_IsTextFirst
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_IsTextFirst(MmsMessage* msg)
{
MMSESLIDEINFO info;
PMMSEREGION pTextRegion;
PMMSEREGION pImageRegion;
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
return FALSE;
pTextRegion = info.pTextRegion;
pImageRegion = info.pImageRegion;
if(!pTextRegion && !pImageRegion)
return FALSE;
if(pTextRegion && !pImageRegion)
return TRUE;
if(!pTextRegion && pImageRegion)
return FALSE;
if(pTextRegion->top > pImageRegion->top)
return FALSE;
else
return TRUE;
return FALSE;
}
/***************************************************************************
* Function mmsmsg_GetMessageSize
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
long mmsmsg_GetMessageSize(MmsMessage* msg)
{
MMSEMSGINFO info;
if(!msg || !msg->mmse || !msg->msg)
return 0;
if(MMSE_GetInfo(msg->mmse, msg->msg, &info) < 0)
return 0;
return info.length;
}
/***************************************************************************
* Function mmsmsg_GetMaxMessageSize
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
long mmsmsg_GetMaxMessageSize(MmsMessage* msg)
{
MMSEOPTION option;
if(!msg || !msg->mmse)
return 0;
if(MMSE_GetOption(msg->msg, &option) < 0)
return 0;
return option.MaxSendSize * 1024;
// return MAXMMSSIZE;
}
/***************************************************************************
* Function mmsmsg_GetLeftMessageSize
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
long mmsmsg_GetLeftMessageSize(MmsMessage* msg)
{
long max_size;
long msg_size;
if(!msg || !msg->mmse || !msg->msg)
return 0;
max_size = mmsmsg_GetMaxMessageSize(msg);
if(max_size == 0)
return 0;
msg_size = mmsmsg_GetMessageSize(msg);
if(msg_size < 0)
msg_size = 0;//return 0;
else if(msg_size > max_size)
msg_size = max_size;
return (max_size-msg_size);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -