#ifndef _GF_LASER_DEV_H_
#define _GF_LASER_DEV_H_
#include <gpac/laser.h>
#include <gpac/maths.h>
#ifndef GPAC_DISABLE_LASER
typedef struct
{
GF_LASERConfig cfg;
u16 ESID;
} LASeRStreamInfo;
typedef struct
{
u16 r, g, b;
} LSRCol;
struct __tag_laser_codec
{
GF_BitStream *bs;
GF_SceneGraph *sg;
GF_Err last_error;
GF_List *streamInfo;
LASeRStreamInfo *info;
Fixed res_factor;
u8 scale_bits;
u8 coord_bits;
u16 time_resolution;
u16 color_scale;
LSRCol *col_table;
u32 nb_cols;
u32 colorIndexBits;
GF_List *font_table;
u32 fontIndexBits;
u32 privateData_id_index, privateTag_index;
Double (*GetSceneTime)(void *cbk);
void *cbk;
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;
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);
#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
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
};
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,
};
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,
};
enum
{
LSR_AMD1_EXT_animateScroll = 0,
LSR_AMD1_EXT_setScroll,
LSR_AMD1_EXT_streamSource,
LSR_AMD1_EXT_updateSource,
};
#endif
#endif