⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plxmmsmessage.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
\**************************************************************************/
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 + -