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

📄 fad.sprite.c

📁 嵌入式linux环境下的一个FLASH播放器(支持FLASH7.0以下版本)
💻 C
字号:
/** * libFAD - Flash Animation Decode library * Copyright (C) 2005-2006 VGSystem Technologies, Inc. * * libFAD is the legal property of its developers, whose names are too numerous * to list here.  Please refer to the COPYRIGHT file distributed with this * source distribution. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * $Id: fad.sprite.c,v 1.22 2006/03/08 07:39:12 wrxzzj Exp $ */#include "fad.sprite.h"typedef struct _sprite_mc_s {  fad_object_t base;  fad_frame_t frame;  fad_stream_t stream;  u8_t *buff;} sprite_mc_t;static fad_object_t* _sprite_mc_do_copy(fad_object_t *fo) {  sprite_mc_t *sm = (sprite_mc_t* )fo, *new = NULL;  new = calloc(1, sizeof(sprite_mc_t));  *new = *sm;  return (fad_object_t *)new;}static void _sprite_mc_do_free(fad_object_t *fo) {  sprite_mc_t* sm = (sprite_mc_t* )fo;  fad_frame_finish(&sm->frame);}static void _sprite_mc_get_rect(fad_object_t *fo, rect_t *rt) {  sprite_mc_t* sm = (sprite_mc_t* )fo;#ifdef LIBFAD_DIRTY_AREA  *rt = sm->frame.dirty_rect;#endif}static u8_t _sprite_mc_do_render(fad_object_t* fo, fad_render_t* render, dl_node_t *node) {  sprite_mc_t* sm = (sprite_mc_t* )fo;  u8_t ret = FAD_TRUE;  FAD_ERROR("sprite moive clip render start, fo = %x, frame = %x, matrix(%f, %f, %f, %f, %f, %f).\n", fo, &sm->frame, node->mx.xx, node->mx.yx, node->mx.x0, node->mx.yy, node->mx.xy, node->mx.y0);  while(sm->frame.sta != FAD_STA_DORENDER) {    fad_frame_decode(&sm->frame, &sm->stream);    if(sm->frame.sta == FAD_STA_FINISH) {      fad_stream_buffer(&sm->stream, sm->buff);      sm->frame.sta = FAD_STA_DOTAG;      if(sm->frame.total_frame <= 1)        break;    }  }  ret = fad_frame_render_graphics(&sm->frame, node);  fad_frame_render_audio(&sm->frame, &sm->stream);	if(sm->frame.total_frame > 1) {    if(sm->frame.output_frame < sm->frame.total_frame)      ret = FAD_FALSE;	}  FAD_ERROR("sprite moive clip render end, fo = %x, ret = %d, sm->frame.output_frame = %d, sm->frame.total_frame = %d.\n", fo, ret, sm->frame.output_frame, sm->frame.total_frame);  return ret;}s32_t sprite_mc_decode(fad_frame_t* frame, fad_stream_t* s) {  u16_t id, frame_count;  sprite_mc_t* sm = NULL;  id = bits_get_u16(&s->bits);  sm = calloc(1, sizeof(sprite_mc_t));  if(sm == NULL) {    s->err = FAD_ERROR_MEM;    return -1;  }  fad_frame_init(&sm->frame);  fad_stream_init(&sm->stream, s->dict);  sm->base.get_rect  = _sprite_mc_get_rect;  sm->base.do_render = _sprite_mc_do_render;  sm->base.do_free = _sprite_mc_do_free;  sm->base.do_copy = _sprite_mc_do_copy;  sm->base.type = FO_TYPE_SPRITE;  sm->frame.total_frame = bits_get_u16(&s->bits);  sm->frame.render = frame->render;  sm->frame.sta = FAD_STA_DOTAG;  FAD_FRAME_SET_SPRITE(sm->frame.attr);  sm->buff = (u8_t *)bits_tell(&s->bits);  fad_stream_buffer(&sm->stream, sm->buff);  s->dict->put(s->dict, sm, id);  FAD_ERROR("append sprite to dictionary, id = %d, frame_count = %d, frame = %x, main_frame.attr = %x\n", id, sm->frame.total_frame, &sm->frame, frame->attr);  /**  while(sm->frame.sta != FAD_STA_DORENDER) {    fad_frame_decode(&sm->frame, &sm->stream);    if(sm->frame.sta == FAD_STA_FINISH)      break;  }*/  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -