# HG changeset patch # User koda # Date 1247244431 0 # Node ID 26e11cb27c6160cd5affe2a1f75e28d35263c400 # Parent 10a5c05e09c99a2b9ef9b7c04c6f78bf370fdf45 real fix for iphone color (reverting previous commit) diff -r 10a5c05e09c9 -r 26e11cb27c61 hedgewars/SDLh.pas --- a/hedgewars/SDLh.pas Fri Jul 10 14:46:33 2009 +0000 +++ b/hedgewars/SDLh.pas Fri Jul 10 16:47:11 2009 +0000 @@ -151,6 +151,7 @@ offset: LongInt; end; + PSDL_Color = ^TSDL_Color; TSDL_Color = record case byte of @@ -162,6 +163,7 @@ 1: (value: Longword); end; + PSDL_RWops = ^TSDL_RWops; TSeek = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl; TRead = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt; cdecl; @@ -276,6 +278,7 @@ procedure SDL_FreeSurface(Surface: PSDL_Surface); cdecl; external SDLLibName; function SDL_SetColorKey(surface: PSDL_Surface; flag, key: Longword): LongInt; cdecl; external SDLLibName; function SDL_SetAlpha(surface: PSDL_Surface; flag, key: Longword): LongInt; cdecl; external SDLLibName; +function SDL_ConvertSurface(src: PSDL_Surface; fmt: PSDL_PixelFormat; flags: LongInt): PSDL_Surface; cdecl; external SDLLibName; function SDL_UpperBlit(src: PSDL_Surface; srcrect: PSDL_Rect; dst: PSDL_Surface; dstrect: PSDL_Rect): LongInt; cdecl; external SDLLibName; function SDL_FillRect(dst: PSDL_Surface; dstrect: PSDL_Rect; color: Longword): LongInt; cdecl; external SDLLibName; diff -r 10a5c05e09c9 -r 26e11cb27c61 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Fri Jul 10 14:46:33 2009 +0000 +++ b/hedgewars/uConsts.pas Fri Jul 10 16:47:11 2009 +0000 @@ -190,9 +190,9 @@ {$ENDIF} COLOR_LAND = $FFFF; // white - COLOR_INDESTRUCTIBLE = $FF88; // green + COLOR_INDESTRUCTIBLE = $88FF; // red - //some opengl headers do not have these macros + //some opengl headers do not have these macros (unused) GL_BGR = $80E0; GL_BGRA = $80E1; diff -r 10a5c05e09c9 -r 26e11cb27c61 hedgewars/uLandTexture.pas --- a/hedgewars/uLandTexture.pas Fri Jul 10 14:46:33 2009 +0000 +++ b/hedgewars/uLandTexture.pas Fri Jul 10 16:47:11 2009 +0000 @@ -95,11 +95,7 @@ begin shouldUpdate:= false; glBindTexture(GL_TEXTURE_2D, tex^.id); - {$IFDEF IPHONEOS} - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEXSIZE, TEXSIZE, GL_BGRA, GL_UNSIGNED_BYTE, Pixels(x, y)); - {$ELSE} glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEXSIZE, TEXSIZE, GL_RGBA, GL_UNSIGNED_BYTE, Pixels(x, y)); - {$ENDIF} end end; diff -r 10a5c05e09c9 -r 26e11cb27c61 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Fri Jul 10 14:46:33 2009 +0000 +++ b/hedgewars/uMisc.pas Fri Jul 10 16:47:11 2009 +0000 @@ -334,11 +334,7 @@ glGenTextures(1, @NewTexture^.id); glBindTexture(GL_TEXTURE_2D, NewTexture^.id); -{$IFDEF IPHONEOS} -glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, buf); -{$ELSE} glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf); -{$ENDIF} //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); @@ -361,21 +357,13 @@ if (surf^.format^.BytesPerPixel = 3) then begin modeIntFormat:= GL_RGB; - {$IFDEF IPHONEOS} - modeFormat:= GL_BGR; - {$ELSE} modeFormat:= modeIntFormat; - {$ENDIF} end else if (surf^.format^.BytesPerPixel = 4) then begin modeIntFormat:= GL_RGBA; - {$IFDEF IPHONEOS} - modeFormat:= GL_BGRA; - {$ELSE} modeFormat:= modeIntFormat; - {$ENDIF} end else begin diff -r 10a5c05e09c9 -r 26e11cb27c61 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Fri Jul 10 14:46:33 2009 +0000 +++ b/hedgewars/uStore.pas Fri Jul 10 16:47:11 2009 +0000 @@ -281,11 +281,7 @@ if (not cReducedQuality) or ((ii <> sprSky) and (ii <> sprHorizont) and (ii <> sprFlake)) then begin if AltPath = ptNone then -//{$IFDEF IPHONEOS} -// tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent) -//{$ELSE} tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent or ifCritical or ifLowRes) -//{$ENDIF} else begin tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent); if tmpsurf = nil then @@ -879,11 +875,30 @@ Hedgehog.HealthTagTex:= RenderStringTex(s, Hedgehog.Team^.Clan^.Color, fnt16) end; -// hasAlpha: boolean; critical, setTransparent: boolean function LoadImage(const filename: string; imageFlags: Integer): PSDL_Surface; var tmpsurf: PSDL_Surface; - //Result: PSDL_Surface; s: shortstring; +{$IFDEF IPHONEOS} + convertedSurf: PSDL_Surface; +const TestFormat: TSDL_PixelFormat = ( + palette: nil; + BitsPerPixel : 32; + BytesPerPixel: 4; + Rloss : 0; + Gloss : 0; + Bloss : 0; + Aloss : 0; + Rshift: 0; + Gshift: 8; + Bshift: 16; + Ashift: 24; + RMask : $000000FF; + GMask : $0000FF00; + BMask : $00FF0000; + AMask : $FF000000; + colorkey: 0; + alpha : 255); +{$ENDIF} begin WriteToConsole(msgLoading + filename + '... '); s:= filename + '.' + cBitsStr + '.png'; @@ -923,15 +938,21 @@ begin SDL_FreeSurface(tmpsurf); OutError(msgFailedSize, (imageFlags and ifCritical) <> 0); + //dummy surface to replace non-critical textures that failed to load due to their size exit(SDL_CreateRGBSurface(SDL_SWSURFACE, 32, 32, 32, RMask, GMask, BMask, AMask)); end; if (imageFlags and ifTransparent) <> 0 then TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); -//if (imageFlags and ifAlpha) <> 0 then Result:= SDL_DisplayFormatAlpha(tmpsurf) -// else Result:= SDL_DisplayFormat(tmpsurf); +//if (imageFlags and ifAlpha) <> 0 then Result:= SDL_DisplayFormatAlpha(tmpsurf) else Result:= SDL_DisplayFormat(tmpsurf); WriteLnToConsole('(' + inttostr(tmpsurf^.w) + ',' + inttostr(tmpsurf^.h) + ') '); WriteLnToConsole(msgOK); +{$IFDEF IPHONEOS} +//for more information http://www.idevgames.com/forum/showpost.php?p=85864&postcount=7 +convertedSurf:= SDL_ConvertSurface(tmpsurf, @TestFormat, SDL_SWSURFACE); +tmpsurf:= convertedSurf; +{$ENDIF} + LoadImage:= tmpsurf //Result end; diff -r 10a5c05e09c9 -r 26e11cb27c61 share/hedgewars/Data/Maps/Basketball/mask.png Binary file share/hedgewars/Data/Maps/Basketball/mask.png has changed