hedgewars/uAtlas.pas
changeset 7377 1aceade403ba
parent 7304 8b3575750cd2
equal deleted inserted replaced
7374:514138949c76 7377:1aceade403ba
   126     PNG_FILTER_TYPE_DEFAULT = 0;
   126     PNG_FILTER_TYPE_DEFAULT = 0;
   127     
   127     
   128 
   128 
   129 
   129 
   130 procedure writefunc(png: png_structp; buffer: png_bytep; size: QWord); cdecl;
   130 procedure writefunc(png: png_structp; buffer: png_bytep; size: QWord); cdecl;
   131 var
   131 begin
   132     p: Pbyte;
       
   133     i: Integer;
       
   134 begin
       
   135   //TStream(png_get_io_ptr(png)).Write(buffer^, size);
       
   136     BlockWrite(DumpFile, buffer^, size);
   132     BlockWrite(DumpFile, buffer^, size);
   137 {    p:= PByte(buffer^);
       
   138     for i:=0 to pred(size) do
       
   139     begin
       
   140         Write(DumpFile, p^);
       
   141         inc(p);
       
   142     end;}
       
   143 end;
   133 end;
   144 
   134 
   145 function IntToStrPad(i: Integer): string;
   135 function IntToStrPad(i: Integer): string;
   146 var
   136 var
   147   s: string;
   137   s: string;
   395     randr, randg, randb: Single;
   385     randr, randg, randb: Single;
   396     randh: Single;
   386     randh: Single;
   397 begin
   387 begin
   398     sz:= surf^.w * surf^.h;
   388     sz:= surf^.w * surf^.h;
   399     p:= surf^.pixels;
   389     p:= surf^.pixels;
   400     //randr:=Random;
       
   401     //randg:=Random;
       
   402     //randb:=1 - min(randr, randg);
       
   403     randh:=Random;
   390     randh:=Random;
   404     HSVToRGB(randh, 1.0, 1.0, randr, randg, randb);
   391     HSVToRGB(randh, 1.0, 1.0, randr, randg, randb);
   405     for i:=0 to pred(sz) do
   392     for i:=0 to pred(sz) do
   406     begin
   393     begin
   407         a:= p[3];
   394         a:= p[3];
   420         p[3]:=255;
   407         p[3]:=255;
   421         inc(p, 4);
   408         inc(p, 4);
   422     end;
   409     end;
   423 end;
   410 end;
   424 
   411 
       
   412 procedure DebugChecker(surf: PSDL_Surface);
       
   413 var
       
   414     sz: Integer;
       
   415     p, q: PByte;
       
   416     randr, randg, randb: Single;
       
   417     randrb, randgb, randbb: Byte;
       
   418     randh: Single;
       
   419     x, y: Integer;
       
   420 begin
       
   421     sz:= surf^.w * surf^.h;
       
   422     p:= surf^.pixels;
       
   423     randh:=Random;
       
   424     HSVToRGB(randh, 1.0, 1.0, randr, randg, randb);
       
   425     randrb:= Trunc(255*randr);
       
   426     randgb:= Trunc(255*randg);
       
   427     randbb:= Trunc(255*randb);
       
   428 
       
   429     p:= surf^.pixels;
       
   430     for y:=0 to Pred(surf^.h) do
       
   431     begin
       
   432         q:= p;
       
   433         for x:=0 to Pred(surf^.w) do
       
   434         begin
       
   435             if ((x xor y) and 1) = 1 then
       
   436             begin
       
   437                 q[0]:= randrb;
       
   438                 q[1]:= randgb;
       
   439                 q[2]:= randbb;
       
   440                 q[3]:= 255;
       
   441             end else
       
   442             begin
       
   443                 q[0]:= 0;
       
   444                 q[1]:= 0;
       
   445                 q[2]:= 0;
       
   446                 q[3]:= 255;
       
   447             end;
       
   448             inc(q, 4);
       
   449         end;
       
   450         inc(p, surf^.pitch);
       
   451     end;
       
   452     
       
   453 end;
       
   454 
       
   455 
   425 procedure Upload(var info: AtlasInfo; sprite: Rectangle; surf: PSDL_Surface);
   456 procedure Upload(var info: AtlasInfo; sprite: Rectangle; surf: PSDL_Surface);
   426 var
   457 var
   427     sp: PTexture;
   458     sp: PTexture;
   428     i, j, stride: Integer;
   459     i, j, stride: Integer;
   429     scanline: PByte;
   460     scanline: PByte;
   440         SDLTry(SDL_LockSurface(surf) >= 0, true);
   471         SDLTry(SDL_LockSurface(surf) >= 0, true);
   441 
   472 
   442     //if GrayScale then
   473     //if GrayScale then
   443     //    Surface2GrayScale(surf);
   474     //    Surface2GrayScale(surf);
   444     //DebugColorize(surf);
   475     //DebugColorize(surf);
       
   476     DebugChecker(surf);
   445 
   477 
   446     glBindTexture(GL_TEXTURE_2D, info.TextureInfo.id);
   478     glBindTexture(GL_TEXTURE_2D, info.TextureInfo.id);
   447     if (sp^.isRotated) then
   479     if (sp^.isRotated) then
   448     begin
   480     begin
   449         scanline:= surf^.pixels;
   481         scanline:= surf^.pixels;