render_mask.c.svn-base

来自「A Flash Player with ActionScript support」· SVN-BASE 代码 · 共 79 行

SVN-BASE
79
字号
#include <stdio.h>#include <stdlib.h>#include "config.h"#include "base_types.h"#include "render_mask.h"#include "instance.h"#include "define.h"#include "swf_file_pub.h"#if WITH_DMALLOC#include <dmalloc.h>#endif#define PRINT_DGint hb=0;unsigned int canvassize=0;void render_mask_enter(GNode* node_p) {    instance_t  *data_p = (instance_t*)(node_p->data);    define_t    *def_p  = (define_t*)data_p->define_p;    swf_file_t	*swf_p = data_p->swf_p;    //压结构到 swf_p->mask_stack_p;    unsigned char *tmpmaskpointer;    struct MaskEntry  *tmpmaskentry;    tmpmaskpointer=malloc((((canvassize>>3)<<3)+1)*sizeof(unsigned char));    bzero(tmpmaskpointer,((canvassize>>3)<<3)+1);    tmpmaskentry=malloc(sizeof(struct MaskEntry));    tmpmaskentry->maskpointer=tmpmaskpointer;    printf("it is %ld\n",swf_p->mask_stack_p);    if(!swf_p->mask_stack_p) {        swf_p->mask_stack_p=tmpmaskentry;        swf_p->mask_stack_p->priv=0;        hb=0;    } else {        tmpmaskentry->priv=swf_p->mask_stack_p;        swf_p->mask_stack_p=tmpmaskentry;        hb=1;    }    printf("hb is %d\n",hb);    printf("enter mask\n");};void render_mask_leave(GNode* node_p) {    instance_t  *data_p = (instance_t*)(node_p->data);    define_t    *def_p  = (define_t*)data_p->define_p;    swf_file_t	*swf_p = data_p->swf_p;    unsigned char *tmpmaskpointer;    struct MaskEntry  *tmpmaskentry;    tmpmaskentry=swf_p->mask_stack_p;    swf_p->mask_stack_p=swf_p->mask_stack_p->priv;    free(tmpmaskentry->maskpointer);    free(tmpmaskentry);    if(!swf_p->mask_stack_p)        hb=0;    if(swf_p->mask_stack_p&&swf_p->mask_stack_p->priv==0)        hb=0;    //弹出顶层 swf_p->mask_stack_p;    printf("leave mask\n");};void maskhb(swf_file_t	*swf_p) {    int i;#ifdef PRINT_DG    fprintf(stderr,"flash: loading render mask maskhb Start---\n");    fprintf(stderr,"flash: loading render mask maskhb end (((canvassize>>3)<<3)+1)=%d---\n",(((canvassize>>3)<<3)+1));#endif    if(swf_p->mask_stack_p->maskpointer)        printf("current is true\n");    if(swf_p->mask_stack_p->priv)        printf("priv is true\n");    for(i=0;i<(((canvassize>>3)<<3)+1);i++)        swf_p->mask_stack_p->maskpointer[i]&=swf_p->mask_stack_p->priv->maskpointer[i];#ifdef PRINT_DG    fprintf(stderr,"flash: loading render mask maskhb end i=%d---\n",i);#endif};

⌨️ 快捷键说明

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