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

📄 render_rend.c.svn-base

📁 A Flash Player with ActionScript support. Write in C and C++. It have two part, one is Player and an
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
            end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);            start >>= FRAC_BITS;            end >>= FRAC_BITS;            point1=&line1[start-idrect.Xmin];            if (start == end) {                if((point1<ppmax)&&(point1>ppmin))                    *point1=(pixel&0x00FFFFFF)|(((start_alpha + end_alpha - 255)<<24)&(0xff000000));            } else {                n = end-start;                if (start_alpha < 255) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((start_alpha<<24)&(0xFF000000));                    point1++;                    n--;                }                while (n > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1 = pixel;                    point1++;                    n--;                }                if (end_alpha > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((end_alpha<<24)&(0xFF000000));                }            }        } else {            start_alpha = 255 - ((start & (FRAC-1)) << (8-FRAC_BITS));            end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);            start >>= FRAC_BITS;            end >>= FRAC_BITS;            point1=&line1[start-idrect.Xmin];            if (start == end) {                if((point1<ppmax)&&(point1>ppmin))                    *point1=(pixel&0x00FFFFFF)|(((((start_alpha + end_alpha - 255) * alpha) >> 8)<<24)&(0xFF000000));            } else {                n = end-start;                if (start_alpha < 255) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((((start_alpha * alpha) >> 8)<<24)&(0xFF000000));                    point1++;                    n--;                }                while (n > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((alpha<<24)&(0xFF000000));                    point1++;                    n--;                }                if (end_alpha > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((((end_alpha * alpha) >> 8)<<24)&(0xFF000000));                }            }        }    } else        if(gmaskflag) {            struct MaskEntry *currentmaskentry;            unsigned char *currentmaskpointer;            currentmaskentry=player_p->_level0_p->mask_stack_p;            currentmaskpointer=currentmaskentry->maskpointer;            line2 = (unsigned char *)currentmaskpointer +(gd1->bpl*y)/2;            if (alpha == ALPHA_OPAQUE) {                start_alpha = 255 - ((start & (FRAC-1)) << (8-FRAC_BITS));                end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);                start >>= FRAC_BITS;                end >>= FRAC_BITS;                //point1=&line1[start-idrect.Xmin];                point2=&line2[start];                if (start == end) {                    if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                        *point2=1;                } else {                    n = end-start;                    if (start_alpha < 255) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                        point2++;                        n--;                    }                    while (n > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2 = 1;                        point2++;                        n--;                    }                    if (end_alpha > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                    }                }            } else {                start_alpha = 255 - ((start & (FRAC-1)) << (8-FRAC_BITS));                end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);                start >>= FRAC_BITS;                end >>= FRAC_BITS;                point2=&line2[start];                if (start == end) {                    if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                        *point2=1;                } else {                    n = end-start;                    if (start_alpha < 255) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                        point2++;                        n--;                    }                    while (n > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                        point2++;                        n--;                    }                    if (end_alpha > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                    }                }            }        }}voidfillLineAA161(GraphicDevice *gd1,FillStyleDef *f, long y, long start, long end) {    register long   n;    long start1,end1,start2,end2;    TYPE *line,*line1;    TYPE *point,pixel,*point1,*ppmax,*ppmin;    unsigned char *point2,*line2;    unsigned long alpha, start_alpha,end_alpha;    start1=start;    end1=end;    start2=start;    end2=end;    start2 >>= FRAC_BITS;    end2 >>= FRAC_BITS;    alpha = f->Color.Alpha;    pixel = f->Color.pixel;    if(start>end)        start=end;    if(save==1&&currentpic&&gmaskflag==0) {        if(currentpic) {            ppmax=(unsigned long*)(currentpic->pp)+(idrect.Xmax-idrect.Xmin+1)*(idrect.Ymax-idrect.Ymin+1);            ppmin=(unsigned long*)(currentpic->pp);        }        if(((unsigned long*)(currentpic->pp)+(idrect.Xmax-idrect.Xmin)*(y-idrect.Ymin))>ppmax)            return;        if(((unsigned long*)(currentpic->pp)+(idrect.Xmax-idrect.Xmin)*(y-idrect.Ymin))<ppmin)            return;        line1=(TYPE *) ((unsigned long*)(currentpic->pp)+(idrect.Xmax-idrect.Xmin)*(y-idrect.Ymin));        // printf("x1 is %ld x2 is %ld\n",currentpic->sp[y-idrect.Ymin].x1,currentpic->sp[y-idrect.Ymin].x2);        /* if(currentpic->fillflag==0)         {        //if(start-idrect.Xmin<=currentpic->sp[y-idrect.Ymin].x1)         currentpic->sp[y-idrect.Ymin].x1=start-idrect.Xmin-1;         //if(end-idrect.Xmin>=currentpic->sp[y-idrect.Ymin].x2)         currentpic->sp[y-idrect.Ymin].x2=end-idrect.Xmin+1;        //  printf("x1 is %ld x2 is %ld\n",currentpic->sp[y-idrect.Ymin].x1,currentpic->sp[y-idrect.Ymin].x2);         }*/        if (alpha == ALPHA_OPAQUE) {            start_alpha = 255 - ((start & (FRAC-1)) << (8-FRAC_BITS));            end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);            start >>= FRAC_BITS;            end >>= FRAC_BITS;            point1=&line1[start-idrect.Xmin];            if (start == end) {                if((point1<ppmax)&&(point1>ppmin))                    *point1=(pixel&0x00FFFFFF)|(((start_alpha + end_alpha - 255)<<24)&(0xff000000));            } else {                n = end-start;                if (start_alpha < 255) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((start_alpha<<24)&(0xFF000000));                    point1++;                    n--;                }                while (n > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1 = pixel;                    point1++;                    n--;                }                if (end_alpha > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((end_alpha<<24)&(0xFF000000));                }            }        } else {            start_alpha = 255 - ((start & (FRAC-1)) << (8-FRAC_BITS));            end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);            start >>= FRAC_BITS;            end >>= FRAC_BITS;            point1=&line1[start-idrect.Xmin];            if (start == end) {                if((point1<ppmax)&&(point1>ppmin))                    *point1=(pixel&0x00FFFFFF)|(((((start_alpha + end_alpha - 255) * alpha) >> 8)<<24)&(0xFF000000));            } else {                n = end-start;                if (start_alpha < 255) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((((start_alpha * alpha) >> 8)<<24)&(0xFF000000));                    point1++;                    n--;                }                while (n > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((alpha<<24)&(0xFF000000));                    point1++;                    n--;                }                if (end_alpha > 0) {                    if((point1<ppmax)&&(point1>ppmin))                        *point1=(pixel&0x00FFFFFF)|((((end_alpha * alpha) >> 8)<<24)&(0xFF000000));                }            }        }    } else        if(gmaskflag) {            struct MaskEntry *currentmaskentry;            unsigned char *currentmaskpointer;            currentmaskentry=player_p->_level0_p->mask_stack_p;            currentmaskpointer=currentmaskentry->maskpointer;            line2 = (unsigned char *)currentmaskpointer +(gd1->bpl*y)/2;            if (alpha == ALPHA_OPAQUE) {                start_alpha = 255 - ((start & (FRAC-1)) << (8-FRAC_BITS));                end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);                start >>= FRAC_BITS;                end >>= FRAC_BITS;                //point1=&line1[start-idrect.Xmin];                point2=&line2[start];                if (start == end) {                    if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                        *point2=1;                } else {                    n = end-start;                    if (start_alpha < 255) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                        point2++;                        n--;                    }                    while (n > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2 = 1;                        point2++;                        n--;                    }                    if (end_alpha > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                    }                }            } else {                start_alpha = 255 - ((start & (FRAC-1)) << (8-FRAC_BITS));                end_alpha = (end & (FRAC-1)) << (8-FRAC_BITS);                start >>= FRAC_BITS;                end >>= FRAC_BITS;                point2=&line2[start];                if (start == end) {                    if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                        *point2=1;                } else {                    n = end-start;                    if (start_alpha < 255) {                        if((((unsigned long)(point1)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point1)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                        point2++;                        n--;                    }                    while (n > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                        point2++;                        n--;                    }                    if (end_alpha > 0) {                        if((((unsigned long)(point2)-(unsigned long)(currentmaskpointer))>0)&&(((unsigned long)(point2)-(unsigned long)(currentmaskpointer))<canvassize))                            *point2=1;                    }                }            }        }}

⌨️ 快捷键说明

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