/* * GPAC - Multimedia Framework C SDK * * Authors: Jean Le Feuvre * Copyright (c) Telecom ParisTech 2000-2012 * All rights reserved * * This file is part of GPAC / LASeR codec sub-project * * GPAC is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * GPAC is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * */ #ifndef _GF_LASER_DEV_H_ #define _GF_LASER_DEV_H_ #include #include #ifndef GPAC_DISABLE_LASER /*per_stream config support*/ typedef struct { GF_LASERConfig cfg; u16 ESID; } LASeRStreamInfo; typedef struct { /*colors can be encoded on up to 16 bits per comp*/ u16 r, g, b; } LSRCol; struct __tag_laser_codec { GF_BitStream *bs; GF_SceneGraph *sg; GF_Err last_error; /*all attached streams*/ GF_List *streamInfo; LASeRStreamInfo *info; Fixed res_factor/*2^-coord_res*/; /*duplicated from config*/ u8 scale_bits; u8 coord_bits; u16 time_resolution; u16 color_scale; LSRCol *col_table; u32 nb_cols; /*computed dynamically*/ u32 colorIndexBits; GF_List *font_table; u32 fontIndexBits; u32 privateData_id_index, privateTag_index; /*decoder only*/ Double (*GetSceneTime)(void *cbk); void *cbk; /*sameElement coding*/ SVG_Element *prev_g; SVG_Element *prev_line; SVG_Element *prev_path; SVG_Element *prev_polygon; SVG_Element *prev_rect; SVG_Element *prev_text; SVG_Element *prev_use; GF_Node *current_root; /*0: normal playback, store script content 1: memory decoding of scene, decompress script into commands */ Bool memory_dec; GF_List *defered_hrefs; GF_List *defered_anims; GF_List *defered_listeners; char *cache_dir, *service_name; GF_List *unresolved_commands; }; s32 gf_lsr_anim_type_from_attribute(u32 tag); s32 gf_lsr_anim_type_to_attribute(u32 tag); s32 gf_lsr_rare_type_from_attribute(u32 tag); s32 gf_lsr_rare_type_to_attribute(u32 tag); u32 gf_lsr_same_rare(SVGAllAttributes *elt_atts, SVGAllAttributes *base_atts); /*transform*/ #define RARE_TRANSFORM 47 enum { LSR_EVT_abort = 0, LSR_EVT_accessKey = 1, LSR_EVT_activate = 2, LSR_EVT_activatedEvent = 3, LSR_EVT_beginEvent = 4, LSR_EVT_click = 5, LSR_EVT_deactivatedEvent = 6, LSR_EVT_endEvent = 7, LSR_EVT_error = 8, LSR_EVT_executionTime = 9, LSR_EVT_focusin = 10, LSR_EVT_focusout = 11, LSR_EVT_keydown = 12, LSR_EVT_keyup = 13, LSR_EVT_load = 14, LSR_EVT_longAccessKey = 15, LSR_EVT_mousedown = 16, LSR_EVT_mousemove = 17, LSR_EVT_mouseout = 18, LSR_EVT_mouseover = 19, LSR_EVT_mouseup = 20, LSR_EVT_pause = 21, LSR_EVT_pausedEvent = 22, LSR_EVT_play = 23, LSR_EVT_repeatEvent = 24, LSR_EVT_repeatKey = 25, LSR_EVT_resize = 26, LSR_EVT_resumedEvent = 27, LSR_EVT_scroll = 28, LSR_EVT_shortAccessKey = 29, LSR_EVT_textinput = 30, LSR_EVT_unload = 31, LSR_EVT_zoom = 32 }; u32 dom_to_lsr_key(u32 dom_k); #define LSR_UPDATE_TYPE_ROTATE 76 #define LSR_UPDATE_TYPE_SCALE 79 #define LSR_UPDATE_TYPE_SVG_HEIGHT 94 #define LSR_UPDATE_TYPE_SVG_WIDTH 95 #define LSR_UPDATE_TYPE_TEXT_CONTENT 107 #define LSR_UPDATE_TYPE_TRANSFORM 108 #define LSR_UPDATE_TYPE_TRANSLATION 110 /*LASeR commands code*/ enum { LSR_UPDATE_ADD = 0, LSR_UPDATE_CLEAN, LSR_UPDATE_DELETE, LSR_UPDATE_INSERT, LSR_UPDATE_NEW_SCENE, LSR_UPDATE_REFRESH_SCENE, LSR_UPDATE_REPLACE, LSR_UPDATE_RESTORE, LSR_UPDATE_SAVE, LSR_UPDATE_SEND_EVENT, LSR_UPDATE_EXTEND, LSR_UPDATE_TEXT_CONTENT }; /*Code point Path code*/ enum { LSR_PATH_COM_C = 0, LSR_PATH_COM_H, LSR_PATH_COM_L, LSR_PATH_COM_M, LSR_PATH_COM_Q, LSR_PATH_COM_S, LSR_PATH_COM_T, LSR_PATH_COM_V, LSR_PATH_COM_Z, LSR_PATH_COM_c, LSR_PATH_COM_h, LSR_PATH_COM_l, LSR_PATH_COM_m, LSR_PATH_COM_q, LSR_PATH_COM_s, LSR_PATH_COM_t, LSR_PATH_COM_v, LSR_PATH_COM_z }; enum { LSR_SCENE_CONTENT_MODEL_a = 0, LSR_SCENE_CONTENT_MODEL_animate, LSR_SCENE_CONTENT_MODEL_animateColor, LSR_SCENE_CONTENT_MODEL_animateMotion, LSR_SCENE_CONTENT_MODEL_animateTransform, LSR_SCENE_CONTENT_MODEL_audio, LSR_SCENE_CONTENT_MODEL_circle, LSR_SCENE_CONTENT_MODEL_defs, LSR_SCENE_CONTENT_MODEL_desc, LSR_SCENE_CONTENT_MODEL_ellipse, LSR_SCENE_CONTENT_MODEL_foreignObject, LSR_SCENE_CONTENT_MODEL_g, LSR_SCENE_CONTENT_MODEL_image, LSR_SCENE_CONTENT_MODEL_line, LSR_SCENE_CONTENT_MODEL_linearGradient, LSR_SCENE_CONTENT_MODEL_metadata, LSR_SCENE_CONTENT_MODEL_mpath, LSR_SCENE_CONTENT_MODEL_path, LSR_SCENE_CONTENT_MODEL_polygon, LSR_SCENE_CONTENT_MODEL_polyline, LSR_SCENE_CONTENT_MODEL_radialGradient, LSR_SCENE_CONTENT_MODEL_rect, LSR_SCENE_CONTENT_MODEL_sameg, LSR_SCENE_CONTENT_MODEL_sameline, LSR_SCENE_CONTENT_MODEL_samepath, LSR_SCENE_CONTENT_MODEL_samepathfill, LSR_SCENE_CONTENT_MODEL_samepolygon, LSR_SCENE_CONTENT_MODEL_samepolygonfill, LSR_SCENE_CONTENT_MODEL_samepolygonstroke, LSR_SCENE_CONTENT_MODEL_samepolyline, LSR_SCENE_CONTENT_MODEL_samepolylinefill, LSR_SCENE_CONTENT_MODEL_samepolylinestroke, LSR_SCENE_CONTENT_MODEL_samerect, LSR_SCENE_CONTENT_MODEL_samerectfill, LSR_SCENE_CONTENT_MODEL_sametext, LSR_SCENE_CONTENT_MODEL_sametextfill, LSR_SCENE_CONTENT_MODEL_sameuse, LSR_SCENE_CONTENT_MODEL_script, LSR_SCENE_CONTENT_MODEL_set, LSR_SCENE_CONTENT_MODEL_stop, LSR_SCENE_CONTENT_MODEL_switch, LSR_SCENE_CONTENT_MODEL_text, LSR_SCENE_CONTENT_MODEL_title, LSR_SCENE_CONTENT_MODEL_tspan, LSR_SCENE_CONTENT_MODEL_use, LSR_SCENE_CONTENT_MODEL_video, LSR_SCENE_CONTENT_MODEL_listener, LSR_SCENE_CONTENT_MODEL_conditional, LSR_SCENE_CONTENT_MODEL_cursorManager, LSR_SCENE_CONTENT_MODEL_element_any, LSR_SCENE_CONTENT_MODEL_privateContainer, LSR_SCENE_CONTENT_MODEL_rectClip, LSR_SCENE_CONTENT_MODEL_selector, LSR_SCENE_CONTENT_MODEL_simpleLayout, LSR_SCENE_CONTENT_MODEL_textContent, LSR_SCENE_CONTENT_MODEL_extension, }; enum { LSR_UPDATE_CONTENT_MODEL_a = 0, LSR_UPDATE_CONTENT_MODEL_animate, LSR_UPDATE_CONTENT_MODEL_animateColor, LSR_UPDATE_CONTENT_MODEL_animateMotion, LSR_UPDATE_CONTENT_MODEL_animateTransform, LSR_UPDATE_CONTENT_MODEL_audio, LSR_UPDATE_CONTENT_MODEL_circle, LSR_UPDATE_CONTENT_MODEL_defs, LSR_UPDATE_CONTENT_MODEL_desc, LSR_UPDATE_CONTENT_MODEL_ellipse, LSR_UPDATE_CONTENT_MODEL_foreignObject, LSR_UPDATE_CONTENT_MODEL_g, LSR_UPDATE_CONTENT_MODEL_image, LSR_UPDATE_CONTENT_MODEL_line, LSR_UPDATE_CONTENT_MODEL_linearGradient, LSR_UPDATE_CONTENT_MODEL_metadata, LSR_UPDATE_CONTENT_MODEL_mpath, LSR_UPDATE_CONTENT_MODEL_path, LSR_UPDATE_CONTENT_MODEL_polygon, LSR_UPDATE_CONTENT_MODEL_polyline, LSR_UPDATE_CONTENT_MODEL_radialGradient, LSR_UPDATE_CONTENT_MODEL_rect, LSR_UPDATE_CONTENT_MODEL_script, LSR_UPDATE_CONTENT_MODEL_set, LSR_UPDATE_CONTENT_MODEL_stop, LSR_UPDATE_CONTENT_MODEL_svg, LSR_UPDATE_CONTENT_MODEL_switch, LSR_UPDATE_CONTENT_MODEL_text, LSR_UPDATE_CONTENT_MODEL_title, LSR_UPDATE_CONTENT_MODEL_tspan, LSR_UPDATE_CONTENT_MODEL_use, LSR_UPDATE_CONTENT_MODEL_video, LSR_UPDATE_CONTENT_MODEL_listener, }; enum { LSR_UPDATE_CONTENT_MODEL2_conditional = 0, LSR_UPDATE_CONTENT_MODEL2_cursorManager, LSR_UPDATE_CONTENT_MODEL2_extend, LSR_UPDATE_CONTENT_MODEL2_private, LSR_UPDATE_CONTENT_MODEL2_rectClip, LSR_UPDATE_CONTENT_MODEL2_selector, LSR_UPDATE_CONTENT_MODEL2_simpleLayout, }; /*just to remember them, not implemented yet*/ enum { LSR_SVG12_EXT_animation = 0, LSR_SVG12_EXT_discard, LSR_SVG12_EXT_font, LSR_SVG12_EXT_font_face, LSR_SVG12_EXT_font_face_src, LSR_SVG12_EXT_font_face_uri, LSR_SVG12_EXT_glyph, LSR_SVG12_EXT_handler, LSR_SVG12_EXT_hkern, LSR_SVG12_EXT_missingGlyph, LSR_SVG12_EXT_prefetch, LSR_SVG12_EXT_solidColor, LSR_SVG12_EXT_tBreak, LSR_SVG12_EXT_textArea, }; /*just to remember them, not implemented yet*/ enum { LSR_AMD1_EXT_animateScroll = 0, LSR_AMD1_EXT_setScroll, LSR_AMD1_EXT_streamSource, LSR_AMD1_EXT_updateSource, }; #endif /*GPAC_DISABLE_LASER*/ #endif