%PDF- %PDF-
| Direktori : /data/old/usr/local/include/gpac/internal/ |
| Current File : //data/old/usr/local/include/gpac/internal/laser_dev.h |
/*
* 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 <gpac/laser.h>
#include <gpac/maths.h>
#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