void InitializeRLEBitmapFromPartialBitmap(RLEBitmap *self,const Bitmap *bitmap,int x0,int y0,int width,int height) { self->width=width; self->height=height; Pixel *ptr=self->codes; for(int y=0;y<height;y++) { int x=0; while(x<width) { int emptystart=x; while(x<width && x-emptystart<0xff) { Pixel p=ReadPixel(bitmap,x+x0,y+y0); if(!IsPixelTransparent(p)) break; x++; } int empty=x-emptystart; int filledstart=x; while(x<width && x-filledstart<0xff) { Pixel p=ReadPixel(bitmap,x+x0,y+y0); if(IsPixelTransparent(p)) break; x++; } int filled=x-filledstart; #ifdef SingleBytePixels *ptr++=empty; if(x<width || filled!=0) *ptr++=filled; #else *ptr++=RLECode(empty,filled); memcpy(ptr,ConstBitmapPixelPointer(bitmap,filledstart+x0,y+y0),filled*sizeof(Pixel)); ptr+=filled; #endif } } }
#include <RLEBitmap.h> const struct { RLEBitmap rle; Pixel codes[RLECodeCount(10,2,4)]; } Projectile_Small= { { 6,4 }, { RLECode(0x00,0x05), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RLEEndCode(0x01), RLECode(0x00,0x05), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RLEEndCode(0x01), RLEEndCode(0x06), RLEEndCode(0x06), } };
#include <RLEBitmap.h> const struct { RLEBitmap rle; Pixel codes[RLECodeCount(259,23,10)];} Healthpack_Battery= { { 17,21 }, { RLECode(0x02,0x02), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RLECode(0x02,0x02), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RLEEndCode(0x09), RLECode(0x02,0x06), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RLEEndCode(0x09), RLECode(0x01,0x08), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x95,0x95,0x95), RGB(0x95,0x95,0x95),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RLEEndCode(0x08), RLECode(0x00,0x0a), RGB(0x00,0x00,0x00),RGB(0x95,0x95,0x95), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x70,0x70,0x70),RGB(0x70,0x70,0x70), RGB(0x00,0x00,0x00),RGB(0x08,0x06,0x04),RGB(0x4d,0x4b,0x48),RGB(0x04,0x03,0x02), RLEEndCode(0x07), RLECode(0x00,0x0a), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RGB(0x46,0x46,0x46),RGB(0x46,0x46,0x46),RGB(0x46,0x46,0x46),RGB(0x46,0x46,0x46), RGB(0x46,0x46,0x46),RGB(0x4a,0x49,0x47),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RLEEndCode(0x07), RLECode(0x00,0x0b), RGB(0x00,0x00,0x00),RGB(0xf6,0x96,0x79), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0xa3,0x62,0x0a),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RLECode(0x02,0x02), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RLEEndCode(0x02), RLECode(0x00,0x0f), RGB(0x00,0x00,0x00),RGB(0xf6,0x96,0x79), RGB(0xf7,0x94,0x1d),RGB(0xf2,0x65,0x22),RGB(0xf2,0x65,0x22),RGB(0xf2,0x65,0x22), RGB(0xf7,0x94,0x1d),RGB(0xf7,0x94,0x1d),RGB(0x8f,0x3a,0x0c),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RLEEndCode(0x02), RLECode(0x00,0x10), RGB(0x00,0x00,0x00), RGB(0xf6,0x96,0x79),RGB(0xf2,0x65,0x22),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),RGB(0xf7,0x94,0x1d),RGB(0xf2,0x65,0x22),RGB(0x03,0x01,0x00), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x95,0x95,0x95),RGB(0x95,0x95,0x95), RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),RLEEndCode(0x01),