static inline void color_imageblit(const struct fb_image *image, struct fb_info *p, u8 *dst1, u32 start_index, u32 pitch_index) { /* Draw the penguin */ u32 *dst, *dst2, color = 0, val, shift; int i, n, bpp = p->var.bits_per_pixel; u32 null_bits = 32 - bpp; u32 *palette = (u32 *) p->pseudo_palette; const u8 *src = image->data; dst2 = (u32 *) dst1; for (i = image->height; i--; ) { n = image->width; dst = (u32 *) dst1; shift = 0; val = 0; if (start_index) { u32 start_mask = ~(SHIFT_HIGH(~(u32)0, start_index)); val = FB_READL(dst) & start_mask; shift = start_index; } while (n--) { if (p->fix.visual == FB_VISUAL_TRUECOLOR || p->fix.visual == FB_VISUAL_DIRECTCOLOR ) color = palette[*src]; else color = *src; color <<= LEFT_POS(bpp); val |= SHIFT_HIGH(color, shift); if (shift >= null_bits) { FB_WRITEL(val, dst++); val = (shift == null_bits) ? 0 : SHIFT_LOW(color, 32 - shift); } shift += bpp; shift &= (32 - 1); src++; } if (shift) { u32 end_mask = SHIFT_HIGH(~(u32)0, shift); FB_WRITEL((FB_READL(dst) & end_mask) | val, dst); } dst1 += p->fix.line_length; if (pitch_index) { dst2 += p->fix.line_length; dst1 = (u8 *)((long)dst2 & ~(sizeof(u32) - 1)); start_index += pitch_index; start_index &= 32 - 1; } } }
static inline void slow_imageblit(const struct fb_image *image, struct fb_info *p, u8 *dst1, u32 fgcolor, u32 bgcolor, u32 start_index, u32 pitch_index) { u32 shift, color = 0, bpp = p->var.bits_per_pixel; u32 *dst, *dst2, val, pitch = p->fix.line_length; u32 null_bits = 32 - bpp; u32 spitch = (image->width+7)/8; const u8 *src = image->data, *s; u32 i, j, l; dst2 = (u32 *) dst1; for (i = image->height; i--; ) { shift = val = 0; l = 8; j = image->width; dst = (u32 *) dst1; s = src; /* write leading bits */ if (start_index) { u32 start_mask = ~(SHIFT_HIGH(~(u32)0, start_index)); val = FB_READL(dst) & start_mask; shift = start_index; } while (j--) { l--; color = (*s & (1 << l)) ? fgcolor : bgcolor; color <<= LEFT_POS(bpp); val |= SHIFT_HIGH(color, shift); /* Did the bitshift spill bits to the next long? */ if (shift >= null_bits) { FB_WRITEL(val, dst++); val = (shift == null_bits) ? 0 : SHIFT_LOW(color,32 - shift); } shift += bpp; shift &= (32 - 1); if (!l) { l = 8; s++; }; } /* write trailing bits */ if (shift) { u32 end_mask = SHIFT_HIGH(~(u32)0, shift); FB_WRITEL((FB_READL(dst) & end_mask) | val, dst); } dst1 += pitch; src += spitch; if (pitch_index) { dst2 += pitch; dst1 = (u8 *)((long)dst2 & ~(sizeof(u32) - 1)); start_index += pitch_index; start_index &= 32 - 1; } } }
void SemaphoreHeroGameSceneClass::SetSignal(){ int i=0; //0 FlagSignals[i].name = "A"; BOTTOMLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOM_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //1 FlagSignals[i].name = "B"; LEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOM_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //2 FlagSignals[i].name = "C"; TOPLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOM_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //3 FlagSignals[i].name = "D"; TOP_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOM_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //4 FlagSignals[i].name = "E"; BOTTOM_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOPRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //5 FlagSignals[i].name = "F"; BOTTOM_POS(FlagSignals[i].lx,FlagSignals[i].ly); RIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //6 FlagSignals[i].name = "G"; BOTTOM_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOMRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //7 FlagSignals[i].name = "H"; LEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOMLEFT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //8 FlagSignals[i].name = "I"; TOPLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOMLEFT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //9 FlagSignals[i].name = "J"; TOP_POS(FlagSignals[i].lx,FlagSignals[i].ly); RIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //10 FlagSignals[i].name = "K"; BOTTOMLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOP_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //11 FlagSignals[i].name = "L"; BOTTOMLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOPLEFT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //12 FlagSignals[i].name = "M"; BOTTOMLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); RIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //13 FlagSignals[i].name = "N"; BOTTOMLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOMRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //14 FlagSignals[i].name = "O"; LEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOPLEFT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //15 FlagSignals[i].name = "P"; LEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOP_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //16 FlagSignals[i].name = "Q"; LEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOPRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //17 FlagSignals[i].name = "R"; LEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); RIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //18 FlagSignals[i].name = "S"; LEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOMRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //19 FlagSignals[i].name = "T"; TOPLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOP_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //20 FlagSignals[i].name = "U"; TOPLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); TOPRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //21 FlagSignals[i].name = "V"; TOP_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOMRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //22 FlagSignals[i].name = "W"; TOPRIGHT_POS(FlagSignals[i].lx,FlagSignals[i].ly); RIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //23 FlagSignals[i].name = "X"; TOPRIGHT_POS(FlagSignals[i].lx,FlagSignals[i].ly); BOTTOMRIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //24 FlagSignals[i].name = "Y"; TOPLEFT_POS(FlagSignals[i].lx,FlagSignals[i].ly); RIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //25 FlagSignals[i].name = "Z"; BOTTOMRIGHT_POS(FlagSignals[i].lx,FlagSignals[i].ly); RIGHT_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; //26 FlagSignals[i].name = "SPAAACE"; RESTL_POS(FlagSignals[i].lx,FlagSignals[i].ly); RESTR_POS(FlagSignals[i].rx,FlagSignals[i].ry); i++; }