2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <MsgHandle.h>
21 #include <MsgException.h>
23 #include "MsgMmsTypes.h"
24 #include "MsgMmsMessage.h"
28 #include "msg_private.h"
31 typedef struct _MMS_DATA_S
36 GList *transitionlist;
38 MMS_SMIL_ROOTLAYOUT rootlayout;
39 MMS_APPID_INFO_S msgAppId;
44 MmsSmilMediaType mediatype; /**< Indicates the SMIL media type. see enum MmsSmilMediaType */
46 char szSrc[MSG_FILEPATH_LEN_MAX + 1];/**< Indicates the media source name */
47 char szFileName[MSG_FILENAME_LEN_MAX + 1]; /**< Indicates the file name */
48 char szFilePath[MSG_FILEPATH_LEN_MAX + 1]; /**< Indicates the file path */
49 char szContentID[MSG_MSG_ID_LEN + 1]; /**< Indicates the content id */
50 char regionId[MAX_SMIL_REGION_ID + 1]; /**< Indicates the region id */
51 char szAlt[MAX_SMIL_ALT_LEN + 1]; /**< Indicates the alternative text to be displayed in failure case */
52 MsgDrmType drmType; /**< Indicates the drm type. see enum MsgDrmType */
53 char szDrm2FullPath[MSG_FILEPATH_LEN_MAX + 1]; /**< Indicates the fullpath of the DRM */
58 static void __msg_mms_release_mms(msg_struct_s *mms_struct);
59 static void __msg_mms_release_page(msg_struct_s *page_struct);
60 static void __msg_mms_release_media(msg_struct_s *media_struct);
61 static void __msg_mms_release_region(msg_struct_s *region_struct);
62 static void __msg_mms_release_attach(msg_struct_s *attach_struct);
63 static void __msg_mms_release_transition(msg_struct_s *transition_struct);
64 static void __msg_mms_release_meta(msg_struct_s *meta_struct);
66 /*==================================================================================================
67 FUNCTION IMPLEMENTATION
68 ==================================================================================================*/
69 static inline void *get_msg_struct_data(msg_struct_s *msg_struct)
71 if (msg_struct == NULL)
74 return msg_struct->data;
77 msg_struct_s *msg_mms_create_struct(int type)
79 msg_struct_s *msg_struct = new msg_struct_s;
80 bzero(msg_struct, sizeof(msg_struct_s));
82 msg_struct->type = type;
83 msg_struct->data = msg_mms_create_struct_data(type);
88 void *msg_mms_create_struct_data(int field)
95 data = (void *)new MMS_DATA_HIDDEN_S;
96 bzero(data, sizeof(MMS_DATA_HIDDEN_S));
98 case MSG_STRUCT_MMS_PAGE:
99 data = (void *)new MMS_PAGE_S;
100 bzero(data, sizeof(MMS_PAGE_S));
102 case MSG_STRUCT_MMS_MEDIA:
104 MMS_MEDIA_HIDDEN_S *media = new MMS_MEDIA_HIDDEN_S;
105 bzero(media, sizeof(MMS_MEDIA_HIDDEN_S));
107 media->pText = msg_mms_create_struct(MSG_STRUCT_MMS_SMIL_TEXT);
108 media->pAVI = msg_mms_create_struct(MSG_STRUCT_MMS_SMIL_AVI);
109 data = (void *)media;
112 case MSG_STRUCT_MMS_ATTACH:
113 data = (void *)new MMS_ATTACH_S;
114 bzero(data, sizeof(MMS_ATTACH_S));
116 case MSG_STRUCT_MMS_REGION:
117 data = (void *)new MMS_SMIL_REGION;
118 bzero(data, sizeof(MMS_SMIL_REGION));
119 ((MMS_SMIL_REGION *)data)->fit = MMSUI_IMAGE_REGION_FIT_MEET;
121 case MSG_STRUCT_MMS_TRANSITION:
122 data = (void *)new MMS_SMIL_TRANSITION;
123 bzero(data, sizeof(MMS_SMIL_TRANSITION));
125 case MSG_STRUCT_MMS_META:
126 data = (void *)new MMS_SMIL_META;
127 bzero(data, sizeof(MMS_SMIL_META));
129 case MSG_STRUCT_MMS_SMIL_TEXT:
130 data = (void *)new MmsSmilText;
131 bzero(data, sizeof(MmsSmilText));
133 case MSG_STRUCT_MMS_SMIL_AVI:
134 data = (void *)new MmsSmilAVI;
135 bzero(data, sizeof(MmsSmilAVI));
142 void msg_mms_list_item_free_func(gpointer data)
144 msg_struct_s *msg_struct = (msg_struct_s *)data;
145 if (msg_struct->type == MSG_STRUCT_MMS_MEDIA) {
146 __msg_mms_release_media(msg_struct);
147 } else if (msg_struct->type == MSG_STRUCT_MMS_PAGE) {
148 __msg_mms_release_page(msg_struct);
149 } else if (msg_struct->type == MSG_STRUCT_MMS_ATTACH) {
150 __msg_mms_release_attach(msg_struct);
151 } else if (msg_struct->type == MSG_STRUCT_MMS_REGION) {
152 __msg_mms_release_region(msg_struct);
153 } else if (msg_struct->type == MSG_STRUCT_MMS_TRANSITION) {
154 __msg_mms_release_transition(msg_struct);
155 } else if (msg_struct->type == MSG_STRUCT_MMS_META) {
156 __msg_mms_release_meta(msg_struct);
160 void __msg_mms_release_page(msg_struct_s *page_struct)
162 MMS_PAGE_S *page = (MMS_PAGE_S *)page_struct->data;
163 if (page->medialist) {
164 g_list_free_full(page->medialist, msg_mms_list_item_free_func);
167 delete (MMS_PAGE_S *)page;
168 page_struct->data = NULL;
173 void __msg_mms_release_media(msg_struct_s *media_struct)
175 MMS_MEDIA_HIDDEN_S *media = (MMS_MEDIA_HIDDEN_S *)media_struct->data;
178 msg_mms_release_struct(&media->pText);
181 msg_mms_release_struct(&media->pAVI);
183 delete (MMS_MEDIA_HIDDEN_S *)media;
185 media_struct->data = NULL;
190 void __msg_mms_release_attach(msg_struct_s *attach_struct)
192 MMS_ATTACH_S *attach = (MMS_ATTACH_S *)attach_struct->data;
194 delete (MMS_ATTACH_S *)attach;
196 attach_struct->data = NULL;
198 delete attach_struct;
201 void __msg_mms_release_region(msg_struct_s *region_struct)
203 MMS_SMIL_REGION *region = (MMS_SMIL_REGION *)region_struct->data;
205 delete (MMS_SMIL_REGION *)region;
207 region_struct->data = NULL;
209 delete region_struct;
212 void __msg_mms_release_transition(msg_struct_s *transition_struct)
214 MMS_SMIL_TRANSITION *transition = (MMS_SMIL_TRANSITION *)transition_struct->data;
216 delete (MMS_SMIL_TRANSITION *)transition;
218 transition_struct->data = NULL;
220 delete transition_struct;
223 void __msg_mms_release_meta(msg_struct_s *meta_struct)
225 MMS_SMIL_META *meta = (MMS_SMIL_META *)meta_struct->data;
227 delete (MMS_SMIL_META *)meta;
229 meta_struct->data = NULL;
234 void __msg_mms_release_mms(msg_struct_s *mms_struct)
236 MMS_DATA_HIDDEN_S *mms = (MMS_DATA_HIDDEN_S *)mms_struct->data;
239 g_list_free_full(mms->pagelist, msg_mms_list_item_free_func);
240 mms->pagelist = NULL;
243 if (mms->regionlist) {
244 g_list_free_full(mms->regionlist, msg_mms_list_item_free_func);
245 mms->regionlist = NULL;
248 if (mms->attachlist) {
249 g_list_free_full(mms->attachlist, msg_mms_list_item_free_func);
250 mms->attachlist = NULL;
253 if (mms->transitionlist) {
254 g_list_free_full(mms->transitionlist, msg_mms_list_item_free_func);
255 mms->transitionlist = NULL;
259 g_list_free_full(mms->metalist, msg_mms_list_item_free_func);
260 mms->metalist = NULL;
263 delete (MMS_DATA_HIDDEN_S *)mms;
265 mms_struct->data = NULL;
270 int msg_mms_release_struct(msg_struct_s **msg_struct_data)
272 msg_struct_s *msg_struct = (msg_struct_s *)*msg_struct_data;
273 int type = msg_struct->type;
278 __msg_mms_release_mms(*msg_struct_data);
279 *msg_struct_data = NULL;
281 case MSG_STRUCT_MMS_PAGE:
282 __msg_mms_release_page(*msg_struct_data);
283 *msg_struct_data = NULL;
285 case MSG_STRUCT_MMS_MEDIA:
286 __msg_mms_release_media(*msg_struct_data);
287 *msg_struct_data = NULL;
289 case MSG_STRUCT_MMS_ATTACH:
290 __msg_mms_release_attach(*msg_struct_data);
291 *msg_struct_data = NULL;
293 case MSG_STRUCT_MMS_REGION:
294 __msg_mms_release_attach(*msg_struct_data);
295 *msg_struct_data = NULL;
297 case MSG_STRUCT_MMS_TRANSITION:
298 __msg_mms_release_transition(*msg_struct_data);
299 *msg_struct_data = NULL;
301 case MSG_STRUCT_MMS_META:
302 __msg_mms_release_meta(*msg_struct_data);
303 *msg_struct_data = NULL;
305 case MSG_STRUCT_MMS_SMIL_TEXT:
306 delete (MmsSmilText*)msg_struct->data;
308 *msg_struct_data = NULL;
310 case MSG_STRUCT_MMS_SMIL_AVI:
311 delete (MmsSmilAVI*)msg_struct->data;
313 *msg_struct_data = NULL;
320 int msg_mms_get_int_value(msg_struct_s *msg_struct, int field, int *value)
322 msg_error_t err = MSG_SUCCESS;
324 switch(msg_struct->type) {
327 MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data;
328 if (field == MSG_MMS_ROOTLAYOUT_WIDTH_INT)
329 *value = mms_data->rootlayout.width.value;
330 else if (field == MSG_MMS_ROOTLAYOUT_HEIGHT_INT)
331 *value = mms_data->rootlayout.height.value;
332 else if (field == MSG_MMS_ROOTLAYOUT_BGCOLOR_INT)
333 *value = mms_data->rootlayout.bgColor;
335 err = MSG_ERR_INVALID_PARAMETER;
338 case MSG_STRUCT_MMS_PAGE:
340 MMS_PAGE_S *mms_page_data = (MMS_PAGE_S *)msg_struct->data;
341 if (field == MSG_MMS_PAGE_PAGE_DURATION_INT)
342 *value = mms_page_data->nDur;
343 else if (field == MSG_MMS_PAGE_BEGIN_TIME_INT)
344 *value = mms_page_data->nBegin;
345 else if (field == MSG_MMS_PAGE_END_TIME_INT)
346 *value = mms_page_data->nEnd;
347 else if (field == MSG_MMS_PAGE_MIN_INT)
348 *value = mms_page_data->nMin;
349 else if (field == MSG_MMS_PAGE_MAX_INT)
350 *value = mms_page_data->nMax;
351 else if (field == MSG_MMS_PAGE_REPEAT_INT)
352 *value = mms_page_data->nRepeat;
354 err = MSG_ERR_INVALID_PARAMETER;
357 case MSG_STRUCT_MMS_MEDIA:
359 MMS_MEDIA_S *mms_media_data = (MMS_MEDIA_S *)msg_struct->data;
360 if (field == MSG_MMS_MEDIA_TYPE_INT)
361 *value = mms_media_data->mediatype;
362 else if (field == MSG_MMS_MEDIA_DRM_TYPE_INT)
363 *value = mms_media_data->drmType;
365 err = MSG_ERR_INVALID_PARAMETER;
368 case MSG_STRUCT_MMS_ATTACH:
370 MMS_ATTACH_S *mms_attach_data = (MMS_ATTACH_S *)msg_struct->data;
371 if (field == MSG_MMS_ATTACH_MIME_TYPE_INT)
372 *value = mms_attach_data->mediatype;
373 else if (field == MSG_MMS_ATTACH_FILESIZE_INT)
374 *value = mms_attach_data->fileSize;
375 else if (field == MSG_MMS_ATTACH_DRM_TYPE_INT)
376 *value = mms_attach_data->drmType;
378 err = MSG_ERR_INVALID_PARAMETER;
381 case MSG_STRUCT_MMS_REGION:
383 MMS_SMIL_REGION *mms_region_data = (MMS_SMIL_REGION *)msg_struct->data;
384 if (field == MSG_MMS_REGION_LENGTH_LEFT_INT)
385 *value = mms_region_data->nLeft.value;
386 else if (field == MSG_MMS_REGION_LENGTH_TOP_INT)
387 *value = mms_region_data->nTop.value;
388 else if (field == MSG_MMS_REGION_LENGTH_WIDTH_INT)
389 *value = mms_region_data->width.value;
390 else if (field == MSG_MMS_REGION_LENGTH_HEIGHT_INT)
391 *value = mms_region_data->height.value;
392 else if (field == MSG_MMS_REGION_BGCOLOR_INT)
393 *value = mms_region_data->bgColor;
394 else if (field == MSG_MMS_REGION_FIT_TYPE_INT)
395 *value = mms_region_data->fit;
397 err = MSG_ERR_INVALID_PARAMETER;
400 case MSG_STRUCT_MMS_TRANSITION:
402 MMS_SMIL_TRANSITION *mms_transition_data = (MMS_SMIL_TRANSITION *)msg_struct->data;
403 if (field == MSG_MMS_TRANSITION_TYPE_INT)
404 *value = mms_transition_data->nType;
405 else if (field == MSG_MMS_TRANSITION_SUBTYPE_INT)
406 *value = mms_transition_data->nSubType;
407 else if (field == MSG_MMS_TRANSITION_DURATION_INT)
408 *value = mms_transition_data->nDur;
410 err = MSG_ERR_INVALID_PARAMETER;
413 case MSG_STRUCT_MMS_SMIL_TEXT:
415 MmsSmilText *mms_smil_text_data = (MmsSmilText *)msg_struct->data;
416 if (field == MSG_MMS_SMIL_TEXT_REPEAT_INT)
417 *value = mms_smil_text_data->nRepeat;
418 else if (field == MSG_MMS_SMIL_TEXT_BEGIN_INT)
419 *value = mms_smil_text_data->nBegin;
420 else if (field == MSG_MMS_SMIL_TEXT_END_INT)
421 *value = mms_smil_text_data->nEnd;
422 else if (field == MSG_MMS_SMIL_TEXT_DURTIME_INT)
423 *value = mms_smil_text_data->nDurTime;
424 else if (field == MSG_MMS_SMIL_TEXT_BGCOLOR_INT)
425 *value = mms_smil_text_data->nBgColor;
426 else if (field == MSG_MMS_SMIL_TEXT_DIRECTION_TYPE_INT)
427 *value = mms_smil_text_data->nDirection;
428 else if (field == MSG_MMS_SMIL_TEXT_SIZE_INT)
429 *value = mms_smil_text_data->nSize;
430 else if (field == MSG_MMS_SMIL_TEXT_COLOR_INT)
431 *value = mms_smil_text_data->nColor;
433 err = MSG_ERR_INVALID_PARAMETER;
436 case MSG_STRUCT_MMS_SMIL_AVI:
438 MmsSmilAVI *mms_smil_avi_data = (MmsSmilAVI *)msg_struct->data;
439 if (field == MSG_MMS_SMIL_AVI_REPEAT_INT)
440 *value = mms_smil_avi_data->nRepeat;
441 else if (field == MSG_MMS_SMIL_AVI_BEGIN_INT)
442 *value = mms_smil_avi_data->nBegin;
443 else if (field == MSG_MMS_SMIL_AVI_END_INT)
444 *value = mms_smil_avi_data->nEnd;
445 else if (field == MSG_MMS_SMIL_AVI_DURTIME_INT)
446 *value = mms_smil_avi_data->nDurTime;
447 else if (field == MSG_MMS_SMIL_AVI_BGCOLOR_INT)
448 *value = mms_smil_avi_data->nBgColor;
450 err = MSG_ERR_INVALID_PARAMETER;
454 err = MSG_ERR_INVALID_PARAMETER;
460 int msg_mms_get_str_value(msg_struct_s *msg_struct, int field, char *value, int size)
462 msg_error_t err = MSG_SUCCESS;
464 switch(msg_struct->type) {
465 case MSG_STRUCT_MMS_MEDIA:
467 MMS_MEDIA_S *mms_media_data = (MMS_MEDIA_S *)msg_struct->data;
468 if (field == MSG_MMS_MEDIA_SRC_STR)
469 strncpy(value, mms_media_data->szSrc, size);
470 else if (field == MSG_MMS_MEDIA_FILENAME_STR)
471 strncpy(value, mms_media_data->szFileName, size);
472 else if (field == MSG_MMS_MEDIA_FILEPATH_STR)
473 strncpy(value, mms_media_data->szFilePath, size);
474 else if (field == MSG_MMS_MEDIA_CONTENT_ID_STR)
475 strncpy(value, mms_media_data->szContentID, size);
476 else if (field == MSG_MMS_MEDIA_REGION_ID_STR)
477 strncpy(value, mms_media_data->regionId, size);
478 else if (field == MSG_MMS_MEDIA_ALTERNATIVE_STR)
479 strncpy(value, mms_media_data->szAlt, size);
480 else if (field == MSG_MMS_MEDIA_DRM_FULLPATH_STR)
481 strncpy(value, mms_media_data->szDrm2FullPath, size);
483 err = MSG_ERR_INVALID_PARAMETER;
486 case MSG_STRUCT_MMS_ATTACH:
488 MMS_ATTACH_S *mms_attach_data = (MMS_ATTACH_S *)msg_struct->data;
489 if (field == MSG_MMS_ATTACH_FILENAME_STR)
490 strncpy(value, mms_attach_data->szFileName, size);
491 else if (field == MSG_MMS_ATTACH_FILEPATH_STR)
492 strncpy(value, mms_attach_data->szFilePath, size);
493 else if (field == MSG_MMS_ATTACH_DRM_FULLPATH_STR)
494 strncpy(value, mms_attach_data->szDrm2FullPath, size);
496 err = MSG_ERR_INVALID_PARAMETER;
499 case MSG_STRUCT_MMS_REGION:
501 MMS_SMIL_REGION *mms_region_data = (MMS_SMIL_REGION *)msg_struct->data;
502 if (field == MSG_MMS_REGION_ID_STR)
503 strncpy(value, mms_region_data->szID, size);
505 err = MSG_ERR_INVALID_PARAMETER;
508 case MSG_STRUCT_MMS_TRANSITION:
510 MMS_SMIL_TRANSITION *mms_transition_data = (MMS_SMIL_TRANSITION *)msg_struct->data;
511 if (field == MSG_MMS_TRANSITION_ID_STR)
512 strncpy(value, mms_transition_data->szID, size);
514 err = MSG_ERR_INVALID_PARAMETER;
517 case MSG_STRUCT_MMS_META:
519 MMS_SMIL_META *mms_meta_data = (MMS_SMIL_META *)msg_struct->data;
520 if (field == MSG_MMS_META_ID_STR)
521 strncpy(value, mms_meta_data->szID, size);
522 else if (field == MSG_MMS_META_NAME_STR)
523 strncpy(value, mms_meta_data->szName, size);
524 else if (field == MSG_MMS_META_CONTENT_STR)
525 strncpy(value, mms_meta_data->szContent, size);
527 err = MSG_ERR_INVALID_PARAMETER;
530 case MSG_STRUCT_MMS_SMIL_TEXT:
532 MmsSmilText *mms_smil_text_data = (MmsSmilText *)msg_struct->data;
533 if (field == MSG_MMS_SMIL_TEXT_TRANSITION_IN_ID_STR)
534 strncpy(value, mms_smil_text_data->szTransInId, size);
535 else if (field == MSG_MMS_SMIL_TEXT_TRANSITION_OUT_ID_STR)
536 strncpy(value, mms_smil_text_data->szTransOutId, size);
538 err = MSG_ERR_INVALID_PARAMETER;
541 case MSG_STRUCT_MMS_SMIL_AVI:
543 MmsSmilAVI *mms_smil_avi_data = (MmsSmilAVI *)msg_struct->data;
544 if (field == MSG_MMS_SMIL_AVI_TRANSITION_IN_ID_STR)
545 strncpy(value, mms_smil_avi_data->szTransInId, size);
546 else if (field == MSG_MMS_SMIL_AVI_TRANSITION_OUT_ID_STR)
547 strncpy(value, mms_smil_avi_data->szTransOutId, size);
549 err = MSG_ERR_INVALID_PARAMETER;
553 err = MSG_ERR_INVALID_PARAMETER;
559 int msg_mms_get_bool_value(msg_struct_s *msg_struct, int field, bool *value)
561 msg_error_t err = MSG_SUCCESS;
563 switch(msg_struct->type) {
566 MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data;
567 if (field == MSG_MMS_ROOTLAYOUT_WIDTH_PERCENT_BOOL)
568 *value = mms_data->rootlayout.width.bUnitPercent;
569 else if (field == MSG_MMS_ROOTLAYOUT_HEIGHT_PERCENT_BOOL)
570 *value = mms_data->rootlayout.height.bUnitPercent;
572 err = MSG_ERR_INVALID_PARAMETER;
575 case MSG_STRUCT_MMS_REGION:
577 MMS_SMIL_REGION *mms_region_data = (MMS_SMIL_REGION *)msg_struct->data;
578 if (field == MSG_MMS_REGION_LENGTH_LEFT_PERCENT_BOOL)
579 *value = mms_region_data->nLeft.bUnitPercent;
580 else if (field == MSG_MMS_REGION_LENGTH_TOP_PERCENT_BOOL)
581 *value = mms_region_data->nTop.bUnitPercent;
582 else if (field == MSG_MMS_REGION_LENGTH_WIDTH_PERCENT_BOOL)
583 *value = mms_region_data->width.bUnitPercent;
584 else if (field == MSG_MMS_REGION_LENGTH_HEIGHT_PERCENT_BOOL)
585 *value = mms_region_data->height.bUnitPercent;
587 err = MSG_ERR_INVALID_PARAMETER;
590 case MSG_STRUCT_MMS_SMIL_TEXT:
592 MmsSmilText *mms_smil_text_data = (MmsSmilText *)msg_struct->data;
593 if (field == MSG_MMS_SMIL_TEXT_BOLD_BOOL)
594 *value = mms_smil_text_data->bBold;
595 else if (field == MSG_MMS_SMIL_TEXT_UNDERLINE_BOOL)
596 *value = mms_smil_text_data->bUnderLine;
597 else if (field == MSG_MMS_SMIL_TEXT_ITALIC_BOOL)
598 *value = mms_smil_text_data->bItalic;
599 else if (field == MSG_MMS_SMIL_TEXT_REVERSE_BOOL)
600 *value = mms_smil_text_data->bReverse;
602 err = MSG_ERR_INVALID_PARAMETER;
606 err = MSG_ERR_INVALID_PARAMETER;
612 int msg_mms_get_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s **value)
614 msg_error_t err = MSG_SUCCESS;
616 switch(msg_struct->type) {
617 case MSG_STRUCT_MMS_MEDIA:
619 MMS_MEDIA_HIDDEN_S *mms_media_data = (MMS_MEDIA_HIDDEN_S *)msg_struct->data;
620 if (field == MSG_MMS_MEDIA_SMIL_TEXT_HND)
621 *value = mms_media_data->pText;
622 else if (field == MSG_MMS_MEDIA_SMIL_AVI_HND)
623 *value = mms_media_data->pAVI;
625 err = MSG_ERR_INVALID_PARAMETER;
629 err = MSG_ERR_INVALID_PARAMETER;
635 int msg_mms_get_list_handle(msg_struct_s *msg_struct, int field, msg_list_handle_t *value)
637 msg_error_t err = MSG_SUCCESS;
639 switch(msg_struct->type) {
642 MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data;
643 if (field == MSG_MMS_PAGE_LIST_HND)
644 *value = (msg_list_handle_t)mms_data->pagelist;
645 else if (field == MSG_MMS_REGION_LIST_HND)
646 *value = (msg_list_handle_t)mms_data->regionlist;
647 else if (field == MSG_MMS_ATTACH_LIST_HND)
648 *value = (msg_list_handle_t)mms_data->attachlist;
649 else if (field == MSG_MMS_TRANSITION_LIST_HND)
650 *value = (msg_list_handle_t)mms_data->transitionlist;
651 else if (field == MSG_MMS_META_LIST_HND)
652 *value = (msg_list_handle_t)mms_data->metalist;
654 err = MSG_ERR_INVALID_PARAMETER;
657 case MSG_STRUCT_MMS_PAGE:
659 MMS_PAGE_S *mms_page_data = (MMS_PAGE_S *)msg_struct->data;
660 if (field == MSG_MMS_PAGE_MEDIA_LIST_HND)
661 *value = (msg_list_handle_t)mms_page_data->medialist;
663 err = MSG_ERR_INVALID_PARAMETER;
667 err = MSG_ERR_INVALID_PARAMETER;
673 int msg_mms_set_int_value(msg_struct_s *msg_struct, int field, int value)
675 msg_error_t err = MSG_SUCCESS;
677 switch(msg_struct->type) {
680 MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data;
681 if (field == MSG_MMS_ROOTLAYOUT_WIDTH_INT)
682 mms_data->rootlayout.width.value = value;
683 else if (field == MSG_MMS_ROOTLAYOUT_HEIGHT_INT)
684 mms_data->rootlayout.height.value = value;
685 else if (field == MSG_MMS_ROOTLAYOUT_BGCOLOR_INT)
686 mms_data->rootlayout.bgColor = value;
688 err = MSG_ERR_INVALID_PARAMETER;
691 case MSG_STRUCT_MMS_PAGE:
693 MMS_PAGE_S *mms_page_data = (MMS_PAGE_S *)msg_struct->data;
694 if (field == MSG_MMS_PAGE_PAGE_DURATION_INT)
695 mms_page_data->nDur = value;
696 else if (field == MSG_MMS_PAGE_BEGIN_TIME_INT)
697 mms_page_data->nBegin = value;
698 else if (field == MSG_MMS_PAGE_END_TIME_INT)
699 mms_page_data->nEnd = value;
700 else if (field == MSG_MMS_PAGE_MIN_INT)
701 mms_page_data->nMin = value;
702 else if (field == MSG_MMS_PAGE_MAX_INT)
703 mms_page_data->nMax = value;
704 else if (field == MSG_MMS_PAGE_REPEAT_INT)
705 mms_page_data->nRepeat = value;
707 err = MSG_ERR_INVALID_PARAMETER;
710 case MSG_STRUCT_MMS_MEDIA:
712 MMS_MEDIA_S *mms_media_data = (MMS_MEDIA_S *)msg_struct->data;
713 if (field == MSG_MMS_MEDIA_TYPE_INT)
714 mms_media_data->mediatype = (MmsSmilMediaType)value;
715 else if (field == MSG_MMS_MEDIA_DRM_TYPE_INT)
716 mms_media_data->drmType = (MsgDrmType)value;
718 err = MSG_ERR_INVALID_PARAMETER;
721 case MSG_STRUCT_MMS_ATTACH:
723 MMS_ATTACH_S *mms_attach_data = (MMS_ATTACH_S *)msg_struct->data;
724 if (field == MSG_MMS_ATTACH_MIME_TYPE_INT)
725 mms_attach_data->mediatype = (MimeType)value;
726 else if (field == MSG_MMS_ATTACH_FILESIZE_INT)
727 mms_attach_data->fileSize = value;
728 else if (field == MSG_MMS_ATTACH_DRM_TYPE_INT)
729 mms_attach_data->drmType = (MsgDrmType)value;
731 err = MSG_ERR_INVALID_PARAMETER;
734 case MSG_STRUCT_MMS_REGION:
736 MMS_SMIL_REGION *mms_region_data = (MMS_SMIL_REGION *)msg_struct->data;
737 if (field == MSG_MMS_REGION_LENGTH_LEFT_INT)
738 mms_region_data->nLeft.value = value;
739 else if (field == MSG_MMS_REGION_LENGTH_TOP_INT)
740 mms_region_data->nTop.value = value;
741 else if (field == MSG_MMS_REGION_LENGTH_WIDTH_INT)
742 mms_region_data->width.value = value;
743 else if (field == MSG_MMS_REGION_LENGTH_HEIGHT_INT)
744 mms_region_data->height.value = value;
745 else if (field == MSG_MMS_REGION_BGCOLOR_INT)
746 mms_region_data->bgColor = value;
747 else if (field == MSG_MMS_REGION_FIT_TYPE_INT)
748 mms_region_data->fit = (REGION_FIT_TYPE_T)value;
750 err = MSG_ERR_INVALID_PARAMETER;
753 case MSG_STRUCT_MMS_TRANSITION:
755 MMS_SMIL_TRANSITION *mms_transition_data = (MMS_SMIL_TRANSITION *)msg_struct->data;
756 if (field == MSG_MMS_TRANSITION_TYPE_INT)
757 mms_transition_data->nType = (MmsSmilTransType)value;
758 else if (field == MSG_MMS_TRANSITION_SUBTYPE_INT)
759 mms_transition_data->nSubType = (MmsSmilTransSubType)value;
760 else if (field == MSG_MMS_TRANSITION_DURATION_INT)
761 mms_transition_data->nDur = value;
763 err = MSG_ERR_INVALID_PARAMETER;
766 case MSG_STRUCT_MMS_SMIL_TEXT:
768 MmsSmilText *mms_smil_text_data = (MmsSmilText *)msg_struct->data;
769 if (field == MSG_MMS_SMIL_TEXT_REPEAT_INT)
770 mms_smil_text_data->nRepeat = value;
771 else if (field == MSG_MMS_SMIL_TEXT_BEGIN_INT)
772 mms_smil_text_data->nBegin = value;
773 else if (field == MSG_MMS_SMIL_TEXT_END_INT)
774 mms_smil_text_data->nEnd = value;
775 else if (field == MSG_MMS_SMIL_TEXT_DURTIME_INT)
776 mms_smil_text_data->nDurTime = value;
777 else if (field == MSG_MMS_SMIL_TEXT_BGCOLOR_INT)
778 mms_smil_text_data->nBgColor = value;
779 else if (field == MSG_MMS_SMIL_TEXT_DIRECTION_TYPE_INT)
780 mms_smil_text_data->nDirection = (MmsTextDirection)value;
781 else if (field == MSG_MMS_SMIL_TEXT_SIZE_INT)
782 mms_smil_text_data->nSize = value;
783 else if (field == MSG_MMS_SMIL_TEXT_COLOR_INT)
784 mms_smil_text_data->nColor = value;
786 err = MSG_ERR_INVALID_PARAMETER;
789 case MSG_STRUCT_MMS_SMIL_AVI:
791 MmsSmilAVI *mms_smil_avi_data = (MmsSmilAVI *)msg_struct->data;
792 if (field == MSG_MMS_SMIL_AVI_REPEAT_INT)
793 mms_smil_avi_data->nRepeat = value;
794 else if (field == MSG_MMS_SMIL_AVI_BEGIN_INT)
795 mms_smil_avi_data->nBegin = value;
796 else if (field == MSG_MMS_SMIL_AVI_END_INT)
797 mms_smil_avi_data->nEnd = value;
798 else if (field == MSG_MMS_SMIL_AVI_DURTIME_INT)
799 mms_smil_avi_data->nDurTime = value;
800 else if (field == MSG_MMS_SMIL_AVI_BGCOLOR_INT)
801 mms_smil_avi_data->nBgColor = value;
803 err = MSG_ERR_INVALID_PARAMETER;
807 err = MSG_ERR_INVALID_PARAMETER;
813 int msg_mms_set_str_value(msg_struct_s *msg_struct, int field, char *value, int size)
815 msg_error_t err = MSG_SUCCESS;
817 switch(msg_struct->type) {
818 case MSG_STRUCT_MMS_MEDIA:
820 MMS_MEDIA_S *mms_media_data = (MMS_MEDIA_S *)msg_struct->data;
821 if (field == MSG_MMS_MEDIA_SRC_STR)
822 strncpy(mms_media_data->szSrc, value, MSG_FILEPATH_LEN_MAX);
823 else if (field == MSG_MMS_MEDIA_FILENAME_STR) {
824 strncpy(mms_media_data->szFileName, value, MSG_FILEPATH_LEN_MAX);
825 } else if (field == MSG_MMS_MEDIA_FILEPATH_STR) {
826 char *filename = NULL;
828 MSG_DEBUG("media file path = %s", value);
829 strncpy(mms_media_data->szFilePath, value, MSG_FILEPATH_LEN_MAX);
830 filename = strrchr(value, '/');
831 if (filename != NULL) {
832 strncpy(mms_media_data->szFileName, filename + 1, MSG_FILENAME_LEN_MAX);
833 strncpy(mms_media_data->szContentID, filename + 1, MSG_MSG_ID_LEN);
835 strncpy(mms_media_data->szFileName, value + 1, MSG_FILENAME_LEN_MAX);
836 strncpy(mms_media_data->szContentID, value + 1, MSG_MSG_ID_LEN);
839 MSG_DEBUG("media file path is NULL");
840 err = MSG_ERR_INVALID_PARAMETER;
842 } else if (field == MSG_MMS_MEDIA_CONTENT_ID_STR)
843 strncpy(mms_media_data->szContentID, value, MSG_MSG_ID_LEN);
844 else if (field == MSG_MMS_MEDIA_REGION_ID_STR)
845 strncpy(mms_media_data->regionId, value, MAX_SMIL_REGION_ID);
846 else if (field == MSG_MMS_MEDIA_ALTERNATIVE_STR)
847 strncpy(mms_media_data->szAlt, value, MAX_SMIL_ALT_LEN);
848 else if (field == MSG_MMS_MEDIA_DRM_FULLPATH_STR)
849 strncpy(mms_media_data->szDrm2FullPath, value, MSG_FILEPATH_LEN_MAX);
851 err = MSG_ERR_INVALID_PARAMETER;
854 case MSG_STRUCT_MMS_ATTACH:
856 MMS_ATTACH_S *mms_attach_data = (MMS_ATTACH_S *)msg_struct->data;
857 if (field == MSG_MMS_ATTACH_FILENAME_STR)
858 strncpy(mms_attach_data->szFileName, value, MSG_FILENAME_LEN_MAX);
859 else if (field == MSG_MMS_ATTACH_FILEPATH_STR) {
860 char *filename = NULL;
861 char *filepath = value;
863 if (filepath != NULL) {
864 MSG_DEBUG("attach file path = %s", filepath);
865 mms_attach_data->mediatype = MIME_UNKNOWN;
866 mms_attach_data->fileSize = -1;
868 strncpy(mms_attach_data->szFilePath, filepath, MSG_FILEPATH_LEN_MAX);
870 filename = strrchr(filepath, '/');
871 if (filename != NULL) {
872 strncpy(mms_attach_data->szFileName, filename + 1, MSG_FILENAME_LEN_MAX);
874 strncpy(mms_attach_data->szFileName, filepath, MSG_FILENAME_LEN_MAX);
878 MSG_DEBUG("attach file path is NULL");
879 err = MSG_ERR_INVALID_PARAMETER;
881 } else if (field == MSG_MMS_ATTACH_DRM_FULLPATH_STR)
882 strncpy(mms_attach_data->szDrm2FullPath, value, MSG_FILEPATH_LEN_MAX);
884 err = MSG_ERR_INVALID_PARAMETER;
887 case MSG_STRUCT_MMS_REGION:
889 MMS_SMIL_REGION *mms_region_data = (MMS_SMIL_REGION *)msg_struct->data;
890 if (field == MSG_MMS_REGION_ID_STR)
891 strncpy(mms_region_data->szID, value, MAX_SMIL_REGION_ID);
893 err = MSG_ERR_INVALID_PARAMETER;
896 case MSG_STRUCT_MMS_TRANSITION:
898 MMS_SMIL_TRANSITION *mms_transition_data = (MMS_SMIL_TRANSITION *)msg_struct->data;
899 if (field == MSG_MMS_TRANSITION_ID_STR)
900 strncpy(mms_transition_data->szID, value, MAX_SMIL_TRANSITION_ID);
902 err = MSG_ERR_INVALID_PARAMETER;
905 case MSG_STRUCT_MMS_META:
907 MMS_SMIL_META *mms_meta_data = (MMS_SMIL_META *)msg_struct->data;
908 if (field == MSG_MMS_META_ID_STR)
909 strncpy(mms_meta_data->szID, value, MAX_SMIL_META_ID);
910 else if (field == MSG_MMS_META_NAME_STR)
911 strncpy(mms_meta_data->szName, value, MAX_SMIL_META_NAME);
912 else if (field == MSG_MMS_META_CONTENT_STR)
913 strncpy(mms_meta_data->szContent, value, MAX_SMIL_META_CONTENT);
915 err = MSG_ERR_INVALID_PARAMETER;
918 case MSG_STRUCT_MMS_SMIL_TEXT:
920 MmsSmilText *mms_smil_text_data = (MmsSmilText *)msg_struct->data;
921 if (field == MSG_MMS_SMIL_TEXT_TRANSITION_IN_ID_STR)
922 strncpy(mms_smil_text_data->szTransInId, value, MAX_SMIL_TRANSIN_ID);
923 else if (field == MSG_MMS_SMIL_TEXT_TRANSITION_OUT_ID_STR)
924 strncpy(mms_smil_text_data->szTransOutId, value, MAX_SMIL_TRANSOUT_ID);
926 err = MSG_ERR_INVALID_PARAMETER;
929 case MSG_STRUCT_MMS_SMIL_AVI:
931 MmsSmilAVI *mms_smil_avi_data = (MmsSmilAVI *)msg_struct->data;
932 if (field == MSG_MMS_SMIL_AVI_TRANSITION_IN_ID_STR)
933 strncpy(mms_smil_avi_data->szTransInId, value, MAX_SMIL_TRANSIN_ID);
934 else if (field == MSG_MMS_SMIL_AVI_TRANSITION_OUT_ID_STR)
935 strncpy(mms_smil_avi_data->szTransOutId, value, MAX_SMIL_TRANSOUT_ID);
937 err = MSG_ERR_INVALID_PARAMETER;
941 err = MSG_ERR_INVALID_PARAMETER;
947 int msg_mms_set_bool_value(msg_struct_s *msg_struct, int field, bool value)
949 msg_error_t err = MSG_SUCCESS;
951 switch(msg_struct->type) {
954 MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data;
955 if (field == MSG_MMS_ROOTLAYOUT_WIDTH_PERCENT_BOOL)
956 mms_data->rootlayout.width.bUnitPercent = value;
957 else if (field == MSG_MMS_ROOTLAYOUT_HEIGHT_PERCENT_BOOL)
958 mms_data->rootlayout.height.bUnitPercent = value;
960 err = MSG_ERR_INVALID_PARAMETER;
963 case MSG_STRUCT_MMS_REGION:
965 MMS_SMIL_REGION *mms_region_data = (MMS_SMIL_REGION *)msg_struct->data;
966 if (field == MSG_MMS_REGION_LENGTH_LEFT_PERCENT_BOOL)
967 mms_region_data->nLeft.bUnitPercent = value;
968 else if (field == MSG_MMS_REGION_LENGTH_TOP_PERCENT_BOOL)
969 mms_region_data->nTop.bUnitPercent = value;
970 else if (field == MSG_MMS_REGION_LENGTH_WIDTH_PERCENT_BOOL)
971 mms_region_data->width.bUnitPercent = value;
972 else if (field == MSG_MMS_REGION_LENGTH_HEIGHT_PERCENT_BOOL)
973 mms_region_data->height.bUnitPercent = value;
975 err = MSG_ERR_INVALID_PARAMETER;
978 case MSG_STRUCT_MMS_SMIL_TEXT:
980 MmsSmilText *mms_smil_text_data = (MmsSmilText *)msg_struct->data;
981 if (field == MSG_MMS_SMIL_TEXT_BOLD_BOOL)
982 mms_smil_text_data->bBold = value;
983 else if (field == MSG_MMS_SMIL_TEXT_UNDERLINE_BOOL)
984 mms_smil_text_data->bUnderLine = value;
985 else if (field == MSG_MMS_SMIL_TEXT_ITALIC_BOOL)
986 mms_smil_text_data->bItalic = value;
987 else if (field == MSG_MMS_SMIL_TEXT_REVERSE_BOOL)
988 mms_smil_text_data->bReverse = value;
990 err = MSG_ERR_INVALID_PARAMETER;
994 err = MSG_ERR_INVALID_PARAMETER;
1000 int msg_mms_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value)
1002 msg_error_t err = MSG_SUCCESS;
1004 switch(msg_struct->type) {
1005 case MSG_STRUCT_MMS_MEDIA:
1007 MMS_MEDIA_HIDDEN_S *mms_media_data = (MMS_MEDIA_HIDDEN_S *)msg_struct->data;
1009 if (field == MSG_MMS_MEDIA_SMIL_TEXT_HND)
1010 memcpy(mms_media_data->pText->data, value->data, sizeof(MmsSmilText));
1011 else if (field == MSG_MMS_MEDIA_SMIL_AVI_HND)
1012 memcpy(mms_media_data->pAVI->data, value->data, sizeof(MmsSmilAVI));
1014 err = MSG_ERR_INVALID_PARAMETER;
1018 err = MSG_ERR_INVALID_PARAMETER;
1024 int msg_mms_set_list_handle(msg_struct_s *msg_struct, int field, msg_list_handle_t value)
1026 msg_error_t err = MSG_SUCCESS;
1028 switch(msg_struct->type) {
1029 case MSG_STRUCT_MMS:
1031 MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data;
1032 if (field == MSG_MMS_PAGE_LIST_HND)
1033 mms_data->pagelist = (GList *)value;
1034 else if (field == MSG_MMS_REGION_LIST_HND)
1035 mms_data->regionlist = (GList *)value;
1036 else if (field == MSG_MMS_ATTACH_LIST_HND)
1037 mms_data->attachlist = (GList *)value;
1038 else if (field == MSG_MMS_TRANSITION_LIST_HND)
1039 mms_data->transitionlist = (GList *)value;
1040 else if (field == MSG_MMS_META_LIST_HND)
1041 mms_data->metalist = (GList *)value;
1043 err = MSG_ERR_INVALID_PARAMETER;
1046 case MSG_STRUCT_MMS_PAGE:
1048 MMS_PAGE_S *mms_page_data = (MMS_PAGE_S *)msg_struct->data;
1049 if (field == MSG_MMS_PAGE_MEDIA_LIST_HND)
1050 mms_page_data->medialist = (GList *)value;
1052 err = MSG_ERR_INVALID_PARAMETER;
1056 err = MSG_ERR_INVALID_PARAMETER;
1062 EXPORT_API int msg_mms_add_item(msg_struct_t msg_struct_handle, int field, msg_struct_t *item)
1064 msg_error_t err = MSG_SUCCESS;
1065 msg_struct_s *msg_struct = (msg_struct_s *)msg_struct_handle;
1067 msg_struct_s *msg_struct_item = NULL;
1068 switch(msg_struct->type) {
1069 case MSG_STRUCT_MMS:
1072 MMS_DATA_HIDDEN_S *mms_data = (MMS_DATA_HIDDEN_S *)msg_struct->data;
1074 if (field == MSG_STRUCT_MMS_PAGE) {
1075 msg_struct_item = msg_mms_create_struct(field);
1076 mms_data->pagelist = g_list_append(mms_data->pagelist, msg_struct_item);
1077 *item = (msg_struct_t)msg_struct_item;
1078 } else if (field == MSG_STRUCT_MMS_REGION) {
1079 msg_struct_item = msg_mms_create_struct(field);
1080 mms_data->regionlist = g_list_append(mms_data->regionlist, msg_struct_item);
1081 *item = (msg_struct_t)msg_struct_item;
1082 } else if (field == MSG_STRUCT_MMS_ATTACH) {
1083 msg_struct_item = msg_mms_create_struct(field);
1084 mms_data->attachlist = g_list_append(mms_data->attachlist, msg_struct_item);
1085 *item = (msg_struct_t)msg_struct_item;
1086 } else if (field == MSG_STRUCT_MMS_TRANSITION) {
1087 msg_struct_item = msg_mms_create_struct(field);
1088 mms_data->transitionlist = g_list_append(mms_data->transitionlist, msg_struct_item);
1089 *item = (msg_struct_t)msg_struct_item;
1090 } else if (field == MSG_STRUCT_MMS_META) {
1091 msg_struct_item = msg_mms_create_struct(field);
1092 mms_data->metalist = g_list_append(mms_data->metalist, msg_struct_item);
1093 *item = (msg_struct_t)msg_struct_item;
1095 err = MSG_ERR_INVALID_PARAMETER;
1099 case MSG_STRUCT_MMS_PAGE:
1102 MMS_PAGE_S *mms_page_data = (MMS_PAGE_S *)msg_struct->data;
1104 if (field == MSG_STRUCT_MMS_MEDIA) {
1105 msg_struct_item = msg_mms_create_struct(field);
1106 mms_page_data->medialist = g_list_append(mms_page_data->medialist, msg_struct_item);
1107 *item = (msg_struct_t)msg_struct_item;
1109 err = MSG_ERR_INVALID_PARAMETER;
1114 err = MSG_ERR_INVALID_PARAMETER;
1121 void convert_to_media_data(const msg_struct_s *pSrc, MMS_MEDIA_S *pDest)
1123 const MMS_MEDIA_HIDDEN_S *src_media = (MMS_MEDIA_HIDDEN_S *)pSrc->data;
1124 MMS_MEDIA_S *dst_media = pDest;
1126 dst_media->mediatype = src_media->mediatype;
1127 memcpy(dst_media->szSrc, src_media->szSrc, MSG_FILEPATH_LEN_MAX);
1128 memcpy(dst_media->szFileName, src_media->szFileName, MSG_FILEPATH_LEN_MAX);
1129 memcpy(dst_media->szFilePath, src_media->szFilePath, MSG_FILEPATH_LEN_MAX);
1130 memcpy(dst_media->szContentID, src_media->szContentID, MSG_MSG_ID_LEN);
1131 memcpy(dst_media->regionId, src_media->regionId, MAX_SMIL_REGION_ID);
1132 memcpy(dst_media->szAlt, src_media->szAlt, MAX_SMIL_ALT_LEN);
1134 memcpy(dst_media->szDrm2FullPath, src_media->szDrm2FullPath, MSG_FILEPATH_LEN_MAX);
1135 dst_media->drmType = src_media->drmType;
1137 if (src_media->mediatype == MMS_SMIL_MEDIA_TEXT) {
1138 msg_struct_s *smil_struct = (msg_struct_s *)src_media->pText;
1139 MmsSmilText *smiltext = (MmsSmilText *)smil_struct->data;
1140 memcpy(&dst_media->sMedia.sText, smiltext, sizeof(MmsSmilText));
1142 msg_struct_s *smil_struct = (msg_struct_s *)src_media->pAVI;
1143 MmsSmilAVI *smilavi = (MmsSmilAVI *)smil_struct->data;
1144 memcpy(&dst_media->sMedia.sAVI, smilavi, sizeof(MmsSmilAVI));
1148 void convert_from_media_data(const MMS_MEDIA_S *pSrc, msg_struct_s *pDest)
1150 const MMS_MEDIA_S *src_media = pSrc;
1151 MMS_MEDIA_HIDDEN_S *dst_media = (MMS_MEDIA_HIDDEN_S *)pDest->data;
1153 dst_media->mediatype = src_media->mediatype;
1154 memcpy(dst_media->szSrc, src_media->szSrc, MSG_FILEPATH_LEN_MAX);
1155 memcpy(dst_media->szFileName, src_media->szFileName, MSG_FILEPATH_LEN_MAX);
1156 memcpy(dst_media->szFilePath, src_media->szFilePath, MSG_FILEPATH_LEN_MAX);
1157 memcpy(dst_media->szContentID, src_media->szContentID, MSG_MSG_ID_LEN);
1158 memcpy(dst_media->regionId, src_media->regionId, MAX_SMIL_REGION_ID);
1159 memcpy(dst_media->szAlt, src_media->szAlt, MAX_SMIL_ALT_LEN);
1161 memcpy(dst_media->szDrm2FullPath, src_media->szDrm2FullPath, MSG_FILEPATH_LEN_MAX);
1162 dst_media->drmType = src_media->drmType;
1164 if (src_media->mediatype == MMS_SMIL_MEDIA_TEXT) {
1165 msg_struct_s *dst_smil_struct = (msg_struct_s *)dst_media->pText;
1166 MmsSmilText *dst_smiltext = (MmsSmilText *)dst_smil_struct->data;
1167 memcpy(dst_smiltext, &src_media->sMedia.sText, sizeof(MmsSmilText));
1169 msg_struct_s *dst_smil_struct = (msg_struct_s *)dst_media->pAVI;
1170 MmsSmilAVI *dst_smilavi = (MmsSmilAVI *)dst_smil_struct->data;
1171 memcpy(dst_smilavi, &src_media->sMedia.sAVI, sizeof(MmsSmilAVI));
1175 void convert_to_mmsdata(const msg_struct_s *pSrc, MMS_MESSAGE_DATA_S *pDest)
1178 MMS_DATA_HIDDEN_S *pSrcMms = (MMS_DATA_HIDDEN_S *)pSrc->data;
1180 pDest->pageCnt = g_list_length(pSrcMms->pagelist);
1182 for (i = 0; i < pDest->pageCnt; i++) {
1183 MMS_PAGE_S *page = (MMS_PAGE_S *)calloc(1, sizeof(MMS_PAGE_S));
1184 MMS_PAGE_S *src_page = (MMS_PAGE_S *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->pagelist, i));
1185 page->mediaCnt = g_list_length(src_page->medialist);
1187 for (j = 0; j < page->mediaCnt; j++)
1189 MMS_MEDIA_S *dst_media = (MMS_MEDIA_S *)calloc(1, sizeof(MMS_MEDIA_S));
1190 msg_struct_s *src_media_s = (msg_struct_s *)g_list_nth_data(src_page->medialist, j);
1192 convert_to_media_data(src_media_s, dst_media);
1194 page->medialist = g_list_append(page->medialist, dst_media);
1197 page->nDur = src_page->nDur;
1198 page->nBegin = src_page->nBegin;
1199 page->nEnd = src_page->nEnd;
1200 page->nMin = src_page->nMin;
1201 page->nMax = src_page->nMax;
1202 page->nRepeat = src_page->nRepeat;
1204 pDest->pagelist = g_list_append(pDest->pagelist, page);
1207 pDest->regionCnt = g_list_length(pSrcMms->regionlist);
1209 for (i = 0; i < pDest->regionCnt; i++) {
1210 MMS_SMIL_REGION *region = (MMS_SMIL_REGION *)calloc(1, sizeof(MMS_SMIL_REGION));
1211 MMS_SMIL_REGION *src_region = (MMS_SMIL_REGION *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->regionlist, i));
1212 memcpy(region, src_region, sizeof(MMS_SMIL_REGION));
1213 pDest->regionlist = g_list_append(pDest->regionlist, region);
1216 pDest->attachCnt = g_list_length(pSrcMms->attachlist);
1218 for (i = 0; i < pDest->attachCnt; i++) {
1219 MMS_ATTACH_S *attach = (MMS_ATTACH_S *)calloc(1, sizeof(MMS_ATTACH_S));
1220 MMS_ATTACH_S *src_attach = (MMS_ATTACH_S *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->attachlist, i));
1221 memcpy(attach, src_attach, sizeof(MMS_ATTACH_S));
1222 pDest->attachlist = g_list_append(pDest->attachlist, attach);
1225 pDest->transitionCnt = g_list_length(pSrcMms->transitionlist);
1227 for (i = 0; i < pDest->transitionCnt; i++) {
1228 MMS_SMIL_TRANSITION *transition = (MMS_SMIL_TRANSITION *)calloc(1, sizeof(MMS_SMIL_TRANSITION));
1229 MMS_SMIL_TRANSITION *src_transition = (MMS_SMIL_TRANSITION *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->transitionlist, i));
1230 memcpy(transition, src_transition, sizeof(MMS_SMIL_TRANSITION));
1231 pDest->transitionlist = g_list_append(pDest->transitionlist, transition);
1234 pDest->metaCnt = g_list_length(pSrcMms->metalist);
1236 for (i = 0; i < pDest->metaCnt; i++) {
1237 MMS_SMIL_META *meta = (MMS_SMIL_META *)calloc(1, sizeof(MMS_SMIL_META));
1238 MMS_SMIL_META *src_meta = (MMS_SMIL_META *)get_msg_struct_data((msg_struct_s *)g_list_nth_data(pSrcMms->metalist, i));
1239 memcpy(meta, src_meta, sizeof(MMS_SMIL_META));
1240 pDest->metalist = g_list_append(pDest->metalist, meta);
1243 memcpy(&pDest->rootlayout, &pSrcMms->rootlayout, sizeof(MMS_SMIL_ROOTLAYOUT));
1245 memcpy(&pDest->msgAppId, &pSrcMms->msgAppId, sizeof(MMS_APPID_INFO_S));
1248 void convert_from_mmsdata(const MMS_MESSAGE_DATA_S *pSrc, msg_struct_s *pDest)
1251 MMS_DATA_HIDDEN_S *pDestMms = (MMS_DATA_HIDDEN_S *)pDest->data;
1253 for (i = 0; i < pSrc->pageCnt; i++) {
1254 msg_struct_s *page_struct = msg_mms_create_struct(MSG_STRUCT_MMS_PAGE);
1255 MMS_PAGE_S *page = (MMS_PAGE_S *)page_struct->data;
1257 MMS_PAGE_S *src_page = (MMS_PAGE_S *)g_list_nth_data(pSrc->pagelist, i);
1258 page->mediaCnt = g_list_length(src_page->medialist);
1260 for (j = 0; j < page->mediaCnt; j++)
1262 msg_struct_s *dst_media_s = msg_mms_create_struct(MSG_STRUCT_MMS_MEDIA);
1264 MMS_MEDIA_S *src_media = (MMS_MEDIA_S *)g_list_nth_data(src_page->medialist, j);
1266 convert_from_media_data(src_media, dst_media_s);
1268 page->medialist = g_list_append(page->medialist, dst_media_s);
1271 page->nDur = src_page->nDur;
1272 page->nBegin = src_page->nBegin;
1273 page->nEnd = src_page->nEnd;
1274 page->nMin = src_page->nMin;
1275 page->nMax = src_page->nMax;
1276 page->nRepeat = src_page->nRepeat;
1278 pDestMms->pagelist = g_list_append(pDestMms->pagelist, page_struct);
1281 for (i = 0; i < pSrc->regionCnt; i++) {
1282 msg_struct_s *region_struct = msg_mms_create_struct(MSG_STRUCT_MMS_REGION);
1283 MMS_SMIL_REGION *region = (MMS_SMIL_REGION *)region_struct->data;
1284 MMS_SMIL_REGION *src_region = (MMS_SMIL_REGION *)g_list_nth_data(pSrc->regionlist, i);
1285 memcpy(region, src_region, sizeof(MMS_SMIL_REGION));
1286 pDestMms->regionlist = g_list_append(pDestMms->regionlist, region_struct);
1289 for (i = 0; i < pSrc->attachCnt; i++) {
1290 msg_struct_s *attach_struct = msg_mms_create_struct(MSG_STRUCT_MMS_ATTACH);
1291 MMS_ATTACH_S *attach = (MMS_ATTACH_S *)attach_struct->data;
1292 MMS_ATTACH_S *src_attach = (MMS_ATTACH_S *)g_list_nth_data(pSrc->attachlist, i);
1293 memcpy(attach, src_attach, sizeof(MMS_ATTACH_S));
1294 pDestMms->attachlist = g_list_append(pDestMms->attachlist, attach_struct);
1297 for (i = 0; i < pSrc->transitionCnt; i++) {
1298 msg_struct_s *transition_struct = msg_mms_create_struct(MSG_STRUCT_MMS_TRANSITION);
1299 MMS_SMIL_TRANSITION *transition = (MMS_SMIL_TRANSITION *)transition_struct->data;
1300 MMS_SMIL_TRANSITION *src_transition = (MMS_SMIL_TRANSITION *)g_list_nth_data(pSrc->transitionlist, i);
1301 memcpy(transition, src_transition, sizeof(MMS_SMIL_TRANSITION));
1302 pDestMms->transitionlist = g_list_append(pDestMms->transitionlist, transition_struct);
1305 for (i = 0; i < pSrc->metaCnt; i++) {
1306 msg_struct_s *meta_struct = msg_mms_create_struct(MSG_STRUCT_MMS_META);
1307 MMS_SMIL_META *meta = (MMS_SMIL_META *)meta_struct->data;
1308 MMS_SMIL_META *src_meta = (MMS_SMIL_META *)g_list_nth_data(pSrc->metalist, i);
1310 memcpy(meta, src_meta, sizeof(MMS_SMIL_META));
1311 pDestMms->metalist = g_list_append(pDestMms->metalist, meta_struct);
1314 memcpy(&pDestMms->rootlayout, &pSrc->rootlayout, sizeof(MMS_SMIL_ROOTLAYOUT));
1316 memcpy(&pDestMms->msgAppId, &pSrc->msgAppId, sizeof(MMS_APPID_INFO_S));